From b12d8c91ebf2f23ba70dbaa4115de78010f6ae0d Mon Sep 17 00:00:00 2001
From: mage2-team <mage2-team@magento.com>
Date: Mon, 10 Nov 2014 12:18:34 -0800
Subject: [PATCH] 0.1.0-alpha103 * Fixed bugs:     * Fixed an issue where an
 error message was displayed after successful product mass actions     * Fixed
 an issue where it is impossible to create a tax rate for all states (* in the
 State field)     * Fixed an issue where FPT was not shown on the storefront
 if a customer state did not match the default state from configuration     *
 Fixed the benchmark scenario     * Fixed an issue where the expand arrow next
 to Advanced Settings tab label was not clickable     * Fixed an issue where
 the Category menu disappeared when resizing a browser window     * Fixed an
 issue where the order additional info was not available for a guest customer 
    * Fixed an issue where a fatal error was thrown when trying to get a
 coupon report with Shopping Cart Price Rule set to Specified     * Fixed an
 issue where the URL of an attribute set for attribute mapping changed after
 resetting filter for the grid on the Google Contents Attributes page     *
 Fixed the implementation of the wishlist RSS-feed     * Fixed the incorrect
 name escaping in wishlist RSS     * Fixed an issue where a RSS feed for
 shared wishlist was not accessible     * Fixed an issue caused by REST
 POST/PUT requests with empty body     * Fixed an issues where postal code was
 still mandatory for non-US addresses that do not use it, even if set to be
 optional     * Fixed an issue where it was impossible to find a wishlist by
 using Wishlist Search     * Fixed an issue where no password validation was
 requested during customer registration on the storefront * Updated setup
 tools:     * Added the install script in the CatalogInventory module     *
 Removed old installation: Web and CLI, the Magento_Install module, install
 theme, install configuration scope     * Added usage of the new setup
 installation in all tests     * Added the ability to insert custom directory
 paths in the setup tools     * Added the uninstall tool: php -f
 setup/index.php uninstall     * Removed dependency on intl PHP extension
 until translations are re-introduced in the setup tool     * Made
 notification about unnecessarily writable directories after installation more
 specific * UI improvements:     * Improved UI for the Order by SKU,
 Invitation and Recurring Payments pages     * Implemented usage of Microdata
 and Schema vocabulary for product content     * Implemented UI for Catalog
 New Products List, Recently Compared Products, Recently Viewed Products
 widgets     * Implemented a new focus indicator     * Implemented the
 &lt;label&gt; element for form inputs     * Put in order the usage of the
 &lt;fieldset&gt; and &lt;legend&gt; tags     * Implemented the ability to
 skip to main content * Added the following functional tests:     * Add
 products to order from recently viewed products section     * Update
 configurable product * Various improvements:     * Stabilize URL rewrite
 module     * Moved getAdditional request into the basic one in
 OnePageCheckout     * Created a cron job in the Customer module for cleaning
 the customer_visitor table * Framework improvements:     * Refactored data
 builders auto-generation     * Implemented the Customer module interfaces    
 * Ported existing integration tests from Customer services     * Removed
 quote saving on GET requests (checkout/cart, checkout/onepage)

---
 .travis.yml                                   |    2 +-
 CHANGELOG.md                                  |   50 +-
 README.md                                     |  801 ++++-
 app/autoload.php                              |   11 -
 .../Magento/AdminNotification/Model/Feed.php  |   13 +-
 .../Magento/AdminNotification/composer.json   |   10 +-
 .../install-1.6.0.0.php                       |    3 +-
 .../upgrade-1.6.0.0-2.0.0.0.php               |    3 +-
 app/code/Magento/Authorization/composer.json  |    6 +-
 .../data-install-1.0.0.0.php                  |    2 +-
 .../authorization_setup/install-1.0.0.0.php   |    2 +-
 app/code/Magento/Authorizenet/composer.json   |   18 +-
 .../Backend/Block/Widget/Grid/Container.php   |    2 +-
 .../Adminhtml/Dashboard/AjaxBlock.php         |    2 +-
 .../Magento/Backend/Model/Search/Customer.php |   12 +-
 app/code/Magento/Backend/composer.json        |   34 +-
 app/code/Magento/Backup/composer.json         |   12 +-
 .../Bundle/Service/V1/Data/Product/Link.php   |    2 +-
 .../Service/V1/Data/Product/LinkBuilder.php   |    4 +-
 .../Bundle/Service/V1/Data/Product/Option.php |    2 +-
 .../Service/V1/Data/Product/Option/Type.php   |    2 +-
 .../V1/Data/Product/Option/TypeBuilder.php    |    4 +-
 .../Service/V1/Data/Product/OptionBuilder.php |    4 +-
 .../V1/Product/BundleProductSaveProcessor.php |    2 +-
 app/code/Magento/Bundle/composer.json         |   30 +-
 .../bundle_setup/data-install-1.6.0.0.php     |    2 +-
 app/code/Magento/Bundle/etc/data_object.xml   |    2 +-
 .../sql/bundle_setup/install-1.6.0.0.php      |    2 +-
 .../upgrade-1.6.0.0-1.6.0.0.1.php             |    3 +-
 .../catalog_product_view_type_bundle.xml      |    2 +-
 app/code/Magento/Captcha/composer.json        |   14 +-
 .../sql/captcha_setup/install-1.7.0.0.0.php   |    2 +-
 .../Block/Adminhtml/Rss/NotifyStock.php       |    8 +
 .../Magento/Catalog/Block/Product/View.php    |   10 +
 .../Magento/Catalog/Block/Rss/Category.php    |    8 +
 .../Catalog/Block/Rss/Product/NewProducts.php |    8 +
 .../Catalog/Block/Rss/Product/Special.php     |    8 +
 .../Catalog/Helper/Product/Inventory.php      |    4 +-
 .../Indexer/Product/Flat/Action/Rows.php      |    5 +-
 .../Product/Flat/Action/Rows/TableData.php    |    2 +-
 .../V1/Category/Attribute/ReadService.php     |    2 +-
 .../Attribute/ReadServiceInterface.php        |    4 +-
 .../Service/V1/Category/MetadataService.php   |   14 +-
 .../V1/Category/MetadataServiceInterface.php  |    2 +-
 .../Catalog/Service/V1/Data/Category.php      |    2 +-
 .../Service/V1/Data/Category/Mapper.php       |    2 +-
 .../Service/V1/Data/Category/ProductLink.php  |    2 +-
 .../V1/Data/Category/ProductLinkBuilder.php   |    2 +-
 .../Service/V1/Data/CategoryBuilder.php       |   10 +-
 .../Catalog/Service/V1/Data/Eav/Attribute.php |    2 +-
 .../Service/V1/Data/Eav/AttributeBuilder.php  |    4 +-
 .../Service/V1/Data/Eav/AttributeGroup.php    |    2 +-
 .../V1/Data/Eav/AttributeGroupBuilder.php     |    2 +-
 .../Service/V1/Data/Eav/AttributeMetadata.php |    4 +-
 .../V1/Data/Eav/AttributeMetadataBuilder.php  |   20 +-
 .../Service/V1/Data/Eav/AttributeSet.php      |    2 +-
 .../V1/Data/Eav/AttributeSet/Attribute.php    |    2 +-
 .../Eav/AttributeSet/AttributeBuilder.php     |    2 +-
 .../V1/Data/Eav/AttributeSetBuilder.php       |    2 +-
 .../Data/Eav/Category/AttributeMetadata.php   |    4 +-
 .../Eav/Category/AttributeMetadataBuilder.php |    6 +-
 .../V1/Data/Eav/Category/Info/Metadata.php    |    2 +-
 .../Eav/Category/Info/MetadataBuilder.php     |   10 +-
 .../Service/V1/Data/Eav/Category/Tree.php     |    2 +-
 .../V1/Data/Eav/Category/TreeBuilder.php      |    4 +-
 .../Catalog/Service/V1/Data/Eav/Option.php    |    2 +-
 .../Service/V1/Data/Eav/Option/Label.php      |    2 +-
 .../V1/Data/Eav/Option/LabelBuilder.php       |    2 +-
 .../Service/V1/Data/Eav/OptionBuilder.php     |    2 +-
 .../Eav/Product/Attribute/FrontendLabel.php   |    2 +-
 .../Attribute/FrontendLabelBuilder.php        |    2 +-
 .../V1/Data/Eav/Product/Attribute/Type.php    |    2 +-
 .../Eav/Product/Attribute/TypeBuilder.php     |    2 +-
 .../Service/V1/Data/Eav/ValidationRule.php    |    2 +-
 .../V1/Data/Eav/ValidationRuleBuilder.php     |    2 +-
 .../Catalog/Service/V1/Data/Product.php       |    2 +-
 .../Data/Product/Attribute/SearchResults.php  |    2 +-
 .../Attribute/SearchResultsBuilder.php        |   10 +-
 .../Service/V1/Data/Product/GroupPrice.php    |    2 +-
 .../V1/Data/Product/GroupPriceBuilder.php     |    4 +-
 .../Service/V1/Data/Product/SearchResults.php |    2 +-
 .../V1/Data/Product/SearchResultsBuilder.php  |   10 +-
 .../Service/V1/Data/Product/TierPrice.php     |    2 +-
 .../V1/Data/Product/TierPriceBuilder.php      |    4 +-
 .../Service/V1/Data/ProductBuilder.php        |    8 +-
 .../Catalog/Service/V1/Data/ProductMapper.php |    2 +-
 .../Catalog/Service/V1/Data/ProductType.php   |    2 +-
 .../Service/V1/Data/ProductTypeBuilder.php    |    4 +-
 .../Catalog/Service/V1/MetadataService.php    |    8 +-
 .../Service/V1/MetadataServiceInterface.php   |    4 +-
 .../Attribute/Media/Data/GalleryEntry.php     |    2 +-
 .../Media/Data/GalleryEntryBuilder.php        |    4 +-
 .../Media/Data/GalleryEntryContent.php        |    2 +-
 .../Media/Data/GalleryEntryContentBuilder.php |    4 +-
 .../Attribute/Media/Data/MediaImage.php       |    2 +-
 .../Media/Data/MediaImageBuilder.php          |    2 +-
 .../V1/Product/Attribute/ReadService.php      |    2 +-
 .../Attribute/ReadServiceInterface.php        |    4 +-
 .../V1/Product/CustomOptions/Data/Option.php  |    2 +-
 .../CustomOptions/Data/Option/Metadata.php    |    2 +-
 .../Data/Option/MetadataBuilder.php           |   12 +-
 .../CustomOptions/Data/OptionBuilder.php      |    2 +-
 .../Product/CustomOptions/Data/OptionType.php |    2 +-
 .../CustomOptions/Data/OptionTypeBuilder.php  |    2 +-
 .../V1/Product/Link/Data/LinkAttribute.php    |    2 +-
 .../Link/Data/LinkAttributeBuilder.php        |    2 +-
 .../Service/V1/Product/Link/Data/LinkType.php |    2 +-
 .../V1/Product/Link/Data/LinkTypeBuilder.php  |    2 +-
 .../V1/Product/Link/Data/ProductLink.php      |    2 +-
 .../Product/Link/Data/ProductLinkBuilder.php  |   14 +-
 .../Service/V1/Product/MetadataService.php    |   16 +-
 .../V1/Product/MetadataServiceInterface.php   |    2 +-
 .../Catalog/Service/V1/ProductService.php     |    6 +-
 .../Service/V1/ProductServiceInterface.php    |    4 +-
 app/code/Magento/Catalog/composer.json        |   48 +-
 .../data-upgrade-1.6.0.0.1-1.6.0.0.2.php      |    1 +
 .../data-upgrade-1.6.0.0.13-1.6.0.0.14.php    |    1 +
 .../data-upgrade-1.6.0.0.16-1.6.0.0.17.php    |    2 -
 .../data-upgrade-1.6.0.0.24-1.6.0.0.25.php    |    2 +-
 .../data-upgrade-1.6.0.0.28-1.6.0.0.29.php    |    1 +
 app/code/Magento/Catalog/etc/di.xml           |    4 +-
 .../sql/catalog_setup/install-1.6.0.0.0.php   |    2 +-
 .../upgrade-1.6.0.0.11-1.6.0.0.12.php         |    2 +-
 .../upgrade-1.6.0.0.2-1.6.0.0.3.php           |    1 +
 .../upgrade-1.6.0.0.25-1.6.0.0.26.php         |    3 +-
 .../upgrade-1.6.0.0.26-1.6.0.0.27.php         |    2 +-
 .../upgrade-1.6.0.0.27-1.6.0.0.28.php         |    2 +-
 .../upgrade-1.6.0.0.4-1.6.0.0.5.php           |    3 +-
 .../upgrade-1.6.0.0.6-1.6.0.0.7.php           |    2 +-
 .../upgrade-1.6.0.0.7-1.6.0.0.8.php           |    2 +-
 .../upgrade-1.6.0.0.8-1.6.0.0.9.php           |    3 +-
 .../upgrade-1.6.0.0.9-1.6.0.0.10.php          |    2 +-
 .../web/catalog/category-selector.css         |    5 -
 .../product/price/amount/default.phtml        |    9 +-
 .../product/price/configured_price.phtml      |   10 +-
 .../templates/product/price/final_price.phtml |    7 +-
 .../layout/catalog_product_opengraph.xml}     |   16 +-
 .../frontend/layout/catalog_product_view.xml  |   15 +-
 .../Catalog/view/frontend/layout/default.xml  |    1 +
 .../templates/product/compare/list.phtml      |    6 +-
 .../templates/product/compare/sidebar.phtml   |   19 +-
 .../frontend/templates/product/list.phtml     |    4 +-
 .../templates/product/list/items.phtml        |    4 +-
 .../product/list/toolbar/limiter.phtml        |   24 +-
 .../frontend/templates/product/listing.phtml  |    4 +-
 .../templates/product/view/addto.phtml        |   10 +-
 .../templates/product/view/attribute.phtml    |    1 -
 .../product/view/opengraph/currency.phtml     |   10 +-
 .../product/view/opengraph/general.phtml}     |   29 +-
 .../templates/product/view/type/default.phtml |    8 +-
 .../widget/new/column/new_default_list.phtml  |   51 +-
 .../widget/new/column/new_images_list.phtml   |   14 +-
 .../widget/new/column/new_names_list.phtml    |   17 +-
 .../product/widget/new/content/new_grid.phtml |   35 +-
 .../product/widget/new/content/new_list.phtml |   44 +-
 .../Magento/CatalogImportExport/composer.json |   20 +-
 .../Service/V1/Data/LowStockCriteria.php      |    2 +-
 .../V1/Data/LowStockCriteriaBuilder.php       |    2 +-
 .../Service/V1/Data/LowStockResult.php        |    2 +-
 .../Service/V1/Data/LowStockResultBuilder.php |    2 +-
 .../Service/V1/Data/StockItem.php             |    2 +-
 .../Service/V1/Data/StockItemBuilder.php      |    4 +-
 .../Service/V1/Data/StockItemDetails.php      |    2 +-
 .../V1/Data/StockItemDetailsBuilder.php       |    4 +-
 .../Service/V1/Data/StockStatus.php           |    2 +-
 .../Service/V1/Data/StockStatusBuilder.php    |    4 +-
 .../Magento/CatalogInventory/composer.json    |   20 +-
 .../data-upgrade-1.6.0.0.3-1.6.0.0.4.php      |    2 +-
 .../Magento/CatalogInventory/etc/module.xml   |    2 +-
 .../install-1.6.0.0.php                       |    2 +-
 .../upgrade-1.6.0.0-1.6.0.0.1.php             |    3 +-
 .../upgrade-1.6.0.0.1-1.6.0.0.2.php           |    2 +-
 .../upgrade-1.6.0.0.2-1.6.0.0.3.php           |    2 +-
 .../upgrade-1.6.0.0.4-1.6.0.0.5.php           |    2 +-
 app/code/Magento/CatalogRule/composer.json    |   16 +-
 .../sql/catalogrule_setup/install-1.6.0.0.php |    3 +-
 .../upgrade-1.6.0.0-1.6.0.1.php               |    2 +-
 .../upgrade-1.6.0.1-1.6.0.2.php               |    2 +-
 .../upgrade-1.6.0.2-1.6.0.3.php               |    2 +-
 app/code/Magento/CatalogSearch/composer.json  |   24 +-
 .../catalogsearch_setup/install-1.6.0.0.php   |    2 +-
 .../Magento/CatalogUrlRewrite/composer.json   |   18 +-
 .../data-install-1.0.0.0.php                  |    1 +
 .../CatalogUrlRewrite/etc/install/di.xml      |   36 -
 .../CatalogUrlRewrite/etc/install/events.xml  |   42 -
 .../install-1.0.0.0.php                       |    2 +-
 app/code/Magento/Centinel/composer.json       |   14 +-
 .../Magento/Checkout/Block/Onepage/Review.php |    9 +-
 .../Checkout/Model/Cart/Access/ReadPlugin.php |    2 +-
 .../Magento/Checkout/Model/Type/Onepage.php   |    6 +-
 .../Checkout/Service/V1/Address/Converter.php |    6 +-
 .../Checkout/Service/V1/Cart/ReadService.php  |    6 +-
 .../Service/V1/Cart/ReadServiceInterface.php  |    4 +-
 .../Magento/Checkout/Service/V1/Data/Cart.php |    2 +-
 .../Checkout/Service/V1/Data/Cart/Address.php |    2 +-
 .../Service/V1/Data/Cart/Address/Region.php   |    2 +-
 .../Service/V1/Data/Cart/AddressBuilder.php   |   12 +-
 .../Checkout/Service/V1/Data/Cart/Coupon.php  |    2 +-
 .../Service/V1/Data/Cart/CouponBuilder.php    |    2 +-
 .../Service/V1/Data/Cart/Currency.php         |    2 +-
 .../Service/V1/Data/Cart/Customer.php         |    2 +-
 .../Service/V1/Data/Cart/CustomerBuilder.php  |    2 +-
 .../Checkout/Service/V1/Data/Cart/Item.php    |    2 +-
 .../Service/V1/Data/Cart/PaymentMethod.php    |    2 +-
 .../Service/V1/Data/Cart/ShippingMethod.php   |    2 +-
 .../Checkout/Service/V1/Data/Cart/Totals.php  |    2 +-
 .../Service/V1/Data/Cart/Totals/Item.php      |    2 +-
 .../Checkout/Service/V1/Data/CartBuilder.php  |    2 +-
 .../Service/V1/Data/CartSearchResults.php     |    2 +-
 .../V1/Data/CartSearchResultsBuilder.php      |   10 +-
 .../Service/V1/Data/PaymentMethod.php         |    2 +-
 app/code/Magento/Checkout/composer.json       |   36 +-
 .../frontend/layout/checkout_cart_index.xml   |    4 +-
 .../layout/checkout_onepage_additional.xml    |   34 -
 .../layout/checkout_onepage_index.xml         |    4 +-
 .../checkout_onepage_shippingmethod.xml       |    4 +-
 .../view/frontend/templates/cart/coupon.phtml |    4 +-
 .../view/frontend/templates/cart/form.phtml   |    2 +-
 .../templates/cart/item/default.phtml         |   28 +-
 .../frontend/templates/cart/shipping.phtml    |    3 +
 .../templates/cart/sidebar/default.phtml      |    8 +-
 .../frontend/templates/onepage/billing.phtml  |    5 +-
 .../frontend/templates/onepage/payment.phtml  |    3 +
 .../frontend/templates/onepage/shipping.phtml |    5 +-
 .../onepage/shipping_method/available.phtml   |   41 +-
 .../Service/V1/Data/Agreement.php             |    2 +-
 .../Service/V1/Data/AgreementBuilder.php      |    6 +-
 .../Magento/CheckoutAgreements/composer.json  |   10 +-
 .../install-1.0.0.0.php                       |    2 +-
 app/code/Magento/Cms/composer.json            |   20 +-
 .../data/cms_setup/data-install-1.6.0.0.php   |    3 +-
 .../data-upgrade-1.6.0.0-1.6.0.1.php          |    4 +-
 .../data-upgrade-1.6.0.2-1.6.0.3.php          |    2 +-
 .../data-upgrade-1.6.0.3-2.0.0.0.php          |    3 +-
 .../Cms/sql/cms_setup/install-1.6.0.0.php     |    3 +-
 .../sql/cms_setup/upgrade-2.0.0.0-2.0.0.1.php |    2 +-
 app/code/Magento/CmsUrlRewrite/composer.json  |    8 +-
 .../ConfigurableImportExport/composer.json    |   14 +-
 .../Service/V1/Data/Option.php                |    2 +-
 .../Service/V1/Data/Option/Value.php          |    2 +-
 .../Service/V1/Data/Option/ValueBuilder.php   |   12 +-
 .../Service/V1/Data/OptionBuilder.php         |    6 +-
 .../Magento/ConfigurableProduct/composer.json |   28 +-
 .../data-install-1.0.0.0.php                  |    1 +
 .../install-1.0.0.0.php                       |    2 +-
 app/code/Magento/Contact/composer.json        |   12 +-
 app/code/Magento/Core/composer.json           |   16 +-
 .../data-upgrade-1.6.0.12-1.6.0.13.php        |    2 +-
 .../data-upgrade-1.6.0.2-1.6.0.3.php          |    2 +-
 .../data-upgrade-1.6.0.3-1.6.0.4.php          |    2 +-
 .../data-upgrade-1.6.0.4-1.6.0.5.php          |    2 +-
 .../data-upgrade-1.6.0.5-1.6.0.6.php          |    2 +-
 app/code/Magento/Core/etc/di.xml              |    8 +-
 .../Core/sql/core_setup/install-1.6.0.0.php   |    3 +-
 .../core_setup/upgrade-1.6.0.1-1.6.0.2.php    |    2 +-
 .../core_setup/upgrade-1.6.0.10-1.6.0.11.php  |    2 +-
 .../core_setup/upgrade-1.6.0.11-1.6.0.12.php  |    2 +-
 .../core_setup/upgrade-1.6.0.12-1.6.0.13.php  |    2 +-
 .../core_setup/upgrade-1.6.0.13-1.6.0.14.php  |    2 +-
 .../core_setup/upgrade-1.6.0.14-1.6.0.15.php  |    2 +-
 .../core_setup/upgrade-1.6.0.2-1.6.0.3.php    |    2 +-
 .../core_setup/upgrade-1.6.0.3-1.6.0.4.php    |    2 +-
 .../core_setup/upgrade-1.6.0.5-1.6.0.6.php    |    2 +-
 .../core_setup/upgrade-1.6.0.6-1.6.0.7.php    |    2 +-
 .../core_setup/upgrade-1.6.0.7-1.6.0.8.php    |    2 +-
 .../core_setup/upgrade-1.6.0.8-1.6.0.9.php    |    2 +-
 .../core_setup/upgrade-1.6.0.9-1.6.0.10.php   |    2 +-
 .../view/adminhtml/web/prototype/magento.css  |    4 -
 .../view/frontend/web/prototype/magento.css   |    1 -
 app/code/Magento/Cron/composer.json           |    8 +-
 .../Cron/sql/cron_setup/install-1.6.0.0.php   |    4 +-
 app/code/Magento/CurrencySymbol/composer.json |   14 +-
 .../Api/AccountManagementInterface.php        |   18 +-
 .../Customer/Api/AddressMetadataInterface.php |    2 +-
 .../Api/AddressRepositoryInterface.php        |    4 +-
 .../Api/CustomerMetadataInterface.php         |    2 +-
 .../Api/CustomerRepositoryInterface.php       |   20 +-
 .../Customer/Api/Data/AddressInterface.php    |   27 +-
 .../Data/AddressSearchResultsInterface.php    |    2 +-
 .../Api/Data/AttributeMetadataInterface.php   |   26 +-
 .../Customer/Api/Data/CustomerInterface.php   |   26 +-
 .../Data/CustomerSearchResultsInterface.php   |    2 +-
 .../Customer/Api/Data/GroupInterface.php      |   15 +-
 .../Api/Data/GroupSearchResultsInterface.php  |    2 +-
 .../Customer/Api/Data/OptionInterface.php     |   61 +
 .../Customer/Api/Data/RegionInterface.php     |   10 +-
 .../Api/Data/ValidationResultsInterface.php   |    7 +
 .../Api/Data/ValidationRuleInterface.php}     |   31 +-
 .../Customer/Api/GroupManagementInterface.php |    4 +-
 .../Customer/Api/GroupRepositoryInterface.php |   12 +-
 .../Customer/Api/MetadataInterface.php        |    2 +-
 .../Customer/Block/Adminhtml/Edit/Form.php    |    2 +-
 .../Block/Adminhtml/Edit/Tab/Account.php      |    2 +-
 .../Block/Adminhtml/Edit/Tab/Addresses.php    |   32 +-
 .../Magento/Customer/Block/Widget/Dob.php     |    2 +-
 .../Magento/Customer/Block/Widget/Gender.php  |    4 +-
 .../Controller/Account/CreatePost.php         |   37 +-
 .../Customer/Controller/Account/EditPost.php  |   35 +-
 .../Controller/Account/ResetPasswordPost.php  |    2 +-
 .../Magento/Customer/Controller/Address.php   |   35 +-
 .../Customer/Controller/Address/FormPost.php  |   47 +-
 .../Adminhtml/Customer/InvalidateToken.php    |    6 -
 .../Customer/Controller/Adminhtml/Index.php   |   16 +-
 .../Controller/Adminhtml/Index/Edit.php       |    2 +-
 .../Controller/Adminhtml/Index/Save.php       |    8 +-
 .../Controller/Adminhtml/Index/Validate.php   |    2 +-
 .../Customer/Model/AccountManagement.php      | 1104 +++++++
 app/code/Magento/Customer/Model/Address.php   |  115 +
 .../Customer/Model/Address/Converter.php      |    3 +-
 .../Customer/Model/AddressRegistry.php        |   12 +
 .../Model/Attribute/Data/Postcode.php         |  118 +-
 app/code/Magento/Customer/Model/Converter.php |    2 +-
 app/code/Magento/Customer/Model/Customer.php  |   86 +-
 .../Customer/Model/CustomerExtractor.php      |    4 -
 .../Customer/Model/CustomerRegistry.php       |   65 +-
 .../Magento/Customer/Model/Data/Address.php   |  190 ++
 .../Customer/Model/Data/AttributeMetadata.php |  168 +
 .../Magento/Customer/Model/Data/Customer.php  |  219 ++
 .../Customer/Model/Data/CustomerBuilder.php   |  251 ++
 .../Customer/Model/Data/CustomerSecure.php    |   41 +
 .../Model/Data/Group.php}                     |   49 +-
 .../Model/Data/Option.php}                    |   37 +-
 .../Magento/Customer/Model/Data/Region.php    |   61 +
 .../Customer/Model/Data/ValidationResults.php |   49 +
 .../Model/Data/ValidationRule.php}            |   18 +-
 app/code/Magento/Customer/Model/Group.php     |   58 +-
 .../Customer/Model/GroupManagement.php        |  113 +
 .../Model/Metadata/AddressCachedMetadata.php} |   18 +-
 .../Model/Metadata/AddressMetadata.php        |  168 +
 .../Model/Metadata/CachedMetadata.php         |  128 +
 .../Metadata/CustomerCachedMetadata.php}      |   20 +-
 .../Model/Metadata/CustomerMetadata.php       |  171 +
 .../Model/Metadata/ElementFactory.php         |    2 +-
 .../Magento/Customer/Model/Metadata/Form.php  |    2 +-
 .../Model/Metadata/Form/AbstractData.php      |    2 +-
 .../Customer/Model/Metadata/Form/Date.php     |    2 +-
 .../Customer/Model/Metadata/Form/File.php     |    2 +-
 .../Customer/Model/Metadata/Form/Image.php    |    2 +-
 .../Customer/Model/Metadata/Form/Postcode.php |  133 +
 .../Customer/Model/Metadata/Form/Text.php     |    2 +-
 .../Model/Resource/AddressRepository.php      |  303 ++
 .../Customer/Grid/ServiceCollection.php       |    8 +-
 .../Model/Resource/CustomerRepository.php     |  372 +++
 .../Magento/Customer/Model/Resource/Group.php |   13 +
 .../Resource/Group/Grid/ServiceCollection.php |   10 +-
 .../Model/Resource/GroupRepository.php        |  332 ++
 .../Magento/Customer/Model/Resource/Setup.php |    3 +-
 .../Customer/Model/Resource/Visitor.php       |   59 +
 app/code/Magento/Customer/Model/Visitor.php   |   48 +-
 .../Service/V1/AddressMetadataService.php     |   28 +-
 .../Service/V1/CustomerAccountService.php     |   25 +-
 .../V1/CustomerAccountServiceInterface.php    |    4 +-
 .../Service/V1/CustomerAddressService.php     |    1 -
 .../Service/V1/CustomerGroupService.php       |    6 +-
 .../V1/CustomerGroupServiceInterface.php      |    4 +-
 .../Service/V1/CustomerMetadataService.php    |    6 +-
 .../V1/CustomerMetadataServiceInterface.php   |    2 +-
 .../Customer/Service/V1/Data/Address.php      |    2 +-
 .../Service/V1/Data/AddressBuilder.php        |   14 +-
 .../Service/V1/Data/AddressConverter.php      |    2 +-
 .../Customer/Service/V1/Data/Customer.php     |    2 +-
 .../Service/V1/Data/CustomerBuilder.php       |   12 +-
 .../Service/V1/Data/CustomerDetails.php       |    2 +-
 .../V1/Data/CustomerDetailsBuilder.php        |   20 +-
 .../Service/V1/Data/CustomerGroup.php         |    2 +-
 .../Service/V1/Data/CustomerGroupBuilder.php  |    2 +-
 .../V1/Data/CustomerGroupSearchResults.php    |    2 +-
 .../CustomerGroupSearchResultsBuilder.php     |   10 +-
 .../V1/Data/CustomerValidationResults.php     |    2 +-
 .../Data/CustomerValidationResultsBuilder.php |    2 +-
 .../Service/V1/Data/Eav/AttributeMetadata.php |    4 +-
 .../V1/Data/Eav/AttributeMetadataBuilder.php  |   18 +-
 .../Customer/Service/V1/Data/Eav/Option.php   |    4 +-
 .../Service/V1/Data/Eav/OptionBuilder.php     |    2 +-
 .../Service/V1/Data/Eav/ValidationRule.php    |    7 +-
 .../V1/Data/Eav/ValidationRuleBuilder.php     |    2 +-
 .../Customer/Service/V1/Data/Region.php       |    2 +-
 .../Service/V1/Data/RegionBuilder.php         |    8 +-
 .../Service/V1/Data/SearchResults.php         |    2 +-
 .../Service/V1/Data/SearchResultsBuilder.php  |   10 +-
 .../Service/V1/MetadataServiceInterface.php   |    2 +-
 app/code/Magento/Customer/composer.json       |   36 +-
 .../data-upgrade-1.6.2.0.1-1.6.2.0.2.php      |    1 -
 .../di.xml => Customer/etc/crontab.xml}       |    8 +-
 app/code/Magento/Customer/etc/di.xml          |   48 +-
 app/code/Magento/Customer/etc/webapi.xml      |   24 +-
 .../sql/customer_setup/install-1.6.0.0.php    |    8 +-
 .../upgrade-1.6.2.0-1.6.2.0.1.php             |    2 +-
 .../upgrade-1.6.2.0.4-1.6.2.0.5.php           |    2 +-
 .../adminhtml/templates/tab/addresses.phtml   |    9 +-
 .../layout/customer_account_create.xml        |    2 +-
 .../customer_account_forgotpassword.xml       |    2 +-
 .../layout/customer_account_login.xml         |    2 +-
 .../frontend/templates/address/edit.phtml     |    3 +
 .../view/frontend/templates/form/edit.phtml   |    6 +-
 .../frontend/templates/form/register.phtml    |    9 +-
 .../form/resetforgottenpassword.phtml         |    4 +-
 .../CustomerImportExport/composer.json        |   16 +-
 app/code/Magento/DesignEditor/composer.json   |   14 +-
 .../designeditor_setup/install-1.0.0.1.php    |    2 +-
 .../upgrade-1.0.0.1-1.0.0.2.php               |    2 +-
 .../upgrade-1.0.0.2-1.0.0.3.php               |    2 +-
 .../view/adminhtml/web/css/styles.css         |    6 -
 app/code/Magento/Dhl/composer.json            |   22 +-
 .../data/dhl_setup/data-install-2.0.0.0.php   |    2 +-
 .../Magento/Directory/Model/PriceCurrency.php |    4 +-
 app/code/Magento/Directory/composer.json      |   10 +-
 .../directory_setup/data-install-1.6.0.0.php  |    2 +-
 .../data-upgrade-1.6.0.0-1.6.0.1.php          |    2 +-
 .../data-upgrade-1.6.0.1-1.6.0.2.php          |    2 +-
 .../sql/directory_setup/install-1.6.0.0.php   |    2 +-
 .../Service/V1/Data/FileContent.php           |    2 +-
 .../Service/V1/Data/FileContentBuilder.php    |    4 +-
 .../Data/DownloadableLinkContent.php          |    2 +-
 .../Data/DownloadableLinkContentBuilder.php   |    4 +-
 .../Data/DownloadableLinkInfo.php             |    2 +-
 .../Data/DownloadableLinkInfoBuilder.php      |    4 +-
 .../Data/DownloadableResourceInfo.php         |    2 +-
 .../Data/DownloadableResourceInfoBuilder.php  |    4 +-
 .../Data/DownloadableSampleInfo.php           |    2 +-
 .../Data/DownloadableSampleInfoBuilder.php    |    4 +-
 .../Data/DownloadableSampleContent.php        |    2 +-
 .../Data/DownloadableSampleContentBuilder.php |    4 +-
 app/code/Magento/Downloadable/composer.json   |   34 +-
 .../data-install-1.6.0.0.php                  |    3 +-
 .../data-upgrade-1.6.0.0.2-1.6.0.0.3.php      |    1 +
 .../downloadable_setup/install-1.6.0.0.php    |    2 +-
 .../upgrade-1.6.0.0.1-1.6.0.0.2.php           |    4 +-
 .../templates/catalog/product/links.phtml     |    1 +
 .../templates/catalog/product/type.phtml      |    8 +-
 app/code/Magento/Eav/composer.json            |   12 +-
 .../data-upgrade-1.6.0.0-1.6.0.1.php          |    2 +-
 .../data-upgrade-1.6.0.1-1.6.0.2.php          |    2 +-
 .../Eav/sql/eav_setup/install-1.6.0.0.php     |    2 +-
 .../sql/eav_setup/upgrade-1.6.0.1-1.6.0.2.php |    2 +-
 app/code/Magento/Email/composer.json          |   12 +-
 .../Email/sql/email_setup/install-1.0.0.0.php |    2 +-
 app/code/Magento/Fedex/composer.json          |   18 +-
 .../data/fedex_setup/data-install-2.0.0.0.php |    2 +-
 .../GiftMessage/Block/Message/Inline.php      |   10 -
 .../GiftMessage/Service/V1/Data/Message.php   |    2 +-
 app/code/Magento/GiftMessage/composer.json    |   22 +-
 .../data-upgrade-1.6.0.0-1.6.0.1.php          |    2 +-
 .../sql/giftmessage_setup/install-1.6.0.0.php |    2 +-
 .../view/frontend/templates/inline.phtml      |   10 -
 app/code/Magento/GoogleAdwords/composer.json  |    8 +-
 .../Magento/GoogleAnalytics/composer.json     |    8 +-
 .../Magento/GoogleOptimizer/composer.json     |   14 +-
 .../googleoptimizer_setup/install-2.0.0.0.php |    3 +-
 app/code/Magento/GoogleShopping/composer.json |   20 +-
 .../googleshopping_setup/install-1.6.0.0.php  |    3 +-
 .../upgrade-1.6.0.0-1.6.0.0.1.php             |    2 +-
 .../adminhtml_googleshopping_types_block.xml  |    2 +-
 .../Magento/GroupedImportExport/composer.json |   14 +-
 .../ProductLink/ProductEntity/Converter.php   |    2 +-
 app/code/Magento/GroupedProduct/composer.json |   24 +-
 .../templates/product/view/type/default.phtml |    8 +-
 .../templates/product/view/type/grouped.phtml |    6 +-
 app/code/Magento/ImportExport/composer.json   |   14 +-
 .../importexport_setup/install-1.6.0.0.php    |    2 +-
 .../upgrade-1.6.0.1-1.6.0.2.php               |    2 +-
 .../upgrade-1.6.0.2-1.6.0.3.php               |    2 +-
 .../upgrade-1.6.0.3-1.6.0.4.php               |    2 +-
 app/code/Magento/Indexer/composer.json        |    8 +-
 .../sql/indexer_setup/install-1.0.0.0.php     |    2 +-
 app/code/Magento/Install/App/Console.php      |  173 -
 app/code/Magento/Install/App/Output.php       |  115 -
 .../Magento/Install/Block/AbstractBlock.php   |  105 -
 app/code/Magento/Install/Block/Config.php     |  140 -
 app/code/Magento/Install/Block/Db/Main.php    |  144 -
 app/code/Magento/Install/Block/Db/Type.php    |  101 -
 app/code/Magento/Install/Block/Download.php   |   97 -
 app/code/Magento/Install/Block/End.php        |   97 -
 app/code/Magento/Install/Block/Locale.php     |  267 --
 app/code/Magento/Install/Block/State.php      |   83 -
 .../Controller/Adminhtml/Survey/Index.php     |   41 -
 app/code/Magento/Install/Model/Config.php     |  134 -
 .../Install/Model/Config/Converter.php        |   79 -
 .../Magento/Install/Model/Config/Reader.php   |   37 -
 .../Install/Model/Config/SchemaLocator.php    |   72 -
 app/code/Magento/Install/Model/Installer.php  |  573 ----
 .../Install/Model/Installer/Config.php        |  271 --
 .../Install/Model/Installer/Console.php       |  480 ---
 .../Magento/Install/Model/Installer/Db.php    |  194 --
 .../Install/Model/Installer/Db/AbstractDb.php |  203 --
 .../Install/Model/Installer/Db/Mysql4.php     |   70 -
 .../Install/Model/Installer/Filesystem.php    |  156 -
 .../Magento/Install/Model/Installer/Pear.php  |   90 -
 app/code/Magento/Install/Model/Setup.php      |   47 -
 app/code/Magento/Install/Model/Survey.php     |  141 -
 .../Install/Model/System/Message/Survey.php   |  135 -
 .../Magento/Install/Model/Uninstaller.php     |  161 -
 app/code/Magento/Install/Model/Wizard.php     |  162 -
 app/code/Magento/Install/composer.json        |   24 -
 app/code/Magento/Install/etc/di.xml           |  141 -
 app/code/Magento/Install/etc/frontend/di.xml  |   44 -
 app/code/Magento/Install/etc/install/di.xml   |   28 -
 .../Magento/Install/etc/install/events.xml    |   30 -
 .../Magento/Install/etc/install_wizard.xml    |   49 -
 .../Magento/Install/etc/install_wizard.xsd    |   86 -
 .../Install/etc/install_wizard_file.xsd       |   86 -
 app/code/Magento/Install/etc/module.xml       |   40 -
 app/code/Magento/Install/i18n/de_DE.csv       |  118 -
 app/code/Magento/Install/i18n/en_US.csv       |  118 -
 app/code/Magento/Install/i18n/es_ES.csv       |  118 -
 app/code/Magento/Install/i18n/fr_FR.csv       |  118 -
 app/code/Magento/Install/i18n/nl_NL.csv       |  118 -
 app/code/Magento/Install/i18n/pt_BR.csv       |  118 -
 app/code/Magento/Install/i18n/zh_CN.csv       |  118 -
 .../Install/view/adminhtml/layout/default.xml |   31 -
 .../view/install/layout/install_wizard.xml    |   38 -
 .../view/install/templates/config.phtml       |  183 --
 .../view/install/templates/create_admin.phtml |  123 -
 .../view/install/templates/db/main.phtml      |   90 -
 .../view/install/templates/db/mysql4.phtml    |   63 -
 .../view/install/templates/download.phtml     |  135 -
 .../Install/view/install/templates/end.phtml  |   46 -
 .../view/install/templates/locale.phtml       |   73 -
 .../Install/view/install/templates/page.phtml |  123 -
 .../view/install/templates/state.phtml        |   43 -
 .../view/install/web/css/mage-js-ee-style.css |   34 -
 .../view/install/web/css/mage-js-style.css    |   36 -
 .../Install/view/install/web/css/validate.css |   38 -
 .../web/images/validation_advice_bg.gif       |  Bin 134 -> 0 bytes
 .../Install/view/install/web/js/install.js    |  102 -
 app/code/Magento/Integration/composer.json    |   16 +-
 .../sql/integration_setup/install-1.0.0.0.php |    2 +-
 .../upgrade-1.0.0.0-1.0.0.1.php               |    2 +-
 .../upgrade-1.0.0.1-1.0.0.2.php               |    2 +-
 .../upgrade-1.0.0.2-1.0.0.3.php               |    4 +-
 .../Magento/LayeredNavigation/composer.json   |    8 +-
 app/code/Magento/Log/Model/Log.php            |    2 -
 app/code/Magento/Log/Model/Visitor.php        |    2 -
 app/code/Magento/Log/composer.json            |   14 +-
 .../data/log_setup/data-install-1.6.0.0.php   |    2 +-
 .../Log/sql/log_setup/install-1.6.0.0.php     |   11 +-
 app/code/Magento/Msrp/composer.json           |   24 +-
 app/code/Magento/Multishipping/composer.json  |   20 +-
 .../templates/checkout/addresses.phtml        |   18 +-
 .../frontend/templates/checkout/billing.phtml |   56 +-
 .../templates/checkout/shipping.phtml         |   59 +-
 app/code/Magento/Newsletter/composer.json     |   22 +-
 .../data-upgrade-1.6.0.1-1.6.0.2.php          |    2 +-
 .../sql/newsletter_setup/install-1.6.0.0.php  |    4 +-
 .../view/frontend/templates/subscribe.phtml   |   18 +-
 .../Magento/OfflinePayments/composer.json     |    6 +-
 .../Magento/OfflineShipping/composer.json     |   20 +-
 .../offlineshipping_setup/install-2.0.0.0.php |    2 +-
 app/code/Magento/Ogone/composer.json          |   12 +-
 .../data/ogone_setup/data-install-1.6.0.0.php |    2 +-
 app/code/Magento/PageCache/composer.json      |    8 +-
 .../PayPalRecurringPayment/composer.json      |   16 +-
 app/code/Magento/Payment/composer.json        |   14 +-
 app/code/Magento/Paypal/Block/Iframe.php      |    2 +-
 app/code/Magento/Paypal/composer.json         |   30 +-
 .../data-upgrade-1.6.0.2-1.6.0.3.php          |    2 +-
 .../sql/paypal_setup/install-1.6.0.0.php      |    2 +-
 .../paypal_setup/upgrade-1.6.0.0-1.6.0.1.php  |    2 +-
 .../paypal_setup/upgrade-1.6.0.1-1.6.0.2.php  |    2 +-
 .../paypal_setup/upgrade-1.6.0.3-1.6.0.4.php  |    2 +-
 app/code/Magento/Persistent/composer.json     |   16 +-
 .../sql/persistent_setup/install-1.0.0.0.php  |    2 +-
 app/code/Magento/ProductAlert/composer.json   |   12 +-
 .../productalert_setup/install-1.6.0.0.php    |    3 +-
 .../Magento/RecurringPayment/composer.json    |   26 +-
 .../data-install-1.0.0.0.php                  |    3 +-
 .../install-1.0.0.0.php                       |    3 +-
 .../templates/recurring/payment/view.phtml    |  145 +-
 .../recurring/payment/view/info.phtml         |    4 +-
 app/code/Magento/Reports/composer.json        |   36 +-
 .../sql/reports_setup/install-1.6.0.0.php     |    2 +-
 .../upgrade-1.6.0.0-1.6.0.0.1.php             |    2 +-
 .../upgrade-1.6.0.0.1-1.6.0.0.2.php           |    2 +-
 .../product/widget/viewed/item.phtml          |    4 +-
 .../column/compared_default_list.phtml        |  110 +-
 .../column/compared_images_list.phtml         |   12 +-
 .../compared/column/compared_names_list.phtml |   14 +-
 .../compared/content/compared_grid.phtml      |   34 +-
 .../compared/content/compared_list.phtml      |   43 +-
 .../viewed/column/viewed_default_list.phtml   |   37 +-
 .../viewed/column/viewed_images_list.phtml    |   16 +-
 .../viewed/column/viewed_names_list.phtml     |   16 +-
 .../widget/viewed/content/viewed_grid.phtml   |   42 +-
 .../widget/viewed/content/viewed_list.phtml   |   47 +-
 app/code/Magento/RequireJs/composer.json      |    4 +-
 .../Magento/Review/Block/Adminhtml/Rss.php    |    8 +
 app/code/Magento/Review/composer.json         |   22 +-
 .../sql/review_setup/install-1.6.0.0.php      |    3 +-
 .../frontend/layout/review_product_list.xml   |    2 +-
 .../frontend/templates/helper/summary.phtml   |    6 +-
 .../templates/product/view/list.phtml         |   16 +-
 ...tication.php => BackendAuthentication.php} |    7 +-
 .../Magento/Rss/Controller/Adminhtml/Feed.php |    2 +-
 app/code/Magento/Rss/Controller/Feed.php      |   59 +-
 .../Magento/Rss/Controller/Feed/Index.php     |    4 +
 app/code/Magento/Rss/composer.json            |    9 +-
 app/code/Magento/Rss/etc/adminhtml/di.xml     |    4 +-
 app/code/Magento/Rss/etc/module.xml           |    1 +
 app/code/Magento/Rule/composer.json           |   12 +-
 .../Order/Create/Form/AbstractForm.php        |    2 +-
 .../Adminhtml/Order/Create/Form/Account.php   |    2 +-
 .../Magento/Sales/Model/AdminOrder/Create.php |   10 +-
 .../Order/Payment/TransactionRepository.php   |   12 +-
 .../Magento/Sales/Model/OrderConverter.php    |    2 +-
 app/code/Magento/Sales/Model/Quote.php        |    2 +-
 app/code/Magento/Sales/Model/Rss/NewOrder.php |    8 +
 .../Magento/Sales/Model/Rss/OrderStatus.php   |    8 +
 .../V1/Action/CreditmemoCommentsList.php      |   12 +-
 .../Service/V1/Action/CreditmemoList.php      |    6 +-
 .../Service/V1/Action/InvoiceCommentsList.php |   12 +-
 .../Sales/Service/V1/Action/InvoiceList.php   |    4 +-
 .../Service/V1/Action/OrderCommentsList.php   |    4 +-
 .../Sales/Service/V1/Action/OrderList.php     |    4 +-
 .../V1/Action/ShipmentCommentsList.php        |   12 +-
 .../Sales/Service/V1/Action/ShipmentList.php  |    4 +-
 .../Sales/Service/V1/CreditmemoRead.php       |    4 +-
 .../Service/V1/CreditmemoReadInterface.php    |    6 +-
 .../Magento/Sales/Service/V1/Data/Comment.php |    2 +-
 .../Sales/Service/V1/Data/Creditmemo.php      |    2 +-
 .../Sales/Service/V1/Data/CreditmemoItem.php  |    2 +-
 .../Service/V1/Data/CreditmemoMapper.php      |    2 +-
 .../Magento/Sales/Service/V1/Data/Invoice.php |    2 +-
 .../Sales/Service/V1/Data/InvoiceItem.php     |    2 +-
 .../Sales/Service/V1/Data/InvoiceMapper.php   |    2 +-
 .../Magento/Sales/Service/V1/Data/Order.php   |    2 +-
 .../Sales/Service/V1/Data/OrderAddress.php    |    2 +-
 .../Sales/Service/V1/Data/OrderItem.php       |    2 +-
 .../Sales/Service/V1/Data/OrderPayment.php    |    2 +-
 .../Service/V1/Data/OrderStatusHistory.php    |    2 +-
 .../Sales/Service/V1/Data/Shipment.php        |    2 +-
 .../Sales/Service/V1/Data/ShipmentItem.php    |    2 +-
 .../Sales/Service/V1/Data/ShipmentTrack.php   |    2 +-
 .../Sales/Service/V1/Data/Transaction.php     |    2 +-
 .../Transaction/AdditionalInformation.php     |    2 +-
 .../Service/V1/Data/TransactionBuilder.php    |    2 +-
 .../Magento/Sales/Service/V1/InvoiceRead.php  |    6 +-
 .../Sales/Service/V1/InvoiceReadInterface.php |    6 +-
 .../Magento/Sales/Service/V1/OrderRead.php    |    4 +-
 .../Sales/Service/V1/OrderReadInterface.php   |    4 +-
 .../Magento/Sales/Service/V1/ShipmentRead.php |    6 +-
 .../Service/V1/ShipmentReadInterface.php      |    6 +-
 .../Sales/Service/V1/TransactionRead.php      |    2 +-
 .../Service/V1/TransactionReadInterface.php   |    4 +-
 app/code/Magento/Sales/composer.json          |   44 +-
 .../Sales/sql/sales_setup/install-1.6.0.0.php |    2 +-
 .../sales_setup/upgrade-1.6.0.0-1.6.0.1.php   |    2 +-
 .../sales_setup/upgrade-1.6.0.1-1.6.0.2.php   |    2 +-
 .../sales_setup/upgrade-1.6.0.11-1.6.0.12.php |    2 +-
 .../sales_setup/upgrade-1.6.0.2-1.6.0.3.php   |    2 +-
 .../sales_setup/upgrade-1.6.0.3-1.6.0.4.php   |    2 +-
 .../sales_setup/upgrade-1.6.0.4-1.6.0.5.php   |    2 +-
 .../sales_setup/upgrade-1.6.0.6-1.6.0.7.php   |    2 +-
 .../sales_setup/upgrade-1.6.0.7-1.6.0.8.php   |    2 +-
 .../sales_setup/upgrade-1.6.0.8-1.6.0.9.php   |    2 +-
 .../layout/sales_order_guest_info_links.xml   |    8 +-
 .../frontend/templates/reorder/sidebar.phtml  |   24 +-
 .../Magento/SalesRule/Block/Rss/Discounts.php |    8 +
 .../Model/Resource/Report/Collection.php      |    7 +-
 app/code/Magento/SalesRule/composer.json      |   34 +-
 .../sql/salesrule_setup/install-1.6.0.0.php   |    2 +-
 .../upgrade-1.6.0.0-1.6.0.1.php               |    3 +-
 .../upgrade-1.6.0.1-1.6.0.2.php               |    2 +-
 .../upgrade-1.6.0.2-1.6.0.3.php               |    2 +-
 app/code/Magento/Search/composer.json         |    8 +-
 .../sql/search_setup/install-1.6.0.0.php      |    2 +-
 app/code/Magento/Sendfriend/composer.json     |   14 +-
 .../sql/sendfriend_setup/install-1.6.0.0.php  |    2 +-
 app/code/Magento/Shipping/composer.json       |   26 +-
 .../frontend/templates/tracking/popup.phtml   |    6 +-
 app/code/Magento/Sitemap/composer.json        |   18 +-
 .../sql/sitemap_setup/install-1.6.0.0.php     |    4 +-
 .../Model/Config/Reader/DefaultReader.php     |   30 +-
 .../Store/Model/Config/Reader/Store.php       |   63 +-
 .../Store/Model/Config/Reader/Website.php     |   37 +-
 .../Magento/Store/Model/StorageFactory.php    |   25 +-
 app/code/Magento/Store/composer.json          |   10 +-
 .../Store/sql/store_setup/install-2.0.0.0.php |    3 +-
 app/code/Magento/Tax/Model/Rate/Source.php    |    2 +-
 .../Tax/Model/TaxClass/Source/Customer.php    |   12 +-
 .../Tax/Model/TaxClass/Source/Product.php     |   12 +-
 .../Tax/Model/TaxClass/Type/Customer.php      |   12 +-
 .../V1/Collection/TaxRateCollection.php       |    8 +-
 .../V1/Collection/TaxRuleCollection.php       |    8 +-
 .../Tax/Service/V1/Data/OrderTaxDetails.php   |    2 +-
 .../V1/Data/OrderTaxDetails/AppliedTax.php    |    2 +-
 .../OrderTaxDetails/AppliedTaxBuilder.php     |    2 +-
 .../Service/V1/Data/OrderTaxDetails/Item.php  |    2 +-
 .../V1/Data/OrderTaxDetails/ItemBuilder.php   |   10 +-
 .../V1/Data/OrderTaxDetailsBuilder.php        |   10 +-
 .../Tax/Service/V1/Data/QuoteDetails.php      |    2 +-
 .../Tax/Service/V1/Data/QuoteDetails/Item.php |    2 +-
 .../V1/Data/QuoteDetails/ItemBuilder.php      |   10 +-
 .../Service/V1/Data/QuoteDetailsBuilder.php   |   10 +-
 .../Magento/Tax/Service/V1/Data/TaxClass.php  |    2 +-
 .../Tax/Service/V1/Data/TaxClassBuilder.php   |    2 +-
 .../Tax/Service/V1/Data/TaxClassKey.php       |    2 +-
 .../Service/V1/Data/TaxClassKeyBuilder.php    |    4 +-
 .../Service/V1/Data/TaxClassSearchResults.php |    2 +-
 .../V1/Data/TaxClassSearchResultsBuilder.php  |   10 +-
 .../Tax/Service/V1/Data/TaxDetails.php        |    2 +-
 .../Service/V1/Data/TaxDetails/AppliedTax.php |    2 +-
 .../V1/Data/TaxDetails/AppliedTaxBuilder.php  |   10 +-
 .../V1/Data/TaxDetails/AppliedTaxRate.php     |    2 +-
 .../Data/TaxDetails/AppliedTaxRateBuilder.php |    2 +-
 .../Tax/Service/V1/Data/TaxDetails/Item.php   |    2 +-
 .../V1/Data/TaxDetails/ItemBuilder.php        |   10 +-
 .../Tax/Service/V1/Data/TaxDetailsBuilder.php |   10 +-
 .../Magento/Tax/Service/V1/Data/TaxRate.php   |    2 +-
 .../Tax/Service/V1/Data/TaxRateBuilder.php    |    8 +-
 .../Service/V1/Data/TaxRateSearchResults.php  |    2 +-
 .../V1/Data/TaxRateSearchResultsBuilder.php   |   10 +-
 .../Tax/Service/V1/Data/TaxRateTitle.php      |    2 +-
 .../Service/V1/Data/TaxRateTitleBuilder.php   |    2 +-
 .../Magento/Tax/Service/V1/Data/TaxRule.php   |    2 +-
 .../Tax/Service/V1/Data/TaxRuleBuilder.php    |   10 +-
 .../Service/V1/Data/TaxRuleSearchResults.php  |    2 +-
 .../V1/Data/TaxRuleSearchResultsBuilder.php   |   10 +-
 .../Magento/Tax/Service/V1/Data/ZipRange.php  |    2 +-
 .../Tax/Service/V1/Data/ZipRangeBuilder.php   |    2 +-
 .../Tax/Service/V1/TaxClassService.php        |   14 +-
 .../Service/V1/TaxClassServiceInterface.php   |    4 +-
 .../Magento/Tax/Service/V1/TaxRateService.php |    9 +-
 .../Service/V1/TaxRateServiceInterface.php    |    4 +-
 .../Magento/Tax/Service/V1/TaxRuleService.php |   10 +-
 .../Service/V1/TaxRuleServiceInterface.php    |    4 +-
 app/code/Magento/Tax/composer.json            |   28 +-
 .../data/tax_setup/data-install-1.6.0.0.php   |    1 +
 .../data-upgrade-1.6.0.0-1.6.0.1.php          |    5 +-
 .../Tax/sql/tax_setup/install-1.6.0.0.php     |    5 +-
 .../sql/tax_setup/upgrade-1.6.0.0-1.6.0.1.php |    3 +-
 .../sql/tax_setup/upgrade-1.6.0.1-1.6.0.2.php |    2 +-
 .../sql/tax_setup/upgrade-1.6.0.2-1.6.0.3.php |    2 +-
 .../sql/tax_setup/upgrade-1.6.0.4-1.6.0.5.php |    2 +-
 .../sql/tax_setup/upgrade-1.6.0.5-1.6.0.6.php |    2 +-
 .../sql/tax_setup/upgrade-1.6.0.6-1.6.0.7.php |    2 +-
 .../Magento/TaxImportExport/composer.json     |   12 +-
 app/code/Magento/Theme/composer.json          |   16 +-
 .../Theme/view/adminhtml/web/css/theme.css    |    1 -
 .../Theme/view/base/templates/root.phtml      |    1 +
 .../Theme/view/frontend/layout/default.xml    |   11 +-
 .../view/frontend/templates/html/pager.phtml  |   22 +-
 .../frontend/templates/html/skiptarget.phtml} |   11 +-
 app/code/Magento/Translation/composer.json    |   10 +-
 .../sql/translation_setup/install-1.0.0.0.php |    2 +-
 app/code/Magento/Ui/composer.json             |    8 +-
 app/code/Magento/Ups/composer.json            |   18 +-
 .../UrlRewrite/Service/V1/Data/UrlRewrite.php |    2 +-
 .../Service/V1/Data/UrlRewriteBuilder.php     |    6 +-
 app/code/Magento/UrlRewrite/composer.json     |   18 +-
 .../sql/urlrewrite_setup/install-1.0.0.0.php  |    2 +-
 app/code/Magento/User/composer.json           |   14 +-
 .../User/sql/user_setup/install-1.6.0.0.php   |    2 +-
 .../user_setup/upgrade-1.6.0.0-1.6.1.0.php    |    2 +-
 .../user_setup/upgrade-1.6.1.0-1.6.1.1.php    |    2 +-
 .../user_setup/upgrade-1.6.1.3-1.6.1.4.php    |    2 +-
 .../user_setup/upgrade-1.6.1.5-1.6.1.6.php    |    2 +-
 app/code/Magento/Usps/composer.json           |   18 +-
 .../data/usps_setup/data-install-2.0.0.0.php  |    1 +
 app/code/Magento/Webapi/Controller/Rest.php   |    2 +-
 .../Webapi/Controller/Rest/Request.php        |    2 +-
 .../Rest/Request/Deserializer/Json.php        |    7 +-
 .../Rest/Request/Deserializer/Xml.php         |    5 +-
 .../Rest/Response/DataObjectConverter.php     |    6 +-
 .../Controller/ServiceArgsSerializer.php      |   74 +-
 .../Controller/Soap/Request/Handler.php       |    6 +-
 app/code/Magento/Webapi/Helper/Data.php       |   16 +-
 app/code/Magento/Webapi/Model/Config.php      |    2 +
 .../Webapi/Model/Config/ClassReflector.php    |    8 +-
 app/code/Magento/Webapi/Model/Soap/Server.php |   24 +-
 .../Model/Soap/Wsdl/ComplexTypeStrategy.php   |    6 +-
 .../Webapi/Model/Soap/Wsdl/Generator.php      |    6 +-
 app/code/Magento/Webapi/composer.json         |   16 +-
 app/code/Magento/Webapi/etc/di.xml            |    5 +
 .../sql/webapi_setup/install-1.0.0.0.php      |    2 +-
 .../webapi_setup/upgrade-1.0.0.0-1.0.0.1.php  |    2 +-
 .../webapi_setup/upgrade-1.0.0.1-1.0.0.2.php  |    2 +-
 .../webapi_setup/upgrade-1.0.0.2-1.0.0.3.php  |    2 +-
 .../webapi_setup/upgrade-1.0.0.3-1.0.0.4.php  |    2 +-
 app/code/Magento/Weee/Model/Tax.php           |   16 +-
 app/code/Magento/Weee/composer.json           |   24 +-
 .../Weee/sql/weee_setup/install-1.6.0.0.php   |    2 +-
 .../Widget/Model/NamespaceResolver.php        |    4 +-
 app/code/Magento/Widget/composer.json         |   14 +-
 .../data-upgrade-1.6.0.0-1.6.0.1.php          |    2 +-
 .../sql/widget_setup/install-1.6.0.0.php      |    2 +-
 .../widget_setup/upgrade-1.6.0.1-1.6.0.2.php  |    2 +-
 .../Magento/Wishlist/Block/Item/Configure.php |   10 +
 .../Magento/Wishlist/Block/Rss/EmailLink.php  |   14 +
 .../Magento/Wishlist/Model/Rss/Wishlist.php   |   43 +-
 app/code/Magento/Wishlist/composer.json       |   32 +-
 .../sql/wishlist_setup/install-1.6.0.0.php    |    2 +-
 .../wishlist_index_configure_type_bundle.xml  |    2 +-
 .../templates/item/column/comment.phtml       |    9 +-
 .../view/frontend/templates/item/list.phtml   |    2 +-
 .../view/frontend/templates/shared.phtml      |    2 +-
 .../view/frontend/templates/sidebar.phtml     |   61 +-
 .../view/frontend/web/js/add-to-wishlist.js   |    2 +
 .../Magento_Ui/web/css/source/module.less     |    2 -
 .../adminhtml/Magento/backend/composer.json   |    4 +-
 .../adminhtml/Magento/backend/theme.xml       |    2 +-
 .../Magento/backend/web/css/admin.less        |   83 +-
 .../backend/web/css/source/navigation.less    |    4 -
 .../adminhtml/Magento/backend/web/js/theme.js |    5 +-
 .../Magento/backend/web/less/lib/buttons.less |   12 -
 .../Magento/backend/web/mui/base.css          |   20 -
 .../Magento/backend/web/mui/reset.css         |    9 -
 .../web/css/source/listings.less              |   19 +-
 .../web/css/source/module.less                |  197 +-
 .../web/css/source/toolbar.less               |    3 +
 .../web/css/source/widgets.less               |   64 +-
 .../web/css/source/module.less                |    5 -
 .../layout/checkout_cart_index.xml            |    2 +-
 .../Magento_Checkout/web/css/source/cart.less |  112 +-
 .../web/css/source/minicart.less              |    4 +-
 .../web/css/source/module.less                |   34 +
 .../web/css/source/module.less                |   15 +
 .../web/css/source/module.less                |    7 +
 .../web/css/source/module.less                |   38 +
 .../web/css/source/module.less                |   71 +
 .../Magento_Sales/web/css/source/module.less  |   18 +-
 .../Magento_Theme/web/css/source/module.less  |    7 +-
 .../web/css/source/module.less                |  108 +-
 .../frontend/Magento/blank/composer.json      |    4 +-
 .../frontend/Magento/blank/etc/view.xml       |   52 +-
 app/design/frontend/Magento/blank/theme.xml   |    2 +-
 .../blank/web/css/source/abstract.less        |   82 +
 .../frontend/Magento/blank/web/js/theme.js    |    5 +-
 .../frontend/Magento/plushe/composer.json     |    6 +-
 app/design/frontend/Magento/plushe/theme.xml  |    2 +-
 app/design/install/Magento/basic/theme.xml    |   28 -
 .../install/Magento/basic/web/css/boxes.css   |  372 ---
 .../install/Magento/basic/web/css/clears.css  |   69 -
 .../Magento/basic/web/css/ie7minus.css        |   38 -
 .../Magento/basic/web/css/iestyles.css        |   72 -
 .../install/Magento/basic/web/css/reset.css   |   72 -
 .../basic/web/images/error_msg_icon.gif       |  Bin 1013 -> 0 bytes
 .../Magento/basic/web/images/footer_bg.gif    |  Bin 73 -> 0 bytes
 .../basic/web/images/footer_container_bg.gif  |  Bin 85 -> 0 bytes
 .../web/images/footer_info_separator.gif      |  Bin 51 -> 0 bytes
 .../web/images/footer_informational_bg.gif    |  Bin 155 -> 0 bytes
 .../Magento/basic/web/images/footer_left.gif  |  Bin 486 -> 0 bytes
 .../basic/web/images/footer_legality_bg.gif   |  Bin 92 -> 0 bytes
 .../Magento/basic/web/images/footer_right.gif |  Bin 489 -> 0 bytes
 .../Magento/basic/web/images/header_bg.gif    |  Bin 471 -> 0 bytes
 .../basic/web/images/header_nav_bg.gif        |  Bin 49 -> 0 bytes
 .../basic/web/images/header_top_bg.jpg        |  Bin 32536 -> 0 bytes
 .../web/images/header_top_container_bg.jpg    |  Bin 40972 -> 0 bytes
 .../Magento/basic/web/images/i_notice.gif     |  Bin 802 -> 0 bytes
 .../Magento/basic/web/images/main_bg.gif      |  Bin 32524 -> 0 bytes
 .../basic/web/images/main_container_bg.gif    |  Bin 7629 -> 0 bytes
 .../basic/web/images/note_msg_icon.gif        |  Bin 1022 -> 0 bytes
 .../basic/web/images/success_msg_icon.gif     |  Bin 1024 -> 0 bytes
 .../basic/web/images/validation_advice_bg.gif |  Bin 134 -> 0 bytes
 app/etc/di.xml                                |   10 +-
 app/i18n/magento/de_de/composer.json          |    4 +-
 app/i18n/magento/en_us/composer.json          |    4 +-
 app/i18n/magento/es_es/composer.json          |    4 +-
 app/i18n/magento/fr_fr/composer.json          |    4 +-
 app/i18n/magento/nl_nl/composer.json          |    4 +-
 app/i18n/magento/pt_br/composer.json          |    4 +-
 app/i18n/magento/zh_cn/composer.json          |    4 +-
 composer.json                                 |   46 +-
 dev/shell/cache.php                           |   13 +-
 dev/shell/install.php                         |  107 -
 dev/shell/maintenance.php                     |   77 -
 dev/shell/run_data_fixtures.php               |    4 +-
 dev/shell/uninstall.php                       |   49 -
 dev/tests/functional/.gitignore               |    1 +
 dev/tests/functional/bootstrap.php            |    2 +
 .../Backend/Test/Block/Widget/Form.php        |    1 +
 .../AssertBundleItemsOnProductPage.php        |    5 +
 .../Test/Fixture/BundleProduct/Price.php      |    2 +-
 .../Test/Handler/BundleProduct/Curl.php       |   76 +-
 .../CreateBundleProductEntityTest/test.csv    |    8 +-
 .../Edit/Tab/ProductDetails/CategoryIds.php   |   20 +
 .../Block/Product/Compare/ListCompare.php     |   17 +-
 .../AssertPriceOnProductPageInterface.php     |    7 +-
 ...AssertProductGroupedPriceOnProductPage.php |   15 +-
 .../Test/Constraint/AssertProductPage.php     |    4 +
 ...AssertProductSpecialPriceOnProductPage.php |   17 +-
 .../AssertProductTierPriceOnProductPage.php   |   13 +-
 .../Test/Fixture/CatalogProductAttribute.php  |    2 +-
 .../Test/Fixture/CatalogProductAttribute.xml  |    2 +-
 .../CatalogProductSimple/CheckoutData.php     |    9 +-
 .../Handler/CatalogProductAttribute/Curl.php  |    2 +-
 .../Handler/CatalogProductSimple/Curl.php     |   41 +-
 .../testCreate.csv                            |   38 +-
 .../testCreate.csv                            |   16 +-
 .../Test/TestStep/CreateProductStep.php       |   79 +
 .../TestStep/OpenProductOnBackendStep.php}    |   50 +-
 .../TestStep/OpenProductsOnFrontendStep.php   |   45 +-
 .../Catalog/Test/TestStep/SaveProductStep.php |   70 +
 .../Checkout/Test/Block/Cart/CartItem.php     |    4 +-
 .../Product/Edit/Tab/Super/Config.php         |   25 +-
 .../Edit/Tab/Super/Config/Attribute.php       |   28 +-
 .../Product/Edit/Tab/Super/Config/Matrix.php  |   33 +-
 ...figurableAttributesAbsentOnProductPage.php |   81 +
 ...leAttributesBlockIsAbsentOnProductPage.php |   73 +
 .../Fixture/ConfigurableProductInjectable.php |   11 +-
 .../CheckoutData.php                          |   45 +-
 .../ConfigurableAttributesData.php            |  115 +-
 .../Test/Page/Product/CatalogProductView.xml  |    5 +
 .../UpdateConfigurableProductEntityTest.php   |   56 +-
 .../test.csv                                  |    5 +
 .../UpdateConfigurableProductStep.php         |  215 ++
 .../Test/etc/constraint.xml                   |    6 +
 .../ConfigurableProduct/Test/etc/page.xml     |   42 -
 .../ConfigurableProduct/Test/etc/scenario.xml |   49 +
 .../Customer/Test/Block/Form/Register.xml     |    2 +-
 .../Test/Fixture/AddressInjectable.php        |    2 +-
 .../Test/Fixture/AddressInjectable.xml        |    2 +-
 .../ChangeCustomerPasswordTest/test.csv       |    2 +-
 .../Fixture/DownloadableProductInjectable.php |    5 +
 .../Fixture/DownloadableProductInjectable.xml |    5 +
 .../CheckoutData.php                          |    2 +-
 .../test.csv                                  |   10 +-
 .../test.csv                                  |    3 +-
 ...bstractAssertPriceOnGroupedProductPage.php |   12 +-
 .../Test/Fixture/GroupedProductInjectable.php |    2 +-
 .../Test/Fixture/GroupedProductInjectable.xml |    1 +
 .../Test/Page/Product/CatalogProductView.xml  |    5 +
 ...AssertProductAttributeAbsenceForExport.php |    3 +-
 dev/tests/functional/utils/bootstrap.php      |    2 +
 .../functional/utils/generate/factory.php     |   20 +-
 dev/tests/functional/utils/generate/page.php  |    3 +-
 dev/tests/integration/.gitignore              |    2 +-
 .../etc/install-config-mysql.php.dist}        |   24 +-
 .../etc/install-config-mysql.travis.php.dist  |   16 +-
 .../etc/local-mysql.travis.xml.dist           |   52 -
 .../integration/etc/local-mysql.xml.dist      |   52 -
 .../TestFramework/Annotation/AppArea.php      |    1 -
 .../Magento/TestFramework/Application.php     |  419 ++-
 .../Magento/TestFramework/Bootstrap.php       |  197 +-
 .../TestFramework/Bootstrap/MemoryFactory.php |   58 +
 .../Magento/TestFramework/Db/AbstractDb.php   |   51 +-
 .../Magento/TestFramework/Db/Mysql.php        |   63 +-
 .../TestFramework/Helper/Bootstrap.php        |   14 +-
 .../TestFramework/Indexer/TestCase.php        |   41 +-
 .../TestFramework/ObjectManagerFactory.php    |    4 +-
 dev/tests/integration/framework/bootstrap.php |   65 +-
 .../tests/unit/framework/bootstrap.php        |    4 +-
 .../Magento/Test/ApplicationTest.php          |   27 +-
 .../testsuite/Magento/Test/BootstrapTest.php  |  260 +-
 .../Magento/Test/Helper/BootstrapTest.php     |   14 +-
 dev/tests/integration/phpunit.xml.dist        |    4 +-
 .../Magento/Catalog/Model/CategoryTest.php    |   24 +-
 .../V1/Category/MetadataServiceTest.php       |    2 +-
 .../V1/Product/MetadataServiceTest.php        |    2 +-
 .../Catalog/_files/etc/data_object.xml        |    2 +-
 .../Core/Model/Theme/CollectionTest.php       |    5 +-
 .../Magento/Core/Model/View/DesignTest.php    |    4 +-
 .../Model/System/CurrencysymbolTest.php       |   15 +-
 .../Customer/Api/AddressRepositoryTest.php    |  431 +++
 .../Adminhtml/Edit/Tab/AddressesTest.php      |    2 +-
 .../Edit/Tab/View/PersonalInfoTest.php        |    3 +-
 .../Block/Adminhtml/Group/Edit/FormTest.php   |    6 +-
 .../Block/Adminhtml/Group/EditTest.php        |   10 +-
 .../Customer/Controller/AccountTest.php       |   18 +-
 .../Controller/Adminhtml/GroupTest.php        |    2 +-
 .../Controller/Adminhtml/IndexTest.php        |    4 +-
 .../Magento/Customer/Helper/AddressTest.php   |    2 +-
 .../Customer/Model/AccountManagementTest.php  |  846 +++++
 .../Magento/Customer/Model/AddressTest.php    |   91 +
 .../Magento/Customer/Model/CustomerTest.php   |   91 +
 .../Customer/Model/GroupManagementTest.php    |  138 +
 .../Magento/Customer/Model/GroupTest.php      |   17 +-
 .../Model/Resource/AddressRepositoryTest.php  |  238 ++
 .../Model/Resource/CustomerRepositoryTest.php |  260 ++
 .../Model/Resource/GroupRepositoryTest.php    |  264 ++
 .../Magento/Customer/Model/VisitorTest.php    |   34 +
 .../Service/V1/AddressMetadataServiceTest.php |    2 +-
 .../Service/V1/CustomerAccountServiceTest.php |   50 +-
 .../Service/V1/CustomerGroupServiceTest.php   |   10 +-
 .../V1/CustomerMetadataServiceTest.php        |    4 +-
 .../Customer/_files/etc/data_object.xml       |    6 +-
 .../testsuite/Magento/DatabaseTest.php        |    6 +-
 .../Api/Code/Generator/DataBuilderTest.php    |  101 +
 .../{Service => Api}/Config/ReaderTest.php    |   16 +-
 .../Config/_files/config_one.xml              |    2 +-
 .../Config/_files/config_two.xml              |    2 +-
 .../Api/Data/FakeAddressInterface.php         |  175 ++
 .../Api/Data/FakeRegionInterface.php          |   62 +
 .../Magento/Wonderland/Model/FakeAddress.php  |  201 ++
 .../Magento/Wonderland/Model/FakeRegion.php   |   62 +
 .../Magento/Framework/App/AreaTest.php        |    2 +-
 .../Code/Generator/FileResolverTest.php       |   97 +
 .../Magento/Framework/Code/GeneratorTest.php  |    2 +-
 .../Framework/Code/_files/ClassToFind.php}    |   10 +-
 .../Framework/Image/Adapter/InterfaceTest.php |    2 +-
 .../Magento/Framework/Module/SetupTest.php    |   15 +-
 .../Magento/Install/Block/AdminTest.php       |   62 -
 .../Magento/Install/Model/ConfigTest.php      |  227 --
 .../Magento/Test/etc/install_wizard.xml       |   39 -
 .../Model/_files/Magento/Test/etc/module.xml  |   28 -
 .../Model/_files/install_wizard_complete.xml  |   36 -
 .../Model/_files/install_wizard_partial.xml   |   40 -
 .../Newsletter/Model/Plugin/PluginTest.php    |    3 +-
 .../Magento/Newsletter/Model/TemplateTest.php |    2 -
 .../Order/Create/Form/AbstractTest.php        |    8 +-
 .../Data/TaxRateSearchResultsBuilderTest.php  |    2 +-
 .../Data/TaxRuleSearchResultsBuilderTest.php  |    4 +-
 .../Tax/Service/V1/TaxRateServiceTest.php     |   10 +-
 .../Tax/Service/V1/TaxRuleServiceTest.php     |    6 +-
 .../Modular/BlockInstantiationTest.php        |    4 +-
 .../Integrity/Modular/LayoutFilesTest.php     |    2 +-
 .../Modular/RouteConfigFilesTest.php          |    9 +-
 .../Integrity/Modular/TemplateFilesTest.php   |    4 +-
 .../Test/Integrity/StaticFilesTest.php        |    2 -
 .../ToolkitFramework/ApplicationTest.php      |    3 -
 .../testsuite/Magento/User/Model/UserTest.php |   14 +-
 .../Magento/Webapi/Model/Soap/ServerTest.php  |    4 +-
 ...uilder.php => AssociativeArrayBuilder.php} |    4 +-
 ...Builder.php => DataObjectArrayBuilder.php} |    4 +-
 ...ataObjectBuilder.php => NestedBuilder.php} |    4 +-
 ...jectBuilder.php => SimpleArrayBuilder.php} |    4 +-
 ...ataObjectBuilder.php => SimpleBuilder.php} |    6 +-
 .../Webapi/Service/Entity/TestService.php     |   28 +-
 .../testsuite/Magento/Weee/Model/TaxTest.php  |    2 +-
 dev/tests/js/run_js_tests.php                 |    1 -
 dev/tests/performance/config.php.dist         |   29 +-
 .../Magento/TestFramework/Application.php     |   35 +-
 .../TestFramework/Performance/Config.php      |   43 +-
 dev/tests/performance/framework/bootstrap.php |    4 +-
 .../tests/unit/framework/bootstrap.php        |    4 +-
 .../Magento/Test/ApplicationTest.php          |   18 +-
 .../Magento/Test/Performance/ConfigTest.php   |   14 +-
 .../shell/install.php => setup/index.php}     |    2 +-
 .../bootstrap/config_dist/config.php.dist     |   10 +-
 .../_files/bootstrap/config_normal/config.php |    8 +-
 .../bootstrap/config_normal/config.php.dist   |   10 +-
 .../Test/Performance/_files/config_data.php   |   11 +-
 .../TestFramework/Dependency/LayoutRule.php   |    1 -
 .../TestFramework/Dependency/PhpRule.php      |    1 -
 .../Magento/TestFramework/Utility/Classes.php |    4 +-
 dev/tests/static/framework/bootstrap.php      |    4 +-
 .../TestFramework/Dependency/PhpRuleTest.php  |    5 +-
 .../Test/Integrity/Di/CompilerTest.php        |   61 +-
 .../Test/Integrity/Di/_files/blacklist.txt    |    1 +
 .../Integrity/Magento/Install/ConfigTest.php  |   64 -
 .../Magento/Install/_files/install_wizard.xml |   44 -
 .../Install/_files/invalid_install_wizard.xml |   44 -
 .../_files/invalid_partial_install_wizard.xml |   36 -
 .../Install/_files/partial_install_wizard.xml |   41 -
 .../Integrity/_files/blacklist/namespace.txt  |    8 +-
 .../Integrity/_files/blacklist/reference.txt  |    1 +
 .../Magento/Test/Js/_files/whitelist/core.txt |    1 -
 .../Legacy/Magento/Install/ConfigTest.php     |   48 -
 .../Test/Legacy/_files/obsolete_classes.php   |   25 +-
 .../Legacy/_files/obsolete_namespaces.php     |    2 +-
 .../Test/Legacy/_files/obsolete_paths.php     |   15 +-
 .../Legacy/_files/obsolete_properties.php     |    1 +
 .../Magento/Test/Legacy/_files/words_ce.xml   |    4 -
 .../Test/Php/_files/blacklist/common.txt      |    1 -
 .../Php/_files/phpcpd/blacklist/common.txt    |    4 +-
 .../Php/_files/phpcs/blacklist/common.txt     |    2 -
 .../Test/Php/_files/whitelist/common.txt      |    2 +-
 .../TestFramework/Helper/ObjectManager.php    |    8 +-
 dev/tests/unit/framework/bootstrap.php        |    7 +-
 .../tests/unit/framework/bootstrap.php        |    4 +-
 .../Helper/ObjectManagerTest.php              |    2 +-
 .../AdminNotification/Model/FeedTest.php      |   11 +-
 .../Config/Backend/Cookie/LifetimeTest.php    |    4 +-
 .../Model/Config/Backend/Cookie/PathTest.php  |    4 +-
 .../BundleProductSaveProcessorTest.php        |    4 +-
 .../Indexer/Product/Flat/Action/RowTest.php   |   11 +
 .../Flat/Action/Rows/TableDataTest.php        |    2 +-
 .../Indexer/Product/Flat/Action/RowsTest.php  |   97 +-
 .../V1/Data/Eav/AttributeMetadataTest.php     |    4 +-
 .../Service/V1/Data/ProductBuilderTest.php    |    4 +-
 .../Service/V1/MetadataServiceTest.php        |    6 +-
 .../V1/Product/Attribute/ReadServiceTest.php  |    4 +-
 .../Converter/DefaultConverterTest.php        |    2 +-
 .../Option/Metadata/Converter/SelectTest.php  |    2 +-
 .../V1/Product/MetadataServiceTest.php        |   24 +-
 .../Catalog/Service/V1/ProductServiceTest.php |   12 +-
 .../Service/V1/StockStatusServiceTest.php     |    4 +-
 .../Model/Cart/Access/ReadPluginTest.php      |    4 +-
 .../Service/V1/Address/ConverterTest.php      |    4 +-
 .../Service/V1/Cart/ReadServiceTest.php       |   16 +-
 .../V1/Product/Option/WriteServiceTest.php    |    2 +-
 .../Magento/Contact/Helper/DataTest.php       |    2 +-
 .../Magento/Core/Model/App/StateTest.php      |    2 -
 .../Block/Adminhtml/Edit/Tab/AccountTest.php  |    6 +-
 .../Magento/Customer/Block/Widget/DobTest.php |   63 +-
 .../Controller/Account/CreatePostTest.php     |    2 +
 .../Customer/Model/Address/ConverterTest.php  |    4 +-
 .../Model/Attribute/Data/PostcodeTest.php     |  117 +
 .../Magento/Customer/Model/ConverterTest.php  |    2 +-
 .../Magento/Customer/Model/CustomerTest.php   |   34 -
 .../Model/Metadata/Form/AbstractDataTest.php  |   25 +-
 .../Customer/Model/Metadata/Form/DateTest.php |   34 +-
 .../Model/Metadata/Form/MultiselectTest.php   |   29 +-
 .../Model/Metadata/Form/PostcodeTest.php      |  105 +
 .../Model/Metadata/Form/SelectTest.php        |   46 +-
 .../Customer/Model/Metadata/Form/TextTest.php |   36 +-
 .../Group/Grid/ServiceCollectionTest.php      |   18 +-
 .../Magento/Customer/Model/VisitorTest.php    |    9 +-
 .../Service/V1/CustomerAccountServiceTest.php |   45 +-
 .../Service/V1/CustomerAddressServiceTest.php |    2 +-
 .../Service/V1/Data/AddressConverterTest.php  |    6 +-
 .../Customer/Service/V1/Data/AddressTest.php  |    8 +-
 .../Service/V1/Data/CustomerBuilderTest.php   |   22 +-
 .../Customer/Service/V1/Data/CustomerTest.php |    4 +-
 .../Service/V1/Data/Eav/OptionTest.php        |   44 -
 .../Code/Generator/BuilderTest.php            |   22 +-
 .../Code/Generator/DataBuilderTest.php        |   30 +-
 .../Code/Generator/GenerateBuilderTest.php    |    9 +-
 .../Code/Generator/GenerateMapperTest.php     |    8 +-
 .../GenerateSearchResultsBuilderTest.php      |   10 +-
 .../Generator/GenerateSearchResultsTest.php   |   10 +-
 .../Code/Generator/MapperTest.php             |   22 +-
 .../Generator/SearchResultsBuilderTest.php    |   22 +-
 .../Code/Generator/SearchResultsTest.php      |   22 +-
 .../Generator/_files/ExtensibleSample.php     |    4 +-
 .../_files/ExtensibleSampleDataBuilder.txt    |   60 +
 .../_files/ExtensibleSampleInterface.php      |    4 +-
 .../Code/Generator/_files/Sample.php          |    2 +-
 .../Code/Generator/_files/SampleBuilder.txt   |   15 +
 .../Code/Generator/_files/SampleMapper.txt    |   14 +-
 .../Generator/_files/SampleSearchResults.txt  |   14 +
 .../_files/SampleSearchResultsBuilder.txt     |   17 +
 .../{Service => Api}/Config/ConverterTest.php |    6 +-
 .../{Service => Api}/Config/ReaderTest.php    |   12 +-
 .../Config/SchemaLocatorTest.php              |   12 +-
 .../Config/_files/data_object_valid.xml       |    2 +-
 .../Data/AttributeValueTest.php               |   12 +-
 .../SimpleDataObjectConverterTest.php         |    4 +-
 .../App/Filesystem/DirectoryListTest.php      |   14 +-
 .../Framework/App/Response/HttpTest.php       |    6 +
 .../Magento/Framework/App/StateTest.php       |    9 +-
 .../Code/Generator/EntityAbstractTest.php     |   22 +-
 .../Code/Generator/FileResolverTest.php}      |   27 +-
 .../Framework/Code/Generator/IoTest.php       |   12 +-
 .../Magento/Framework/Code/GeneratorTest.php  |   26 +-
 .../Filesystem/DirectoryListTest.php          |   39 +-
 .../Code/Generator/InterceptorTest.php        |    8 +-
 .../Model/AbstractExtensibleModelTest.php     |    6 +-
 .../Framework/Module/Setup/MigrationTest.php  |    2 +-
 .../Magento/Framework/Module/UpdaterTest.php  |   56 -
 .../Code/Generator/ConverterTest.php          |   14 +-
 .../Code/Generator/GenerateRepositoryTest.php |    8 +-
 .../Code/Generator/RepositoryTest.php         |   14 +-
 .../Generator/_files/SampleRepository.txt     |    4 +-
 .../Reflection}/TypeProcessorTest.php         |   14 +-
 .../_files/ExtensibleSampleDataBuilder.txt    |   53 -
 .../Code/Generator/_files/SampleBuilder.txt   |   15 -
 .../Generator/_files/SampleSearchResults.txt  |   14 -
 .../_files/SampleSearchResultsBuilder.txt     |   17 -
 .../Framework/Shell/ComplexParameterTest.php  |   79 +
 .../testsuite/Magento/Framework/ShellTest.php |    2 +-
 .../ProductEntity/ConverterTest.php           |    2 +-
 .../Model/Config/_files/install_wizard.xml    |   39 -
 .../Config/_files/install_wizard_config.php   |   41 -
 .../Magento/Install/Model/WizardTest.php      |   84 -
 .../testsuite/Magento/Log/Model/LogTest.php   |    2 +-
 .../Paypal/Model/Express/CheckoutTest.php     |    4 +-
 .../Controller/Adminhtml/Feed/IndexTest.php   |   12 +-
 .../Magento/Rss/Controller/Feed/IndexTest.php |    1 +
 .../Quote/Address/CollectTotalsTest.php       |   20 +-
 .../Payment/TransactionRepositoryTest.php     |   20 +-
 .../V1/Action/CreditmemoCommentsListTest.php  |   12 +-
 .../Service/V1/Action/CreditmemoListTest.php  |    4 +-
 .../V1/Action/InvoiceCommentsListTest.php     |   12 +-
 .../Service/V1/Action/InvoiceListTest.php     |    4 +-
 .../V1/Action/OrderCommentsListTest.php       |   12 +-
 .../Sales/Service/V1/Action/OrderGetTest.php  |    2 +-
 .../Sales/Service/V1/Action/OrderListTest.php |    4 +-
 .../V1/Action/ShipmentCommentsListTest.php    |   12 +-
 .../Service/V1/Action/ShipmentListTest.php    |    4 +-
 .../Sales/Service/V1/CreditmemoReadTest.php   |    2 +-
 .../Sales/Service/V1/Data/CommentTest.php     |   12 +-
 .../Service/V1/Data/CreditmemoItemTest.php    |   66 +-
 .../Sales/Service/V1/Data/CreditmemoTest.php  |   98 +-
 .../Sales/Service/V1/Data/InvoiceItemTest.php |   48 +-
 .../Sales/Service/V1/Data/InvoiceTest.php     |   90 +-
 .../Service/V1/Data/OrderAddressTest.php      |   52 +-
 .../Sales/Service/V1/Data/OrderItemTest.php   |  188 +-
 .../Service/V1/Data/OrderPaymentTest.php      |  108 +-
 .../V1/Data/OrderStatusHistoryTest.php        |   16 +-
 .../Sales/Service/V1/Data/OrderTest.php       |  276 +-
 .../Service/V1/Data/ShipmentItemTest.php      |   24 +-
 .../Sales/Service/V1/Data/ShipmentTest.php    |   30 +-
 .../Service/V1/Data/ShipmentTrackTest.php     |   22 +-
 .../Sales/Service/V1/InvoiceReadTest.php      |    2 +-
 .../Sales/Service/V1/OrderReadTest.php        |    2 +-
 .../Sales/Service/V1/ShipmentReadTest.php     |    2 +-
 .../Sales/Service/V1/TransactionReadTest.php  |    4 +-
 .../Model/Config/Reader/DefaultReaderTest.php |   10 +-
 .../Store/Model/Config/Reader/StoreTest.php   |    9 -
 .../Store/Model/Config/Reader/WebsiteTest.php |   11 +-
 .../Store/Model/StorageFactoryTest.php        |   37 +-
 .../Tax/Model/TaxClass/Type/CustomerTest.php  |    8 +-
 .../Tax/Service/V1/TaxClassServiceTest.php    |   32 +-
 .../Tax/Service/V1/TaxRateServiceTest.php     |   14 +-
 .../Tax/Service/V1/TaxRuleServiceTest.php     |   30 +-
 .../Rest/Request/Deserializer/JsonTest.php    |    6 +
 .../Rest/Request/Deserializer/XmlTest.php     |    6 +
 .../Magento/Webapi/Controller/RestTest.php    |    4 +-
 .../Controller/Soap/Request/HandlerTest.php   |    8 +-
 .../Model/Config/ClassReflectorTest.php       |    4 +-
 .../Webapi/Model/DataObjectProcessorTest.php  |    2 +-
 .../Magento/Webapi/Model/Soap/ServerTest.php  |    4 +-
 .../Soap/Wsdl/ComplexTypeStrategyTest.php     |    4 +-
 .../Webapi/Model/Soap/Wsdl/GeneratorTest.php  |    4 +-
 ...tiveArrayData.php => AssociativeArray.php} |    4 +-
 ...uilder.php => AssociativeArrayBuilder.php} |    6 +-
 .../{DataArrayData.php => DataArray.php}      |    6 +-
 ...ayDataBuilder.php => DataArrayBuilder.php} |    8 +-
 .../Service/Entity/DataFromArrayTest.php      |   32 +-
 .../Entity/{NestedData.php => Nested.php}     |    6 +-
 ...estedDataBuilder.php => NestedBuilder.php} |    6 +-
 .../Entity/{SimpleData.php => Simple.php}     |    4 +-
 .../{SimpleArrayData.php => SimpleArray.php}  |    4 +-
 ...DataBuilder.php => SimpleArrayBuilder.php} |    6 +-
 ...impleDataBuilder.php => SimpleBuilder.php} |    8 +-
 .../Webapi/Service/Entity/TestService.php     |   28 +-
 ...ctManager.php => WebapiBuilderFactory.php} |   59 +-
 .../Wishlist/Block/Item/ConfigureTest.php     |   13 +
 .../Wishlist/Block/Rss/EmailLinkTest.php      |   87 +
 .../Magento/Wishlist/Block/Rss/LinkTest.php   |    3 +-
 .../Wishlist/Model/Rss/WishlistTest.php       |   61 +-
 .../Tools/Dependency/generate/bootstrap.php   |    3 -
 dev/tools/Magento/Tools/Di/compiler.php       |   72 +-
 .../Magento/Tools/Di/entity_generator.php     |   22 +-
 .../Tools/I18n/Zend/Console/Getopt.php        |  966 ------
 .../I18n/Zend/Console/Getopt/Exception.php    |   62 -
 .../Magento/Tools/I18n/Zend/Exception.php     |   92 -
 dev/tools/Magento/Tools/I18n/bootstrap.php    |   22 +-
 dev/tools/Magento/Tools/Layout/xmlUpdater.php |    2 -
 dev/tools/Magento/Tools/Migration/Acl/db.php  |    2 +-
 .../Magento/Tools/Migration/system_config.php |    5 +-
 dev/tools/Magento/Tools/View/deploy.php       |    6 +-
 dev/tools/bootstrap.php                       |   25 -
 dev/tools/layout/xml-updater.php              |    4 -
 dev/tools/performance-toolkit/benchmark.jmx   |   10 +-
 .../framework/bootstrap.php                   |    5 +-
 .../tests/unit/framework/bootstrap.php        |    3 +-
 .../Data => Api}/AbstractExtensibleObject.php |    8 +-
 .../AbstractSearchResultsBuilder.php          |   20 +-
 .../AbstractServiceCollection.php             |   18 +-
 .../Data => Api}/AbstractSimpleObject.php     |    2 +-
 .../AbstractSimpleObjectBuilder.php           |   34 +-
 .../{Service => Api}/ArrayObjectSearch.php    |    2 +-
 .../Framework/Api/AttributeDataBuilder.php    |   72 +
 .../Api/{Data => }/AttributeInterface.php     |    9 +-
 .../Data => Api}/AttributeMetadata.php        |    2 +-
 .../Data => Api}/AttributeMetadataBuilder.php |    2 +-
 .../AttributeMetadataBuilderInterface.php     |    2 +-
 .../{Service/Data => Api}/AttributeValue.php  |   11 +-
 .../Data => Api}/AttributeValueBuilder.php    |    2 +-
 .../Code/Generator/Builder.php                |   10 +-
 .../Api/Code/Generator/DataBuilder.php        |  271 ++
 .../Code/Generator/Mapper.php                 |    2 +-
 .../Code/Generator/SearchResults.php          |    4 +-
 .../Code/Generator/SearchResultsBuilder.php   |   12 +-
 .../Api/CompositeExtensibleDataBuilder.php    |  168 +
 .../{Service => Api}/Config/Converter.php     |    2 +-
 .../Config/MetadataConfig.php                 |   10 +-
 .../{Service => Api}/Config/Reader.php        |   10 +-
 .../{Service => Api}/Config/SchemaLocator.php |    2 +-
 .../Framework/Api/ExtensibleDataBuilder.php   |  276 ++
 .../ExtensibleDataBuilderInterface.php        |   23 +-
 .../{Data => }/ExtensibleDataInterface.php    |    6 +-
 .../ExtensibleDataObjectConverter.php         |    6 +-
 .../ExtensibleObjectBuilder.php}              |   68 +-
 .../{Service/V1/Data => Api}/Filter.php       |    4 +-
 .../V1/Data => Api}/FilterBuilder.php         |   10 +-
 .../Data => Api}/MetadataObjectInterface.php  |    2 +-
 .../Data => Api}/MetadataServiceInterface.php |    4 +-
 .../{Service/Data => Api}/ObjectFactory.php   |    2 +-
 .../V1/Data => Api}/Search/FilterGroup.php    |    6 +-
 .../Search/FilterGroupBuilder.php             |   24 +-
 .../V1/Data => Api}/SearchCriteria.php        |   10 +-
 .../V1/Data => Api}/SearchCriteriaBuilder.php |   32 +-
 .../Api/SearchCriteriaDataBuilder.php         |    8 +-
 .../{Data => }/SearchCriteriaInterface.php    |    6 +-
 .../V1/Data => Api}/SearchResults.php         |    8 +-
 .../Api/{Data => }/SearchResultsInterface.php |    6 +-
 .../SimpleDataObjectConverter.php             |    4 +-
 .../{Service/V1/Data => Api}/SortOrder.php    |    4 +-
 .../V1/Data => Api}/SortOrderBuilder.php      |    6 +-
 .../{Service => Api}/etc/data_object.xsd      |    0
 .../App/Filesystem/DirectoryList.php          |    2 +-
 .../Framework/App/Helper/AbstractHelper.php   |    2 +-
 .../Framework/App/ObjectManagerFactory.php    |    5 +-
 .../App/Rss/DataProviderInterface.php         |    5 +
 lib/internal/Magento/Framework/App/State.php  |   41 -
 .../Magento/Framework/AppInterface.php        |    2 +-
 .../Magento/Framework/Code/Generator.php      |   17 +-
 .../Framework/Code/Generator/Autoloader.php   |   22 +-
 .../Code/Generator/EntityAbstract.php         |   26 +-
 .../Framework/Code/Generator/FileResolver.php |   73 +
 .../Magento/Framework/Code/Generator/Io.php   |   15 +-
 .../Magento/Framework/Code/NameBuilder.php    |    2 +-
 .../Exception/SerializationException.php      |   43 +
 .../Framework/Filesystem/DirectoryList.php    |   27 +
 .../Model/AbstractExtensibleModel.php         |   10 +-
 .../Magento/Framework/Model/AbstractModel.php |    2 +-
 .../Module/Plugin/DbStatusValidator.php       |    2 -
 .../Magento/Framework/Module/README.md        |    2 +-
 .../Magento/Framework/Module}/Resource.php    |    2 +-
 .../Magento/Framework/Module/Setup.php        |  173 +-
 .../Magento/Framework/Module/Updater.php      |   55 +-
 .../Module/Updater/SetupInterface.php         |   15 -
 .../Code/Generator/Converter.php              |    4 +-
 .../Code/Generator/Repository.php             |    2 +-
 .../ObjectManager/DefinitionFactory.php       |   29 +-
 .../Pricing/PriceCurrencyInterface.php        |    9 +
 .../Framework/Pricing/Render/Amount.php       |    8 +
 .../Pricing/Render/AmountRenderInterface.php  |    5 +
 .../Reflection}/DataObjectProcessor.php       |   18 +-
 .../Framework/Reflection}/TypeProcessor.php   |   22 +-
 .../Serialization/DataBuilderFactory.php      |   65 +
 .../Service/Code/Generator/DataBuilder.php    |  193 --
 .../Service/Data/ExtensibleDataBuilder.php    |   95 -
 lib/internal/Magento/Framework/Shell.php      |    2 +-
 .../Framework/Shell/ComplexParameter.php      |  113 +
 .../Framework/View/Element/AbstractBlock.php  |    4 +-
 .../Magento/Framework/View/Result/Page.php    |    3 +-
 lib/internal/Magento/Framework/composer.json  |    2 +-
 lib/web/css/docs/forms.html                   | 2139 ++++++-------
 lib/web/css/docs/source/forms.less            |    6 -
 lib/web/css/docs/source/variables.less        |    6 -
 lib/web/css/docs/variables.html               |    6 -
 lib/web/css/source/lib/buttons.less           |    3 -
 lib/web/css/source/lib/forms.less             |    6 -
 lib/web/css/source/lib/resets.less            |   19 +
 lib/web/css/source/lib/responsive.less        |   11 +-
 lib/web/css/source/lib/typography.less        |    3 -
 lib/web/css/source/lib/ui-dialog.less         |    1 -
 lib/web/css/source/lib/utilities.less         |   15 -
 lib/web/css/source/lib/variables.less         |   10 +-
 lib/web/mage/gallery.less                     |    2 -
 lib/web/mage/smart-keyboard-handler.js        |   58 +
 lib/web/varien/js.js                          |   34 -
 setup/config/application.config.php           |    9 +-
 setup/config/autoload/global.php              |   20 +-
 setup/index.php                               |   19 +-
 .../Magento/Composer/src/FileResolver.php     |   72 +-
 setup/module/Magento/Config/Module.php        |   39 -
 setup/module/Magento/Config/src/Config.php    |  104 -
 .../Magento/Config/src/ConfigFactory.php      |   58 -
 .../Magento/Config/src/FileIterator.php       |   11 +-
 .../Config/src/FileIteratorFactory.php        |   40 -
 setup/module/Magento/Setup/Module.php         |   17 +-
 .../src/Controller/ConsoleController.php      |   88 +-
 .../src/Controller/LandingController.php      |   20 +-
 .../Framework/DB/Adapter/AdapterInterface.php |  642 ----
 .../src/Framework/DB/Adapter/Pdo/Mysql.php    | 2789 -----------------
 .../Setup/src/Framework/DB/Ddl/Table.php      |  685 ----
 .../Setup/src/Framework/DB/Ddl/Trigger.php    |  271 --
 .../Magento/Setup/src/Model/AdminAccount.php  |   21 +-
 .../Setup/src/Model/DirectoryListFactory.php  |   73 -
 .../Setup/src/Model/FilePermissions.php       |   13 +-
 .../Setup/src/Model/FilesystemFactory.php     |   66 -
 .../Magento/Setup/src/Model/Installer.php     |  191 +-
 .../Setup/src/Model/InstallerFactory.php      |    7 +-
 .../Magento/Setup/src/Model/License.php       |   37 +-
 .../Magento/Setup/src/Model/Location.php      |   53 -
 .../Setup/src/Model/UserConfigurationData.php |   24 +-
 setup/module/Magento/Setup/src/Module/Dir.php |    7 +-
 .../Magento/Setup/src/Module/FileResolver.php |   84 +-
 .../Setup/src/Module/Resource/Resource.php    |   18 +-
 .../Setup/src/Module/SchemaLocator.php        |   20 +-
 .../module/Magento/Setup/src/Module/Setup.php |    9 +-
 .../Magento/Setup/src/Module/Setup/Config.php |   19 +-
 .../Setup/src/Module/Setup/ConfigFactory.php  |    2 +-
 .../src/Module/Setup/ConnectionFactory.php    |   41 +-
 .../Setup/src/Module/Setup/FileResolver.php   |  118 +-
 .../Magento/Setup/src/Module/SetupModule.php  |    5 +-
 .../src/Mvc/Bootstrap/InitParamListener.php   |  229 ++
 .../module/Magento/Setup/view/error/404.phtml |   34 +-
 .../Magento/Setup/view/error/index.phtml      |   20 +-
 .../Magento/Setup/view/layout/layout.phtml    |    2 +-
 .../view/magento/setup/add-database.phtml     |   80 +-
 .../magento/setup/create-admin-account.phtml  |   42 +-
 .../magento/setup/customize-your-store.phtml  |   26 +-
 .../Setup/view/magento/setup/install.phtml    |   14 +-
 .../Setup/view/magento/setup/landing.phtml    |   12 +-
 .../Setup/view/magento/setup/license.phtml    |    4 +-
 .../view/magento/setup/readiness-check.phtml  |   12 +-
 .../setup/readiness-check/progress.phtml      |   86 +-
 .../Setup/view/magento/setup/success.phtml    |   28 +-
 .../magento/setup/web-configuration.phtml     |   46 +-
 success.png                                   |  Bin 0 -> 62084 bytes
 success_admin.png                             |  Bin 0 -> 98522 bytes
 1386 files changed, 19775 insertions(+), 23386 deletions(-)
 rename app/code/Magento/{Install/view/install/layout/install_wizard_config.xml => Catalog/view/frontend/layout/catalog_product_opengraph.xml} (68%)
 rename dev/tests/integration/etc/integration-tests-config.xml => app/code/Magento/Catalog/view/frontend/templates/product/view/opengraph/currency.phtml (83%)
 rename app/code/Magento/{Install/view/adminhtml/web/survey_notification.js => Catalog/view/frontend/templates/product/view/opengraph/general.phtml} (54%)
 delete mode 100644 app/code/Magento/CatalogUrlRewrite/etc/install/di.xml
 delete mode 100644 app/code/Magento/CatalogUrlRewrite/etc/install/events.xml
 delete mode 100644 app/code/Magento/Checkout/view/frontend/layout/checkout_onepage_additional.xml
 create mode 100644 app/code/Magento/Customer/Api/Data/OptionInterface.php
 rename app/code/Magento/{Install/Block/Db/Type/Mysql4.php => Customer/Api/Data/ValidationRuleInterface.php} (69%)
 create mode 100644 app/code/Magento/Customer/Model/AccountManagement.php
 create mode 100644 app/code/Magento/Customer/Model/Data/Address.php
 create mode 100644 app/code/Magento/Customer/Model/Data/AttributeMetadata.php
 create mode 100644 app/code/Magento/Customer/Model/Data/Customer.php
 create mode 100644 app/code/Magento/Customer/Model/Data/CustomerBuilder.php
 create mode 100644 app/code/Magento/Customer/Model/Data/CustomerSecure.php
 rename app/code/Magento/{Install/Block/Admin.php => Customer/Model/Data/Group.php} (59%)
 rename app/code/Magento/{Install/Model/Installer/Data.php => Customer/Model/Data/Option.php} (66%)
 create mode 100644 app/code/Magento/Customer/Model/Data/Region.php
 create mode 100644 app/code/Magento/Customer/Model/Data/ValidationResults.php
 rename app/code/Magento/{Checkout/Controller/Onepage/GetAdditional.php => Customer/Model/Data/ValidationRule.php} (72%)
 create mode 100644 app/code/Magento/Customer/Model/GroupManagement.php
 rename app/code/Magento/{Install/Controller/Adminhtml/Survey.php => Customer/Model/Metadata/AddressCachedMetadata.php} (70%)
 create mode 100644 app/code/Magento/Customer/Model/Metadata/AddressMetadata.php
 create mode 100644 app/code/Magento/Customer/Model/Metadata/CachedMetadata.php
 rename app/code/Magento/{Rss/Controller/Adminhtml/Authenticate.php => Customer/Model/Metadata/CustomerCachedMetadata.php} (70%)
 create mode 100644 app/code/Magento/Customer/Model/Metadata/CustomerMetadata.php
 create mode 100644 app/code/Magento/Customer/Model/Metadata/Form/Postcode.php
 create mode 100644 app/code/Magento/Customer/Model/Resource/AddressRepository.php
 create mode 100644 app/code/Magento/Customer/Model/Resource/CustomerRepository.php
 create mode 100644 app/code/Magento/Customer/Model/Resource/GroupRepository.php
 rename app/code/Magento/{Backend/etc/install/di.xml => Customer/etc/crontab.xml} (80%)
 delete mode 100644 app/code/Magento/Install/App/Console.php
 delete mode 100644 app/code/Magento/Install/App/Output.php
 delete mode 100644 app/code/Magento/Install/Block/AbstractBlock.php
 delete mode 100644 app/code/Magento/Install/Block/Config.php
 delete mode 100644 app/code/Magento/Install/Block/Db/Main.php
 delete mode 100644 app/code/Magento/Install/Block/Db/Type.php
 delete mode 100644 app/code/Magento/Install/Block/Download.php
 delete mode 100644 app/code/Magento/Install/Block/End.php
 delete mode 100644 app/code/Magento/Install/Block/Locale.php
 delete mode 100644 app/code/Magento/Install/Block/State.php
 delete mode 100644 app/code/Magento/Install/Controller/Adminhtml/Survey/Index.php
 delete mode 100644 app/code/Magento/Install/Model/Config.php
 delete mode 100644 app/code/Magento/Install/Model/Config/Converter.php
 delete mode 100644 app/code/Magento/Install/Model/Config/Reader.php
 delete mode 100644 app/code/Magento/Install/Model/Config/SchemaLocator.php
 delete mode 100644 app/code/Magento/Install/Model/Installer.php
 delete mode 100644 app/code/Magento/Install/Model/Installer/Config.php
 delete mode 100644 app/code/Magento/Install/Model/Installer/Console.php
 delete mode 100644 app/code/Magento/Install/Model/Installer/Db.php
 delete mode 100644 app/code/Magento/Install/Model/Installer/Db/AbstractDb.php
 delete mode 100644 app/code/Magento/Install/Model/Installer/Db/Mysql4.php
 delete mode 100644 app/code/Magento/Install/Model/Installer/Filesystem.php
 delete mode 100644 app/code/Magento/Install/Model/Installer/Pear.php
 delete mode 100644 app/code/Magento/Install/Model/Setup.php
 delete mode 100644 app/code/Magento/Install/Model/Survey.php
 delete mode 100644 app/code/Magento/Install/Model/System/Message/Survey.php
 delete mode 100644 app/code/Magento/Install/Model/Uninstaller.php
 delete mode 100644 app/code/Magento/Install/Model/Wizard.php
 delete mode 100644 app/code/Magento/Install/composer.json
 delete mode 100644 app/code/Magento/Install/etc/di.xml
 delete mode 100644 app/code/Magento/Install/etc/frontend/di.xml
 delete mode 100644 app/code/Magento/Install/etc/install/di.xml
 delete mode 100644 app/code/Magento/Install/etc/install/events.xml
 delete mode 100644 app/code/Magento/Install/etc/install_wizard.xml
 delete mode 100644 app/code/Magento/Install/etc/install_wizard.xsd
 delete mode 100644 app/code/Magento/Install/etc/install_wizard_file.xsd
 delete mode 100644 app/code/Magento/Install/etc/module.xml
 delete mode 100644 app/code/Magento/Install/i18n/de_DE.csv
 delete mode 100644 app/code/Magento/Install/i18n/en_US.csv
 delete mode 100644 app/code/Magento/Install/i18n/es_ES.csv
 delete mode 100644 app/code/Magento/Install/i18n/fr_FR.csv
 delete mode 100644 app/code/Magento/Install/i18n/nl_NL.csv
 delete mode 100644 app/code/Magento/Install/i18n/pt_BR.csv
 delete mode 100644 app/code/Magento/Install/i18n/zh_CN.csv
 delete mode 100644 app/code/Magento/Install/view/adminhtml/layout/default.xml
 delete mode 100644 app/code/Magento/Install/view/install/layout/install_wizard.xml
 delete mode 100644 app/code/Magento/Install/view/install/templates/config.phtml
 delete mode 100644 app/code/Magento/Install/view/install/templates/create_admin.phtml
 delete mode 100644 app/code/Magento/Install/view/install/templates/db/main.phtml
 delete mode 100644 app/code/Magento/Install/view/install/templates/db/mysql4.phtml
 delete mode 100644 app/code/Magento/Install/view/install/templates/download.phtml
 delete mode 100644 app/code/Magento/Install/view/install/templates/end.phtml
 delete mode 100644 app/code/Magento/Install/view/install/templates/locale.phtml
 delete mode 100644 app/code/Magento/Install/view/install/templates/page.phtml
 delete mode 100644 app/code/Magento/Install/view/install/templates/state.phtml
 delete mode 100644 app/code/Magento/Install/view/install/web/css/mage-js-ee-style.css
 delete mode 100644 app/code/Magento/Install/view/install/web/css/mage-js-style.css
 delete mode 100644 app/code/Magento/Install/view/install/web/css/validate.css
 delete mode 100644 app/code/Magento/Install/view/install/web/images/validation_advice_bg.gif
 delete mode 100644 app/code/Magento/Install/view/install/web/js/install.js
 rename app/code/Magento/Rss/App/Action/Plugin/{Authentication.php => BackendAuthentication.php} (96%)
 rename app/{design/install/Magento/basic/web/bootstrap.js => code/Magento/Theme/view/frontend/templates/html/skiptarget.phtml} (87%)
 delete mode 100644 app/design/install/Magento/basic/theme.xml
 delete mode 100644 app/design/install/Magento/basic/web/css/boxes.css
 delete mode 100644 app/design/install/Magento/basic/web/css/clears.css
 delete mode 100644 app/design/install/Magento/basic/web/css/ie7minus.css
 delete mode 100644 app/design/install/Magento/basic/web/css/iestyles.css
 delete mode 100644 app/design/install/Magento/basic/web/css/reset.css
 delete mode 100644 app/design/install/Magento/basic/web/images/error_msg_icon.gif
 delete mode 100644 app/design/install/Magento/basic/web/images/footer_bg.gif
 delete mode 100644 app/design/install/Magento/basic/web/images/footer_container_bg.gif
 delete mode 100644 app/design/install/Magento/basic/web/images/footer_info_separator.gif
 delete mode 100644 app/design/install/Magento/basic/web/images/footer_informational_bg.gif
 delete mode 100644 app/design/install/Magento/basic/web/images/footer_left.gif
 delete mode 100644 app/design/install/Magento/basic/web/images/footer_legality_bg.gif
 delete mode 100644 app/design/install/Magento/basic/web/images/footer_right.gif
 delete mode 100644 app/design/install/Magento/basic/web/images/header_bg.gif
 delete mode 100644 app/design/install/Magento/basic/web/images/header_nav_bg.gif
 delete mode 100644 app/design/install/Magento/basic/web/images/header_top_bg.jpg
 delete mode 100644 app/design/install/Magento/basic/web/images/header_top_container_bg.jpg
 delete mode 100644 app/design/install/Magento/basic/web/images/i_notice.gif
 delete mode 100644 app/design/install/Magento/basic/web/images/main_bg.gif
 delete mode 100644 app/design/install/Magento/basic/web/images/main_container_bg.gif
 delete mode 100644 app/design/install/Magento/basic/web/images/note_msg_icon.gif
 delete mode 100644 app/design/install/Magento/basic/web/images/success_msg_icon.gif
 delete mode 100644 app/design/install/Magento/basic/web/images/validation_advice_bg.gif
 delete mode 100644 dev/shell/install.php
 delete mode 100644 dev/shell/maintenance.php
 delete mode 100644 dev/shell/uninstall.php
 create mode 100644 dev/tests/functional/tests/app/Magento/Catalog/Test/TestStep/CreateProductStep.php
 rename dev/tests/{integration/testsuite/Magento/Test/Integrity/Modular/InstallWizardConfigFilesTest.php => functional/tests/app/Magento/Catalog/Test/TestStep/OpenProductOnBackendStep.php} (50%)
 rename app/code/Magento/Install/Model/Installer/Db/Factory.php => dev/tests/functional/tests/app/Magento/Catalog/Test/TestStep/OpenProductsOnFrontendStep.php (56%)
 create mode 100644 dev/tests/functional/tests/app/Magento/Catalog/Test/TestStep/SaveProductStep.php
 create mode 100644 dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Constraint/AssertConfigurableAttributesAbsentOnProductPage.php
 create mode 100644 dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Constraint/AssertConfigurableAttributesBlockIsAbsentOnProductPage.php
 rename app/code/Magento/Install/Model/Observer.php => dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/TestCase/UpdateConfigurableProductEntityTest.php (55%)
 create mode 100644 dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/TestCase/UpdateConfigurableProductEntityTest/test.csv
 create mode 100644 dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/TestStep/UpdateConfigurableProductStep.php
 delete mode 100644 dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/etc/page.xml
 create mode 100644 dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/etc/scenario.xml
 rename dev/{shell/run_schema_updater.php => tests/integration/etc/install-config-mysql.php.dist} (62%)
 rename setup/module/Magento/Config/config/module.config.php => dev/tests/integration/etc/install-config-mysql.travis.php.dist (50%)
 delete mode 100644 dev/tests/integration/etc/local-mysql.travis.xml.dist
 delete mode 100644 dev/tests/integration/etc/local-mysql.xml.dist
 create mode 100644 dev/tests/integration/framework/Magento/TestFramework/Bootstrap/MemoryFactory.php
 create mode 100644 dev/tests/integration/testsuite/Magento/Customer/Api/AddressRepositoryTest.php
 create mode 100755 dev/tests/integration/testsuite/Magento/Customer/Model/AccountManagementTest.php
 create mode 100644 dev/tests/integration/testsuite/Magento/Customer/Model/AddressTest.php
 create mode 100644 dev/tests/integration/testsuite/Magento/Customer/Model/CustomerTest.php
 create mode 100644 dev/tests/integration/testsuite/Magento/Customer/Model/GroupManagementTest.php
 create mode 100644 dev/tests/integration/testsuite/Magento/Customer/Model/Resource/AddressRepositoryTest.php
 create mode 100644 dev/tests/integration/testsuite/Magento/Customer/Model/Resource/CustomerRepositoryTest.php
 create mode 100644 dev/tests/integration/testsuite/Magento/Customer/Model/Resource/GroupRepositoryTest.php
 create mode 100644 dev/tests/integration/testsuite/Magento/Framework/Api/Code/Generator/DataBuilderTest.php
 rename dev/tests/integration/testsuite/Magento/Framework/{Service => Api}/Config/ReaderTest.php (85%)
 rename dev/tests/integration/testsuite/Magento/Framework/{Service => Api}/Config/_files/config_one.xml (96%)
 rename dev/tests/integration/testsuite/Magento/Framework/{Service => Api}/Config/_files/config_two.xml (96%)
 create mode 100644 dev/tests/integration/testsuite/Magento/Framework/Api/_files/Magento/Wonderland/Api/Data/FakeAddressInterface.php
 create mode 100644 dev/tests/integration/testsuite/Magento/Framework/Api/_files/Magento/Wonderland/Api/Data/FakeRegionInterface.php
 create mode 100644 dev/tests/integration/testsuite/Magento/Framework/Api/_files/Magento/Wonderland/Model/FakeAddress.php
 create mode 100644 dev/tests/integration/testsuite/Magento/Framework/Api/_files/Magento/Wonderland/Model/FakeRegion.php
 create mode 100644 dev/tests/integration/testsuite/Magento/Framework/Code/Generator/FileResolverTest.php
 rename dev/tests/{performance/framework/tests/unit/testsuite/Magento/Test/Performance/_files/app_base_dir/dev/shell/uninstall.php => integration/testsuite/Magento/Framework/Code/_files/ClassToFind.php} (73%)
 delete mode 100644 dev/tests/integration/testsuite/Magento/Install/Block/AdminTest.php
 delete mode 100644 dev/tests/integration/testsuite/Magento/Install/Model/ConfigTest.php
 delete mode 100644 dev/tests/integration/testsuite/Magento/Install/Model/_files/Magento/Test/etc/install_wizard.xml
 delete mode 100644 dev/tests/integration/testsuite/Magento/Install/Model/_files/Magento/Test/etc/module.xml
 delete mode 100644 dev/tests/integration/testsuite/Magento/Install/Model/_files/install_wizard_complete.xml
 delete mode 100644 dev/tests/integration/testsuite/Magento/Install/Model/_files/install_wizard_partial.xml
 rename dev/tests/integration/testsuite/Magento/Webapi/Service/Entity/{AssociativeArrayDataObjectBuilder.php => AssociativeArrayBuilder.php} (86%)
 rename dev/tests/integration/testsuite/Magento/Webapi/Service/Entity/{DataObjectArrayDataObjectBuilder.php => DataObjectArrayBuilder.php} (87%)
 rename dev/tests/integration/testsuite/Magento/Webapi/Service/Entity/{NestedDataObjectBuilder.php => NestedBuilder.php} (88%)
 rename dev/tests/integration/testsuite/Magento/Webapi/Service/Entity/{SimpleArrayDataObjectBuilder.php => SimpleArrayBuilder.php} (88%)
 rename dev/tests/integration/testsuite/Magento/Webapi/Service/Entity/{SimpleDataObjectBuilder.php => SimpleBuilder.php} (86%)
 rename dev/tests/performance/framework/tests/unit/testsuite/Magento/Test/Performance/_files/app_base_dir/{dev/shell/install.php => setup/index.php} (94%)
 create mode 100644 dev/tests/static/testsuite/Magento/Test/Integrity/Di/_files/blacklist.txt
 delete mode 100644 dev/tests/static/testsuite/Magento/Test/Integrity/Magento/Install/ConfigTest.php
 delete mode 100644 dev/tests/static/testsuite/Magento/Test/Integrity/Magento/Install/_files/install_wizard.xml
 delete mode 100644 dev/tests/static/testsuite/Magento/Test/Integrity/Magento/Install/_files/invalid_install_wizard.xml
 delete mode 100644 dev/tests/static/testsuite/Magento/Test/Integrity/Magento/Install/_files/invalid_partial_install_wizard.xml
 delete mode 100644 dev/tests/static/testsuite/Magento/Test/Integrity/Magento/Install/_files/partial_install_wizard.xml
 delete mode 100644 dev/tests/static/testsuite/Magento/Test/Legacy/Magento/Install/ConfigTest.php
 create mode 100644 dev/tests/unit/testsuite/Magento/Customer/Model/Attribute/Data/PostcodeTest.php
 create mode 100644 dev/tests/unit/testsuite/Magento/Customer/Model/Metadata/Form/PostcodeTest.php
 delete mode 100644 dev/tests/unit/testsuite/Magento/Customer/Service/V1/Data/Eav/OptionTest.php
 rename dev/tests/unit/testsuite/Magento/Framework/{Service => Api}/Code/Generator/BuilderTest.php (86%)
 rename dev/tests/unit/testsuite/Magento/Framework/{Service => Api}/Code/Generator/DataBuilderTest.php (79%)
 rename dev/tests/unit/testsuite/Magento/Framework/{Service => Api}/Code/Generator/GenerateBuilderTest.php (87%)
 rename dev/tests/unit/testsuite/Magento/Framework/{Service => Api}/Code/Generator/GenerateMapperTest.php (90%)
 rename dev/tests/unit/testsuite/Magento/Framework/{Service => Api}/Code/Generator/GenerateSearchResultsBuilderTest.php (87%)
 rename dev/tests/unit/testsuite/Magento/Framework/{Service => Api}/Code/Generator/GenerateSearchResultsTest.php (87%)
 rename dev/tests/unit/testsuite/Magento/Framework/{Service => Api}/Code/Generator/MapperTest.php (86%)
 rename dev/tests/unit/testsuite/Magento/Framework/{Service => Api}/Code/Generator/SearchResultsBuilderTest.php (86%)
 rename dev/tests/unit/testsuite/Magento/Framework/{Service => Api}/Code/Generator/SearchResultsTest.php (86%)
 rename dev/tests/unit/testsuite/Magento/Framework/{Service => Api}/Code/Generator/_files/ExtensibleSample.php (92%)
 create mode 100644 dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/_files/ExtensibleSampleDataBuilder.txt
 rename dev/tests/unit/testsuite/Magento/Framework/{Service => Api}/Code/Generator/_files/ExtensibleSampleInterface.php (92%)
 rename dev/tests/unit/testsuite/Magento/Framework/{Service => Api}/Code/Generator/_files/Sample.php (95%)
 create mode 100644 dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/_files/SampleBuilder.txt
 rename dev/tests/unit/testsuite/Magento/Framework/{Service => Api}/Code/Generator/_files/SampleMapper.txt (56%)
 create mode 100644 dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/_files/SampleSearchResults.txt
 create mode 100644 dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/_files/SampleSearchResultsBuilder.txt
 rename dev/tests/unit/testsuite/Magento/Framework/{Service => Api}/Config/ConverterTest.php (92%)
 rename dev/tests/unit/testsuite/Magento/Framework/{Service => Api}/Config/ReaderTest.php (77%)
 rename dev/tests/unit/testsuite/Magento/Framework/{Service => Api}/Config/SchemaLocatorTest.php (82%)
 rename dev/tests/unit/testsuite/Magento/Framework/{Service => Api}/Config/_files/data_object_valid.xml (96%)
 rename dev/tests/unit/testsuite/Magento/Framework/{Service => Api}/Data/AttributeValueTest.php (92%)
 rename dev/tests/unit/testsuite/Magento/Framework/{Service => Api}/SimpleDataObjectConverterTest.php (99%)
 rename dev/tests/unit/testsuite/Magento/{Install/Model/Config/ConverterTest.php => Framework/Code/Generator/FileResolverTest.php} (59%)
 rename dev/tests/unit/testsuite/Magento/{Webapi/Model/Config/ClassReflector => Framework/Reflection}/TypeProcessorTest.php (93%)
 delete mode 100644 dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/_files/ExtensibleSampleDataBuilder.txt
 delete mode 100644 dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/_files/SampleBuilder.txt
 delete mode 100644 dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/_files/SampleSearchResults.txt
 delete mode 100644 dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/_files/SampleSearchResultsBuilder.txt
 create mode 100644 dev/tests/unit/testsuite/Magento/Framework/Shell/ComplexParameterTest.php
 delete mode 100644 dev/tests/unit/testsuite/Magento/Install/Model/Config/_files/install_wizard.xml
 delete mode 100644 dev/tests/unit/testsuite/Magento/Install/Model/Config/_files/install_wizard_config.php
 delete mode 100644 dev/tests/unit/testsuite/Magento/Install/Model/WizardTest.php
 rename dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/{AssociativeArrayData.php => AssociativeArray.php} (90%)
 rename dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/{AssociativeArrayDataBuilder.php => AssociativeArrayBuilder.php} (84%)
 rename dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/{DataArrayData.php => DataArray.php} (85%)
 rename dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/{DataArrayDataBuilder.php => DataArrayBuilder.php} (81%)
 rename dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/{NestedData.php => Nested.php} (86%)
 rename dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/{NestedDataBuilder.php => NestedBuilder.php} (86%)
 rename dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/{SimpleData.php => Simple.php} (91%)
 rename dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/{SimpleArrayData.php => SimpleArray.php} (90%)
 rename dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/{SimpleArrayDataBuilder.php => SimpleArrayBuilder.php} (86%)
 rename dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/{SimpleDataBuilder.php => SimpleBuilder.php} (85%)
 rename dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/{WebapiObjectManager.php => WebapiBuilderFactory.php} (51%)
 create mode 100644 dev/tests/unit/testsuite/Magento/Wishlist/Block/Rss/EmailLinkTest.php
 delete mode 100644 dev/tools/Magento/Tools/I18n/Zend/Console/Getopt.php
 delete mode 100644 dev/tools/Magento/Tools/I18n/Zend/Console/Getopt/Exception.php
 delete mode 100644 dev/tools/Magento/Tools/I18n/Zend/Exception.php
 rename lib/internal/Magento/Framework/{Service/Data => Api}/AbstractExtensibleObject.php (87%)
 rename lib/internal/Magento/Framework/{Service/V1/Data => Api}/AbstractSearchResultsBuilder.php (84%)
 rename lib/internal/Magento/Framework/{Service => Api}/AbstractServiceCollection.php (92%)
 rename lib/internal/Magento/Framework/{Service/Data => Api}/AbstractSimpleObject.php (98%)
 rename lib/internal/Magento/Framework/{Service/Data => Api}/AbstractSimpleObjectBuilder.php (83%)
 rename lib/internal/Magento/Framework/{Service => Api}/ArrayObjectSearch.php (98%)
 create mode 100644 lib/internal/Magento/Framework/Api/AttributeDataBuilder.php
 rename lib/internal/Magento/Framework/Api/{Data => }/AttributeInterface.php (87%)
 rename lib/internal/Magento/Framework/{Service/Data => Api}/AttributeMetadata.php (96%)
 rename lib/internal/Magento/Framework/{Service/Data => Api}/AttributeMetadataBuilder.php (97%)
 rename lib/internal/Magento/Framework/{Service/Data => Api}/AttributeMetadataBuilderInterface.php (96%)
 rename lib/internal/Magento/Framework/{Service/Data => Api}/AttributeValue.php (85%)
 rename lib/internal/Magento/Framework/{Service/Data => Api}/AttributeValueBuilder.php (97%)
 rename lib/internal/Magento/Framework/{Service => Api}/Code/Generator/Builder.php (93%)
 create mode 100644 lib/internal/Magento/Framework/Api/Code/Generator/DataBuilder.php
 rename lib/internal/Magento/Framework/{Service => Api}/Code/Generator/Mapper.php (99%)
 rename lib/internal/Magento/Framework/{Service => Api}/Code/Generator/SearchResults.php (95%)
 rename lib/internal/Magento/Framework/{Service => Api}/Code/Generator/SearchResultsBuilder.php (88%)
 create mode 100644 lib/internal/Magento/Framework/Api/CompositeExtensibleDataBuilder.php
 rename lib/internal/Magento/Framework/{Service => Api}/Config/Converter.php (97%)
 rename lib/internal/Magento/Framework/{Service => Api}/Config/MetadataConfig.php (91%)
 rename lib/internal/Magento/Framework/{Service => Api}/Config/Reader.php (86%)
 rename lib/internal/Magento/Framework/{Service => Api}/Config/SchemaLocator.php (96%)
 create mode 100644 lib/internal/Magento/Framework/Api/ExtensibleDataBuilder.php
 rename lib/internal/Magento/Framework/Api/{Data => }/ExtensibleDataBuilderInterface.php (68%)
 rename lib/internal/Magento/Framework/Api/{Data => }/ExtensibleDataInterface.php (86%)
 rename lib/internal/Magento/Framework/{Service => Api}/ExtensibleDataObjectConverter.php (94%)
 rename lib/internal/Magento/Framework/{Service/Data/AbstractExtensibleObjectBuilder.php => Api/ExtensibleObjectBuilder.php} (73%)
 rename lib/internal/Magento/Framework/{Service/V1/Data => Api}/Filter.php (92%)
 rename lib/internal/Magento/Framework/{Service/V1/Data => Api}/FilterBuilder.php (84%)
 rename lib/internal/Magento/Framework/{Service/Data => Api}/MetadataObjectInterface.php (96%)
 rename lib/internal/Magento/Framework/{Service/Data => Api}/MetadataServiceInterface.php (91%)
 rename lib/internal/Magento/Framework/{Service/Data => Api}/ObjectFactory.php (97%)
 rename lib/internal/Magento/Framework/{Service/V1/Data => Api}/Search/FilterGroup.php (87%)
 rename lib/internal/Magento/Framework/{Service/V1/Data => Api}/Search/FilterGroupBuilder.php (74%)
 rename lib/internal/Magento/Framework/{Service/V1/Data => Api}/SearchCriteria.php (86%)
 rename lib/internal/Magento/Framework/{Service/V1/Data => Api}/SearchCriteriaBuilder.php (74%)
 rename app/code/Magento/Install/Model/Config/Data.php => lib/internal/Magento/Framework/Api/SearchCriteriaDataBuilder.php (83%)
 rename lib/internal/Magento/Framework/Api/{Data => }/SearchCriteriaInterface.php (89%)
 rename lib/internal/Magento/Framework/{Service/V1/Data => Api}/SearchResults.php (85%)
 rename lib/internal/Magento/Framework/Api/{Data => }/SearchResultsInterface.php (87%)
 rename lib/internal/Magento/Framework/{Service => Api}/SimpleDataObjectConverter.php (98%)
 rename lib/internal/Magento/Framework/{Service/V1/Data => Api}/SortOrder.php (92%)
 rename lib/internal/Magento/Framework/{Service/V1/Data => Api}/SortOrderBuilder.php (89%)
 rename lib/internal/Magento/Framework/{Service => Api}/etc/data_object.xsd (100%)
 create mode 100644 lib/internal/Magento/Framework/Code/Generator/FileResolver.php
 create mode 100644 lib/internal/Magento/Framework/Exception/SerializationException.php
 rename {app/code/Magento/Install/Model/Resource => lib/internal/Magento/Framework/Module}/Resource.php (99%)
 rename {app/code/Magento/Webapi/Model => lib/internal/Magento/Framework/Reflection}/DataObjectProcessor.php (95%)
 rename {app/code/Magento/Webapi/Model/Config/ClassReflector => lib/internal/Magento/Framework/Reflection}/TypeProcessor.php (95%)
 create mode 100644 lib/internal/Magento/Framework/Serialization/DataBuilderFactory.php
 delete mode 100644 lib/internal/Magento/Framework/Service/Code/Generator/DataBuilder.php
 delete mode 100644 lib/internal/Magento/Framework/Service/Data/ExtensibleDataBuilder.php
 create mode 100644 lib/internal/Magento/Framework/Shell/ComplexParameter.php
 create mode 100644 lib/web/mage/smart-keyboard-handler.js
 delete mode 100644 setup/module/Magento/Config/Module.php
 delete mode 100644 setup/module/Magento/Config/src/Config.php
 delete mode 100644 setup/module/Magento/Config/src/ConfigFactory.php
 delete mode 100644 setup/module/Magento/Config/src/FileIteratorFactory.php
 delete mode 100644 setup/module/Magento/Setup/src/Framework/DB/Adapter/AdapterInterface.php
 delete mode 100644 setup/module/Magento/Setup/src/Framework/DB/Adapter/Pdo/Mysql.php
 delete mode 100644 setup/module/Magento/Setup/src/Framework/DB/Ddl/Table.php
 delete mode 100644 setup/module/Magento/Setup/src/Framework/DB/Ddl/Trigger.php
 delete mode 100644 setup/module/Magento/Setup/src/Model/DirectoryListFactory.php
 delete mode 100644 setup/module/Magento/Setup/src/Model/FilesystemFactory.php
 delete mode 100644 setup/module/Magento/Setup/src/Model/Location.php
 create mode 100644 setup/module/Magento/Setup/src/Mvc/Bootstrap/InitParamListener.php
 create mode 100644 success.png
 create mode 100644 success_admin.png

diff --git a/.travis.yml b/.travis.yml
index 31c7946798c..96feeb10248 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -26,7 +26,7 @@ before_script:
   # Disable xDebug
   - echo '' > ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/xdebug.ini
   # Create DB for Integration tests
-  - sh -c "if [ '$TEST_SUITE' = 'integration' ] || [ '$TEST_SUITE' = 'integration_integrity' ]; then mysql -e 'create database magento_integration_tests;'; mv dev/tests/integration/etc/local-mysql.travis.xml.dist dev/tests/integration/etc/local-mysql.xml; fi"
+  - sh -c "if [ '$TEST_SUITE' = 'integration' ] || [ '$TEST_SUITE' = 'integration_integrity' ]; then mysql -e 'create database magento_integration_tests;'; mv dev/tests/integration/etc/install-config-mysql.travis.php.dist dev/tests/integration/etc/install-config-mysql.php; fi"
   # Install tools for static tests
   - sh -c "if [ '$TEST_SUITE' = 'static_phpcs' ] || [ '$TEST_SUITE' = 'static_annotation' ]; then pear install pear/PHP_CodeSniffer-1.5.2; fi"
   # Change memmory_limit for travis server
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 95e44d1f609..868b7a35b28 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,51 @@
+0.1.0-alpha103
+=============
+* Fixed bugs:
+    * Fixed an issue where an error message was displayed after successful product mass actions
+    * Fixed an issue where it is impossible to create a tax rate for all states (“*” in the State field)
+    * Fixed an issue where FPT was not shown on the storefront if a customer state did not match the default state from configuration
+    * Fixed the benchmark scenario
+    * Fixed an issue where the expand arrow next to Advanced Settings tab label was not clickable
+    * Fixed an issue where the Category menu disappeared when resizing a browser window
+    * Fixed an issue where the order additional info was not available for a guest customer
+    * Fixed an issue where a fatal error was thrown when trying to get a coupon report with Shopping Cart Price Rule set to Specified
+    * Fixed an issue where the URL of an attribute set for attribute mapping changed after resetting filter for the grid on the Google Contents Attributes page
+    * Fixed the implementation of the wishlist RSS-feed
+    * Fixed the incorrect name escaping in wishlist RSS
+    * Fixed an issue where a RSS feed for shared wishlist was not accessible
+    * Fixed an issue caused by REST POST/PUT requests with empty body
+    * Fixed an issues where postal code was still mandatory for non-US addresses that do not use it, even if set to be optional
+    * Fixed an issue where it was impossible to find a wishlist by using Wishlist Search
+    * Fixed an issue where no password validation was requested during customer registration on the storefront
+* Updated setup tools:
+    * Added the install script in the CatalogInventory module
+    * Removed old installation: Web and CLI, the Magento_Install module, install theme, install configuration scope
+    * Added usage of the new setup installation in all tests
+    * Added the ability to insert custom directory paths in the setup tools
+    * Added the uninstall tool: php -f setup/index.php uninstall
+    * Removed dependency on intl PHP extension until translations are re-introduced in the setup tool
+    * Made notification about unnecessarily writable directories after installation more specific
+* UI improvements:
+    * Improved UI for the Order by SKU, Invitation and Recurring Payments pages
+    * Implemented usage of Microdata and Schema vocabulary for product content
+    * Implemented UI for Catalog New Products List, Recently Compared Products, Recently Viewed Products widgets
+    * Implemented a new focus indicator
+    * Implemented the &lt;label&gt; element for form inputs
+    * Put in order the usage of the &lt;fieldset&gt; and &lt;legend&gt; tags
+    * Implemented the ability to skip to main content
+* Added the following functional tests:
+    * Add products to order from recently viewed products section
+    * Update configurable product
+* Various improvements:
+    * Stabilize URL rewrite module
+    * Moved getAdditional request into the basic one in OnePageCheckout
+    * Created a cron job in the Customer module for cleaning the customer_visitor table
+* Framework improvements:
+    * Refactored data builders auto-generation
+    * Implemented the Customer module interfaces
+    * Ported existing integration tests from Customer services
+    * Removed quote saving on GET requests (checkout/cart, checkout/onepage)
+
 0.1.0-alpha102
 =============
 * Fixed bugs:
@@ -572,7 +620,7 @@
    * Placing the order on frontend if enter in the street address line 1 and 2 255 symbols
    * Using  @357.farm domain emails in registration form
    * Validation for country_id/region_id and percentage_rate during Tax Rate creation
-   * Declaration of getSortOrders in Magento\Framework\Service\V1\Data\SearchCriteria
+   * Declaration of getSortOrders in Magento\Framework\Api\SearchCriteria
    * Order cancellation for online payment methods
    * Order online processing for Authorize.net Direct Post
    * Backend grids while search
diff --git a/README.md b/README.md
index 280143a0b77..ca681723a81 100644
--- a/README.md
+++ b/README.md
@@ -1,9 +1,798 @@
-[![Build Status](https://travis-ci.org/magento/magento2.svg?branch=master)](https://travis-ci.org/magento/magento2)
+Welcome to Magento 2 installation! We're glad you chose to install Magento 2, a cutting edge, feature-rich eCommerce solution that gets results.
 
-Magento Community Edition is perfect if you’re a developer who wants to build your own solution on a proven, flexible platform. You can modify the core code, and add features and new functionality on your own.
+#### Contents 
 
-All Submissions you make to Magento, an eBay Inc. company (“Magento”) through GitHub are subject to the following terms and conditions:
+*	<a href="#magento-2-system-requirements">Magento 2 system requirements</a>
+*	<a href="#composer-and-magento">Composer and Magento</a>
+*	<a href="#high-level-installation-roadmap">High-level installation roadmap</a>
+*	<a href="#required-server-permissions">Required server permissions</a>
+*	<a href="#prerequisites">Prerequisites</a>
+*	<a href="#installing-composer">Installing Composer</a>
+*	<a href="#cloning-the-magento-2-github-repository">Cloning the Magento 2 GitHub repository</a>
+*	<a href="#installing-or-reinstalling-the-magento-2-software">Installing or reinstalling the Magento software</a>
+*	<a href="#verifying-the-installation">Verifying the installation</a>
+*	<a href="#troubleshooting">Troubleshooting</a>
 
-1. You grant Magento a perpetual, worldwide, non-exclusive, no charge, royalty free, irrevocable license under your applicable copyrights and patents to reproduce, prepare derivative works of, display, publically perform, sublicense and distribute any feedback, ideas, code, or other information (“Submission”) you submit through GitHub.
-2. Your Submission is an original work of authorship and you are the owner or are legally entitled to grant the license stated above.
-3. You agree to the [Contributor License Agreement](https://github.com/magento/magento2/blob/master/CONTRIBUTOR_LICENSE_AGREEMENT.html).
+<h2>Magento 2 system requirements</h2>
+
+Before you install Magento 2, make sure your system meets or exceeds the following requirements:
+
+*	Operating systems
+
+	Linux distributions such as RedHat Enterprise Linux (RHEL), CentOS, Ubuntu, Debian, and so on
+	
+*	<a href="https://getcomposer.org/download/" >Composer</a> (latest stable version)
+*	<a href="http://httpd.apache.org/download.cgi" >Apache 2.2</a> or later
+*	PHP 5.4.11 or 5.5.x (<a href="http://php.net/downloads.php" >installation</a> instructions, <a href="http://phpave.com/upgrade-php-5-3-php-5-5-ubuntu-12-04-lts/" >upgrade</a> instructions)
+*	Required PHP extensions:
+
+	*	PDO/MySQL
+	*	mbstring
+	*	mcrypt
+	*	mhash
+	*	simplexml
+	*	curl
+	*	gd2, ImageMagick 6.3.7 (or later) or both
+	*	soap
+	
+*	<a href="http://dev.mysql.com/doc/refman/5.5/en/installing.html" >MySQL 5.5</a> or later
+*	Mail Transfer Agent (MTA) or an SMTP server
+*	Optional but recommended: 
+
+	*	<a href="http://xdebug.org/download.php" >php_xdebug2.2.0</a> or later (development environments only; can have an adverse effect on performance)
+    *	PHPUnit (as a command-line tool) 3.7 or later 
+	
+
+
+<h2 id="instgde-overview-composer">Composer and Magento</h2>
+
+We now use <a href="https://getcomposer.org/" >Composer</a> to install the Magento 2 software. Composer enables us to manage Magento 2, extensions, and their dependencies.
+
+Composer provides you with the following advantages:
+
+*	Enables you to reuse third-party libraries without bundling them with source code
+*	Component-based architecture with robust dependency management
+*	Manages dependencies to reduce extension conflicts and compatibility issues
+*	Versioned dependencies
+*	<a href="https://getcomposer.org/doc/01-basic-usage.md#package-versions" >Semantic versioning</a>
+*	Supports PHP Framework Interoperability standards
+
+We'll have more information soon on how developers can use Composer to package extensions to distribute to Magento merchants and to other developers.
+
+<h2 id="instgde-overview-roadmap">High-level installation roadmap</h2>
+
+Following is a brief overview of how to install the Magento 2 software.
+
+<h3>Step 1: Verify your prerequisites</h3>
+
+Use the following table to verify you have the correct prerequisites to install the Magento 2 software.
+
+<table>
+	<tbody>
+		<tr>
+			<th>Prerequisite</th>
+			<th>How to check</th>
+			<th>For more information</th>
+		</tr>
+	<tr>
+		<td>Apache 2.2 or later</td>
+		<td>Ubuntu: <code>apache -v</code><br>
+		CentOS: <code>httpd -v</code></td>
+		<td><a href="#apache" >Apache</a></td>
+	</tr>
+	<tr>
+		<td>PHP 5.4.11 or 5.5.x</td>
+		<td><code>php -v</code></td>
+		<td><a href="#php" >PHP</a></td>
+	</tr>
+	<tr><td>MySQL 5.5 or later</td>
+	<td><code>mysql -u [root user name] -p</code></td>
+	<td><a href="#mysql" >MySQL</a></td>
+	</tr>
+</tbody>
+</table>
+
+<h3>Step 2: Prepare to install</h3>
+
+After verifying your prerequisites, perform the following tasks in order to prepare to install the Magento 2 software.
+
+1.	<a href="#installing-composer">Installing Composer</a>
+2.	<a href="#cloning-the-magento-2-github-repository">Cloning the Magento 2 GitHub repository</a>
+	
+<h3>Step 3: Install and verify</h3>
+
+1.	<a href="#installing-or-reinstalling-the-magento-2-software">Installing or reinstalling the Magento software</a>
+2.	<a href="#verifying-the-installation">Verifying the installation</a>
+
+<h2>Required server permissions</h2>
+
+Unless otherwise noted, all commands in this Readme must be entered as a user with `root` privileges and permission to write to the web server docroot. Depending on your system, that might mean you must use different user accounts or add users to the web server user group&mdash;provided that group has sufficient privileges.
+
+Installing software on Linux typically requires `root` privileges. You should generally not install the Magento 2 software in the web server docroot using `root` privileges; however, that is up to you.
+
+<h2 id="readme-prereq">Prerequisites</h2>
+
+This section discusses how to install software required to install Magento 2.
+
+See one of the following sections:
+
+*	<a href="#before-you-begin">Before you begin</a>
+*	<a href="#apache">Apache</a>
+*	<a href="#php">PHP</a>
+*	<a href="#mysql">MySQL</a>
+
+
+<h3 id="instgde-prereq-overview">Before you begin</h3>
+
+Before you install Magento, you must do all of the following:
+
+*	Set up one or more hosts that meet the <a href="#magento-2-system-requirements">Magento 2 system requirements</a>.
+*	Make sure you can back up your entire system at various points during the installation so you can roll back in the event of issues.
+
+<h3>Apache</h3>
+
+<h4>Installing Apache on Ubuntu</h4>
+
+<ol><li>Install Apache using the guidelines on the <a href="https://help.ubuntu.com/10.04/serverguide/httpd.html" target="_blank">Ubuntu site</a>. </li>
+<li>Enable server rewrites:
+<ul><li>Apache 2.2: Use the guidelines on <a href="http://askubuntu.com/questions/48362/how-to-enable-mod-rewrite-in-apache" target="_blank">askubuntu</a>.</li>
+<li>Apache 2.4: Enter the following command: <code>a2enmod rewrite</code></li></ul>
+</li>
+<li>Specify the type of directives that can be used in <code>.htaccess</code>. Magento uses <code>.htaccess</code> for redirects. For guidelines, see:
+<ul><li>Apache 2.2: The <a href="http://httpd.apache.org/docs/2.2/mod/core.html#allowoverride" target="_blank">Apache 2.2 documentation</a>.</li>
+<li>Apache 2.4: The <a href="http://httpd.apache.org/docs/current/mod/mod_rewrite.html" target="_blank">Apache 2.4 documentation</a>.<br>
+Note that in Apache 2.4, the server's default site configuration file is <code>/etc/apache2/sites-available/000-default.conf</code><br>
+For example, you can add the following to the bottom of <code>000-default.conf</code>:<br>
+<pre>&lt;Directory "/var/www">
+AllowOverride [value from Apache site]
+&lt;/Directory></pre>
+<strong>Note</strong>: You must change the value of <code>AllowOverride</code> in the directive for the directory to which you expect to install the Magento software. For example, to install in the web server docroot, edit the directive in <code>&lt;Directory /var/www></code>.</li></ul>
+</li>
+<li>Restart Apache: <code>service apache2 restart</code></li></ol>
+
+<h4>Installing Apache on CentOS</h4>
+
+1.	Install Apache:
+
+	`yum -y install httpd`
+	
+	For additional information, see the <a href="http://httpd.apache.org/docs/2.4/platform/rpm.html" target="_blank">Apache site</a>. 
+	
+2.	Enable <a href="http://unix.stackexchange.com/questions/57946/enable-apache-mod-rewrites-to-load-clean-urls" target="_blank">server rewrites</a>.
+
+	**Note**: You must change the value of <code>Allow Override</code> in the directive for the directory to which you expect to install the Magento software. For example, to install in the web server docroot, edit the directive in <code>&lt;Directory "/var/www/html"></code>.
+	
+2.	Set the type of directives that can be used in `.htaccess`. Magento uses `.htaccess` for redirects. <a href="http://httpd.apache.org/docs/2.2/mod/core.html#allowoverride" target="_blank">Apache documentation</a>.
+
+3.	Restart Apache: `service httpd restart`
+
+<h3>MySQL</h3>
+
+<h4>Installing MySQL on Ubuntu</h4>
+
+1.	Use the guidelines on the <a href="https://help.ubuntu.com/12.04/serverguide/mysql.html" target="_blank">Ubuntu site</a>. 
+2.	Configure the database instance.
+
+<h4>Installing and configuring MySQL on CentOS</h4>
+
+1.	Install and configure MySQL as discussed on the <a href="http://centoshelp.org/servers/database/installing-configuring-mysql-server/" target="_blank">CentOS help site</a>.
+2.	Configure the database instance as discussed in the next section.
+
+<h4>Configuring the Magento database instance</h4>
+
+This section discusses how to create a new database instance for Magento. Although a new database instance is recommended, you can optionally install Magento into an existing database instance.
+
+To configure a MySQL database instance:
+
+1.	Log in to your database server as any user.
+2.	Enter the following command to get to a MySQL command prompt:
+	
+	`mysql -u root -p`
+
+3.	Enter the MySQL `root` user's password when prompted.
+4.	Enter the following commands in the order shown to create a database instance named `magento` with user name `magento`:
+	<pre>create database magento;
+CREATE USER 'magento'@'localhost' IDENTIFIED BY 'magento';
+GRANT USAGE ON *.* TO magento@localhost IDENTIFIED BY 'magento';
+GRANT ALL ON magento.* TO magento@localhost;</pre>
+
+5.	Enter `exit` to quit the command prompt.
+
+<h3>PHP</h3>
+
+Magento 2 requires PHP 5.4.11 or later or PHP 5.5.x.
+
+**Note**: Magento 2 does not support PHP 5.6.
+
+<h3>PHP on Ubuntu</h3>
+
+<h4>Install PHP 5.5 on Ubuntu 14</h4>
+
+To install PHP 5.5 on Ubuntu 14:
+
+1.	Enter the following command:
+
+	`apt-get -y install php5`
+	
+2.	Verify the PHP version by entering `php -v`. Messages similar to the following should display:
+
+	<pre>PHP 5.5.9-1ubuntu4.4 (cli) (built: Sep  4 2014 06:56:34)
+	Copyright (c) 1997-2014 The PHP Group
+	Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
+    with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies</pre>
+	
+<h4>Install PHP 5.4 on Ubuntu 12</h4>
+
+To install PHP 5.4 on Ubuntu 12:
+
+1.	Use the following instructions from <a href="http://askubuntu.com/questions/109404/how-do-i-install-latest-php-in-supported-ubuntu-versions-like-5-4-x-in-ubuntu-1" target="_blank">askubuntu</a>:
+
+	<pre>add-apt-repository ppa:ondrej/php5-oldstable
+	apt-get update
+	apt-get upgrade
+	apt-get install php5</pre>
+
+2.	Verify the PHP version by entering `php -v`. Messages similar to the following should display:
+
+	<pre>PHP 5.4.33-2+deb.sury.org~precise+1 (cli) (built: Sep 25 2014 09:06:25)
+	Copyright (c) 1997-2014 The PHP Group
+	Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies</pre>
+
+3.	Restart Apache: `service apache2 restart`
+
+<h4>Upgrade to PHP 5.4 on Ubuntu</h4>
+
+To upgrade to PHP 5.4 on Ubuntu:
+
+1.	Use the instructions on <a href="http://phpave.com/upgrade-php-5-3-php-5-5-ubuntu-12-04-lts/" target="_blank">phpave</a>.
+2.	After upgrading, verify the PHP version by entering `php -v`. Messages similar to the following should display:
+
+	<pre>PHP 5.4.33-2+deb.sury.org~precise+1 (cli) (built: Sep 25 2014 09:06:25)
+	Copyright (c) 1997-2014 The PHP Group
+	Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies</pre>
+
+3.	Restart Apache: `service apache2 restart`
+
+<h4>Install required PHP extensions on Ubuntu</h4>
+
+Enter the following command to install required PHP extensions:
+
+<pre>apt-get -y install php5 php5-mhash php5-mcrypt php5-curl php5-cli php5-mysql php5-gd</pre>
+
+<h4>Ubuntu 14 only: workaround for mcrypt issue</h4>
+
+There is a <a href="https://bugs.launchpad.net/ubuntu/+source/php-mcrypt/+bug/1240590" target="_blank">known issue</a> in Ubuntu 14 with the `mcrypt` PHP extension. To work around the issue, see <a href="http://askubuntu.com/questions/450825/ubuntu-14-04-phpmyadmin-cant-find-mcrypt-extension" target="_blank">askubuntu</a>.
+
+<h4>Upgrade to PHP 5.4 on CentOS</h4>
+
+PHP 5.3 is the default PHP version on CentOS distributions. Upgrade to PHP 5.4 using a repository like <a href="http://blog.famillecollet.com/pages/Config-en" target="_blank">remi</a>. 
+
+The following resources are also available:
+
+*	<a href="http://kb.parallels.com/en/115875" target="_blank">kb.parallels</a>
+*	<a href="http://stackoverflow.com/questions/21502656/upgrading-php-on-centos-6-5-final" target="_blank">stackoverflow</a>
+*	<a href="http://rpms.famillecollet.com/" target="_blank">remi repository</a>
+
+To upgrade to PHP 5.4:
+
+1.	Enter the following commands:
+
+	<pre>cd /tmp
+	rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
+	rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
+	yum -y --enablerepo=remi install httpd php php-common</pre>
+
+2.	To verify PHP 5.4 is installed, enter `php -v`. The command displays results similar to the following:
+
+	<pre>PHP 5.4.33 (cli) (built: Sep 20 2014 16:20:03)
+	Copyright (c) 1997-2014 The PHP Group
+	Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies</pre>
+
+3.	Restart Apache: `service httpd restart`
+
+<h4>Install required PHP extensions on CentOS</h4>
+
+Enter the following command to install required PHP extensions:
+
+`yum -y --enablerepo=remi install php-xml php-mcrypt.x86_64 gd gd-devel php-gd php-mysql`
+
+<h4>Setting the PHP timezone (all operating systems)</h4>
+
+Before you install Magento, you might need to set the system time zone for PHP; otherwise, errors like the following display during the installation and time-related operations like cron might not work:
+
+`PHP Warning:  date(): It is not safe to rely on the system's timezone settings.` [more messages follow]
+
+To set your time zone:
+
+1.	Locate your server's time zone in the available <a href="http://php.net/manual/en/timezones.php" target="_blank">time zone settings</a>.
+2.	Locate `php.ini` by entering the following command:
+
+	`php -i | grep "Loaded Configuration File"`
+	
+	Typical locations follow:
+	
+	Ubuntu: `/etc/php5/cli/php.ini`
+	
+	CentOS: `/etc/php.ini`
+	
+3.	Open `php.ini` in a text editor.
+
+4.	Locate the following setting and uncomment it if necessary:
+
+	`date.timezone =`
+	
+5.	Add the time zone setting you found in step 1.
+6.	Save your changes to `php.ini` and exit the text editor.
+
+<h4>Setting the PHP memory limit (all operating systems)</h4>
+
+Increase `memory_limit` in `php.ini` to at least 512MB for normal operation or 2GB for testing:
+
+1.	Open one of the following in a text editor:
+
+	*	Ubuntu: `/etc/php5/apache2/php.ini`
+	*	CentOS: `/etc/php.ini`
+2.	Change `memory_limit` to:
+
+	`memory_limit = 512M` or more for normal operation
+	
+	`memory_limit = 2G` or more for testing
+	
+3.	Save your changes and exit the text editor. 
+
+4.	Restart Apache:
+
+	Ubuntu: `service apache2 restart`
+	
+	CentOS: `service httpd restart`
+
+
+<h2 id="installing-composer">Installing Composer</h2>
+
+To install Composer:
+
+1.	Change to or create an empty directory on your Magento server.
+
+2.	Enter the following commands:
+
+	<pre>curl -sS https://getcomposer.org/installer | php
+	mv composer.phar /usr/local/bin/composer</pre>
+	
+	For additional installation options, see the <a href="https://getcomposer.org/download/" target="_blank">Composer installation documentation</a>.
+	
+<h2 id="instgde-prereq-compose-clone">Cloning the Magento 2 GitHub repository</h2>
+
+To clone the Magento 2 GitHub repository:
+
+1.	Change to your web server's docroot directory.
+
+	Typically, for Ubuntu, it's `/var/www` and for CentOS it's `/var/www/html`.
+
+2.	Enter any of the following commands as a user with privileges to write to the web server docroot:
+
+	To clone using HTTPS, use either of the following:
+
+	`git clone https://github.com/magento/magento2.git`
+	
+	`git clone https://[your github.com user name]:[password]@github.com/magento/magento2.git`
+	
+	To clone using SSH: `git clone git@github.com:magento/magento2.git`
+	
+3.	Wait for the repository to clone on your server.
+
+**Note**: If you get an error that includes `Permission denied (publickey)`, see <a href="#troubleshooting">Troubleshooting</a>.
+
+<h2>Installing or reinstalling the Magento 2 software</h2>
+
+Before you begin, make sure that:
+
+1.	Your system meets the requirements discussed in <a href="#magento-2-system-requirements">Magento 2 system requirements</a>.
+2.	You completed all prerequisite tasks discussed in <a href="#prerequisites">Prerequisites.</a>
+3.	You <a href="#installing-composer">installed Composer</a>.
+4.	You <a href="#cloning-the-magento-2-github-repository">cloned the Magento 2 GitHub repository</a>.
+
+<h3>Setting file system permissions and ownership before you install</h3>
+
+To make sure the installation completes successfully, we suggest the following file system permissions and ownership:
+
+*	All files and directories owned by the web server user
+*	Certain directories must be writable
+
+<h4>Finding the web server user</h4>
+
+To find the web server user, enter one of the following commands:
+
+*	Ubuntu: `ps -ef | grep apache2`
+*	CentOS: `grep User /etc/httpd/conf/httpd.conf`
+
+<h4>Pre-installation permissions and ownership</h4>
+
+Before the installation, set the following permissions:
+
+*	All directories have 700 permissions `(drwx------)`.
+
+	700 permissions give full control (that is, read/write/execute) to the owner and no permissions to anyone else.
+	
+*	All files have 600 permissions `(-rw-------)`.
+
+	600 permissions mean the owner can read and write but other users have no permissions.
+	
+<h4>Setting permissions and ownership</h4>
+
+1.	To set ownership, enter the following commands as a user with `root` privileges:
+
+	<pre>cd [your Magento installation directory]
+	chown -R [web server user name] .</pre>
+	
+	CentOS example:
+	
+	<pre>cd /var/www/html/magento2
+	chown -R apache .</pre>
+	
+	Ubuntu example:
+	
+	<pre>cd /var/www/magento2
+	chown -R www-data .</pre>
+	
+2.	Set file and directory permissions:
+
+	<pre>find . -type d -exec chmod 700 {} \;
+	find . -type f -exec chmod 600 {} \;</pre>
+
+<h3>Getting started with your installation</h3>
+
+After you complete the tasks discussed in the preceding section, update Composer and run the installer:
+
+1.	Log in to your Magento server as a user with `root` privileges.
+2.	Change to the Magento 2 installation directory. For example,
+
+	`cd /var/www/html/magento2`
+	
+	**Note**: On Ubuntu, you might have to use the `sudo -s` or equivalent command to access this directory.
+	
+3.	As user with privileges to write to the web server docroot, enter `composer install`
+
+	This command updates package dependencies and can take a few minutes to complete.
+	
+4.	Change to the Magento 2 `setup` subdirectory and enter `composer install`.
+
+**Note**: You must run `composer install` from *both* directories.
+	
+<h3>Running the Magento 2 installer</h3>
+
+This section discusses how to run the command-line installer for Magento 2. 
+
+**Note**: You must install Magento from its `setup` subdirectory.
+
+The installer is designed to be run multiple times if necessary so you can:
+
+*	Provide different values 
+
+	For example, after you configure your web server for Secure Sockets Layer (SSL), you can run the installer to set SSL options.
+*	Correct mistakes in previous installations
+*	Install Magento in a different database instance
+
+**Note**: By default, the installer doesn't overwrite the Magento database if you install the Magento software in the same database instance. You can use the optional <tt>clean_database</tt> parameter to change this behavior.
+
+**Note**: If you get errors during the installation, see <a href="#troubleshooting">Troubleshooting</a>.
+
+Before you begin, you can run the following commands to find values for some required options:
+
+<table>
+	<tbody>
+		<tr>
+			<th>Installer option</th>
+			<th>Command</th>
+		</tr>
+	<tr>
+		<td>Language</td>
+		<td><code>php -f index.php help languages</code></td>
+	</tr>
+	<tr>
+		<td>Time zone</td>
+		<td><code>php -f index.php help timezones</code></td>
+	</tr>
+	<tr>
+		<td>Currency</td>
+		<td><code>php -f index.php help currencies</code></td>
+	</tr>
+	</tbody>
+	</table>
+	
+	<p>The format of the command follows:</p>
+
+	<code>php -f index.php install [--[installation option name]=[installation option value] ...</code>
+
+	<p>The following table discusses the meanings of installation option names and values. An example is provided in <a href="#sample-localhost-installation">Sample localhost installation</a>.</p>
+
+<table>
+	<tbody>
+		<tr>
+			<th>Name</th>
+			<th>Value</th>
+			<th>Required?</th>
+		</tr>
+		<tr>
+		<td>base_url</td>
+		<td><p>Base URL to use to access your Magento Admin and storefront in the format <tt>http[s]://[host or ip]/[your Magento base dir]/</tt>.</p>
+		<p><strong>Note</strong>: The scheme (<code>http://</code> or <code>https://</code>) and a trailing slash are <em>both</em> required.</p>
+		<p><tt>[your Magento base dir]</tt> is the docroot-relative path in which to install the Magento 2 software. Depending on how you set up your web server and virtual hosts, the path might be <tt>magento2</tt> or it might be blank.</p>
+		<p>To access Magento on localhost, you can use either <code>http://localhost/[your Magento base dir]/</code> or <code>http://127.0.0.1/[your Magento base dir]/</code>.</p>
+		</td>
+		<td>Yes</td>
+	</tr>
+	<tr>
+		<td>backend_frontname</td>
+		<td>Path to access the Magento Admin. This path is appended to Base URL.
+For example, if Base URL is http://www.example.com and Admin Path is <code>admin</code>, the Admin Panel's URL is <code>http://www.example.com/admin</code>&mdash;provided you configured your web server for server rewrites.</td>
+		<td>Yes</td>
+	</tr>
+	<tr>
+	<tr>
+		<td>db_host</td>
+		<td><p>Use any of the following:</p>
+		<ul><li>The database server's fully qualified host name or IP address.</li>
+		<li><code>localhost</code> if your database serve is on the same host as your web server.</li>
+		<li>UNIX socket; for example, <code>/var/run/mysqld/mysqld.sock</code></li></ul>
+		<p><strong>Note</strong>: You can optionally specify the database server port in its host name like <code>www.example.com:9000</code></p>
+</td>
+		<td>Yes</td>
+	</tr>
+	<tr>
+		<td>db_name</td>
+		<td>Name of the Magento database instance in which you want to install the Magento database tables.</td>
+		<td>Yes</td>
+	</tr>
+	<tr>
+		<td>db_user</td>
+		<td>User name of the Magento database instance owner.</td>
+		<td>Yes</td>
+	</tr>
+	<tr>
+		<td>db_pass</td>
+		<td>Magento database instance owner's password.</td>
+		<td>No</td>
+	</tr>
+	<tr>
+		<td>db_prefix</td>
+		<td><p>Use only if you're installing the Magento database tables in a database instance that has Magento tables in it already.</p>
+		<p>In that case, use a prefix to identify the Magento tables for this installation. Some customers have more than one Magento instance running on a server with all tables in the same database.</p>
+		<p>This option enables those customers to share the database server with more than one Magento installation.</p></td>
+		<td>No</td>
+	</tr>
+
+		<td>admin_firstname</td>
+		<td>Magento administrator user's first name.</td>
+		<td>Yes</td>
+	</tr>
+	<tr>
+		<td>admin_lastname</td>
+		<td>Magento administrator user's last name.</td>
+		<td>Yes</td>
+	</tr>
+	<tr>
+		<td>admin_email</td>
+		<td>Magento administrator user's e-mail address.</td>
+		<td>Yes</td>
+	</tr>
+	<tr>
+		<td>admin_username</td>
+		<td>Magento administrator user name.</td>
+		<td>Yes</td>
+	</tr>
+	<tr>
+		<td>admin_password</td>
+		<td>Magento administrator user password.</td>
+		<td>Yes</td>
+	</tr>
+	<tr>
+		<td>language</td>
+		<td>Language code to use in the Admin and storefront. (If you have not done so already, you can view the list of language codes by entering <code>php -f index.php help languages</code> from the <code>setup</code> directory.)</td>
+		<td>Yes</td>
+	</tr>
+	<tr>
+		<td>currency</td>
+		<td>Default currency to use in the storefront. (If you have not done so already, you can view the list of currencies by entering <code>php -f index.php help currencies</code> from the <code>setup</code> directory.)</td>
+		<td>Yes</td>
+	</tr>
+	<tr>
+		<td>timezone</td>
+		<td>Default time zone to use in the Admin and storefront. (If you have not done so already, you can view the list of time zones by entering <code>php -f index.php help timezones</code> from the <code>setup</code> directory.)</td>
+		<td>Yes</td>
+	</tr>
+	<tr>
+		<td>use_secure</td>
+		<td><p><code>1</code> enables the use of Secure Sockets Layer (SSL) in all URLs (both Admin and storefront). Make sure your web server supports SSL before you select this option.</p>
+		<p><code>0</code> disables the use of SSL with Magento. In this case, all other secure URL options are assumed to also be <code>0</code>.</p></td>
+		<td>No</td>
+	</tr>
+	<tr>
+		<td>base_secure_url</td>
+		<td><p><code>1</code> means SSL is preferred in Magento URLs designed to use it (for example, the checkout page). Make sure your web server supports SSL before you select this option.</p>
+		<p><code>0</code> means SSL is not used.</p></td>
+		<td>No</td>
+	</tr>
+	
+	<tr>
+		<td>use_secure_admin</td>
+		<td><p><code>1</code> means you use SSL to access the Magento Admin. Make sure your web server supports SSL before you select this option.</p>
+		<p><code>0</code> means you do not use SSL with the Admin.</p></td>
+		<td>No</td>
+	</tr>
+	<tr>
+		<td>admin_use_security_key</td>
+		<td><p><code>1</code> causes the Magento software to use a randomly generated key value to access pages in the Magento Admin and in forms. These key values help prevent <a href="https://www.owasp.org/index.php/Cross-Site_Request_Forgery_%28CSRF%29" target="_blank">cross-site script forgery attacks</a>.</p>
+		<p><code>0</code> disables the use of the key.</p></td>
+		<td>No</td>
+	</tr>
+	<tr>
+		<td>session_save</td>
+		<td><p>Use any of the following:</p>
+		<ul><li><code>files</code> to store session data in the file system. File-based session storage is appropriate unless the Magento file system access is slow or you have a clustered database.</li>
+		<li><code>db.files</code> to store session data in the database. Choose database storage if you have a clustered database; otherwise, there might not be much benefit over file-based storage.</li></ul></td>
+		<td>No</td>
+	</tr>
+	<tr>
+		<td>key</td>
+		<td>If you have one, specify a key to encrypt sensitive data in the Magento database. (This includes passwords and personally identifiable customer information.) If you don't have one, Magento generates one for you.</td>
+		<td>No</td>
+	</tr>
+	<tr>
+		<td>cleanup_database</td>
+		<td>To drop database tables before installing the Magento 2 software, specify this parameter without a value. Otherwise, the Magento database is left intact.</td>
+		<td>No</td>
+	</tr>
+	<tr>
+		<td>db_init_statements</td>
+		<td>Advanced MySQL configuration parameter. Uses database initialization statements to run when connecting to the MySQL database. Consult a reference similar to <a href="http://dev.mysql.com/doc/refman/5.6/en/server-options.html" target="_blank">this one</a> before you set any values.</td>
+		<td>No</td>
+	</tr>
+	<tr>
+		<td>sales_order_increment_prefix</td>
+		<td>Specify a string value to use as a prefix for sales orders. Typically, this is used to guarantee unique order numbers for payment processors.</td>
+		<td>No</td>
+	</tr>
+	
+	</tbody>
+</table>
+
+<h4>Sample localhost installation</h4>
+
+The following example installs Magento with the following options:
+
+*	The Magento software is installed in the `magento2` directory relative to the web server docroot on `localhost` and the path to the Magento Admin is `admin`; therefore:
+
+	Your storefront URL is `http://localhost` and you can access the Magento Admin at `http://localhost/admin`
+	
+*	The database server is on the same host as the web server.
+
+	The database name is `magento`, and the user name and password are both `magento`
+	
+*	The Magento administrator has the following properties:
+
+	*	First and last name are is `Magento User`
+	*	User name is `admin` and the password is `iamtheadmin`
+	*	E-mail address is `user@example.com`
+
+*	Default language is `en_US` (U.S. English)
+*	Default currency is U.S. dollars
+*	Default time zone is U.S. Central (America/Chicago)
+
+<pre>php -f index.php install --base_url=http://localhost/magento2/
+	--backend_frontname=admin 
+	--db_host=localhost --db_name=magento 
+	--db_user=magento --db_pass=magento 
+	--admin_firstname=Magento --admin_lastname=User 
+	--admin_email=user@example.com 	--admin_username=admin 
+	--admin_password=iamtheadmin --language=en_US
+	--currency=USD --timezone=America/Chicago</pre>
+
+<h3 id="instgde-install-magento-reinstall">Reinstalling the Magento 2 software</h3>
+
+This section discusses how to install the Magento 2 software after you installed it previously. You might do this in an development environment especially to get all the latest code changes.
+
+To reinstall the Magento 2 software:
+
+1.	Optionally delete and re-create the database instance.
+2.	Log in to your Magento server as a user with permissions to modify files in the Magento file system.
+3.	Enter the following commands in the order shown:
+
+	<pre>cd [your Magento install dir]
+git pull
+composer install
+cd setup
+composer install</pre>
+
+4.	Repeat the tasks discussed in <a href="#installing-or-reinstalling-the-magento-2-software">Installing or reinstalling the Magento 2 software</a>.
+
+<h2>Verifying the installation</h2>
+
+<h3>Verifying the storefront</h3>
+
+Go to the storefront in a web browser. For example, if your Magento 2 installation base URL is `http://www.example.com`, enter it in your browser's address or location bar.
+
+The following figure shows a sample storefront page. If it displays as follows, your installation was a success!
+
+<p><img src="success.png" alt="Magento storefront which verifies a successful installation"></p>
+
+If the page appears unconfigured (no styles, only text), see <a href="troubleshooting">Troubleshooting</a>.
+
+<h3>Verifying the Magento Admin</h3>
+
+Go to the Magento Admin in a web browser. For example, if your Magento 2 installation base URL is `http://www.example.com`, and the Admin URL is `admin`, enter `http://www.example.com/admin` in your browser's address or location bar.
+
+(The Admin URL is specified by the value of the `backend_frontname` installation parameter.)
+
+When prompted, log in as a Magento Administrator.
+
+The following figure shows a sample Magento Admin page. If it displays as follows, your installation was a success!
+
+<p><img src="success_admin.png" alt="Magento Admin which verifies a successful installation"></p>
+
+If the page appears unconfigured (no styles, only text), see <a href="troubleshooting">Troubleshooting</a>.
+
+If you get a 404 (Not Found) error similar to the following, see <a href="troubleshooting">Troubleshooting</a>:
+
+`The requested URL /magento2index.php/admin/admin/dashboard/index/key/0c81957145a968b697c32a846598dc2e/ was not found on this server.`
+
+<h2>Troubleshooting</h2>
+
+### Problem: Cannot clone the Magento 2 GitHub repository
+
+**Detail**: Error is similar to the following:
+
+<pre>Cloning into 'magento2'...
+Permission denied (publickey).
+fatal: The remote end hung up unexpectedly</pre>
+
+**Solution**: Upload your SSH key to GitHub as discussed in <a href="https://help.github.com/articles/generating-ssh-keys" target="_blank">the GitHub help page</a>.
+
+### Problem: Cannot run 'composer install'
+
+**Suggestion**: Change to the directory in which you installed Composer and enter the following command:
+
+`mv composer.phar /usr/local/bin/composer`
+
+### Problem: During installation, PHP date warning
+
+**Details**: During the installation, the following message displays: 
+
+`PHP Warning:  date(): It is not safe to rely on the system's timezone settings. [more]`
+
+**Solution**: <a href="#php">Set the PHP timezone properly</a>.
+
+### Problem: During installation, the following fatal error displays:
+
+`PHP Fatal error:  Class 'PDO' not found in /var/www/html/magento2/setup/module/Magento/Setup/src/Module/Setup/ConnectionFactory.php on line 44`
+
+**Solution**: Make sure you installed all required <a href="#php">PHP extensions</a>.
+
+### Problem: You cannot access Magento in a web browser
+
+**Details**: The following message displays when you try to access the Magento storefront or Admin:
+
+<pre>Whoops, it looks like you have an invalid PHP version.
+Magento supports PHP 5.4.11 or newer. </pre>
+
+**Solution**: Either <a href="#php">upgrade PHP</a> or restart Apache (Apache might not be using the same PHP version as is on the file system).
+
+To restart Apache:
+
+*	Ubuntu: `service apache2 restart`
+*	CentOS: `service httpd restart`
+
+### Problem: Error after logging in to the Magento Admin:
+
+`The requested URL /magento2index.php/admin/admin/dashboard/index/key/0c81957145a968b697c32a846598dc2e/ was not found on this server.`
+
+Note the lack of a slash character between <tt>magento2</tt> and <tt>index.php</tt> in the URL.
+
+**Solution**: The base URL is not correct. The base URL must start with <tt>http://</tt> or <tt>https://</tt> *and* it must end with a slash (/). Run the installation again with a valid value.
+
+### Problem: After installing, images and stylesheets do not load; only text displays, no graphics. 
+
+**Details**: The path to images and stylesheets is not correct, either because of an incorrect base URL or because <a href="#apache">server rewrites</a> are not set up properly. To confirm this is the case, use a web browser inspector to check the paths to static assets and verify those assets are located on the Magento file system.
+
+Magento 2 static assets should be located under `[your Magento install dir]/pub/static/` (there should be `frontend` and `adminhtml` directories).
+
+Verify your server rewrites setting and your base URL and try again.
\ No newline at end of file
diff --git a/app/autoload.php b/app/autoload.php
index 0f6e9f7060f..bb250c9ee75 100644
--- a/app/autoload.php
+++ b/app/autoload.php
@@ -34,14 +34,3 @@ $vendorAutoload = BP . "/{$vendorDir}/autoload.php";
 if (file_exists($vendorAutoload)) {
     require_once $vendorAutoload;
 }
-require_once BP . '/lib/internal/Magento/Framework/Autoload/IncludePath.php';
-$includePath = new \Magento\Framework\Autoload\IncludePath();
-$includePath->addIncludePath([BP . '/app/code', BP . '/lib/internal']);
-spl_autoload_register([$includePath, 'load']);
-$classMapPath = BP . '/var/classmap.ser';
-if (file_exists($classMapPath)) {
-    require_once BP . '/lib/internal/Magento/Framework/Autoload/ClassMap.php';
-    $classMap = new \Magento\Framework\Autoload\ClassMap(BP);
-    $classMap->addMap(unserialize(file_get_contents($classMapPath)));
-    spl_autoload_register(array($classMap, 'load'), true, true);
-}
diff --git a/app/code/Magento/AdminNotification/Model/Feed.php b/app/code/Magento/AdminNotification/Model/Feed.php
index 57ff524528f..49fa68a72d1 100644
--- a/app/code/Magento/AdminNotification/Model/Feed.php
+++ b/app/code/Magento/AdminNotification/Model/Feed.php
@@ -57,15 +57,24 @@ class Feed extends \Magento\Framework\Model\AbstractModel
 
     /**
      * @var \Magento\Framework\HTTP\Adapter\CurlFactory
+     *
      */
     protected $curlFactory;
 
+    /**
+     * Application arguments
+     *
+     * @var \Magento\Framework\App\Arguments
+     */
+    protected $_args;
+
     /**
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
      * @param \Magento\Backend\App\ConfigInterface $backendConfig
      * @param \Magento\AdminNotification\Model\InboxFactory $inboxFactory
      * @param \Magento\Framework\Model\Resource\AbstractResource $resource
+     * @param \Magento\Framework\App\Arguments $args
      * @param \Magento\Framework\Data\Collection\Db $resourceCollection
      * @param \Magento\Framework\HTTP\Adapter\curlFactory $curlFactory
      * @param array $data
@@ -76,6 +85,7 @@ class Feed extends \Magento\Framework\Model\AbstractModel
         \Magento\Backend\App\ConfigInterface $backendConfig,
         \Magento\AdminNotification\Model\InboxFactory $inboxFactory,
         \Magento\Framework\HTTP\Adapter\CurlFactory $curlFactory,
+        \Magento\Framework\App\Arguments $args,
         \Magento\Framework\Model\Resource\AbstractResource $resource = null,
         \Magento\Framework\Data\Collection\Db $resourceCollection = null,
         array $data = array()
@@ -84,6 +94,7 @@ class Feed extends \Magento\Framework\Model\AbstractModel
         $this->_backendConfig = $backendConfig;
         $this->_inboxFactory = $inboxFactory;
         $this->curlFactory = $curlFactory;
+        $this->_args = $args;
     }
 
     /**
@@ -124,7 +135,7 @@ class Feed extends \Magento\Framework\Model\AbstractModel
 
         $feedXml = $this->getFeedData();
 
-        $installDate = $this->_appState->getInstallDate();
+        $installDate = strtotime($this->_args->get('install_date'));
 
         if ($feedXml && $feedXml->channel && $feedXml->channel->item) {
             foreach ($feedXml->channel->item as $item) {
diff --git a/app/code/Magento/AdminNotification/composer.json b/app/code/Magento/AdminNotification/composer.json
index e4b264fd749..3dffdb3ab9f 100644
--- a/app/code/Magento/AdminNotification/composer.json
+++ b/app/code/Magento/AdminNotification/composer.json
@@ -3,15 +3,15 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "lib-libxml": "*",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/AdminNotification/sql/adminnotification_setup/install-1.6.0.0.php b/app/code/Magento/AdminNotification/sql/adminnotification_setup/install-1.6.0.0.php
index 267f919aaed..3da34cd529f 100644
--- a/app/code/Magento/AdminNotification/sql/adminnotification_setup/install-1.6.0.0.php
+++ b/app/code/Magento/AdminNotification/sql/adminnotification_setup/install-1.6.0.0.php
@@ -27,8 +27,9 @@
  *
  * @author      Magento Core Team <core@magentocommerce.com>
  */
+
+/** @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
-/* @var $installer \Magento\Framework\Module\Setup */
 
 $installer->startSetup();
 /**
diff --git a/app/code/Magento/AdminNotification/sql/adminnotification_setup/upgrade-1.6.0.0-2.0.0.0.php b/app/code/Magento/AdminNotification/sql/adminnotification_setup/upgrade-1.6.0.0-2.0.0.0.php
index f5d9f065bd4..824da0b7cfc 100644
--- a/app/code/Magento/AdminNotification/sql/adminnotification_setup/upgrade-1.6.0.0-2.0.0.0.php
+++ b/app/code/Magento/AdminNotification/sql/adminnotification_setup/upgrade-1.6.0.0-2.0.0.0.php
@@ -21,8 +21,9 @@
  * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
+
+/** @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
-/* @var $installer \Magento\Framework\Module\Setup */
 
 $installer->startSetup();
 /**
diff --git a/app/code/Magento/Authorization/composer.json b/app/code/Magento/Authorization/composer.json
index 3718bab0174..5113d36a735 100644
--- a/app/code/Magento/Authorization/composer.json
+++ b/app/code/Magento/Authorization/composer.json
@@ -3,12 +3,12 @@
     "description": "Authorization module provides access to Magento ACL functionality.",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Authorization/data/authorization_setup/data-install-1.0.0.0.php b/app/code/Magento/Authorization/data/authorization_setup/data-install-1.0.0.0.php
index 483a6ee18fc..0d7ce6e367b 100644
--- a/app/code/Magento/Authorization/data/authorization_setup/data-install-1.0.0.0.php
+++ b/app/code/Magento/Authorization/data/authorization_setup/data-install-1.0.0.0.php
@@ -28,7 +28,7 @@ use Magento\Authorization\Model\UserContextInterface;
  * Save administrators group role and rules
  */
 
-/** @var \Magento\Authorization\Model\Resource\Setup $this */
+/** @var $this \Magento\Authorization\Model\Resource\Setup */
 
 $roleCollection = $this->createRoleCollection()
     ->addFieldToFilter('parent_id', 0)
diff --git a/app/code/Magento/Authorization/sql/authorization_setup/install-1.0.0.0.php b/app/code/Magento/Authorization/sql/authorization_setup/install-1.0.0.0.php
index eb6661c9dc2..f239fa232e4 100644
--- a/app/code/Magento/Authorization/sql/authorization_setup/install-1.0.0.0.php
+++ b/app/code/Magento/Authorization/sql/authorization_setup/install-1.0.0.0.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* @var $installer \Magento\Framework\Module\Setup */
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 $installer->startSetup();
diff --git a/app/code/Magento/Authorizenet/composer.json b/app/code/Magento/Authorizenet/composer.json
index f44c2948e8c..37ef6cf7b4d 100644
--- a/app/code/Magento/Authorizenet/composer.json
+++ b/app/code/Magento/Authorizenet/composer.json
@@ -3,18 +3,18 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-sales": "0.1.0-alpha102",
-        "magento/module-checkout": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-payment": "0.1.0-alpha102",
-        "magento/module-centinel": "0.1.0-alpha102",
-        "magento/module-catalog": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-sales": "0.1.0-alpha103",
+        "magento/module-checkout": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-payment": "0.1.0-alpha103",
+        "magento/module-centinel": "0.1.0-alpha103",
+        "magento/module-catalog": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Backend/Block/Widget/Grid/Container.php b/app/code/Magento/Backend/Block/Widget/Grid/Container.php
index 3c2b92c5747..f1330c62cdb 100644
--- a/app/code/Magento/Backend/Block/Widget/Grid/Container.php
+++ b/app/code/Magento/Backend/Block/Widget/Grid/Container.php
@@ -103,7 +103,7 @@ class Container extends \Magento\Backend\Block\Widget\Container
                 $this->getLayout()->createBlock(
                     str_replace(
                         '_',
-                        \Magento\Framework\Autoload\IncludePath::NS_SEPARATOR,
+                        '\\',
                         $this->_blockGroup
                     ) . '\\Block\\' . str_replace(
                         ' ',
diff --git a/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/AjaxBlock.php b/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/AjaxBlock.php
index 3cfa2b4bb13..1b03594c652 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/AjaxBlock.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/Dashboard/AjaxBlock.php
@@ -60,7 +60,7 @@ class AjaxBlock extends \Magento\Backend\Controller\Adminhtml\Dashboard
         $blockTab = $this->getRequest()->getParam('block');
         $blockClassSuffix = str_replace(
             ' ',
-            \Magento\Framework\Autoload\IncludePath::NS_SEPARATOR,
+            '\\',
             ucwords(str_replace('_', ' ', $blockTab))
         );
         if (in_array($blockTab, array('tab_orders', 'tab_amounts', 'totals'))) {
diff --git a/app/code/Magento/Backend/Model/Search/Customer.php b/app/code/Magento/Backend/Model/Search/Customer.php
index 84f8009e5cc..2d5f256f804 100644
--- a/app/code/Magento/Backend/Model/Search/Customer.php
+++ b/app/code/Magento/Backend/Model/Search/Customer.php
@@ -53,12 +53,12 @@ class Customer extends \Magento\Framework\Object
     protected $_customerService;
 
     /**
-     * @var \Magento\Framework\Service\V1\Data\SearchCriteriaBuilder
+     * @var \Magento\Framework\Api\SearchCriteriaBuilder
      */
     protected $_searchCriteriaBuilder;
 
     /**
-     * @var \Magento\Framework\Service\V1\Data\FilterBuilder
+     * @var \Magento\Framework\Api\FilterBuilder
      */
     protected $_filterBuilder;
 
@@ -72,15 +72,15 @@ class Customer extends \Magento\Framework\Object
      *
      * @param \Magento\Backend\Helper\Data $adminhtmlData
      * @param \Magento\Customer\Service\V1\CustomerAccountService $customerService
-     * @param \Magento\Framework\Service\V1\Data\SearchCriteriaBuilder $searchCriteriaBuilder
-     * @param \Magento\Framework\Service\V1\Data\FilterBuilder $filterBuilder
+     * @param \Magento\Framework\Api\SearchCriteriaBuilder $searchCriteriaBuilder
+     * @param \Magento\Framework\Api\FilterBuilder $filterBuilder
      * @param \Magento\Customer\Helper\View $customerViewHelper
      */
     public function __construct(
         \Magento\Backend\Helper\Data $adminhtmlData,
         \Magento\Customer\Service\V1\CustomerAccountService $customerService,
-        \Magento\Framework\Service\V1\Data\SearchCriteriaBuilder $searchCriteriaBuilder,
-        \Magento\Framework\Service\V1\Data\FilterBuilder $filterBuilder,
+        \Magento\Framework\Api\SearchCriteriaBuilder $searchCriteriaBuilder,
+        \Magento\Framework\Api\FilterBuilder $filterBuilder,
         \Magento\Customer\Helper\View $customerViewHelper
     ) {
         $this->_adminhtmlData = $adminhtmlData;
diff --git a/app/code/Magento/Backend/composer.json b/app/code/Magento/Backend/composer.json
index 7fcea80adbc..d994c01355c 100644
--- a/app/code/Magento/Backend/composer.json
+++ b/app/code/Magento/Backend/composer.json
@@ -3,26 +3,26 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-directory": "0.1.0-alpha102",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-eav": "0.1.0-alpha102",
-        "magento/module-cron": "0.1.0-alpha102",
-        "magento/module-theme": "0.1.0-alpha102",
-        "magento/module-reports": "0.1.0-alpha102",
-        "magento/module-sales": "0.1.0-alpha102",
-        "magento/module-catalog": "0.1.0-alpha102",
-        "magento/module-user": "0.1.0-alpha102",
-        "magento/module-backup": "0.1.0-alpha102",
-        "magento/module-email": "0.1.0-alpha102",
-        "magento/module-customer": "0.1.0-alpha102",
-        "magento/module-translation": "0.1.0-alpha102",
-        "magento/module-require-js": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-directory": "0.1.0-alpha103",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-eav": "0.1.0-alpha103",
+        "magento/module-cron": "0.1.0-alpha103",
+        "magento/module-theme": "0.1.0-alpha103",
+        "magento/module-reports": "0.1.0-alpha103",
+        "magento/module-sales": "0.1.0-alpha103",
+        "magento/module-catalog": "0.1.0-alpha103",
+        "magento/module-user": "0.1.0-alpha103",
+        "magento/module-backup": "0.1.0-alpha103",
+        "magento/module-email": "0.1.0-alpha103",
+        "magento/module-customer": "0.1.0-alpha103",
+        "magento/module-translation": "0.1.0-alpha103",
+        "magento/module-require-js": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Backup/composer.json b/app/code/Magento/Backup/composer.json
index f134ec476bc..b6c59756af7 100644
--- a/app/code/Magento/Backup/composer.json
+++ b/app/code/Magento/Backup/composer.json
@@ -3,15 +3,15 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/module-cron": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/module-cron": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Bundle/Service/V1/Data/Product/Link.php b/app/code/Magento/Bundle/Service/V1/Data/Product/Link.php
index f2742c82455..53d096c924f 100644
--- a/app/code/Magento/Bundle/Service/V1/Data/Product/Link.php
+++ b/app/code/Magento/Bundle/Service/V1/Data/Product/Link.php
@@ -23,7 +23,7 @@
  */
 namespace Magento\Bundle\Service\V1\Data\Product;
 
-use \Magento\Framework\Service\Data\AbstractExtensibleObject;
+use \Magento\Framework\Api\AbstractExtensibleObject;
 
 /**
  * @codeCoverageIgnore
diff --git a/app/code/Magento/Bundle/Service/V1/Data/Product/LinkBuilder.php b/app/code/Magento/Bundle/Service/V1/Data/Product/LinkBuilder.php
index 1b57e7724e2..ec13fa53550 100644
--- a/app/code/Magento/Bundle/Service/V1/Data/Product/LinkBuilder.php
+++ b/app/code/Magento/Bundle/Service/V1/Data/Product/LinkBuilder.php
@@ -23,12 +23,12 @@
  */
 namespace Magento\Bundle\Service\V1\Data\Product;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder;
+use Magento\Framework\Api\ExtensibleObjectBuilder;
 
 /**
  * @codeCoverageIgnore
  */
-class LinkBuilder extends AbstractExtensibleObjectBuilder
+class LinkBuilder extends ExtensibleObjectBuilder
 {
     /**
      * @param string $value
diff --git a/app/code/Magento/Bundle/Service/V1/Data/Product/Option.php b/app/code/Magento/Bundle/Service/V1/Data/Product/Option.php
index 6dfe329e47c..56603db45b8 100644
--- a/app/code/Magento/Bundle/Service/V1/Data/Product/Option.php
+++ b/app/code/Magento/Bundle/Service/V1/Data/Product/Option.php
@@ -23,7 +23,7 @@
  */
 namespace Magento\Bundle\Service\V1\Data\Product;
 
-use \Magento\Framework\Service\Data\AbstractExtensibleObject;
+use \Magento\Framework\Api\AbstractExtensibleObject;
 
 /**
  * @codeCoverageIgnore
diff --git a/app/code/Magento/Bundle/Service/V1/Data/Product/Option/Type.php b/app/code/Magento/Bundle/Service/V1/Data/Product/Option/Type.php
index cc66a6c4467..dd68528029d 100644
--- a/app/code/Magento/Bundle/Service/V1/Data/Product/Option/Type.php
+++ b/app/code/Magento/Bundle/Service/V1/Data/Product/Option/Type.php
@@ -23,7 +23,7 @@
  */
 namespace Magento\Bundle\Service\V1\Data\Product\Option;
 
-use \Magento\Framework\Service\Data\AbstractExtensibleObject;
+use \Magento\Framework\Api\AbstractExtensibleObject;
 
 /**
  * @codeCoverageIgnore
diff --git a/app/code/Magento/Bundle/Service/V1/Data/Product/Option/TypeBuilder.php b/app/code/Magento/Bundle/Service/V1/Data/Product/Option/TypeBuilder.php
index 4d9c5bae52f..573f518d51d 100644
--- a/app/code/Magento/Bundle/Service/V1/Data/Product/Option/TypeBuilder.php
+++ b/app/code/Magento/Bundle/Service/V1/Data/Product/Option/TypeBuilder.php
@@ -23,12 +23,12 @@
  */
 namespace Magento\Bundle\Service\V1\Data\Product\Option;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder;
+use Magento\Framework\Api\ExtensibleObjectBuilder;
 
 /**
  * @codeCoverageIgnore
  */
-class TypeBuilder extends AbstractExtensibleObjectBuilder
+class TypeBuilder extends ExtensibleObjectBuilder
 {
     /**
      * Set type label
diff --git a/app/code/Magento/Bundle/Service/V1/Data/Product/OptionBuilder.php b/app/code/Magento/Bundle/Service/V1/Data/Product/OptionBuilder.php
index 5247907144e..adaa4dd4ef1 100644
--- a/app/code/Magento/Bundle/Service/V1/Data/Product/OptionBuilder.php
+++ b/app/code/Magento/Bundle/Service/V1/Data/Product/OptionBuilder.php
@@ -23,12 +23,12 @@
  */
 namespace Magento\Bundle\Service\V1\Data\Product;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder;
+use Magento\Framework\Api\ExtensibleObjectBuilder;
 
 /**
  * @codeCoverageIgnore
  */
-class OptionBuilder extends AbstractExtensibleObjectBuilder
+class OptionBuilder extends ExtensibleObjectBuilder
 {
     /**
      * Set option id
diff --git a/app/code/Magento/Bundle/Service/V1/Product/BundleProductSaveProcessor.php b/app/code/Magento/Bundle/Service/V1/Product/BundleProductSaveProcessor.php
index 0a5f6032a9b..aeeeab547b0 100644
--- a/app/code/Magento/Bundle/Service/V1/Product/BundleProductSaveProcessor.php
+++ b/app/code/Magento/Bundle/Service/V1/Product/BundleProductSaveProcessor.php
@@ -27,7 +27,7 @@ namespace Magento\Bundle\Service\V1\Product;
 use Magento\Bundle\Service\V1\Data\Product\Option;
 use Magento\Bundle\Service\V1\Product\Option\ReadService as OptionReadService;
 use Magento\Bundle\Service\V1\Product\Option\WriteService as OptionWriteService;
-use Magento\Framework\Service\Data\Eav\AttributeValue;
+use Magento\Framework\Api\Eav\AttributeValue;
 use Magento\Catalog\Model\Product as ProductModel;
 use Magento\Catalog\Model\ProductRepository;
 use Magento\Catalog\Model\Product\Type as ProductType;
diff --git a/app/code/Magento/Bundle/composer.json b/app/code/Magento/Bundle/composer.json
index 99a9eadd3bb..d6d155375dc 100644
--- a/app/code/Magento/Bundle/composer.json
+++ b/app/code/Magento/Bundle/composer.json
@@ -3,24 +3,24 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-catalog": "0.1.0-alpha102",
-        "magento/module-tax": "0.1.0-alpha102",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/module-sales": "0.1.0-alpha102",
-        "magento/module-checkout": "0.1.0-alpha102",
-        "magento/module-catalog-inventory": "0.1.0-alpha102",
-        "magento/module-customer": "0.1.0-alpha102",
-        "magento/module-catalog-rule": "0.1.0-alpha102",
-        "magento/module-eav": "0.1.0-alpha102",
-        "magento/module-gift-message": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
-        "magento/module-webapi": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-catalog": "0.1.0-alpha103",
+        "magento/module-tax": "0.1.0-alpha103",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/module-sales": "0.1.0-alpha103",
+        "magento/module-checkout": "0.1.0-alpha103",
+        "magento/module-catalog-inventory": "0.1.0-alpha103",
+        "magento/module-customer": "0.1.0-alpha103",
+        "magento/module-catalog-rule": "0.1.0-alpha103",
+        "magento/module-eav": "0.1.0-alpha103",
+        "magento/module-gift-message": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
+        "magento/module-webapi": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Bundle/data/bundle_setup/data-install-1.6.0.0.php b/app/code/Magento/Bundle/data/bundle_setup/data-install-1.6.0.0.php
index 7b8ff93e3a2..0ef5bf28b00 100644
--- a/app/code/Magento/Bundle/data/bundle_setup/data-install-1.6.0.0.php
+++ b/app/code/Magento/Bundle/data/bundle_setup/data-install-1.6.0.0.php
@@ -22,8 +22,8 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-$installer = $this;
 /** @var $installer \Magento\Catalog\Model\Resource\Setup */
+$installer = $this;
 
 $fieldList = array(
     'price',
diff --git a/app/code/Magento/Bundle/etc/data_object.xml b/app/code/Magento/Bundle/etc/data_object.xml
index 115fb118873..7562bf50540 100644
--- a/app/code/Magento/Bundle/etc/data_object.xml
+++ b/app/code/Magento/Bundle/etc/data_object.xml
@@ -23,7 +23,7 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/Service/etc/data_object.xsd">
+<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/Api/etc/data_object.xsd">
     <custom_attributes for="Magento\Catalog\Service\V1\Data\Product">
         <attribute code="bundle_product_options" type="Magento\Bundle\Service\V1\Data\Product\Option[]" />
     </custom_attributes>
diff --git a/app/code/Magento/Bundle/sql/bundle_setup/install-1.6.0.0.php b/app/code/Magento/Bundle/sql/bundle_setup/install-1.6.0.0.php
index 117b1ba18a8..4c4baf44800 100644
--- a/app/code/Magento/Bundle/sql/bundle_setup/install-1.6.0.0.php
+++ b/app/code/Magento/Bundle/sql/bundle_setup/install-1.6.0.0.php
@@ -22,8 +22,8 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
+/** @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
-/** @var $installer \Magento\Catalog\Model\Resource\Setup */
 
 $installer->startSetup();
 
diff --git a/app/code/Magento/Bundle/sql/bundle_setup/upgrade-1.6.0.0-1.6.0.0.1.php b/app/code/Magento/Bundle/sql/bundle_setup/upgrade-1.6.0.0-1.6.0.0.1.php
index 73b513ffa67..b0a15a2e209 100644
--- a/app/code/Magento/Bundle/sql/bundle_setup/upgrade-1.6.0.0-1.6.0.0.1.php
+++ b/app/code/Magento/Bundle/sql/bundle_setup/upgrade-1.6.0.0-1.6.0.0.1.php
@@ -22,9 +22,8 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/** @var $installer \Magento\Catalog\Model\Resource\Setup */
+/** @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
-/** @var $connection \Magento\Framework\DB\Adapter\Pdo\Mysql */
 $connection = $installer->getConnection();
 
 $priceIndexerTables = array('catalog_product_index_price_bundle_idx', 'catalog_product_index_price_bundle_tmp');
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 5704e1868b8..41a46bdb133 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
@@ -67,7 +67,7 @@
             </action>
         </referenceBlock>
         <referenceContainer name="content">
-            <container name="bundle.options.container" label="invisible" htmlTag="div" htmlClass="bundle-options-container" after="product.info.main"/>
+            <container name="bundle.options.container" htmlTag="div" htmlClass="bundle-options-container" after="product.info.main"/>
         </referenceContainer>
         <referenceContainer name="product.info.type">
             <block class="Magento\Bundle\Block\Catalog\Product\View\Type\Bundle" name="product.info.bundle" as="product_type_data" template="catalog/product/view/type/bundle.phtml"/>
diff --git a/app/code/Magento/Captcha/composer.json b/app/code/Magento/Captcha/composer.json
index 0185b91bd91..cc309049acf 100644
--- a/app/code/Magento/Captcha/composer.json
+++ b/app/code/Magento/Captcha/composer.json
@@ -3,16 +3,16 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-customer": "0.1.0-alpha102",
-        "magento/module-checkout": "0.1.0-alpha102",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-customer": "0.1.0-alpha103",
+        "magento/module-checkout": "0.1.0-alpha103",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Captcha/sql/captcha_setup/install-1.7.0.0.0.php b/app/code/Magento/Captcha/sql/captcha_setup/install-1.7.0.0.0.php
index dc38f8455c7..c770164918a 100644
--- a/app/code/Magento/Captcha/sql/captcha_setup/install-1.7.0.0.0.php
+++ b/app/code/Magento/Captcha/sql/captcha_setup/install-1.7.0.0.0.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* @var $installer \Magento\Framework\Module\Setup */
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 $installer->startSetup();
diff --git a/app/code/Magento/Catalog/Block/Adminhtml/Rss/NotifyStock.php b/app/code/Magento/Catalog/Block/Adminhtml/Rss/NotifyStock.php
index 1f32d404274..f966c6bdf53 100644
--- a/app/code/Magento/Catalog/Block/Adminhtml/Rss/NotifyStock.php
+++ b/app/code/Magento/Catalog/Block/Adminhtml/Rss/NotifyStock.php
@@ -113,4 +113,12 @@ class NotifyStock extends \Magento\Backend\Block\AbstractBlock implements DataPr
     {
         return array();
     }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function isAuthRequired()
+    {
+        return true;
+    }
 }
diff --git a/app/code/Magento/Catalog/Block/Product/View.php b/app/code/Magento/Catalog/Block/Product/View.php
index 7a134829dec..6b447738a3e 100644
--- a/app/code/Magento/Catalog/Block/Product/View.php
+++ b/app/code/Magento/Catalog/Block/Product/View.php
@@ -121,6 +121,16 @@ class View extends AbstractProduct implements \Magento\Framework\View\Block\Iden
         );
     }
 
+    /**
+     * Return wishlist widget options
+     *
+     * @return array
+     */
+    public function getWishlistOptions()
+    {
+        return ['productType' => $this->getProduct()->getTypeId()];
+    }
+
     /**
      * Add meta information from product to head block
      *
diff --git a/app/code/Magento/Catalog/Block/Rss/Category.php b/app/code/Magento/Catalog/Block/Rss/Category.php
index e9ca79966f6..f9cd7a35dda 100644
--- a/app/code/Magento/Catalog/Block/Rss/Category.php
+++ b/app/code/Magento/Catalog/Block/Rss/Category.php
@@ -263,4 +263,12 @@ class Category extends \Magento\Framework\View\Element\AbstractBlock implements
         }
         return $result;
     }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function isAuthRequired()
+    {
+        return false;
+    }
 }
diff --git a/app/code/Magento/Catalog/Block/Rss/Product/NewProducts.php b/app/code/Magento/Catalog/Block/Rss/Product/NewProducts.php
index e249f0a016c..5cc798bfd5c 100644
--- a/app/code/Magento/Catalog/Block/Rss/Product/NewProducts.php
+++ b/app/code/Magento/Catalog/Block/Rss/Product/NewProducts.php
@@ -215,4 +215,12 @@ class NewProducts extends \Magento\Framework\View\Element\AbstractBlock implemen
 
         return $data;
     }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function isAuthRequired()
+    {
+        return false;
+    }
 }
diff --git a/app/code/Magento/Catalog/Block/Rss/Product/Special.php b/app/code/Magento/Catalog/Block/Rss/Product/Special.php
index cab115dbe86..6afff50d20b 100644
--- a/app/code/Magento/Catalog/Block/Rss/Product/Special.php
+++ b/app/code/Magento/Catalog/Block/Rss/Product/Special.php
@@ -264,4 +264,12 @@ class Special extends \Magento\Framework\View\Element\AbstractBlock implements D
         }
         return $data;
     }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function isAuthRequired()
+    {
+        return false;
+    }
 }
diff --git a/app/code/Magento/Catalog/Helper/Product/Inventory.php b/app/code/Magento/Catalog/Helper/Product/Inventory.php
index d51037b1ef2..1857eb1746d 100644
--- a/app/code/Magento/Catalog/Helper/Product/Inventory.php
+++ b/app/code/Magento/Catalog/Helper/Product/Inventory.php
@@ -100,8 +100,8 @@ class Inventory extends \Magento\Framework\App\Helper\AbstractHelper
     public function getDoFieldData($field, StockItem $dataObject)
     {
         $possibleMethods = array(
-            'get' . \Magento\Framework\Service\SimpleDataObjectConverter::snakeCaseToUpperCamelCase($field),
-            'is' . \Magento\Framework\Service\SimpleDataObjectConverter::snakeCaseToUpperCamelCase($field)
+            'get' . \Magento\Framework\Api\SimpleDataObjectConverter::snakeCaseToUpperCamelCase($field),
+            'is' . \Magento\Framework\Api\SimpleDataObjectConverter::snakeCaseToUpperCamelCase($field)
         );
 
         foreach ($possibleMethods as $method) {
diff --git a/app/code/Magento/Catalog/Model/Indexer/Product/Flat/Action/Rows.php b/app/code/Magento/Catalog/Model/Indexer/Product/Flat/Action/Rows.php
index 8ee5949f63c..55eb1a16c79 100644
--- a/app/code/Magento/Catalog/Model/Indexer/Product/Flat/Action/Rows.php
+++ b/app/code/Magento/Catalog/Model/Indexer/Product/Flat/Action/Rows.php
@@ -80,9 +80,12 @@ class Rows extends \Magento\Catalog\Model\Indexer\Product\Flat\AbstractAction
             throw new \Magento\Framework\Model\Exception(__('Bad value was supplied.'));
         }
         foreach ($this->_storeManager->getStores() as $store) {
+            $tableExists = $this->_isFlatTableExists($store->getId());
             $idsBatches = array_chunk($ids, \Magento\Catalog\Helper\Product\Flat\Indexer::BATCH_SIZE);
             foreach ($idsBatches as $changedIds) {
-                $this->flatItemEraser->removeDeletedProducts($changedIds, $store->getId());
+                if ($tableExists) {
+                    $this->flatItemEraser->removeDeletedProducts($changedIds, $store->getId());
+                }
                 if (!empty($changedIds)) {
                     $this->_reindex($store->getId(), $changedIds);
                 }
diff --git a/app/code/Magento/Catalog/Model/Indexer/Product/Flat/Action/Rows/TableData.php b/app/code/Magento/Catalog/Model/Indexer/Product/Flat/Action/Rows/TableData.php
index 69b8777f73a..5fe06335c2e 100644
--- a/app/code/Magento/Catalog/Model/Indexer/Product/Flat/Action/Rows/TableData.php
+++ b/app/code/Magento/Catalog/Model/Indexer/Product/Flat/Action/Rows/TableData.php
@@ -68,7 +68,7 @@ class TableData implements \Magento\Catalog\Model\Indexer\Product\Flat\TableData
         $connection = $this->_resource->getConnection('write');
         if (!$connection->isTableExists($flatTable)) {
             $connection->dropTable($flatDropName);
-            $connection->renameTablesBatch(array('oldName' => $temporaryFlatTableName, 'newName' => $flatTable));
+            $connection->renameTablesBatch(array(['oldName' => $temporaryFlatTableName, 'newName' => $flatTable]));
             $connection->dropTable($flatDropName);
         } else {
             $describe = $connection->describeTable($flatTable);
diff --git a/app/code/Magento/Catalog/Service/V1/Category/Attribute/ReadService.php b/app/code/Magento/Catalog/Service/V1/Category/Attribute/ReadService.php
index d87dd83d78b..2629a6fd08a 100644
--- a/app/code/Magento/Catalog/Service/V1/Category/Attribute/ReadService.php
+++ b/app/code/Magento/Catalog/Service/V1/Category/Attribute/ReadService.php
@@ -70,7 +70,7 @@ class ReadService implements ReadServiceInterface
     /**
      * {@inheritdoc}
      */
-    public function search(\Magento\Framework\Service\V1\Data\SearchCriteria $searchCriteria)
+    public function search(\Magento\Framework\Api\SearchCriteria $searchCriteria)
     {
         return $this->metadataService->getAllAttributeMetadata(
             MetadataServiceInterface::ENTITY_TYPE,
diff --git a/app/code/Magento/Catalog/Service/V1/Category/Attribute/ReadServiceInterface.php b/app/code/Magento/Catalog/Service/V1/Category/Attribute/ReadServiceInterface.php
index a65081a204c..946958e59b1 100644
--- a/app/code/Magento/Catalog/Service/V1/Category/Attribute/ReadServiceInterface.php
+++ b/app/code/Magento/Catalog/Service/V1/Category/Attribute/ReadServiceInterface.php
@@ -51,8 +51,8 @@ interface ReadServiceInterface
     /**
      * Retrieve the list of product attributes
      *
-     * @param \Magento\Framework\Service\V1\Data\SearchCriteria $searchCriteria
+     * @param \Magento\Framework\Api\SearchCriteria $searchCriteria
      * @return \Magento\Catalog\Service\V1\Data\Product\Attribute\SearchResults containing Data\Eav\Attribute objects
      */
-    public function search(\Magento\Framework\Service\V1\Data\SearchCriteria $searchCriteria);
+    public function search(\Magento\Framework\Api\SearchCriteria $searchCriteria);
 }
diff --git a/app/code/Magento/Catalog/Service/V1/Category/MetadataService.php b/app/code/Magento/Catalog/Service/V1/Category/MetadataService.php
index 87a18ed9e70..49634c4c609 100644
--- a/app/code/Magento/Catalog/Service/V1/Category/MetadataService.php
+++ b/app/code/Magento/Catalog/Service/V1/Category/MetadataService.php
@@ -24,7 +24,7 @@
 namespace Magento\Catalog\Service\V1\Category;
 
 use Magento\Catalog\Service\V1\Data\Eav\AttributeMetadata;
-use Magento\Framework\Service\Config\MetadataConfig;
+use Magento\Framework\Api\Config\MetadataConfig;
 
 /**
  * Class AttributeMetadataService
@@ -35,12 +35,12 @@ class MetadataService implements MetadataServiceInterface
     protected $metadataService;
 
     /**
-     * @var \Magento\Framework\Service\V1\Data\SearchCriteriaBuilder
+     * @var \Magento\Framework\Api\SearchCriteriaBuilder
      */
     private $searchCriteriaBuilder;
 
     /**
-     * @var \Magento\Framework\Service\V1\Data\FilterBuilder
+     * @var \Magento\Framework\Api\FilterBuilder
      */
     private $filterBuilder;
 
@@ -53,14 +53,14 @@ class MetadataService implements MetadataServiceInterface
      * Initialize dependencies.
      *
      * @param \Magento\Catalog\Service\V1\MetadataServiceInterface $metadataService
-     * @param \Magento\Framework\Service\V1\Data\SearchCriteriaBuilder $searchCriteriaBuilder
-     * @param \Magento\Framework\Service\V1\Data\FilterBuilder $filterBuilder
+     * @param \Magento\Framework\Api\SearchCriteriaBuilder $searchCriteriaBuilder
+     * @param \Magento\Framework\Api\FilterBuilder $filterBuilder
      * @param MetadataConfig $metadataConfig
      */
     public function __construct(
         \Magento\Catalog\Service\V1\MetadataServiceInterface $metadataService,
-        \Magento\Framework\Service\V1\Data\SearchCriteriaBuilder $searchCriteriaBuilder,
-        \Magento\Framework\Service\V1\Data\FilterBuilder $filterBuilder,
+        \Magento\Framework\Api\SearchCriteriaBuilder $searchCriteriaBuilder,
+        \Magento\Framework\Api\FilterBuilder $filterBuilder,
         MetadataConfig $metadataConfig
     ) {
         $this->metadataService = $metadataService;
diff --git a/app/code/Magento/Catalog/Service/V1/Category/MetadataServiceInterface.php b/app/code/Magento/Catalog/Service/V1/Category/MetadataServiceInterface.php
index cc66b443f41..e51478b84fb 100644
--- a/app/code/Magento/Catalog/Service/V1/Category/MetadataServiceInterface.php
+++ b/app/code/Magento/Catalog/Service/V1/Category/MetadataServiceInterface.php
@@ -28,7 +28,7 @@ use Magento\Catalog\Service\V1\Data\Eav\AttributeMetadata;
 /**
  * Class Category MetadataServiceInterface
  */
-interface MetadataServiceInterface extends \Magento\Framework\Service\Data\MetadataServiceInterface
+interface MetadataServiceInterface extends \Magento\Framework\Api\MetadataServiceInterface
 {
     /**#@+
      * Predefined constants
diff --git a/app/code/Magento/Catalog/Service/V1/Data/Category.php b/app/code/Magento/Catalog/Service/V1/Data/Category.php
index 8c41726db07..4c9dc79048d 100644
--- a/app/code/Magento/Catalog/Service/V1/Data/Category.php
+++ b/app/code/Magento/Catalog/Service/V1/Data/Category.php
@@ -23,7 +23,7 @@
  */
 namespace Magento\Catalog\Service\V1\Data;
 
-use \Magento\Framework\Service\Data\AbstractExtensibleObject;
+use \Magento\Framework\Api\AbstractExtensibleObject;
 
 /**
  * @codeCoverageIgnore
diff --git a/app/code/Magento/Catalog/Service/V1/Data/Category/Mapper.php b/app/code/Magento/Catalog/Service/V1/Data/Category/Mapper.php
index 1e11b171239..a384ade3e0e 100644
--- a/app/code/Magento/Catalog/Service/V1/Data/Category/Mapper.php
+++ b/app/code/Magento/Catalog/Service/V1/Data/Category/Mapper.php
@@ -23,7 +23,7 @@
  */
 namespace Magento\Catalog\Service\V1\Data\Category;
 
-use Magento\Framework\Service\ExtensibleDataObjectConverter;
+use Magento\Framework\Api\ExtensibleDataObjectConverter;
 use Magento\Catalog\Model\CategoryFactory;
 use Magento\catalog\Service\V1\Data\Category as CategoryDataObject;
 
diff --git a/app/code/Magento/Catalog/Service/V1/Data/Category/ProductLink.php b/app/code/Magento/Catalog/Service/V1/Data/Category/ProductLink.php
index 725b979607a..91ddadbbf76 100644
--- a/app/code/Magento/Catalog/Service/V1/Data/Category/ProductLink.php
+++ b/app/code/Magento/Catalog/Service/V1/Data/Category/ProductLink.php
@@ -26,7 +26,7 @@ namespace Magento\Catalog\Service\V1\Data\Category;
 /**
  * @codeCoverageIgnore
  */
-class ProductLink extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+class ProductLink extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     /**#@+
      * Constants defined for keys of array
diff --git a/app/code/Magento/Catalog/Service/V1/Data/Category/ProductLinkBuilder.php b/app/code/Magento/Catalog/Service/V1/Data/Category/ProductLinkBuilder.php
index a63b8695ec7..1134354f73f 100644
--- a/app/code/Magento/Catalog/Service/V1/Data/Category/ProductLinkBuilder.php
+++ b/app/code/Magento/Catalog/Service/V1/Data/Category/ProductLinkBuilder.php
@@ -26,7 +26,7 @@ namespace Magento\Catalog\Service\V1\Data\Category;
 /**
  * @codeCoverageIgnore
  */
-class ProductLinkBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder
+class ProductLinkBuilder extends \Magento\Framework\Api\ExtensibleObjectBuilder
 {
     /**
      * @param string $value
diff --git a/app/code/Magento/Catalog/Service/V1/Data/CategoryBuilder.php b/app/code/Magento/Catalog/Service/V1/Data/CategoryBuilder.php
index 9a55920dc94..c8d7ba60b02 100644
--- a/app/code/Magento/Catalog/Service/V1/Data/CategoryBuilder.php
+++ b/app/code/Magento/Catalog/Service/V1/Data/CategoryBuilder.php
@@ -23,21 +23,21 @@
  */
 namespace Magento\Catalog\Service\V1\Data;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder;
-use Magento\Framework\Service\Data\AttributeValueBuilder;
+use Magento\Framework\Api\ExtensibleObjectBuilder;
+use Magento\Framework\Api\AttributeValueBuilder;
 
 /**
  * @codeCoverageIgnore
  */
-class CategoryBuilder extends AbstractExtensibleObjectBuilder
+class CategoryBuilder extends ExtensibleObjectBuilder
 {
     /**
-     * @param \Magento\Framework\Service\Data\ObjectFactory $objectFactory
+     * @param \Magento\Framework\Api\ObjectFactory $objectFactory
      * @param AttributeValueBuilder $valueBuilder
      * @param \Magento\Catalog\Service\V1\Category\MetadataServiceInterface $metadataService
      */
     public function __construct(
-        \Magento\Framework\Service\Data\ObjectFactory $objectFactory,
+        \Magento\Framework\Api\ObjectFactory $objectFactory,
         AttributeValueBuilder $valueBuilder,
         \Magento\Catalog\Service\V1\Category\MetadataServiceInterface $metadataService
     ) {
diff --git a/app/code/Magento/Catalog/Service/V1/Data/Eav/Attribute.php b/app/code/Magento/Catalog/Service/V1/Data/Eav/Attribute.php
index 503596d7879..f83886057ee 100644
--- a/app/code/Magento/Catalog/Service/V1/Data/Eav/Attribute.php
+++ b/app/code/Magento/Catalog/Service/V1/Data/Eav/Attribute.php
@@ -23,7 +23,7 @@
  */
 namespace Magento\Catalog\Service\V1\Data\Eav;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObject;
+use Magento\Framework\Api\AbstractExtensibleObject;
 
 /**
  * @codeCoverageIgnore
diff --git a/app/code/Magento/Catalog/Service/V1/Data/Eav/AttributeBuilder.php b/app/code/Magento/Catalog/Service/V1/Data/Eav/AttributeBuilder.php
index a7eb967ee40..e373ca62442 100644
--- a/app/code/Magento/Catalog/Service/V1/Data/Eav/AttributeBuilder.php
+++ b/app/code/Magento/Catalog/Service/V1/Data/Eav/AttributeBuilder.php
@@ -23,12 +23,12 @@
  */
 namespace Magento\Catalog\Service\V1\Data\Eav;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder;
+use Magento\Framework\Api\ExtensibleObjectBuilder;
 
 /**
  * @codeCoverageIgnore
  */
-class AttributeBuilder extends AbstractExtensibleObjectBuilder
+class AttributeBuilder extends ExtensibleObjectBuilder
 {
     /**
      * Set attribute ID
diff --git a/app/code/Magento/Catalog/Service/V1/Data/Eav/AttributeGroup.php b/app/code/Magento/Catalog/Service/V1/Data/Eav/AttributeGroup.php
index 48a1b8fe446..b041bd3dca1 100644
--- a/app/code/Magento/Catalog/Service/V1/Data/Eav/AttributeGroup.php
+++ b/app/code/Magento/Catalog/Service/V1/Data/Eav/AttributeGroup.php
@@ -28,7 +28,7 @@ namespace Magento\Catalog\Service\V1\Data\Eav;
 /**
  * @codeCoverageIgnore
  */
-class AttributeGroup extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+class AttributeGroup extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     /**#@+
      * Constants defined for keys of array, make typos less likely
diff --git a/app/code/Magento/Catalog/Service/V1/Data/Eav/AttributeGroupBuilder.php b/app/code/Magento/Catalog/Service/V1/Data/Eav/AttributeGroupBuilder.php
index c18def37b86..cf6138eaac3 100644
--- a/app/code/Magento/Catalog/Service/V1/Data/Eav/AttributeGroupBuilder.php
+++ b/app/code/Magento/Catalog/Service/V1/Data/Eav/AttributeGroupBuilder.php
@@ -27,7 +27,7 @@ namespace Magento\Catalog\Service\V1\Data\Eav;
 /**
  * @codeCoverageIgnore
  */
-class AttributeGroupBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder
+class AttributeGroupBuilder extends \Magento\Framework\Api\ExtensibleObjectBuilder
 {
     /**
      * Set Id
diff --git a/app/code/Magento/Catalog/Service/V1/Data/Eav/AttributeMetadata.php b/app/code/Magento/Catalog/Service/V1/Data/Eav/AttributeMetadata.php
index b30fcfb7000..42af9f31917 100644
--- a/app/code/Magento/Catalog/Service/V1/Data/Eav/AttributeMetadata.php
+++ b/app/code/Magento/Catalog/Service/V1/Data/Eav/AttributeMetadata.php
@@ -23,8 +23,8 @@
  */
 namespace Magento\Catalog\Service\V1\Data\Eav;
 
-use \Magento\Framework\Service\Data\AbstractExtensibleObject;
-use Magento\Framework\Service\Data\MetadataObjectInterface;
+use \Magento\Framework\Api\AbstractExtensibleObject;
+use Magento\Framework\Api\MetadataObjectInterface;
 
 /**
  * Class AttributeMetadata
diff --git a/app/code/Magento/Catalog/Service/V1/Data/Eav/AttributeMetadataBuilder.php b/app/code/Magento/Catalog/Service/V1/Data/Eav/AttributeMetadataBuilder.php
index bea2ad72a04..8f8964e48b3 100644
--- a/app/code/Magento/Catalog/Service/V1/Data/Eav/AttributeMetadataBuilder.php
+++ b/app/code/Magento/Catalog/Service/V1/Data/Eav/AttributeMetadataBuilder.php
@@ -23,15 +23,15 @@
  */
 namespace Magento\Catalog\Service\V1\Data\Eav;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder;
-use Magento\Framework\Service\Data\AttributeMetadataBuilderInterface;
-use Magento\Framework\Service\Data\AttributeValueBuilder;
-use Magento\Framework\Service\Data\MetadataServiceInterface;
+use Magento\Framework\Api\ExtensibleObjectBuilder;
+use Magento\Framework\Api\AttributeMetadataBuilderInterface;
+use Magento\Framework\Api\AttributeValueBuilder;
+use Magento\Framework\Api\MetadataServiceInterface;
 
 /**
  * Class AttributeMetadataBuilder
  */
-class AttributeMetadataBuilder extends AbstractExtensibleObjectBuilder implements AttributeMetadataBuilderInterface
+class AttributeMetadataBuilder extends ExtensibleObjectBuilder implements AttributeMetadataBuilderInterface
 {
     /**
      * Option builder
@@ -55,7 +55,7 @@ class AttributeMetadataBuilder extends AbstractExtensibleObjectBuilder implement
     /**
      * Initializes builder.
      *
-     * @param \Magento\Framework\Service\Data\ObjectFactory $objectFactory
+     * @param \Magento\Framework\Api\ObjectFactory $objectFactory
      * @param AttributeValueBuilder $valueBuilder
      * @param MetadataServiceInterface $metadataService
      * @param OptionBuilder $optionBuilder
@@ -63,7 +63,7 @@ class AttributeMetadataBuilder extends AbstractExtensibleObjectBuilder implement
      * @param Product\Attribute\FrontendLabelBuilder $frontendLabelBuilder
      */
     public function __construct(
-        \Magento\Framework\Service\Data\ObjectFactory $objectFactory,
+        \Magento\Framework\Api\ObjectFactory $objectFactory,
         AttributeValueBuilder $valueBuilder,
         MetadataServiceInterface $metadataService,
         OptionBuilder $optionBuilder,
@@ -74,9 +74,9 @@ class AttributeMetadataBuilder extends AbstractExtensibleObjectBuilder implement
         $this->optionBuilder = $optionBuilder;
         $this->validationRuleBuilder = $validationRuleBuilder;
         $this->frontendLabelBuilder = $frontendLabelBuilder;
-        $this->_data[AttributeMetadata::OPTIONS] = array();
-        $this->_data[AttributeMetadata::VALIDATION_RULES] = array();
-        $this->_data[AttributeMetadata::FRONTEND_LABEL] = array();
+        $this->data[AttributeMetadata::OPTIONS] = array();
+        $this->data[AttributeMetadata::VALIDATION_RULES] = array();
+        $this->data[AttributeMetadata::FRONTEND_LABEL] = array();
     }
 
     /**
diff --git a/app/code/Magento/Catalog/Service/V1/Data/Eav/AttributeSet.php b/app/code/Magento/Catalog/Service/V1/Data/Eav/AttributeSet.php
index c94b6d70244..2ab5a6171fe 100644
--- a/app/code/Magento/Catalog/Service/V1/Data/Eav/AttributeSet.php
+++ b/app/code/Magento/Catalog/Service/V1/Data/Eav/AttributeSet.php
@@ -28,7 +28,7 @@ namespace Magento\Catalog\Service\V1\Data\Eav;
  *
  * @codeCoverageIgnore
  */
-class AttributeSet extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+class AttributeSet extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     /**
      * table field for id
diff --git a/app/code/Magento/Catalog/Service/V1/Data/Eav/AttributeSet/Attribute.php b/app/code/Magento/Catalog/Service/V1/Data/Eav/AttributeSet/Attribute.php
index 9d4151b8af6..f88d2d5187c 100644
--- a/app/code/Magento/Catalog/Service/V1/Data/Eav/AttributeSet/Attribute.php
+++ b/app/code/Magento/Catalog/Service/V1/Data/Eav/AttributeSet/Attribute.php
@@ -26,7 +26,7 @@ namespace Magento\Catalog\Service\V1\Data\Eav\AttributeSet;
 /**
  * @codeCoverageIgnore
  */
-class Attribute extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+class Attribute extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     /**
      * table field for attribute_id
diff --git a/app/code/Magento/Catalog/Service/V1/Data/Eav/AttributeSet/AttributeBuilder.php b/app/code/Magento/Catalog/Service/V1/Data/Eav/AttributeSet/AttributeBuilder.php
index e0f788b1b8c..0039073c385 100644
--- a/app/code/Magento/Catalog/Service/V1/Data/Eav/AttributeSet/AttributeBuilder.php
+++ b/app/code/Magento/Catalog/Service/V1/Data/Eav/AttributeSet/AttributeBuilder.php
@@ -26,7 +26,7 @@ namespace Magento\Catalog\Service\V1\Data\Eav\AttributeSet;
 /**
  * @codeCoverageIgnore
  */
-class AttributeBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder
+class AttributeBuilder extends \Magento\Framework\Api\ExtensibleObjectBuilder
 {
     /**
      * Set attribute group id
diff --git a/app/code/Magento/Catalog/Service/V1/Data/Eav/AttributeSetBuilder.php b/app/code/Magento/Catalog/Service/V1/Data/Eav/AttributeSetBuilder.php
index 2175dc6674f..433e35ac688 100644
--- a/app/code/Magento/Catalog/Service/V1/Data/Eav/AttributeSetBuilder.php
+++ b/app/code/Magento/Catalog/Service/V1/Data/Eav/AttributeSetBuilder.php
@@ -28,7 +28,7 @@ namespace Magento\Catalog\Service\V1\Data\Eav;
  *
  * @codeCoverageIgnore
  */
-class AttributeSetBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder
+class AttributeSetBuilder extends \Magento\Framework\Api\ExtensibleObjectBuilder
 {
     /**
      * Set attribute set id
diff --git a/app/code/Magento/Catalog/Service/V1/Data/Eav/Category/AttributeMetadata.php b/app/code/Magento/Catalog/Service/V1/Data/Eav/Category/AttributeMetadata.php
index e8a31950757..ec86ba2ccc5 100644
--- a/app/code/Magento/Catalog/Service/V1/Data/Eav/Category/AttributeMetadata.php
+++ b/app/code/Magento/Catalog/Service/V1/Data/Eav/Category/AttributeMetadata.php
@@ -23,8 +23,8 @@
  */
 namespace Magento\Catalog\Service\V1\Data\Eav\Category;
 
-use \Magento\Framework\Service\Data\AbstractExtensibleObject;
-use Magento\Framework\Service\Data\MetadataObjectInterface;
+use \Magento\Framework\Api\AbstractExtensibleObject;
+use Magento\Framework\Api\MetadataObjectInterface;
 
 /**
  * @codeCoverageIgnore
diff --git a/app/code/Magento/Catalog/Service/V1/Data/Eav/Category/AttributeMetadataBuilder.php b/app/code/Magento/Catalog/Service/V1/Data/Eav/Category/AttributeMetadataBuilder.php
index 2af311e560c..6aff86ee3c3 100644
--- a/app/code/Magento/Catalog/Service/V1/Data/Eav/Category/AttributeMetadataBuilder.php
+++ b/app/code/Magento/Catalog/Service/V1/Data/Eav/Category/AttributeMetadataBuilder.php
@@ -23,13 +23,13 @@
  */
 namespace Magento\Catalog\Service\V1\Data\Eav\Category;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder;
-use Magento\Framework\Service\Data\AttributeMetadataBuilderInterface;
+use Magento\Framework\Api\ExtensibleObjectBuilder;
+use Magento\Framework\Api\AttributeMetadataBuilderInterface;
 
 /**
  * @codeCoverageIgnore
  */
-class AttributeMetadataBuilder extends AbstractExtensibleObjectBuilder implements AttributeMetadataBuilderInterface
+class AttributeMetadataBuilder extends ExtensibleObjectBuilder implements AttributeMetadataBuilderInterface
 {
     /**
      * Set attribute id
diff --git a/app/code/Magento/Catalog/Service/V1/Data/Eav/Category/Info/Metadata.php b/app/code/Magento/Catalog/Service/V1/Data/Eav/Category/Info/Metadata.php
index ce74fbf6b6d..7e96863a912 100644
--- a/app/code/Magento/Catalog/Service/V1/Data/Eav/Category/Info/Metadata.php
+++ b/app/code/Magento/Catalog/Service/V1/Data/Eav/Category/Info/Metadata.php
@@ -23,7 +23,7 @@
  */
 namespace Magento\Catalog\Service\V1\Data\Eav\Category\Info;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObject;
+use Magento\Framework\Api\AbstractExtensibleObject;
 
 /**
  * Class Metadata
diff --git a/app/code/Magento/Catalog/Service/V1/Data/Eav/Category/Info/MetadataBuilder.php b/app/code/Magento/Catalog/Service/V1/Data/Eav/Category/Info/MetadataBuilder.php
index 798d8ece0b1..1cee62ac05e 100644
--- a/app/code/Magento/Catalog/Service/V1/Data/Eav/Category/Info/MetadataBuilder.php
+++ b/app/code/Magento/Catalog/Service/V1/Data/Eav/Category/Info/MetadataBuilder.php
@@ -24,23 +24,23 @@
 
 namespace Magento\Catalog\Service\V1\Data\Eav\Category\Info;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder;
-use Magento\Framework\Service\Data\AttributeValueBuilder;
+use Magento\Framework\Api\ExtensibleObjectBuilder;
+use Magento\Framework\Api\AttributeValueBuilder;
 
 /**
  * Class MetadataBuilder
  *
  * @codeCoverageIgnore
  */
-class MetadataBuilder extends AbstractExtensibleObjectBuilder
+class MetadataBuilder extends ExtensibleObjectBuilder
 {
     /**
-     * @param \Magento\Framework\Service\Data\ObjectFactory $objectFactory
+     * @param \Magento\Framework\Api\ObjectFactory $objectFactory
      * @param AttributeValueBuilder $valueBuilder
      * @param \Magento\Catalog\Service\V1\Category\MetadataServiceInterface $metadataService
      */
     public function __construct(
-        \Magento\Framework\Service\Data\ObjectFactory $objectFactory,
+        \Magento\Framework\Api\ObjectFactory $objectFactory,
         AttributeValueBuilder $valueBuilder,
         \Magento\Catalog\Service\V1\Category\MetadataServiceInterface $metadataService
     ) {
diff --git a/app/code/Magento/Catalog/Service/V1/Data/Eav/Category/Tree.php b/app/code/Magento/Catalog/Service/V1/Data/Eav/Category/Tree.php
index 21e270b08b2..a0c36bb8550 100644
--- a/app/code/Magento/Catalog/Service/V1/Data/Eav/Category/Tree.php
+++ b/app/code/Magento/Catalog/Service/V1/Data/Eav/Category/Tree.php
@@ -26,7 +26,7 @@ namespace Magento\Catalog\Service\V1\Data\Eav\Category;
 /**
  * @codeCoverageIgnore
  */
-class Tree extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+class Tree extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     const ID = 'id';
     const PARENT_ID = 'parent_id';
diff --git a/app/code/Magento/Catalog/Service/V1/Data/Eav/Category/TreeBuilder.php b/app/code/Magento/Catalog/Service/V1/Data/Eav/Category/TreeBuilder.php
index 7cc9724f3a3..cc90406fcce 100644
--- a/app/code/Magento/Catalog/Service/V1/Data/Eav/Category/TreeBuilder.php
+++ b/app/code/Magento/Catalog/Service/V1/Data/Eav/Category/TreeBuilder.php
@@ -23,12 +23,12 @@
  */
 namespace Magento\Catalog\Service\V1\Data\Eav\Category;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder;
+use Magento\Framework\Api\ExtensibleObjectBuilder;
 
 /**
  * @codeCoverageIgnore
  */
-class TreeBuilder extends AbstractExtensibleObjectBuilder
+class TreeBuilder extends ExtensibleObjectBuilder
 {
     /**
      * Set category ID
diff --git a/app/code/Magento/Catalog/Service/V1/Data/Eav/Option.php b/app/code/Magento/Catalog/Service/V1/Data/Eav/Option.php
index 67dc0a91b71..c5453b69c04 100644
--- a/app/code/Magento/Catalog/Service/V1/Data/Eav/Option.php
+++ b/app/code/Magento/Catalog/Service/V1/Data/Eav/Option.php
@@ -30,7 +30,7 @@ namespace Magento\Catalog\Service\V1\Data\Eav;
  *
  * @codeCoverageIgnore
  */
-class Option extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+class Option extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     /**
      * Constants used as keys into $_data
diff --git a/app/code/Magento/Catalog/Service/V1/Data/Eav/Option/Label.php b/app/code/Magento/Catalog/Service/V1/Data/Eav/Option/Label.php
index bb25976471e..93f144792f9 100644
--- a/app/code/Magento/Catalog/Service/V1/Data/Eav/Option/Label.php
+++ b/app/code/Magento/Catalog/Service/V1/Data/Eav/Option/Label.php
@@ -30,7 +30,7 @@ namespace Magento\Catalog\Service\V1\Data\Eav\Option;
  *
  * @codeCoverageIgnore
  */
-class Label extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+class Label extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     /**
      * Constants used as keys into $_data
diff --git a/app/code/Magento/Catalog/Service/V1/Data/Eav/Option/LabelBuilder.php b/app/code/Magento/Catalog/Service/V1/Data/Eav/Option/LabelBuilder.php
index 7c9bc1ab85c..1c0b08f8956 100644
--- a/app/code/Magento/Catalog/Service/V1/Data/Eav/Option/LabelBuilder.php
+++ b/app/code/Magento/Catalog/Service/V1/Data/Eav/Option/LabelBuilder.php
@@ -28,7 +28,7 @@ namespace Magento\Catalog\Service\V1\Data\Eav\Option;
  *
  * @codeCoverageIgnore
  */
-class LabelBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder
+class LabelBuilder extends \Magento\Framework\Api\ExtensibleObjectBuilder
 {
     /**
      * Set option label
diff --git a/app/code/Magento/Catalog/Service/V1/Data/Eav/OptionBuilder.php b/app/code/Magento/Catalog/Service/V1/Data/Eav/OptionBuilder.php
index 854ea099da7..e6c3851de0a 100644
--- a/app/code/Magento/Catalog/Service/V1/Data/Eav/OptionBuilder.php
+++ b/app/code/Magento/Catalog/Service/V1/Data/Eav/OptionBuilder.php
@@ -28,7 +28,7 @@ namespace Magento\Catalog\Service\V1\Data\Eav;
  *
  * @codeCoverageIgnore
  */
-class OptionBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder
+class OptionBuilder extends \Magento\Framework\Api\ExtensibleObjectBuilder
 {
     /**
      * Set option label
diff --git a/app/code/Magento/Catalog/Service/V1/Data/Eav/Product/Attribute/FrontendLabel.php b/app/code/Magento/Catalog/Service/V1/Data/Eav/Product/Attribute/FrontendLabel.php
index 4a04d359f5a..5efbbc83029 100644
--- a/app/code/Magento/Catalog/Service/V1/Data/Eav/Product/Attribute/FrontendLabel.php
+++ b/app/code/Magento/Catalog/Service/V1/Data/Eav/Product/Attribute/FrontendLabel.php
@@ -29,7 +29,7 @@ namespace Magento\Catalog\Service\V1\Data\Eav\Product\Attribute;
  * @package Magento\Catalog\Service\V1\Data\Eav\Product\Attribute
  * @codeCoverageIgnore
  */
-class FrontendLabel extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+class FrontendLabel extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     /**
      * Constants used as keys into $_data
diff --git a/app/code/Magento/Catalog/Service/V1/Data/Eav/Product/Attribute/FrontendLabelBuilder.php b/app/code/Magento/Catalog/Service/V1/Data/Eav/Product/Attribute/FrontendLabelBuilder.php
index dd8b393b125..5c1fa0da7bd 100644
--- a/app/code/Magento/Catalog/Service/V1/Data/Eav/Product/Attribute/FrontendLabelBuilder.php
+++ b/app/code/Magento/Catalog/Service/V1/Data/Eav/Product/Attribute/FrontendLabelBuilder.php
@@ -29,7 +29,7 @@ namespace Magento\Catalog\Service\V1\Data\Eav\Product\Attribute;
  * @package Magento\Catalog\Service\V1\Data\Eav\Product\Attribute
  * @codeCoverageIgnore
  */
-class FrontendLabelBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder
+class FrontendLabelBuilder extends \Magento\Framework\Api\ExtensibleObjectBuilder
 {
     /**
      * Set store id value
diff --git a/app/code/Magento/Catalog/Service/V1/Data/Eav/Product/Attribute/Type.php b/app/code/Magento/Catalog/Service/V1/Data/Eav/Product/Attribute/Type.php
index 13f1c38274f..33d9aff9c6f 100644
--- a/app/code/Magento/Catalog/Service/V1/Data/Eav/Product/Attribute/Type.php
+++ b/app/code/Magento/Catalog/Service/V1/Data/Eav/Product/Attribute/Type.php
@@ -29,7 +29,7 @@ namespace Magento\Catalog\Service\V1\Data\Eav\Product\Attribute;
  * @package Magento\Catalog\Service\V1\Data\Eav\Product\Attribute
  * @codeCoverageIgnore
  */
-class Type extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+class Type extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     /**
      * Constants used as keys into $_data
diff --git a/app/code/Magento/Catalog/Service/V1/Data/Eav/Product/Attribute/TypeBuilder.php b/app/code/Magento/Catalog/Service/V1/Data/Eav/Product/Attribute/TypeBuilder.php
index 233616b0ec0..f38bb186885 100644
--- a/app/code/Magento/Catalog/Service/V1/Data/Eav/Product/Attribute/TypeBuilder.php
+++ b/app/code/Magento/Catalog/Service/V1/Data/Eav/Product/Attribute/TypeBuilder.php
@@ -29,7 +29,7 @@ namespace Magento\Catalog\Service\V1\Data\Eav\Product\Attribute;
  * @package Magento\Catalog\Service\V1\Data\Eav\Product\Attribute
  * @codeCoverageIgnore
  */
-class TypeBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder
+class TypeBuilder extends \Magento\Framework\Api\ExtensibleObjectBuilder
 {
     /**
      * Set option label
diff --git a/app/code/Magento/Catalog/Service/V1/Data/Eav/ValidationRule.php b/app/code/Magento/Catalog/Service/V1/Data/Eav/ValidationRule.php
index 265b19057e9..0fad8ac8140 100644
--- a/app/code/Magento/Catalog/Service/V1/Data/Eav/ValidationRule.php
+++ b/app/code/Magento/Catalog/Service/V1/Data/Eav/ValidationRule.php
@@ -26,7 +26,7 @@ namespace Magento\Catalog\Service\V1\Data\Eav;
 /**
  * @codeCoverageIgnore
  */
-class ValidationRule extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+class ValidationRule extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     /**
      * Constants used as keys into $_data
diff --git a/app/code/Magento/Catalog/Service/V1/Data/Eav/ValidationRuleBuilder.php b/app/code/Magento/Catalog/Service/V1/Data/Eav/ValidationRuleBuilder.php
index 63f299fa2b9..54ab5d63ecb 100644
--- a/app/code/Magento/Catalog/Service/V1/Data/Eav/ValidationRuleBuilder.php
+++ b/app/code/Magento/Catalog/Service/V1/Data/Eav/ValidationRuleBuilder.php
@@ -26,7 +26,7 @@ namespace Magento\Catalog\Service\V1\Data\Eav;
 /**
  * @codeCoverageIgnore
  */
-class ValidationRuleBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder
+class ValidationRuleBuilder extends \Magento\Framework\Api\ExtensibleObjectBuilder
 {
     /**
      * Set validation rule name
diff --git a/app/code/Magento/Catalog/Service/V1/Data/Product.php b/app/code/Magento/Catalog/Service/V1/Data/Product.php
index 5590880ffac..cd22db48b77 100644
--- a/app/code/Magento/Catalog/Service/V1/Data/Product.php
+++ b/app/code/Magento/Catalog/Service/V1/Data/Product.php
@@ -26,7 +26,7 @@ namespace Magento\Catalog\Service\V1\Data;
 /**
  * @codeCoverageIgnore
  */
-class Product extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+class Product extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     /**#@+
      * Constants defined for keys of array
diff --git a/app/code/Magento/Catalog/Service/V1/Data/Product/Attribute/SearchResults.php b/app/code/Magento/Catalog/Service/V1/Data/Product/Attribute/SearchResults.php
index bf20f550096..e3d9a853006 100644
--- a/app/code/Magento/Catalog/Service/V1/Data/Product/Attribute/SearchResults.php
+++ b/app/code/Magento/Catalog/Service/V1/Data/Product/Attribute/SearchResults.php
@@ -29,7 +29,7 @@ namespace Magento\Catalog\Service\V1\Data\Product\Attribute;
  *
  * @codeCoverageIgnore
  */
-class SearchResults extends \Magento\Framework\Service\V1\Data\SearchResults
+class SearchResults extends \Magento\Framework\Api\SearchResults
 {
     /**
      * Get items
diff --git a/app/code/Magento/Catalog/Service/V1/Data/Product/Attribute/SearchResultsBuilder.php b/app/code/Magento/Catalog/Service/V1/Data/Product/Attribute/SearchResultsBuilder.php
index 86c79bda7f2..3d00f39f349 100644
--- a/app/code/Magento/Catalog/Service/V1/Data/Product/Attribute/SearchResultsBuilder.php
+++ b/app/code/Magento/Catalog/Service/V1/Data/Product/Attribute/SearchResultsBuilder.php
@@ -25,10 +25,10 @@
 namespace Magento\Catalog\Service\V1\Data\Product\Attribute;
 
 use Magento\Catalog\Service\V1\Data\Eav\AttributeBuilder;
-use Magento\Framework\Service\Data\AttributeValueBuilder;
-use Magento\Framework\Service\Data\MetadataServiceInterface;
-use Magento\Framework\Service\Data\ObjectFactory;
-use Magento\Framework\Service\V1\Data\SearchCriteriaBuilder;
+use Magento\Framework\Api\AttributeValueBuilder;
+use Magento\Framework\Api\MetadataServiceInterface;
+use Magento\Framework\Api\ObjectFactory;
+use Magento\Framework\Api\SearchCriteriaBuilder;
 
 /**
  * Builder for the SearchResults Service Data Object
@@ -36,7 +36,7 @@ use Magento\Framework\Service\V1\Data\SearchCriteriaBuilder;
  * @method \Magento\Catalog\Service\V1\Data\Product\Attribute\SearchResults create()
  * @codeCoverageIgnore
  */
-class SearchResultsBuilder extends \Magento\Framework\Service\V1\Data\AbstractSearchResultsBuilder
+class SearchResultsBuilder extends \Magento\Framework\Api\AbstractSearchResultsBuilder
 {
     /**
      * Constructor
diff --git a/app/code/Magento/Catalog/Service/V1/Data/Product/GroupPrice.php b/app/code/Magento/Catalog/Service/V1/Data/Product/GroupPrice.php
index 9ffeebbadcf..da2036c621d 100644
--- a/app/code/Magento/Catalog/Service/V1/Data/Product/GroupPrice.php
+++ b/app/code/Magento/Catalog/Service/V1/Data/Product/GroupPrice.php
@@ -24,7 +24,7 @@
  */
 namespace Magento\Catalog\Service\V1\Data\Product;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObject;
+use Magento\Framework\Api\AbstractExtensibleObject;
 
 /**
  * @codeCoverageIgnore
diff --git a/app/code/Magento/Catalog/Service/V1/Data/Product/GroupPriceBuilder.php b/app/code/Magento/Catalog/Service/V1/Data/Product/GroupPriceBuilder.php
index f025577451c..3b74591fa45 100644
--- a/app/code/Magento/Catalog/Service/V1/Data/Product/GroupPriceBuilder.php
+++ b/app/code/Magento/Catalog/Service/V1/Data/Product/GroupPriceBuilder.php
@@ -24,12 +24,12 @@
  */
 namespace Magento\Catalog\Service\V1\Data\Product;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder;
+use Magento\Framework\Api\ExtensibleObjectBuilder;
 
 /**
  * @codeCoverageIgnore
  */
-class GroupPriceBuilder extends AbstractExtensibleObjectBuilder
+class GroupPriceBuilder extends ExtensibleObjectBuilder
 {
     /**
      * Set customer group id
diff --git a/app/code/Magento/Catalog/Service/V1/Data/Product/SearchResults.php b/app/code/Magento/Catalog/Service/V1/Data/Product/SearchResults.php
index 82d953376fa..7cd52ee84fc 100644
--- a/app/code/Magento/Catalog/Service/V1/Data/Product/SearchResults.php
+++ b/app/code/Magento/Catalog/Service/V1/Data/Product/SearchResults.php
@@ -29,7 +29,7 @@ namespace Magento\Catalog\Service\V1\Data\Product;
  *
  * @codeCoverageIgnore
  */
-class SearchResults extends \Magento\Framework\Service\V1\Data\SearchResults
+class SearchResults extends \Magento\Framework\Api\SearchResults
 {
     /**
      * Get items
diff --git a/app/code/Magento/Catalog/Service/V1/Data/Product/SearchResultsBuilder.php b/app/code/Magento/Catalog/Service/V1/Data/Product/SearchResultsBuilder.php
index 9d95dad05fb..67ef9d79475 100644
--- a/app/code/Magento/Catalog/Service/V1/Data/Product/SearchResultsBuilder.php
+++ b/app/code/Magento/Catalog/Service/V1/Data/Product/SearchResultsBuilder.php
@@ -24,11 +24,11 @@
 
 namespace Magento\Catalog\Service\V1\Data\Product;
 
-use Magento\Framework\Service\Data\AttributeValueBuilder;
-use Magento\Framework\Service\Data\MetadataServiceInterface;
-use Magento\Framework\Service\Data\ObjectFactory;
-use Magento\Framework\Service\V1\Data\SearchCriteriaBuilder;
-use Magento\Framework\Service\V1\Data\AbstractSearchResultsBuilder;
+use Magento\Framework\Api\AttributeValueBuilder;
+use Magento\Framework\Api\MetadataServiceInterface;
+use Magento\Framework\Api\ObjectFactory;
+use Magento\Framework\Api\SearchCriteriaBuilder;
+use Magento\Framework\Api\AbstractSearchResultsBuilder;
 use Magento\Catalog\Service\V1\Data\ProductBuilder;
 
 /**
diff --git a/app/code/Magento/Catalog/Service/V1/Data/Product/TierPrice.php b/app/code/Magento/Catalog/Service/V1/Data/Product/TierPrice.php
index 411a2ebce6a..948b8af2128 100644
--- a/app/code/Magento/Catalog/Service/V1/Data/Product/TierPrice.php
+++ b/app/code/Magento/Catalog/Service/V1/Data/Product/TierPrice.php
@@ -24,7 +24,7 @@
  */
 namespace Magento\Catalog\Service\V1\Data\Product;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObject;
+use Magento\Framework\Api\AbstractExtensibleObject;
 
 /**
  * @codeCoverageIgnore
diff --git a/app/code/Magento/Catalog/Service/V1/Data/Product/TierPriceBuilder.php b/app/code/Magento/Catalog/Service/V1/Data/Product/TierPriceBuilder.php
index 9a96025e5ee..f9d933d0f7e 100644
--- a/app/code/Magento/Catalog/Service/V1/Data/Product/TierPriceBuilder.php
+++ b/app/code/Magento/Catalog/Service/V1/Data/Product/TierPriceBuilder.php
@@ -24,12 +24,12 @@
  */
 namespace Magento\Catalog\Service\V1\Data\Product;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder;
+use Magento\Framework\Api\ExtensibleObjectBuilder;
 
 /**
  * @codeCoverageIgnore
  */
-class TierPriceBuilder extends AbstractExtensibleObjectBuilder
+class TierPriceBuilder extends ExtensibleObjectBuilder
 {
     /**
      * Set Quantity
diff --git a/app/code/Magento/Catalog/Service/V1/Data/ProductBuilder.php b/app/code/Magento/Catalog/Service/V1/Data/ProductBuilder.php
index c9d9eed7a82..f1f7977c173 100644
--- a/app/code/Magento/Catalog/Service/V1/Data/ProductBuilder.php
+++ b/app/code/Magento/Catalog/Service/V1/Data/ProductBuilder.php
@@ -24,20 +24,20 @@
 
 namespace Magento\Catalog\Service\V1\Data;
 
-use Magento\Framework\Service\Data\AttributeValueBuilder;
+use Magento\Framework\Api\AttributeValueBuilder;
 
 /**
  * @codeCoverageIgnore
  */
-class ProductBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder
+class ProductBuilder extends \Magento\Framework\Api\ExtensibleObjectBuilder
 {
     /**
-     * @param \Magento\Framework\Service\Data\ObjectFactory $objectFactory
+     * @param \Magento\Framework\Api\ObjectFactory $objectFactory
      * @param AttributeValueBuilder $valueBuilder
      * @param \Magento\Catalog\Service\V1\Product\MetadataServiceInterface $metadataService
      */
     public function __construct(
-        \Magento\Framework\Service\Data\ObjectFactory $objectFactory,
+        \Magento\Framework\Api\ObjectFactory $objectFactory,
         AttributeValueBuilder $valueBuilder,
         \Magento\Catalog\Service\V1\Product\MetadataServiceInterface $metadataService
     ) {
diff --git a/app/code/Magento/Catalog/Service/V1/Data/ProductMapper.php b/app/code/Magento/Catalog/Service/V1/Data/ProductMapper.php
index 77d992841d0..034f6db876c 100644
--- a/app/code/Magento/Catalog/Service/V1/Data/ProductMapper.php
+++ b/app/code/Magento/Catalog/Service/V1/Data/ProductMapper.php
@@ -23,7 +23,7 @@
  */
 namespace Magento\Catalog\Service\V1\Data;
 
-use \Magento\Framework\Service\ExtensibleDataObjectConverter;
+use \Magento\Framework\Api\ExtensibleDataObjectConverter;
 
 class ProductMapper
 {
diff --git a/app/code/Magento/Catalog/Service/V1/Data/ProductType.php b/app/code/Magento/Catalog/Service/V1/Data/ProductType.php
index ee91af0418d..47f458447df 100644
--- a/app/code/Magento/Catalog/Service/V1/Data/ProductType.php
+++ b/app/code/Magento/Catalog/Service/V1/Data/ProductType.php
@@ -25,7 +25,7 @@
  */
 namespace Magento\Catalog\Service\V1\Data;
 
-use \Magento\Framework\Service\Data\AbstractExtensibleObject;
+use \Magento\Framework\Api\AbstractExtensibleObject;
 
 /**
  * @codeCoverageIgnore
diff --git a/app/code/Magento/Catalog/Service/V1/Data/ProductTypeBuilder.php b/app/code/Magento/Catalog/Service/V1/Data/ProductTypeBuilder.php
index 22267af754e..3663f147dee 100644
--- a/app/code/Magento/Catalog/Service/V1/Data/ProductTypeBuilder.php
+++ b/app/code/Magento/Catalog/Service/V1/Data/ProductTypeBuilder.php
@@ -25,12 +25,12 @@
  */
 namespace Magento\Catalog\Service\V1\Data;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder;
+use Magento\Framework\Api\ExtensibleObjectBuilder;
 
 /**
  * @codeCoverageIgnore
  */
-class ProductTypeBuilder extends AbstractExtensibleObjectBuilder
+class ProductTypeBuilder extends ExtensibleObjectBuilder
 {
     /**
      * Set product type name
diff --git a/app/code/Magento/Catalog/Service/V1/MetadataService.php b/app/code/Magento/Catalog/Service/V1/MetadataService.php
index 6e0429f3ea6..f9ee4c10ada 100644
--- a/app/code/Magento/Catalog/Service/V1/MetadataService.php
+++ b/app/code/Magento/Catalog/Service/V1/MetadataService.php
@@ -28,9 +28,9 @@ use Magento\Eav\Model\Resource\Entity\Attribute\Collection;
 use Magento\Framework\Exception\NoSuchEntityException;
 use Magento\Catalog\Service\V1\Data\Eav\AttributeMetadata;
 use Magento\Catalog\Service\V1\Data\Eav\Product\Attribute\FrontendLabel;
-use Magento\Framework\Service\V1\Data\Search\FilterGroup;
-use Magento\Framework\Service\V1\Data\SearchCriteria;
-use Magento\Framework\Service\V1\Data\SortOrder;
+use Magento\Framework\Api\Search\FilterGroup;
+use Magento\Framework\Api\SearchCriteria;
+use Magento\Framework\Api\SortOrder;
 
 /**
  * Class MetadataService
@@ -241,7 +241,7 @@ class MetadataService implements MetadataServiceInterface
     /**
      * Helper function that adds a FilterGroup to the collection.
      *
-     * @param \Magento\Framework\Service\V1\Data\Search\FilterGroup  $filterGroup
+     * @param \Magento\Framework\Api\Search\FilterGroup  $filterGroup
      * @param \Magento\Eav\Model\Resource\Entity\Attribute\Collection $collection
      * @return void
      * @throws \Magento\Framework\Exception\InputException
diff --git a/app/code/Magento/Catalog/Service/V1/MetadataServiceInterface.php b/app/code/Magento/Catalog/Service/V1/MetadataServiceInterface.php
index 176d8c0359a..4137f899c69 100644
--- a/app/code/Magento/Catalog/Service/V1/MetadataServiceInterface.php
+++ b/app/code/Magento/Catalog/Service/V1/MetadataServiceInterface.php
@@ -24,8 +24,8 @@
 namespace Magento\Catalog\Service\V1;
 
 use Magento\Catalog\Service\V1\Data\Eav\AttributeMetadata;
-use Magento\Framework\Service\V1\Data\SearchCriteria;
-use Magento\Framework\Service\V1\Data\SearchResults;
+use Magento\Framework\Api\SearchCriteria;
+use Magento\Framework\Api\SearchResults;
 
 /**
  * Class MetadataServiceInterface
diff --git a/app/code/Magento/Catalog/Service/V1/Product/Attribute/Media/Data/GalleryEntry.php b/app/code/Magento/Catalog/Service/V1/Product/Attribute/Media/Data/GalleryEntry.php
index 9e9bf884f04..526805353c8 100644
--- a/app/code/Magento/Catalog/Service/V1/Product/Attribute/Media/Data/GalleryEntry.php
+++ b/app/code/Magento/Catalog/Service/V1/Product/Attribute/Media/Data/GalleryEntry.php
@@ -25,7 +25,7 @@
  */
 namespace Magento\Catalog\Service\V1\Product\Attribute\Media\Data;
 
-use \Magento\Framework\Service\Data\AbstractExtensibleObject;
+use \Magento\Framework\Api\AbstractExtensibleObject;
 
 /**
  * @codeCoverageIgnore
diff --git a/app/code/Magento/Catalog/Service/V1/Product/Attribute/Media/Data/GalleryEntryBuilder.php b/app/code/Magento/Catalog/Service/V1/Product/Attribute/Media/Data/GalleryEntryBuilder.php
index bc87b1b7763..0e415da677d 100644
--- a/app/code/Magento/Catalog/Service/V1/Product/Attribute/Media/Data/GalleryEntryBuilder.php
+++ b/app/code/Magento/Catalog/Service/V1/Product/Attribute/Media/Data/GalleryEntryBuilder.php
@@ -25,12 +25,12 @@
  */
 namespace Magento\Catalog\Service\V1\Product\Attribute\Media\Data;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder;
+use Magento\Framework\Api\ExtensibleObjectBuilder;
 
 /**
  * @codeCoverageIgnore
  */
-class GalleryEntryBuilder extends AbstractExtensibleObjectBuilder
+class GalleryEntryBuilder extends ExtensibleObjectBuilder
 {
     /**
      * Set gallery entity ID
diff --git a/app/code/Magento/Catalog/Service/V1/Product/Attribute/Media/Data/GalleryEntryContent.php b/app/code/Magento/Catalog/Service/V1/Product/Attribute/Media/Data/GalleryEntryContent.php
index f99accf31ca..b1a04226e4a 100644
--- a/app/code/Magento/Catalog/Service/V1/Product/Attribute/Media/Data/GalleryEntryContent.php
+++ b/app/code/Magento/Catalog/Service/V1/Product/Attribute/Media/Data/GalleryEntryContent.php
@@ -25,7 +25,7 @@
  */
 namespace Magento\Catalog\Service\V1\Product\Attribute\Media\Data;
 
-use \Magento\Framework\Service\Data\AbstractExtensibleObject;
+use \Magento\Framework\Api\AbstractExtensibleObject;
 
 /**
  * @codeCoverageIgnore
diff --git a/app/code/Magento/Catalog/Service/V1/Product/Attribute/Media/Data/GalleryEntryContentBuilder.php b/app/code/Magento/Catalog/Service/V1/Product/Attribute/Media/Data/GalleryEntryContentBuilder.php
index 564694564a9..c255cadeb1b 100644
--- a/app/code/Magento/Catalog/Service/V1/Product/Attribute/Media/Data/GalleryEntryContentBuilder.php
+++ b/app/code/Magento/Catalog/Service/V1/Product/Attribute/Media/Data/GalleryEntryContentBuilder.php
@@ -25,12 +25,12 @@
  */
 namespace Magento\Catalog\Service\V1\Product\Attribute\Media\Data;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder;
+use Magento\Framework\Api\ExtensibleObjectBuilder;
 
 /**
  * @codeCoverageIgnore
  */
-class GalleryEntryContentBuilder extends AbstractExtensibleObjectBuilder
+class GalleryEntryContentBuilder extends ExtensibleObjectBuilder
 {
     /**
      * Set media data (base64 encoded content)
diff --git a/app/code/Magento/Catalog/Service/V1/Product/Attribute/Media/Data/MediaImage.php b/app/code/Magento/Catalog/Service/V1/Product/Attribute/Media/Data/MediaImage.php
index 9a521b5c5e4..dfb0bfdabe5 100644
--- a/app/code/Magento/Catalog/Service/V1/Product/Attribute/Media/Data/MediaImage.php
+++ b/app/code/Magento/Catalog/Service/V1/Product/Attribute/Media/Data/MediaImage.php
@@ -28,7 +28,7 @@ namespace Magento\Catalog\Service\V1\Product\Attribute\Media\Data;
  *
  * @codeCoverageIgnore
  */
-class MediaImage extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+class MediaImage extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     const CODE = 'code';
 
diff --git a/app/code/Magento/Catalog/Service/V1/Product/Attribute/Media/Data/MediaImageBuilder.php b/app/code/Magento/Catalog/Service/V1/Product/Attribute/Media/Data/MediaImageBuilder.php
index cbdfb89f207..20a5f362257 100644
--- a/app/code/Magento/Catalog/Service/V1/Product/Attribute/Media/Data/MediaImageBuilder.php
+++ b/app/code/Magento/Catalog/Service/V1/Product/Attribute/Media/Data/MediaImageBuilder.php
@@ -28,7 +28,7 @@ namespace Magento\Catalog\Service\V1\Product\Attribute\Media\Data;
  *
  * @codeCoverageIgnore
  */
-class MediaImageBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder
+class MediaImageBuilder extends \Magento\Framework\Api\ExtensibleObjectBuilder
 {
     /**
      * Set attribute code
diff --git a/app/code/Magento/Catalog/Service/V1/Product/Attribute/ReadService.php b/app/code/Magento/Catalog/Service/V1/Product/Attribute/ReadService.php
index c6940527c68..0b837838d2c 100644
--- a/app/code/Magento/Catalog/Service/V1/Product/Attribute/ReadService.php
+++ b/app/code/Magento/Catalog/Service/V1/Product/Attribute/ReadService.php
@@ -94,7 +94,7 @@ class ReadService implements ReadServiceInterface
     /**
      * {@inheritdoc}
      */
-    public function search(\Magento\Framework\Service\V1\Data\SearchCriteria $searchCriteria)
+    public function search(\Magento\Framework\Api\SearchCriteria $searchCriteria)
     {
         return $this->metadataService->getAllAttributeMetadata(
             ProductMetadataServiceInterface::ENTITY_TYPE,
diff --git a/app/code/Magento/Catalog/Service/V1/Product/Attribute/ReadServiceInterface.php b/app/code/Magento/Catalog/Service/V1/Product/Attribute/ReadServiceInterface.php
index c9e17e77c16..7af415f863a 100644
--- a/app/code/Magento/Catalog/Service/V1/Product/Attribute/ReadServiceInterface.php
+++ b/app/code/Magento/Catalog/Service/V1/Product/Attribute/ReadServiceInterface.php
@@ -49,8 +49,8 @@ interface ReadServiceInterface
     /**
      * Retrieve the list of product attributes
      *
-     * @param \Magento\Framework\Service\V1\Data\SearchCriteria $searchCriteria
+     * @param \Magento\Framework\Api\SearchCriteria $searchCriteria
      * @return \Magento\Catalog\Service\V1\Data\Product\Attribute\SearchResults containing Data\Eav\Attribute objects
      */
-    public function search(\Magento\Framework\Service\V1\Data\SearchCriteria $searchCriteria);
+    public function search(\Magento\Framework\Api\SearchCriteria $searchCriteria);
 }
diff --git a/app/code/Magento/Catalog/Service/V1/Product/CustomOptions/Data/Option.php b/app/code/Magento/Catalog/Service/V1/Product/CustomOptions/Data/Option.php
index 4e023813289..cbd06da93be 100644
--- a/app/code/Magento/Catalog/Service/V1/Product/CustomOptions/Data/Option.php
+++ b/app/code/Magento/Catalog/Service/V1/Product/CustomOptions/Data/Option.php
@@ -27,7 +27,7 @@ namespace Magento\Catalog\Service\V1\Product\CustomOptions\Data;
 /**
  * @codeCoverageIgnore
  */
-class Option extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+class Option extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     const OPTION_ID = 'option_id';
     const TITLE = 'title';
diff --git a/app/code/Magento/Catalog/Service/V1/Product/CustomOptions/Data/Option/Metadata.php b/app/code/Magento/Catalog/Service/V1/Product/CustomOptions/Data/Option/Metadata.php
index 6f50f3adbb0..8cf6d86e2bb 100644
--- a/app/code/Magento/Catalog/Service/V1/Product/CustomOptions/Data/Option/Metadata.php
+++ b/app/code/Magento/Catalog/Service/V1/Product/CustomOptions/Data/Option/Metadata.php
@@ -27,7 +27,7 @@ namespace Magento\Catalog\Service\V1\Product\CustomOptions\Data\Option;
 /**
  * @codeCoverageIgnore
  */
-class Metadata extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+class Metadata extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     const PRICE = 'price';
     const PRICE_TYPE = 'price_type';
diff --git a/app/code/Magento/Catalog/Service/V1/Product/CustomOptions/Data/Option/MetadataBuilder.php b/app/code/Magento/Catalog/Service/V1/Product/CustomOptions/Data/Option/MetadataBuilder.php
index 85112474ff5..d11d9083256 100644
--- a/app/code/Magento/Catalog/Service/V1/Product/CustomOptions/Data/Option/MetadataBuilder.php
+++ b/app/code/Magento/Catalog/Service/V1/Product/CustomOptions/Data/Option/MetadataBuilder.php
@@ -24,12 +24,12 @@
 
 namespace Magento\Catalog\Service\V1\Product\CustomOptions\Data\Option;
 
-use Magento\Framework\Service\Data\AttributeValueBuilder;
+use Magento\Framework\Api\AttributeValueBuilder;
 
 /**
  * @codeCoverageIgnore
  */
-class MetadataBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder
+class MetadataBuilder extends \Magento\Framework\Api\ExtensibleObjectBuilder
 {
     /**
      * @var string[]
@@ -45,15 +45,15 @@ class MetadataBuilder extends \Magento\Framework\Service\Data\AbstractExtensible
     ];
 
     /**
-     * @param \Magento\Framework\Service\Data\ObjectFactory $objectFactory
+     * @param \Magento\Framework\Api\ObjectFactory $objectFactory
      * @param AttributeValueBuilder $valueBuilder
-     * @param \Magento\Framework\Service\Config\MetadataConfig $metadataService
+     * @param \Magento\Framework\Api\Config\MetadataConfig $metadataService
      * @param array $customAttributeCodes
      */
     public function __construct(
-        \Magento\Framework\Service\Data\ObjectFactory $objectFactory,
+        \Magento\Framework\Api\ObjectFactory $objectFactory,
         AttributeValueBuilder $valueBuilder,
-        \Magento\Framework\Service\Config\MetadataConfig $metadataService,
+        \Magento\Framework\Api\Config\MetadataConfig $metadataService,
         array $customAttributeCodes = array()
     ) {
         parent::__construct($objectFactory, $valueBuilder, $metadataService);
diff --git a/app/code/Magento/Catalog/Service/V1/Product/CustomOptions/Data/OptionBuilder.php b/app/code/Magento/Catalog/Service/V1/Product/CustomOptions/Data/OptionBuilder.php
index bdf1a1da447..a66eb1c6467 100644
--- a/app/code/Magento/Catalog/Service/V1/Product/CustomOptions/Data/OptionBuilder.php
+++ b/app/code/Magento/Catalog/Service/V1/Product/CustomOptions/Data/OptionBuilder.php
@@ -27,7 +27,7 @@ namespace Magento\Catalog\Service\V1\Product\CustomOptions\Data;
 /**
  * @codeCoverageIgnore
  */
-class OptionBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder
+class OptionBuilder extends \Magento\Framework\Api\ExtensibleObjectBuilder
 {
     /**
      * Set option id
diff --git a/app/code/Magento/Catalog/Service/V1/Product/CustomOptions/Data/OptionType.php b/app/code/Magento/Catalog/Service/V1/Product/CustomOptions/Data/OptionType.php
index b6492c11620..46b542b96ca 100644
--- a/app/code/Magento/Catalog/Service/V1/Product/CustomOptions/Data/OptionType.php
+++ b/app/code/Magento/Catalog/Service/V1/Product/CustomOptions/Data/OptionType.php
@@ -27,7 +27,7 @@ namespace Magento\Catalog\Service\V1\Product\CustomOptions\Data;
 /**
  * @codeCoverageIgnore
  */
-class OptionType extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+class OptionType extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     const LABEL = 'label';
     const CODE = 'code';
diff --git a/app/code/Magento/Catalog/Service/V1/Product/CustomOptions/Data/OptionTypeBuilder.php b/app/code/Magento/Catalog/Service/V1/Product/CustomOptions/Data/OptionTypeBuilder.php
index 131f1848a89..9d0d4b75efd 100644
--- a/app/code/Magento/Catalog/Service/V1/Product/CustomOptions/Data/OptionTypeBuilder.php
+++ b/app/code/Magento/Catalog/Service/V1/Product/CustomOptions/Data/OptionTypeBuilder.php
@@ -27,7 +27,7 @@ namespace Magento\Catalog\Service\V1\Product\CustomOptions\Data;
 /**
  * @codeCoverageIgnore
  */
-class OptionTypeBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder
+class OptionTypeBuilder extends \Magento\Framework\Api\ExtensibleObjectBuilder
 {
     /**
      * Set option type label
diff --git a/app/code/Magento/Catalog/Service/V1/Product/Link/Data/LinkAttribute.php b/app/code/Magento/Catalog/Service/V1/Product/Link/Data/LinkAttribute.php
index 4d7d318f044..33809b9a546 100644
--- a/app/code/Magento/Catalog/Service/V1/Product/Link/Data/LinkAttribute.php
+++ b/app/code/Magento/Catalog/Service/V1/Product/Link/Data/LinkAttribute.php
@@ -29,7 +29,7 @@ namespace Magento\Catalog\Service\V1\Product\Link\Data;
  *
  * @codeCoverageIgnore
  */
-class LinkAttribute extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+class LinkAttribute extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     /**#@+
      * Constants for Data Object keys
diff --git a/app/code/Magento/Catalog/Service/V1/Product/Link/Data/LinkAttributeBuilder.php b/app/code/Magento/Catalog/Service/V1/Product/Link/Data/LinkAttributeBuilder.php
index 39972be2a78..dbd586280b3 100644
--- a/app/code/Magento/Catalog/Service/V1/Product/Link/Data/LinkAttributeBuilder.php
+++ b/app/code/Magento/Catalog/Service/V1/Product/Link/Data/LinkAttributeBuilder.php
@@ -30,7 +30,7 @@ namespace Magento\Catalog\Service\V1\Product\Link\Data;
  * @method LinkAttribute create()
  * @codeCoverageIgnore
  */
-class LinkAttributeBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder
+class LinkAttributeBuilder extends \Magento\Framework\Api\ExtensibleObjectBuilder
 {
     /**
      * Set attribute code
diff --git a/app/code/Magento/Catalog/Service/V1/Product/Link/Data/LinkType.php b/app/code/Magento/Catalog/Service/V1/Product/Link/Data/LinkType.php
index 3505e7d44ac..89d9d939f7d 100644
--- a/app/code/Magento/Catalog/Service/V1/Product/Link/Data/LinkType.php
+++ b/app/code/Magento/Catalog/Service/V1/Product/Link/Data/LinkType.php
@@ -29,7 +29,7 @@ namespace Magento\Catalog\Service\V1\Product\Link\Data;
  *
  * @codeCoverageIgnore
  */
-class LinkType extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+class LinkType extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     /**#@+
      * Constants for Data Object keys
diff --git a/app/code/Magento/Catalog/Service/V1/Product/Link/Data/LinkTypeBuilder.php b/app/code/Magento/Catalog/Service/V1/Product/Link/Data/LinkTypeBuilder.php
index cddc0c785f6..72707d51958 100644
--- a/app/code/Magento/Catalog/Service/V1/Product/Link/Data/LinkTypeBuilder.php
+++ b/app/code/Magento/Catalog/Service/V1/Product/Link/Data/LinkTypeBuilder.php
@@ -30,7 +30,7 @@ namespace Magento\Catalog\Service\V1\Product\Link\Data;
  * @method LinkType create()
  * @codeCoverageIgnore
  */
-class LinkTypeBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder
+class LinkTypeBuilder extends \Magento\Framework\Api\ExtensibleObjectBuilder
 {
     /**
      * Set type
diff --git a/app/code/Magento/Catalog/Service/V1/Product/Link/Data/ProductLink.php b/app/code/Magento/Catalog/Service/V1/Product/Link/Data/ProductLink.php
index d2ee5181ddd..8af11730611 100644
--- a/app/code/Magento/Catalog/Service/V1/Product/Link/Data/ProductLink.php
+++ b/app/code/Magento/Catalog/Service/V1/Product/Link/Data/ProductLink.php
@@ -29,7 +29,7 @@ namespace Magento\Catalog\Service\V1\Product\Link\Data;
  *
  * @codeCoverageIgnore
  */
-class ProductLink extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+class ProductLink extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     /**#@+
      * Constants for Data Object keys
diff --git a/app/code/Magento/Catalog/Service/V1/Product/Link/Data/ProductLinkBuilder.php b/app/code/Magento/Catalog/Service/V1/Product/Link/Data/ProductLinkBuilder.php
index 4cb3781d1b4..f74eecf4645 100644
--- a/app/code/Magento/Catalog/Service/V1/Product/Link/Data/ProductLinkBuilder.php
+++ b/app/code/Magento/Catalog/Service/V1/Product/Link/Data/ProductLinkBuilder.php
@@ -24,7 +24,7 @@
 
 namespace Magento\Catalog\Service\V1\Product\Link\Data;
 
-use Magento\Framework\Service\Data\AttributeValueBuilder;
+use Magento\Framework\Api\AttributeValueBuilder;
 
 /**
  * Builder for the ProductLink Service Data Object
@@ -32,7 +32,7 @@ use Magento\Framework\Service\Data\AttributeValueBuilder;
  * @method ProductLink create()
  * @codeCoverageIgnore
  */
-class ProductLinkBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder
+class ProductLinkBuilder extends \Magento\Framework\Api\ExtensibleObjectBuilder
 {
     /**
      * @var array
@@ -40,21 +40,21 @@ class ProductLinkBuilder extends \Magento\Framework\Service\Data\AbstractExtensi
     protected $customAttributes = [];
 
     /**
-     * @param \Magento\Framework\Service\Data\ObjectFactory $objectFactory
+     * @param \Magento\Framework\Api\ObjectFactory $objectFactory
      * @param AttributeValueBuilder $valueBuilder
-     * @param \Magento\Framework\Service\Config\MetadataConfig $metadataService
+     * @param \Magento\Framework\Api\Config\MetadataConfig $metadataService
      * @param array $customAttributesCodes
      */
     public function __construct(
-        \Magento\Framework\Service\Data\ObjectFactory $objectFactory,
+        \Magento\Framework\Api\ObjectFactory $objectFactory,
         AttributeValueBuilder $valueBuilder,
-        \Magento\Framework\Service\Config\MetadataConfig $metadataService,
+        \Magento\Framework\Api\Config\MetadataConfig $metadataService,
         array $customAttributesCodes = array()
     ) {
         $this->customAttributes = $customAttributesCodes;
         parent::__construct($objectFactory, $valueBuilder, $metadataService);
     }
-    
+
     /**
      * Set type
      *
diff --git a/app/code/Magento/Catalog/Service/V1/Product/MetadataService.php b/app/code/Magento/Catalog/Service/V1/Product/MetadataService.php
index 4f6760add2e..0913cec277f 100644
--- a/app/code/Magento/Catalog/Service/V1/Product/MetadataService.php
+++ b/app/code/Magento/Catalog/Service/V1/Product/MetadataService.php
@@ -24,7 +24,7 @@
 namespace Magento\Catalog\Service\V1\Product;
 
 use Magento\Catalog\Service\V1\Data\Eav\AttributeMetadata;
-use Magento\Framework\Service\Config\MetadataConfig;
+use Magento\Framework\Api\Config\MetadataConfig;
 
 /**
  * Class AttributeMetadataService
@@ -35,12 +35,12 @@ class MetadataService implements MetadataServiceInterface
     protected $metadataService;
 
     /**
-     * @var \Magento\Framework\Service\V1\Data\SearchCriteriaBuilder
+     * @var \Magento\Framework\Api\SearchCriteriaBuilder
      */
     private $searchCriteriaBuilder;
 
     /**
-     * @var \Magento\Framework\Service\V1\Data\FilterBuilder
+     * @var \Magento\Framework\Api\FilterBuilder
      */
     private $filterBuilder;
 
@@ -53,14 +53,14 @@ class MetadataService implements MetadataServiceInterface
      * Initialize dependencies.
      *
      * @param \Magento\Catalog\Service\V1\MetadataServiceInterface $metadataService
-     * @param \Magento\Framework\Service\V1\Data\SearchCriteriaBuilder $searchCriteriaBuilder
-     * @param \Magento\Framework\Service\V1\Data\FilterBuilder $filterBuilder
+     * @param \Magento\Framework\Api\SearchCriteriaBuilder $searchCriteriaBuilder
+     * @param \Magento\Framework\Api\FilterBuilder $filterBuilder
      * @param MetadataConfig $metadataConfig
      */
     public function __construct(
         \Magento\Catalog\Service\V1\MetadataServiceInterface $metadataService,
-        \Magento\Framework\Service\V1\Data\SearchCriteriaBuilder $searchCriteriaBuilder,
-        \Magento\Framework\Service\V1\Data\FilterBuilder $filterBuilder,
+        \Magento\Framework\Api\SearchCriteriaBuilder $searchCriteriaBuilder,
+        \Magento\Framework\Api\FilterBuilder $filterBuilder,
         MetadataConfig $metadataConfig
     ) {
         $this->metadataService = $metadataService;
@@ -89,7 +89,7 @@ class MetadataService implements MetadataServiceInterface
      */
     public function getProductAttributesMetadata($attributeSetId = self::DEFAULT_ATTRIBUTE_SET_ID)
     {
-        /** @var \Magento\Framework\Service\V1\Data\SearchCriteriaBuilder $searchCriteria */
+        /** @var \Magento\Framework\Api\SearchCriteriaBuilder $searchCriteria */
         $this->searchCriteriaBuilder->addFilter(
             [
                 $this->filterBuilder
diff --git a/app/code/Magento/Catalog/Service/V1/Product/MetadataServiceInterface.php b/app/code/Magento/Catalog/Service/V1/Product/MetadataServiceInterface.php
index 856262034bc..ad2ecd32ed9 100644
--- a/app/code/Magento/Catalog/Service/V1/Product/MetadataServiceInterface.php
+++ b/app/code/Magento/Catalog/Service/V1/Product/MetadataServiceInterface.php
@@ -26,7 +26,7 @@ namespace Magento\Catalog\Service\V1\Product;
 /**
  * Class Product MetadataServiceInterface
  */
-interface MetadataServiceInterface extends \Magento\Framework\Service\Data\MetadataServiceInterface
+interface MetadataServiceInterface extends \Magento\Framework\Api\MetadataServiceInterface
 {
     /**#@+
      * Predefined constants
diff --git a/app/code/Magento/Catalog/Service/V1/ProductService.php b/app/code/Magento/Catalog/Service/V1/ProductService.php
index 839ca2fc589..6f253cd2fe6 100644
--- a/app/code/Magento/Catalog/Service/V1/ProductService.php
+++ b/app/code/Magento/Catalog/Service/V1/ProductService.php
@@ -25,12 +25,12 @@ namespace Magento\Catalog\Service\V1;
 
 use Magento\Catalog\Controller\Adminhtml\Product;
 use Magento\Catalog\Service\V1\Data\Converter;
-use Magento\Framework\Service\V1\Data\SearchCriteria;
+use Magento\Framework\Api\SearchCriteria;
 use Magento\Catalog\Service\V1\Data\Product as ProductData;
-use Magento\Framework\Service\V1\Data\Search\FilterGroup;
+use Magento\Framework\Api\Search\FilterGroup;
 use Magento\Catalog\Model\Resource\Product\Collection;
 use Magento\Catalog\Service\V1\Product\MetadataServiceInterface as ProductMetadataServiceInterface;
-use Magento\Framework\Service\V1\Data\SortOrder;
+use Magento\Framework\Api\SortOrder;
 
 /**
  * Class ProductService
diff --git a/app/code/Magento/Catalog/Service/V1/ProductServiceInterface.php b/app/code/Magento/Catalog/Service/V1/ProductServiceInterface.php
index 5d44ee353e3..b5336b43e6c 100644
--- a/app/code/Magento/Catalog/Service/V1/ProductServiceInterface.php
+++ b/app/code/Magento/Catalog/Service/V1/ProductServiceInterface.php
@@ -74,8 +74,8 @@ interface ProductServiceInterface
     /**
      * Get product list
      *
-     * @param \Magento\Framework\Service\V1\Data\SearchCriteria $searchCriteria
+     * @param \Magento\Framework\Api\SearchCriteria $searchCriteria
      * @return \Magento\Catalog\Service\V1\Data\Product\SearchResults containing Data\Product objects
      */
-    public function search(\Magento\Framework\Service\V1\Data\SearchCriteria $searchCriteria);
+    public function search(\Magento\Framework\Api\SearchCriteria $searchCriteria);
 }
diff --git a/app/code/Magento/Catalog/composer.json b/app/code/Magento/Catalog/composer.json
index 89194dacc1f..079a2c51884 100644
--- a/app/code/Magento/Catalog/composer.json
+++ b/app/code/Magento/Catalog/composer.json
@@ -3,33 +3,33 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-eav": "0.1.0-alpha102",
-        "magento/module-cms": "0.1.0-alpha102",
-        "magento/module-indexer": "0.1.0-alpha102",
-        "magento/module-customer": "0.1.0-alpha102",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-theme": "0.1.0-alpha102",
-        "magento/module-checkout": "0.1.0-alpha102",
-        "magento/module-log": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/module-widget": "0.1.0-alpha102",
-        "magento/module-wishlist": "0.1.0-alpha102",
-        "magento/module-tax": "0.1.0-alpha102",
-        "magento/module-msrp": "0.1.0-alpha102",
-        "magento/module-catalog-inventory": "0.1.0-alpha102",
-        "magento/module-directory": "0.1.0-alpha102",
-        "magento/module-catalog-rule": "0.1.0-alpha102",
-        "magento/module-sales": "0.1.0-alpha102",
-        "magento/module-product-alert": "0.1.0-alpha102",
-        "magento/module-url-rewrite": "0.1.0-alpha102",
-        "magento/module-catalog-url-rewrite": "0.1.0-alpha102",
-        "magento/module-page-cache": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-eav": "0.1.0-alpha103",
+        "magento/module-cms": "0.1.0-alpha103",
+        "magento/module-indexer": "0.1.0-alpha103",
+        "magento/module-customer": "0.1.0-alpha103",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-theme": "0.1.0-alpha103",
+        "magento/module-checkout": "0.1.0-alpha103",
+        "magento/module-log": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/module-widget": "0.1.0-alpha103",
+        "magento/module-wishlist": "0.1.0-alpha103",
+        "magento/module-tax": "0.1.0-alpha103",
+        "magento/module-msrp": "0.1.0-alpha103",
+        "magento/module-catalog-inventory": "0.1.0-alpha103",
+        "magento/module-directory": "0.1.0-alpha103",
+        "magento/module-catalog-rule": "0.1.0-alpha103",
+        "magento/module-sales": "0.1.0-alpha103",
+        "magento/module-product-alert": "0.1.0-alpha103",
+        "magento/module-url-rewrite": "0.1.0-alpha103",
+        "magento/module-catalog-url-rewrite": "0.1.0-alpha103",
+        "magento/module-page-cache": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Catalog/data/catalog_setup/data-upgrade-1.6.0.0.1-1.6.0.0.2.php b/app/code/Magento/Catalog/data/catalog_setup/data-upgrade-1.6.0.0.1-1.6.0.0.2.php
index 9d77cc7d916..ec040bd6b70 100644
--- a/app/code/Magento/Catalog/data/catalog_setup/data-upgrade-1.6.0.0.1-1.6.0.0.2.php
+++ b/app/code/Magento/Catalog/data/catalog_setup/data-upgrade-1.6.0.0.1-1.6.0.0.2.php
@@ -22,6 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
+/** @var $installer \Magento\Catalog\Model\Resource\Setup */
 $installer = $this;
 $installer->addAttribute(
     \Magento\Catalog\Model\Product::ENTITY,
diff --git a/app/code/Magento/Catalog/data/catalog_setup/data-upgrade-1.6.0.0.13-1.6.0.0.14.php b/app/code/Magento/Catalog/data/catalog_setup/data-upgrade-1.6.0.0.13-1.6.0.0.14.php
index e321aa5608e..74639c8a0a5 100644
--- a/app/code/Magento/Catalog/data/catalog_setup/data-upgrade-1.6.0.0.13-1.6.0.0.14.php
+++ b/app/code/Magento/Catalog/data/catalog_setup/data-upgrade-1.6.0.0.13-1.6.0.0.14.php
@@ -21,6 +21,7 @@
  * @copyright  Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
+
 /** @var $installer \Magento\Catalog\Model\Resource\Setup */
 $installer = $this;
 $connection = $installer->getConnection();
diff --git a/app/code/Magento/Catalog/data/catalog_setup/data-upgrade-1.6.0.0.16-1.6.0.0.17.php b/app/code/Magento/Catalog/data/catalog_setup/data-upgrade-1.6.0.0.16-1.6.0.0.17.php
index 3addfce1485..64e37534922 100644
--- a/app/code/Magento/Catalog/data/catalog_setup/data-upgrade-1.6.0.0.16-1.6.0.0.17.php
+++ b/app/code/Magento/Catalog/data/catalog_setup/data-upgrade-1.6.0.0.16-1.6.0.0.17.php
@@ -23,8 +23,6 @@
  */
 
 /** @var $this \Magento\Catalog\Model\Resource\Setup */
-
-/** @var $installer \Magento\Framework\Module\Setup\Migration */
 $installer = $this->createMigrationSetup();
 $installer->startSetup();
 
diff --git a/app/code/Magento/Catalog/data/catalog_setup/data-upgrade-1.6.0.0.24-1.6.0.0.25.php b/app/code/Magento/Catalog/data/catalog_setup/data-upgrade-1.6.0.0.24-1.6.0.0.25.php
index b468241f098..1202e785c6b 100644
--- a/app/code/Magento/Catalog/data/catalog_setup/data-upgrade-1.6.0.0.24-1.6.0.0.25.php
+++ b/app/code/Magento/Catalog/data/catalog_setup/data-upgrade-1.6.0.0.24-1.6.0.0.25.php
@@ -22,7 +22,7 @@
  * @license   http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/** @var \Magento\Catalog\Model\Resource\Setup $this */
+/** @var $this \Magento\Catalog\Model\Resource\Setup */
 $this->updateAttribute(
     \Magento\Catalog\Model\Product::ENTITY,
     'status',
diff --git a/app/code/Magento/Catalog/data/catalog_setup/data-upgrade-1.6.0.0.28-1.6.0.0.29.php b/app/code/Magento/Catalog/data/catalog_setup/data-upgrade-1.6.0.0.28-1.6.0.0.29.php
index 7c64beec968..e3fd6521cb6 100644
--- a/app/code/Magento/Catalog/data/catalog_setup/data-upgrade-1.6.0.0.28-1.6.0.0.29.php
+++ b/app/code/Magento/Catalog/data/catalog_setup/data-upgrade-1.6.0.0.28-1.6.0.0.29.php
@@ -21,6 +21,7 @@
  * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
+
 /** @var $this \Magento\Catalog\Model\Resource\Setup */
 $oldTabName = 'Search Optimization';
 $newTabName = 'Search Engine Optimization';
diff --git a/app/code/Magento/Catalog/etc/di.xml b/app/code/Magento/Catalog/etc/di.xml
index 7c56db0754c..3ee2a5e3df8 100644
--- a/app/code/Magento/Catalog/etc/di.xml
+++ b/app/code/Magento/Catalog/etc/di.xml
@@ -451,7 +451,7 @@
             </argument>
         </arguments>
     </type>
-    <virtualType name="Magento\Catalog\Service\Config\ProductMetadataConfig" type="Magento\Framework\Service\Config\MetadataConfig">
+    <virtualType name="Magento\Catalog\Service\Config\ProductMetadataConfig" type="Magento\Framework\Api\Config\MetadataConfig">
         <arguments>
             <argument name="attributeMetadataBuilder" xsi:type="object">Magento\Catalog\Service\V1\Data\Eav\AttributeMetadataBuilder</argument>
         </arguments>
@@ -462,7 +462,7 @@
             <argument name="metadataConfig" xsi:type="object">Magento\Catalog\Service\Config\ProductMetadataConfig</argument>
         </arguments>
     </type>
-    <virtualType name="Magento\Catalog\Service\Config\CategoryMetadataConfig" type="Magento\Framework\Service\Config\MetadataConfig">
+    <virtualType name="Magento\Catalog\Service\Config\CategoryMetadataConfig" type="Magento\Framework\Api\Config\MetadataConfig">
         <arguments>
             <argument name="attributeMetadataBuilder" xsi:type="object">Magento\Catalog\Service\V1\Data\Eav\AttributeMetadataBuilder</argument>
         </arguments>
diff --git a/app/code/Magento/Catalog/sql/catalog_setup/install-1.6.0.0.0.php b/app/code/Magento/Catalog/sql/catalog_setup/install-1.6.0.0.0.php
index f72a40e8768..faf56feb30d 100644
--- a/app/code/Magento/Catalog/sql/catalog_setup/install-1.6.0.0.0.php
+++ b/app/code/Magento/Catalog/sql/catalog_setup/install-1.6.0.0.0.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* @var $installer \Magento\Catalog\Model\Resource\Setup */
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 $installer->startSetup();
diff --git a/app/code/Magento/Catalog/sql/catalog_setup/upgrade-1.6.0.0.11-1.6.0.0.12.php b/app/code/Magento/Catalog/sql/catalog_setup/upgrade-1.6.0.0.11-1.6.0.0.12.php
index 53e55512a95..23e7f5ecd97 100644
--- a/app/code/Magento/Catalog/sql/catalog_setup/upgrade-1.6.0.0.11-1.6.0.0.12.php
+++ b/app/code/Magento/Catalog/sql/catalog_setup/upgrade-1.6.0.0.11-1.6.0.0.12.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/** @var $installer \Magento\Catalog\Model\Resource\Setup */
+/** @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 $indexFields = array('website_id', 'customer_group_id', 'min_price');
 $installer->getConnection()->addIndex(
diff --git a/app/code/Magento/Catalog/sql/catalog_setup/upgrade-1.6.0.0.2-1.6.0.0.3.php b/app/code/Magento/Catalog/sql/catalog_setup/upgrade-1.6.0.0.2-1.6.0.0.3.php
index 3c4bc11bd86..ef3572333cb 100644
--- a/app/code/Magento/Catalog/sql/catalog_setup/upgrade-1.6.0.0.2-1.6.0.0.3.php
+++ b/app/code/Magento/Catalog/sql/catalog_setup/upgrade-1.6.0.0.2-1.6.0.0.3.php
@@ -22,6 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
+/** @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 $tableName = $installer->getTable('catalog_product_index_eav_decimal');
 $indexName = $installer->getConnection()->getPrimaryKeyName($tableName);
diff --git a/app/code/Magento/Catalog/sql/catalog_setup/upgrade-1.6.0.0.25-1.6.0.0.26.php b/app/code/Magento/Catalog/sql/catalog_setup/upgrade-1.6.0.0.25-1.6.0.0.26.php
index 3821233d489..fe4401d8460 100644
--- a/app/code/Magento/Catalog/sql/catalog_setup/upgrade-1.6.0.0.25-1.6.0.0.26.php
+++ b/app/code/Magento/Catalog/sql/catalog_setup/upgrade-1.6.0.0.25-1.6.0.0.26.php
@@ -22,10 +22,9 @@
  * @license   http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/** @var \Magento\Framework\DB\Adapter\AdapterInterface $connection */
+/** @var $this \Magento\Setup\Module\SetupModule */
 $connection = $this->getConnection();
 
-/** @var \Magento\Catalog\Model\Resource\Setup $this */
 $connection->dropForeignKey(
     $this->getTable('catalog_category_product_index'),
     $this->getFkName('catalog_category_product_index', 'category_id', 'catalog_category_entity', 'entity_id')
diff --git a/app/code/Magento/Catalog/sql/catalog_setup/upgrade-1.6.0.0.26-1.6.0.0.27.php b/app/code/Magento/Catalog/sql/catalog_setup/upgrade-1.6.0.0.26-1.6.0.0.27.php
index ee142dd7d99..d96ff3e253e 100644
--- a/app/code/Magento/Catalog/sql/catalog_setup/upgrade-1.6.0.0.26-1.6.0.0.27.php
+++ b/app/code/Magento/Catalog/sql/catalog_setup/upgrade-1.6.0.0.26-1.6.0.0.27.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/** @var $this \Magento\Eav\Model\Entity\Setup */
+/** @var $this \Magento\Setup\Module\SetupModule */
 
 $this->startSetup();
 
diff --git a/app/code/Magento/Catalog/sql/catalog_setup/upgrade-1.6.0.0.27-1.6.0.0.28.php b/app/code/Magento/Catalog/sql/catalog_setup/upgrade-1.6.0.0.27-1.6.0.0.28.php
index 1ca835e240a..2c6b5eaf8ef 100644
--- a/app/code/Magento/Catalog/sql/catalog_setup/upgrade-1.6.0.0.27-1.6.0.0.28.php
+++ b/app/code/Magento/Catalog/sql/catalog_setup/upgrade-1.6.0.0.27-1.6.0.0.28.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/** @var $this \Magento\Catalog\Model\Resource\Setup */
+/** @var $this \Magento\Setup\Module\SetupModule */
 $this->getConnection()->addColumn(
     $this->getTable('catalog_eav_attribute'),
     'is_required_in_admin_store',
diff --git a/app/code/Magento/Catalog/sql/catalog_setup/upgrade-1.6.0.0.4-1.6.0.0.5.php b/app/code/Magento/Catalog/sql/catalog_setup/upgrade-1.6.0.0.4-1.6.0.0.5.php
index 850501e9ad0..03e31c841ea 100644
--- a/app/code/Magento/Catalog/sql/catalog_setup/upgrade-1.6.0.0.4-1.6.0.0.5.php
+++ b/app/code/Magento/Catalog/sql/catalog_setup/upgrade-1.6.0.0.4-1.6.0.0.5.php
@@ -22,8 +22,9 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
+/** @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
-/** @var $installer \Magento\Catalog\Model\Resource\Setup */
+
 $installer->getConnection()->modifyColumn(
     $installer->getTable('catalog_category_product_index'),
     'position',
diff --git a/app/code/Magento/Catalog/sql/catalog_setup/upgrade-1.6.0.0.6-1.6.0.0.7.php b/app/code/Magento/Catalog/sql/catalog_setup/upgrade-1.6.0.0.6-1.6.0.0.7.php
index 12ba10f88ad..ce665c86636 100644
--- a/app/code/Magento/Catalog/sql/catalog_setup/upgrade-1.6.0.0.6-1.6.0.0.7.php
+++ b/app/code/Magento/Catalog/sql/catalog_setup/upgrade-1.6.0.0.6-1.6.0.0.7.php
@@ -22,7 +22,7 @@
  * @license   http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/** @var $installer \Magento\Catalog\Model\Resource\Setup */
+/** @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 $installer->getConnection()->addColumn(
diff --git a/app/code/Magento/Catalog/sql/catalog_setup/upgrade-1.6.0.0.7-1.6.0.0.8.php b/app/code/Magento/Catalog/sql/catalog_setup/upgrade-1.6.0.0.7-1.6.0.0.8.php
index cf82005f2b4..0eafd3ea2c4 100644
--- a/app/code/Magento/Catalog/sql/catalog_setup/upgrade-1.6.0.0.7-1.6.0.0.8.php
+++ b/app/code/Magento/Catalog/sql/catalog_setup/upgrade-1.6.0.0.7-1.6.0.0.8.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/** @var $installer \Magento\Catalog\Model\Resource\Setup */
+/** @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 $connection = $installer->getConnection();
 
diff --git a/app/code/Magento/Catalog/sql/catalog_setup/upgrade-1.6.0.0.8-1.6.0.0.9.php b/app/code/Magento/Catalog/sql/catalog_setup/upgrade-1.6.0.0.8-1.6.0.0.9.php
index 15426e89785..c0f00870705 100644
--- a/app/code/Magento/Catalog/sql/catalog_setup/upgrade-1.6.0.0.8-1.6.0.0.9.php
+++ b/app/code/Magento/Catalog/sql/catalog_setup/upgrade-1.6.0.0.8-1.6.0.0.9.php
@@ -22,10 +22,9 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/** @var $installer \Magento\Catalog\Model\Resource\Setup */
+/** @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
-/** @var $connection \Magento\Framework\DB\Adapter\Pdo\Mysql */
 $connection = $installer->getConnection();
 $memoryTables = array(
     'catalog_category_anc_categs_index_tmp',
diff --git a/app/code/Magento/Catalog/sql/catalog_setup/upgrade-1.6.0.0.9-1.6.0.0.10.php b/app/code/Magento/Catalog/sql/catalog_setup/upgrade-1.6.0.0.9-1.6.0.0.10.php
index fbefe27b35c..5822843b129 100644
--- a/app/code/Magento/Catalog/sql/catalog_setup/upgrade-1.6.0.0.9-1.6.0.0.10.php
+++ b/app/code/Magento/Catalog/sql/catalog_setup/upgrade-1.6.0.0.9-1.6.0.0.10.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/** @var $installer \Magento\Catalog\Model\Resource\Setup */
+/** @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 $connection = $installer->getConnection();
 
diff --git a/app/code/Magento/Catalog/view/adminhtml/web/catalog/category-selector.css b/app/code/Magento/Catalog/view/adminhtml/web/catalog/category-selector.css
index 523e983f913..ab81222f5d3 100644
--- a/app/code/Magento/Catalog/view/adminhtml/web/catalog/category-selector.css
+++ b/app/code/Magento/Catalog/view/adminhtml/web/catalog/category-selector.css
@@ -71,10 +71,6 @@
 	border: none;
 }
 
-.mage-suggest-search-label input:focus {
-	outline: 0;
-}
-
 /* Category Selector in "Create New Category" popup */
 .mage-new-category-dialog .mage-suggest {
 	border: none;
@@ -132,7 +128,6 @@
 	width: 100%;
 	height: 22px;
 	line-height: 22px;
-	outline: 0 none;
 	border: 0 none;
 	box-shadow: none;
 	padding: 0 3px;
diff --git a/app/code/Magento/Catalog/view/base/templates/product/price/amount/default.phtml b/app/code/Magento/Catalog/view/base/templates/product/price/amount/default.phtml
index 3e99f4be3b1..6777ea5d418 100644
--- a/app/code/Magento/Catalog/view/base/templates/product/price/amount/default.phtml
+++ b/app/code/Magento/Catalog/view/base/templates/product/price/amount/default.phtml
@@ -25,16 +25,21 @@
 
 <?php /** @var \Magento\Framework\Pricing\Render\Amount $this */ ?>
 
-<span class="price-container <?php echo $this->getAdjustmentCssClasses() ?>">
+<span class="price-container <?php echo $this->getAdjustmentCssClasses() ?>"
+        <?php echo $this->getSchema() ? ' itemprop="offers" itemscope itemtype="http://schema.org/Offer"' : '' ?>>
     <?php if ($this->getDisplayLabel()): ?>
         <span class="price-label"><?php echo $this->getDisplayLabel(); ?></span>
     <?php endif; ?>
     <span<?php if ($this->getPriceId()): ?> id="<?php echo $this->getPriceId() ?>"<?php endif;?>
         <?php echo ($this->getPriceDisplayLabel()) ? 'data-label="' . $this->getPriceDisplayLabel() . $this->getPriceDisplayInclExclTaxes() . '"' : '' ?>
-        class="price-wrapper <?php echo $this->getPriceWrapperCss(); ?>">
+        class="price-wrapper <?php echo $this->getPriceWrapperCss(); ?>"
+        <?php echo $this->getSchema() ? ' itemprop="price"' : '' ?>>
         <?php echo $this->convertAndFormatCurrency($this->getDisplayValue(), (bool)$this->getIncludeContainer()) ?>
     </span>
     <?php if ($this->hasAdjustmentsHtml()): ?>
         <?php echo $this->getAdjustmentsHtml() ?>
     <?php endif; ?>
+    <?php if ($this->getSchema()): ?>
+        <meta itemprop="priceCurrency" content="<?php echo $this->getDisplayCurrencyCode()?>" />
+    <?php endif; ?>
 </span>
diff --git a/app/code/Magento/Catalog/view/base/templates/product/price/configured_price.phtml b/app/code/Magento/Catalog/view/base/templates/product/price/configured_price.phtml
index e18efbf504c..17f67976e3f 100644
--- a/app/code/Magento/Catalog/view/base/templates/product/price/configured_price.phtml
+++ b/app/code/Magento/Catalog/view/base/templates/product/price/configured_price.phtml
@@ -26,14 +26,16 @@
 /** @var \Magento\Catalog\Pricing\Render\FinalPriceBox $this */
 /** @var \Magento\Catalog\Pricing\Price\ConfiguredPrice $configuredPrice */
 $configuredPrice = $this->getPrice();
-$priceLabel = ($this->getPriceLabel() !== null) 
-	? $this->getPriceLabel()
-	: __('Price as configured');
+$schema = ($this->getZone() == 'item_view') ? true : false;
+$priceLabel = ($this->getPriceLabel() !== null)
+    ? $this->getPriceLabel()
+    : __('Price as configured');
 ?>
 <p class="price-as-configured">
     <?php echo $this->renderAmount($configuredPrice->getAmount(), [
         'display_label'     => $priceLabel,
         'price_id'          => $this->getPriceId('product-price-'),
-        'include_container' => false
+        'include_container' => false,
+        'schema' => $schema
     ]); ?>
 </p>
diff --git a/app/code/Magento/Catalog/view/base/templates/product/price/final_price.phtml b/app/code/Magento/Catalog/view/base/templates/product/price/final_price.phtml
index 798e8f8eb61..9c496eae893 100644
--- a/app/code/Magento/Catalog/view/base/templates/product/price/final_price.phtml
+++ b/app/code/Magento/Catalog/view/base/templates/product/price/final_price.phtml
@@ -34,13 +34,15 @@ $priceModel = $this->getPriceType('regular_price');
 /** @var \Magento\Catalog\Pricing\Price\FinalPrice $finalPriceModel */
 $finalPriceModel = $this->getPriceType('final_price');
 $idSuffix = $this->getIdSuffix() ? $this->getIdSuffix() : '';
+$schema = ($this->getZone() == 'item_view') ? true : false;
 ?>
 <?php if ($this->hasSpecialPrice()): ?>
     <span class="special-price">
         <?php echo $this->renderAmount($finalPriceModel->getAmount(), [
             'display_label'     => __('Special Price'),
             'price_id'          => $this->getPriceId('product-price-' . $idSuffix),
-            'include_container' => true
+            'include_container' => true,
+            'schema' => $schema
         ]); ?>
     </span>
     <span class="old-price">
@@ -54,7 +56,8 @@ $idSuffix = $this->getIdSuffix() ? $this->getIdSuffix() : '';
 <?php else: ?>
     <?php echo $this->renderAmount($finalPriceModel->getAmount(), [
         'price_id'          => $this->getPriceId('product-price-' . $idSuffix),
-        'include_container' => true
+        'include_container' => true,
+        'schema' => $schema
     ]); ?>
 <?php endif; ?>
 
diff --git a/app/code/Magento/Install/view/install/layout/install_wizard_config.xml b/app/code/Magento/Catalog/view/frontend/layout/catalog_product_opengraph.xml
similarity index 68%
rename from app/code/Magento/Install/view/install/layout/install_wizard_config.xml
rename to app/code/Magento/Catalog/view/frontend/layout/catalog_product_opengraph.xml
index 569bfd08bf5..a9058b5334d 100644
--- a/app/code/Magento/Install/view/install/layout/install_wizard_config.xml
+++ b/app/code/Magento/Catalog/view/frontend/layout/catalog_product_opengraph.xml
@@ -24,16 +24,14 @@
  */
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <head>
+        <attribute name="prefix" value="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# product: http://ogp.me/ns/product#" />
+    </head>
     <body>
-        <referenceBlock name="database">
-            <action method="setTemplate">
-                <argument name="template" xsi:type="string">db/main.phtml</argument>
-            </action>
-            <action method="addDatabaseBlock">
-                <argument name="type" xsi:type="string">mysql4</argument>
-                <argument name="block" xsi:type="string">Magento\Install\Block\Db\Type\Mysql4</argument>
-                <argument name="template" xsi:type="string">db/mysql4.phtml</argument>
-            </action>
+        <referenceBlock name="head.additional">
+            <block class="Magento\Catalog\Block\Product\View" name="opengraph.general" template="Magento_Catalog::product/view/opengraph/general.phtml">
+                <block class="Magento\Directory\Block\Currency" name="opengraph.currency" as="meta.currency" template="Magento_Catalog::product/view/opengraph/currency.phtml"/>
+            </block>
         </referenceBlock>
     </body>
 </page>
diff --git a/app/code/Magento/Catalog/view/frontend/layout/catalog_product_view.xml b/app/code/Magento/Catalog/view/frontend/layout/catalog_product_view.xml
index 7e0cc292e60..f8bdd5eb8ff 100644
--- a/app/code/Magento/Catalog/view/frontend/layout/catalog_product_view.xml
+++ b/app/code/Magento/Catalog/view/frontend/layout/catalog_product_view.xml
@@ -23,12 +23,15 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+<page layout="1column" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <head>
         <css src="mage/gallery.css"/>
     </head>
+    <update handle="catalog_product_opengraph" />
     <update handle="page_calendar"/>
     <body>
+        <attribute name="itemtype" value="http://schema.org/Product" />
+        <attribute name="itemscope" value="itemscope"/>
         <referenceBlock name="head.components">
             <block class="Magento\Framework\View\Element\Js\Components" name="checkout_page_head_components" template="Magento_Catalog::js/components.phtml"/>
         </referenceBlock>
@@ -44,14 +47,13 @@
             </arguments>
         </referenceBlock>
         <referenceContainer name="content">
-            <container name="product.info.media" label="invisible" htmlTag="div" htmlClass="product media" before="-">
+            <container name="product.info.media" htmlTag="div" htmlClass="product media" before="-">
                 <block class="Magento\Catalog\Block\Product\View\Gallery" name="product.info.media.image" template="product/view/base-image.phtml">
                     <block class="Magento\Catalog\Block\Product\Image" name="product.image.main"/>
                     <block class="Magento\Catalog\Block\Product\Image" name="product.image.thumbs"/>
                 </block>
             </container>
-
-            <container name="product.info.main" label="invisible" htmlTag="div" htmlClass="product-info-main" after="product.info.media">
+            <container name="product.info.main" htmlTag="div" htmlClass="product-info-main" after="product.info.media">
                 <block class="Magento\Catalog\Block\Product\View" name="product.info.review" template="product/view/review.phtml" before="-" />
                 <container name="product.info.price" label="Product info auxiliary container" htmlTag="div" htmlClass="product-info-price" after="product.info.review">
                     <block class="Magento\Catalog\Pricing\Render" name="product.price.final" after="product.info.sku">
@@ -62,7 +64,7 @@
                         </arguments>
                     </block>
                     <container name="product.info.stock.sku" label="Product auxiliary info" htmlTag="div" htmlClass="product-info-stock-sku">
-                        <container name="product.info.type" label="invisible" before="-"/>
+                        <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">
                             <arguments>
                                 <argument name="at_call" xsi:type="string">getSku</argument>
@@ -83,7 +85,7 @@
                 </block>
                 <container name="alert.urls" as="alert_urls" label="Alert Urls" after="product.price.tier"/>
                 <block class="Magento\Catalog\Block\Product\View" name="product.info" template="product/view/form.phtml" after="alert.urls">
-                    <container name="product.info.form.content" label="invisible" as="product_info_form_content">
+                    <container name="product.info.form.content" as="product_info_form_content">
                         <block class="Magento\Catalog\Block\Product\View" name="product.info.addtocart" as="addtocart" template="product/view/addtocart.phtml"/>
                     </container>
                     <block class="Magento\Framework\View\Element\Template" name="product.info.form.options" as="options_container">
@@ -119,7 +121,6 @@
                     </arguments>
                 </block>
             </container>
-
             <block class="Magento\Catalog\Block\Product\View\Description" name="product.info.details" template="product/view/details.phtml" after="product.info.main">
                 <block class="Magento\Catalog\Block\Product\View\Description" name="product.info.description" template="product/view/attribute.phtml" group="detailed_info">
                     <arguments>
diff --git a/app/code/Magento/Catalog/view/frontend/layout/default.xml b/app/code/Magento/Catalog/view/frontend/layout/default.xml
index 226caa2128e..d20b7c46b35 100644
--- a/app/code/Magento/Catalog/view/frontend/layout/default.xml
+++ b/app/code/Magento/Catalog/view/frontend/layout/default.xml
@@ -34,5 +34,6 @@
         <referenceContainer name="after.body.start">
             <block class="Magento\Framework\View\Element\Js\Components" name="head.components" as="components" template="Magento_Catalog::js/components.phtml"/>
         </referenceContainer>
+        <block class="Magento\Framework\View\Element\Template" name="head.additional" as="head.additional" template="Magento_Theme::html/container.phtml"/>
     </body>
 </page>
diff --git a/app/code/Magento/Catalog/view/frontend/templates/product/compare/list.phtml b/app/code/Magento/Catalog/view/frontend/templates/product/compare/list.phtml
index 2a64f5a7daf..7a6d5309998 100644
--- a/app/code/Magento/Catalog/view/frontend/templates/product/compare/list.phtml
+++ b/app/code/Magento/Catalog/view/frontend/templates/product/compare/list.phtml
@@ -85,9 +85,9 @@
                                         </button>
                                     <?php else: ?>
                                         <?php if ($_item->getIsSalable()): ?>
-                                            <p class="stock available"><span><?php echo __('In stock') ?></span></p>
+                                            <div class="stock available"><span><?php echo __('In stock') ?></span></div>
                                         <?php else: ?>
-                                            <p class="stock unavailable"><span><?php echo __('Out of stock') ?></span></p>
+                                            <div class="stock unavailable"><span><?php echo __('Out of stock') ?></span></div>
                                         <?php endif; ?>
                                     <?php endif; ?>
                                 </div>
@@ -145,5 +145,5 @@
             </table>
         </div>
 <?php else: ?>
-    <p class="empty"><?php echo __('You have no items to compare.') ?></p>
+    <div class="message info empty"><div><?php echo __('You have no items to compare.') ?></div></div>
 <?php endif; ?>
diff --git a/app/code/Magento/Catalog/view/frontend/templates/product/compare/sidebar.phtml b/app/code/Magento/Catalog/view/frontend/templates/product/compare/sidebar.phtml
index 28fa39d52db..55179dbc4ed 100644
--- a/app/code/Magento/Catalog/view/frontend/templates/product/compare/sidebar.phtml
+++ b/app/code/Magento/Catalog/view/frontend/templates/product/compare/sidebar.phtml
@@ -28,16 +28,16 @@ $_helper = $this->helper('Magento\Catalog\Helper\Product\Compare');
 $_items = $_helper->getItemCount() > 0 ? $_helper->getItemCollection() : null;
 $count = $_helper->getItemCount();
 ?>
-<div class="block compare">
-    <div class="title">
+<div class="block block-compare">
+    <div class="block-title">
         <strong><?php echo __('Compare Products') ?></strong>
         <?php if($count > 0): ?>
         <span class="counter qty"><?php echo ($count == 1) ? __('1 item') : __('%1 items',$count) ?></span>
         <?php endif; ?>
     </div>
-    <div class="content">
+    <div class="block-content">
         <?php if($_helper->getItemCount() > 0): ?>
-            <ol id="compare-items" class="items compare"
+            <ol id="compare-items" class="product-items product-items-names"
                 data-mage-init='{"compareItems":{
                     "removeConfirmMessage":"<?php echo __("Are you sure you would like to remove this item from the compare products?") ?>",
                     "removeSelector":"#compare-items a.action.delete",
@@ -45,14 +45,15 @@ $count = $_helper->getItemCount();
                     "clearAllSelector":"#compare-clear-all"
                 }}'>
             <?php foreach($_items as $_index => $_item): ?>
-            <li class="item">
+            <li class="product-item">
                 <input type="hidden" class="compare-item-id" value="<?php echo $_item->getId() ?>"/>
-                <strong class="product name">
-                    <a href="<?php echo $this->getProductUrl($_item) ?>">
+                <strong class="product-item-name">
+                    <a href="<?php echo $this->getProductUrl($_item) ?>" class="product-item-link">
                         <?php echo $this->helper('Magento\Catalog\Helper\Output')->productAttribute($_item, $_item->getName(), 'name') ?>
                     </a>
                 </strong>
                 <?php $compareHelper = $this->helper('Magento\Catalog\Helper\Product\Compare');?>
+
                 <a href="#" data-post='<?php echo $compareHelper->getPostDataRemove($_item); ?>'
                    title="<?php echo __('Remove This Item') ?>"
                    class="action delete">
@@ -71,7 +72,7 @@ $count = $_helper->getItemCount();
         </div>
     </div>
     <?php else: ?>
-        <p class="empty"><?php echo __('You have no items to compare.') ?></p>
-        <?php endif; ?>
+        <div class="empty"><?php echo __('You have no items to compare.') ?></div>
+    <?php endif; ?>
     </div>
 </div>
diff --git a/app/code/Magento/Catalog/view/frontend/templates/product/list.phtml b/app/code/Magento/Catalog/view/frontend/templates/product/list.phtml
index d8450ba684b..37f48340ef4 100644
--- a/app/code/Magento/Catalog/view/frontend/templates/product/list.phtml
+++ b/app/code/Magento/Catalog/view/frontend/templates/product/list.phtml
@@ -89,9 +89,9 @@ $imageBlock =  $this->getLayout()->createBlock('Magento\Catalog\Block\Product\Im
                                         </button>
                                 <?php else: ?>
                                     <?php if ($_product->getIsSalable()): ?>
-                                        <p class="stock available"><span><?php echo __('In stock') ?></span></p>
+                                        <div class="stock available"><span><?php echo __('In stock') ?></span></div>
                                     <?php else: ?>
-                                        <p class="stock unavailable"><span><?php echo __('Out of stock') ?></span></p>
+                                        <div class="stock unavailable"><span><?php echo __('Out of stock') ?></span></div>
                                     <?php endif; ?>
                                 <?php endif; ?>
                             </div>
diff --git a/app/code/Magento/Catalog/view/frontend/templates/product/list/items.phtml b/app/code/Magento/Catalog/view/frontend/templates/product/list/items.phtml
index ad8d2c97953..e37391c330f 100644
--- a/app/code/Magento/Catalog/view/frontend/templates/product/list/items.phtml
+++ b/app/code/Magento/Catalog/view/frontend/templates/product/list/items.phtml
@@ -255,9 +255,9 @@ switch($type = $this->getType()) {
                                                 <?php endif; ?>
                                             <?php else: ?>
                                                 <?php if ($_item->getIsSalable()): ?>
-                                                    <p class="stock available"><span><?php echo __('In stock') ?></span></p>
+                                                    <div class="stock available"><span><?php echo __('In stock') ?></span></div>
                                                 <?php else: ?>
-                                                    <p class="stock unavailable"><span><?php echo __('Out of stock') ?></span></p>
+                                                    <div class="stock unavailable"><span><?php echo __('Out of stock') ?></span></div>
                                                 <?php endif; ?>
                                             <?php endif; ?>
                                         </div>
diff --git a/app/code/Magento/Catalog/view/frontend/templates/product/list/toolbar/limiter.phtml b/app/code/Magento/Catalog/view/frontend/templates/product/list/toolbar/limiter.phtml
index 520640d5011..a5514ad5ebc 100644
--- a/app/code/Magento/Catalog/view/frontend/templates/product/list/toolbar/limiter.phtml
+++ b/app/code/Magento/Catalog/view/frontend/templates/product/list/toolbar/limiter.phtml
@@ -30,15 +30,19 @@
  */
 use \Magento\Catalog\Model\Product\ProductList\Toolbar;
 ?>
-<div class="limiter">
-    <strong class="limiter-label"><?php echo __('Show') ?></strong>
-    <select id="limiter" data-role="limiter" class="limiter-options">
-        <?php foreach ($this->getAvailableLimit() as $_key => $_limit): ?>
-            <option value="<?php echo $_key ?>"<?php if ($this->isLimitCurrent($_key)): ?>
-                selected="selected"<?php endif ?>>
-                <?php echo $_limit ?>
-            </option>
-        <?php endforeach; ?>
-    </select>
+<div class="field limiter">
+    <label class="label" for="limiter">
+        <span><?php echo __('Show') ?></span>
+    </label>
+    <div class="control">
+        <select id="limiter" data-role="limiter" class="limiter-options">
+            <?php foreach ($this->getAvailableLimit() as $_key => $_limit): ?>
+                <option value="<?php echo $_key ?>"<?php if ($this->isLimitCurrent($_key)): ?>
+                    selected="selected"<?php endif ?>>
+                    <?php echo $_limit ?>
+                </option>
+            <?php endforeach; ?>
+        </select>
+    </div>
     <span class="limiter-text"><?php echo __('per page') ?></span>
 </div>
diff --git a/app/code/Magento/Catalog/view/frontend/templates/product/listing.phtml b/app/code/Magento/Catalog/view/frontend/templates/product/listing.phtml
index 8f583b7c97e..bb885963d18 100644
--- a/app/code/Magento/Catalog/view/frontend/templates/product/listing.phtml
+++ b/app/code/Magento/Catalog/view/frontend/templates/product/listing.phtml
@@ -80,8 +80,8 @@ $imageBlock =  $this->getLayout()->createBlock('Magento\Catalog\Block\Product\Im
                                         . ' data-mage-redirect="{event: \'click\', url: \'' . $this->getAddToCartUrl($_product) . '\'}">'
                                         . '<span>' . __('Add to Cart') . '</span></button>';
                     } else {
-                        $info['button'] = $_product->getIsSalable() ?   '<p class="stock available"><span>' . __('In stock') . '</span></p>' :
-                                                                        '<p class="stock unavailable"><span>' . __('Out of stock') . '</span></p>';
+                        $info['button'] = $_product->getIsSalable() ?   '<div class="stock available"><span>' . __('In stock') . '</span></div>' :
+                                                                        '<div class="stock unavailable"><span>' . __('Out of stock') . '</span></div>';
                     }
 
                     $info['links'] = '<div class="product links" data-role="add-to-links">'
diff --git a/app/code/Magento/Catalog/view/frontend/templates/product/view/addto.phtml b/app/code/Magento/Catalog/view/frontend/templates/product/view/addto.phtml
index e281ff390b2..b6141232162 100644
--- a/app/code/Magento/Catalog/view/frontend/templates/product/view/addto.phtml
+++ b/app/code/Magento/Catalog/view/frontend/templates/product/view/addto.phtml
@@ -44,11 +44,11 @@ $compareHelper = $this->helper('Magento\Catalog\Helper\Product\Compare');
 </div>
 <script type="text/javascript">
   require([
-    "jquery",
-    "mage/mage"
+      "jquery",
+      "mage/mage"
   ], function(jQuery){
-
-    jQuery('body').mage('addToWishlist', <?php echo $this->helper('Magento\Core\Helper\Data')->jsonEncode(array('productType' => $_product->getTypeId()))?>);
-
+      jQuery('body').mage('addToWishlist',
+          <?php echo $this->helper('Magento\Core\Helper\Data')->jsonEncode($this->getWishlistOptions())?>
+      );
   });
 </script>
diff --git a/app/code/Magento/Catalog/view/frontend/templates/product/view/attribute.phtml b/app/code/Magento/Catalog/view/frontend/templates/product/view/attribute.phtml
index b56190d6414..b202cbd9ade 100644
--- a/app/code/Magento/Catalog/view/frontend/templates/product/view/attribute.phtml
+++ b/app/code/Magento/Catalog/view/frontend/templates/product/view/attribute.phtml
@@ -54,4 +54,3 @@ if ( $_attributeType && $_attributeType == 'text' ) {
     <div class="value" <?php echo $_attributeAddAttribute;?>><?php echo $_attributeValue; ?></div>
 </div>
 <?php endif; ?>
-
diff --git a/dev/tests/integration/etc/integration-tests-config.xml b/app/code/Magento/Catalog/view/frontend/templates/product/view/opengraph/currency.phtml
similarity index 83%
rename from dev/tests/integration/etc/integration-tests-config.xml
rename to app/code/Magento/Catalog/view/frontend/templates/product/view/opengraph/currency.phtml
index 987960129b6..8a564741cb7 100644
--- a/dev/tests/integration/etc/integration-tests-config.xml
+++ b/app/code/Magento/Catalog/view/frontend/templates/product/view/opengraph/currency.phtml
@@ -1,5 +1,4 @@
-<?xml version="1.0"?>
-<!--
+<?php
 /**
  * Magento
  *
@@ -22,6 +21,7 @@
  * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
--->
-<config>
-</config>
+
+/** @var $this \Magento\Directory\Block\Currency */
+?>
+<meta property="product:price:currency" content="<?php echo $this->stripTags($this->getCurrentCurrencyCode()); ?>"/>
diff --git a/app/code/Magento/Install/view/adminhtml/web/survey_notification.js b/app/code/Magento/Catalog/view/frontend/templates/product/view/opengraph/general.phtml
similarity index 54%
rename from app/code/Magento/Install/view/adminhtml/web/survey_notification.js
rename to app/code/Magento/Catalog/view/frontend/templates/product/view/opengraph/general.phtml
index c008c47217a..7c20fe10221 100644
--- a/app/code/Magento/Install/view/adminhtml/web/survey_notification.js
+++ b/app/code/Magento/Catalog/view/frontend/templates/product/view/opengraph/general.phtml
@@ -1,3 +1,4 @@
+<?php
 /**
  * Magento
  *
@@ -20,22 +21,16 @@
  * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
-/*jshint jquery:true*/
-require(["jquery"], function($){
-    "use strict";
 
-    $(document).ready(function(){
-        $('body').on('surveyYes surveyNo', function(e, data) {
-            if (e.type == 'surveyYes') {
-                var win = window.open(data.surveyUrl, '', 'width=900,height=600,resizable=1,scrollbars=1');
-                win.focus();
-            }
-            $.ajax({
-                url: data.surveyAction,
-                type: 'post',
-                data: {decision: data.decision}
-            });
-        });
-    });
+/** @var $this \Magento\Catalog\Block\Product\View */
+?>
 
-});
+<meta property="og:type" content="og:product" />
+<meta property="og:title" content="<?php echo $this->stripTags($this->getProduct()->getName()); ?>" />
+<meta property="og:image" content="<?php echo $this->stripTags($this->getBaseImageUrl($this->getProduct())); ?>" />
+<meta property="og:description" content="<?php echo $this->stripTags($this->getProduct()->getShortDescription()); ?>" />
+<meta property="og:url" content="<?php echo $this->stripTags($this->getProduct()->getProductUrl()); ?>" />
+<?php if ($priceAmount = $this->getProduct()->getFinalPrice()):?>
+    <meta property="product:price:amount" content="<?php echo $priceAmount; ?>"/>
+    <?php echo $this->getChildHtml('meta.currency'); ?>
+<?php endif;?>
diff --git a/app/code/Magento/Catalog/view/frontend/templates/product/view/type/default.phtml b/app/code/Magento/Catalog/view/frontend/templates/product/view/type/default.phtml
index bb2a44d3be6..97e5b3d87f6 100644
--- a/app/code/Magento/Catalog/view/frontend/templates/product/view/type/default.phtml
+++ b/app/code/Magento/Catalog/view/frontend/templates/product/view/type/default.phtml
@@ -27,12 +27,12 @@
 
 <?php if ($this->displayProductStockStatus()): ?>
     <?php if ($_product->isAvailable()): ?>
-        <p class="stock available" title="<?php echo __('Availability') ?>">
+        <div class="stock available" title="<?php echo __('Availability') ?>">
             <span><?php echo __('In stock') ?></span>
-        </p>
+        </div>
     <?php else: ?>
-        <p class="stock unavailable" title="<?php echo __('Availability') ?>">
+        <div class="stock unavailable" title="<?php echo __('Availability') ?>">
             <span><?php echo __('Out of stock') ?></span>
-        </p>
+        </div>
     <?php endif; ?>
 <?php endif; ?>
diff --git a/app/code/Magento/Catalog/view/frontend/templates/product/widget/new/column/new_default_list.phtml b/app/code/Magento/Catalog/view/frontend/templates/product/widget/new/column/new_default_list.phtml
index 976f2aafa2c..8ce9a173221 100644
--- a/app/code/Magento/Catalog/view/frontend/templates/product/widget/new/column/new_default_list.phtml
+++ b/app/code/Magento/Catalog/view/frontend/templates/product/widget/new/column/new_default_list.phtml
@@ -24,35 +24,35 @@
 ?>
 <?php if (($_products = $this->getProductCollection()) && $_products->getSize()): ?>
     <?php $imageBlock =  $this->getLayout()->createBlock('Magento\Catalog\Block\Product\Image');?>
-    <div class="block widget new minilist">
-        <div class="title">
+    <div class="block widget block-new-products-list">
+        <div class="block-title">
             <strong><?php echo __('New Products') ?></strong>
         </div>
-        <div class="content">
-            <?php echo $this->getPagerHtml() ?>
+        <div class="block-content">
             <?php $suffix = $this->getNameInLayout(); ?>
             <?php $iterator = 1; ?>
-            <ol class="items minilist products" id="widget-new-products-<?php echo $suffix; ?>">
+            <ol class="product-items" id="widget-new-products-<?php echo $suffix; ?>">
                 <?php foreach ($_products->getItems() as $_product): ?>
-                    <?php echo ($iterator++==1) ? '<li class="item product">' : '</li><li class="item product">' ?>
-                    <div class="product">
-                        <a class="product photo" href="<?php echo $_product->getProductUrl() ?>"
+                    <?php echo ($iterator++==1) ? '<li class="product-item">' : '</li><li class="product-item">' ?>
+                    <div class="product-item-info">
+                        <a class="product-item-photo" href="<?php echo $_product->getProductUrl() ?>"
                            title="<?php echo $this->stripTags($_product->getName(), null, true) ?>">
                             <?php echo $imageBlock->init($_product, 'side_column_widget_product_thumbnail')->toHtml() ?>
                         </a>
-                        <div class="product details">
-                            <strong class="product name">
+                        <div class="product-item-details">
+                            <strong class="product-item-name">
                                 <a href="<?php echo $_product->getProductUrl() ?>"
-                                   title="<?php echo $this->stripTags($_product->getName(), null, true) ?>)">
+                                   title="<?php echo $this->stripTags($_product->getName(), null, true) ?>)" class="product-item-link">
                                     <?php echo $this->helper('Magento\Catalog\Helper\Output')->productAttribute($_product, $_product->getName(), 'name') ?>
                                 </a>
                             </strong>
                             <?php echo $this->getProductPriceHtml($_product, '-widget-new-' . $suffix) ?>
-                            <div class="product actions">
-                                <div class="primary">
+                            <div class="product-item-actions">
+                                <div class="actions-primary">
                                     <?php if($_product->isSaleable()): ?>
                                         <?php if ($_product->getTypeInstance()->hasRequiredOptions($_product)): ?>
-                                            <button type="button" title="<?php echo __('Add to Cart') ?>" class="action tocart"
+                                            <button type="button" title="<?php echo __('Add to Cart') ?>"
+                                                    class="action tocart primary"
                                                     data-mage-init='{"redirectUrl":{"url":"<?php echo $this->getAddToCartUrl($_product) ?>"}}'>
                                                 <span><?php echo __('Add to Cart') ?></span>
                                             </button>
@@ -61,23 +61,21 @@
                                                 $postDataHelper = $this->helper('Magento\Core\Helper\PostData');
                                                 $postData = $postDataHelper->getPostData($this->getAddToCartUrl($_product), ['product' => $_product->getEntityId()]);
                                         ?>
-                                        <button type="button" title="<?php echo __('Add to Cart') ?>" class="action tocart"
-                                                data-post='<?php echo $postData; ?>'>
-                                            <span><?php echo __('Add to Cart') ?></span>
-                                        </button>
-                                    <?php endif; ?>
-                                    <a href="<?php echo $this->getAddToCartUrl($_product) ?>" class="action tocart">
-                                            <span><?php echo __('Add to Cart') ?></span>
-                                        </a>
+                                            <button type="button" title="<?php echo __('Add to Cart') ?>"
+                                                    class="action tocart primary"
+                                                    data-post='<?php echo $postData; ?>'>
+                                                <span><?php echo __('Add to Cart') ?></span>
+                                            </button>
+                                        <?php endif; ?>
                                     <?php else: ?>
                                         <?php if ($_product->getIsSalable()): ?>
-                                            <p class="stock available" title="<?php echo __('Availability') ?>">
+                                            <div class="stock available" title="<?php echo __('Availability') ?>">
                                                 <span><?php echo __('In stock') ?></span>
-                                            </p>
+                                            </div>
                                         <?php else: ?>
-                                            <p class="stock unavailable" title="<?php echo __('Availability') ?>">
+                                            <div class="stock unavailable" title="<?php echo __('Availability') ?>">
                                                 <span><?php echo __('Out of stock') ?></span>
-                                            </p>
+                                            </div>
                                         <?php endif; ?>
                                     <?php endif; ?>
                                 </div>
@@ -87,6 +85,7 @@
                     <?php echo ($iterator==count($_products->getItems())+1) ? '</li>' : '' ?>
                 <?php endforeach; ?>
             </ol>
+            <?php echo $this->getPagerHtml() ?>
         </div>
     </div>
 <?php endif; ?>
diff --git a/app/code/Magento/Catalog/view/frontend/templates/product/widget/new/column/new_images_list.phtml b/app/code/Magento/Catalog/view/frontend/templates/product/widget/new/column/new_images_list.phtml
index dd85b50584c..e1e3a8130e6 100644
--- a/app/code/Magento/Catalog/view/frontend/templates/product/widget/new/column/new_images_list.phtml
+++ b/app/code/Magento/Catalog/view/frontend/templates/product/widget/new/column/new_images_list.phtml
@@ -24,17 +24,16 @@
 ?>
 <?php if (($_products = $this->getProductCollection()) && $_products->getSize()): ?>
     <?php $imageBlock =  $this->getLayout()->createBlock('Magento\Catalog\Block\Product\Image'); ?>
-    <div class="widget block new photos">
-        <div class="title">
+    <div class="block widget block-new-products-images">
+        <div class="block-title">
             <strong><?php echo __('New Products') ?></strong>
         </div>
-        <div class="content">
-            <?php echo $this->getPagerHtml() ?>
+        <div class="block-content">
             <?php $suffix = $this->getNameInLayout(); ?>
-            <ol class="items" id="widget-new-products-<?php echo $suffix; ?>">
+            <ol id="widget-new-products-<?php echo $suffix; ?>" class="product-items product-items-images">
                 <?php foreach ($_products->getItems() as $_product): ?>
-                    <li class="item">
-                        <a class="product photo" href="<?php echo $_product->getProductUrl() ?>"
+                    <li class="product-item">
+                        <a class="product-item-photo" href="<?php echo $_product->getProductUrl() ?>"
                            title="<?php echo $this->stripTags($_product->getName(), null, true) ?>">
                             <?php /* new_products_images_only_widget */ ?>
                             <?php echo $imageBlock->init($_product, 'new_products_images_only_widget')->toHtml() ?>
@@ -42,6 +41,7 @@
                     </li>
                 <?php endforeach; ?>
             </ol>
+            <?php echo $this->getPagerHtml() ?>
         </div>
     </div>
 <?php endif; ?>
diff --git a/app/code/Magento/Catalog/view/frontend/templates/product/widget/new/column/new_names_list.phtml b/app/code/Magento/Catalog/view/frontend/templates/product/widget/new/column/new_names_list.phtml
index 11291f4451c..f9a47f59b0e 100644
--- a/app/code/Magento/Catalog/view/frontend/templates/product/widget/new/column/new_names_list.phtml
+++ b/app/code/Magento/Catalog/view/frontend/templates/product/widget/new/column/new_names_list.phtml
@@ -23,25 +23,26 @@
  */
 ?>
 <?php if (($_products = $this->getProductCollection()) && $_products->getSize()): ?>
-    <div class="widget block new names">
-        <div class="title">
+    <div class="block widget block-new-products-names">
+        <div class="block-title">
             <strong><?php echo __('New Products') ?></strong>
         </div>
-        <div class="content">
-            <?php echo $this->getPagerHtml() ?>
+        <div class="block-content">
             <?php $suffix = $this->getNameInLayout(); ?>
-            <ol class="items" id="widget-new-products-<?php echo $suffix; ?>">
+            <ol id="widget-new-products-<?php echo $suffix; ?>" class="product-items product-items-names">
                 <?php foreach ($_products->getItems() as $_product): ?>
-                    <li class="item">
-                        <strong class="product name">
+                    <li class="product-item">
+                        <strong class="product-item-name">
                             <a href="<?php echo $_product->getProductUrl() ?>"
-                               title="<?php echo $this->stripTags($_product->getName(), null, true) ?>)">
+                               title="<?php echo $this->stripTags($_product->getName(), null, true) ?>)"
+                               class="product-item-link">
                                 <?php echo $this->helper('Magento\Catalog\Helper\Output')->productAttribute($_product, $_product->getName() , 'name') ?>
                             </a>
                         </strong>
                     </li>
                 <?php endforeach; ?>
             </ol>
+            <?php echo $this->getPagerHtml() ?>
         </div>
     </div>
 <?php endif; ?>
diff --git a/app/code/Magento/Catalog/view/frontend/templates/product/widget/new/content/new_grid.phtml b/app/code/Magento/Catalog/view/frontend/templates/product/widget/new/content/new_grid.phtml
index 3189aa6e55c..817475ef2a5 100644
--- a/app/code/Magento/Catalog/view/frontend/templates/product/widget/new/content/new_grid.phtml
+++ b/app/code/Magento/Catalog/view/frontend/templates/product/widget/new/content/new_grid.phtml
@@ -47,26 +47,26 @@ if ($exist = ($this->getProductCollection() && $this->getProductCollection()->ge
 ?>
 
 <?php if ($exist):?>
-    <div class="block widget new <?php echo $mode; ?>">
-        <div class="title">
+    <div class="block widget block-new-products <?php echo $mode; ?>">
+        <div class="block-title">
             <strong><?php echo $title; ?></strong>
         </div>
-        <div class="content">
-            <?php echo $this->getPagerHtml() ?>
+        <div class="block-content">
             <?php echo '<!-- ' . $image . '-->' ?>
-            <div class="products wrapper <?php echo $mode; ?>">
-                <ol class="products list items <?php echo $type; ?>">
+            <div class="products-<?php echo $mode; ?> <?php echo $mode; ?>">
+                <ol class="product-items <?php echo $type; ?>">
                     <?php $iterator = 1; ?>
                     <?php foreach($items as $_item): ?>
-                        <?php echo ($iterator++==1) ? '<li class="item product">' : '</li><li class="item product">' ?>
-                        <div class="product">
-                            <a href="<?php echo $this->getProductUrl($_item) ?>" class="product photo">
+                        <?php echo ($iterator++==1) ? '<li class="product-item">' : '</li><li class="product-item">' ?>
+                        <div class="product-item-info">
+                            <a href="<?php echo $this->getProductUrl($_item) ?>" class="product-item-photo">
                                 <?php echo $imageBlock->init($_item, $image)->toHtml() ?>
                             </a>
-                            <div class="product details">
-                                <strong class="product name">
+                            <div class="product-item-details">
+                                <strong class="product-item-name">
                                     <a title="<?php echo $this->escapeHtml($_item->getName()) ?>"
-                                       href="<?php echo $this->getProductUrl($_item) ?>">
+                                       href="<?php echo $this->getProductUrl($_item) ?>"
+                                       class="product-item-link">
                                         <?php echo $this->escapeHtml($_item->getName()) ?>
                                     </a>
                                 </strong>
@@ -79,9 +79,9 @@ if ($exist = ($this->getProductCollection() && $this->getProductCollection()->ge
                                 <?php endif; ?>
 
                                 <?php if($showWishlist || $showCompare || $showCart): ?>
-                                    <div class="product actions">
+                                    <div class="product-item-actions">
                                         <?php if($showCart): ?>
-                                            <div class="primary">
+                                            <div class="actions-primary">
                                                 <?php if($_item->isSaleable()): ?>
                                                     <?php if ($_item->getTypeInstance()->hasRequiredOptions($_item)): ?>
                                                         <button class="action tocart primary"
@@ -102,15 +102,15 @@ if ($exist = ($this->getProductCollection() && $this->getProductCollection()->ge
                                                     <?php endif; ?>
                                                 <?php else: ?>
                                                     <?php if ($_item->getIsSalable()): ?>
-                                                        <p class="stock available"><span><?php echo __('In stock') ?></span></p>
+                                                        <div class="stock available"><span><?php echo __('In stock') ?></span></div>
                                                     <?php else: ?>
-                                                        <p class="stock unavailable"><span><?php echo __('Out of stock') ?></span></p>
+                                                        <div class="stock unavailable"><span><?php echo __('Out of stock') ?></span></div>
                                                     <?php endif; ?>
                                                 <?php endif; ?>
                                             </div>
                                         <?php endif; ?>
                                         <?php if($showWishlist || $showCompare): ?>
-                                            <div class="secondary-addto-links" data-role="add-to-links">
+                                            <div class="actions-secondary" data-role="add-to-links">
                                                 <?php if ($this->helper('Magento\Wishlist\Helper\Data')->isAllow() && $showWishlist): ?>
                                                     <a href="#"
                                                        data-post='<?php echo $this->getAddToWishlistParams($_item); ?>'
@@ -137,6 +137,7 @@ if ($exist = ($this->getProductCollection() && $this->getProductCollection()->ge
                     <?php endforeach ?>
                 </ol>
             </div>
+            <?php echo $this->getPagerHtml() ?>
         </div>
     </div>
 <?php endif;?>
diff --git a/app/code/Magento/Catalog/view/frontend/templates/product/widget/new/content/new_list.phtml b/app/code/Magento/Catalog/view/frontend/templates/product/widget/new/content/new_list.phtml
index 3c827400063..b42a64d2d9c 100644
--- a/app/code/Magento/Catalog/view/frontend/templates/product/widget/new/content/new_list.phtml
+++ b/app/code/Magento/Catalog/view/frontend/templates/product/widget/new/content/new_list.phtml
@@ -37,6 +37,7 @@ if ($exist = ($this->getProductCollection() && $this->getProductCollection()->ge
     $image ='new_products_content_widget_list';
     $title = __('New Products');
     $items = $this->getProductCollection()->getItems();
+    $_helper = $this->helper('Magento\Catalog\Helper\Output');
 
     $showWishlist = true;
     $showCompare = true;
@@ -47,26 +48,26 @@ if ($exist = ($this->getProductCollection() && $this->getProductCollection()->ge
 ?>
 
 <?php if ($exist):?>
-    <div class="block widget new <?php echo $mode; ?>">
-        <div class="title">
+    <div class="block widget block-new-products <?php echo $mode; ?>">
+        <div class="block-title">
             <strong><?php echo $title; ?></strong>
         </div>
-        <div class="content">
-            <?php echo $this->getPagerHtml() ?>
+        <div class="block-content">
             <?php echo '<!-- ' . $image . '-->' ?>
-            <div class="products wrapper <?php echo $mode; ?>">
-                <ol class="products list items <?php echo $type; ?>">
+            <div class="products-<?php echo $mode; ?> <?php echo $mode; ?>">
+                <ol class="product-items <?php echo $type; ?>">
                     <?php $iterator = 1; ?>
                     <?php foreach($items as $_item): ?>
-                        <?php echo ($iterator++==1) ? '<li class="item product">' : '</li><li class="item product">' ?>
-                        <div class="product">
-                            <a href="<?php echo $this->getProductUrl($_item) ?>" class="product photo">
+                        <?php echo ($iterator++==1) ? '<li class="product-item">' : '</li><li class="product-item">' ?>
+                        <div class="product-item-info">
+                            <a href="<?php echo $this->getProductUrl($_item) ?>" class="product-item-photo">
                                 <?php echo $imageBlock->init($_item, $image)->toHtml() ?>
                             </a>
-                            <div class="product details">
-                                <strong class="product name">
+                            <div class="product-item-details">
+                                <strong class="product-item-name">
                                     <a title="<?php echo $this->escapeHtml($_item->getName()) ?>"
-                                       href="<?php echo $this->getProductUrl($_item) ?>">
+                                       href="<?php echo $this->getProductUrl($_item) ?>"
+                                       class="product-item-link">
                                         <?php echo $this->escapeHtml($_item->getName()) ?>
                                     </a>
                                 </strong>
@@ -77,9 +78,9 @@ if ($exist = ($this->getProductCollection() && $this->getProductCollection()->ge
                                 <?php endif; ?>
 
                                 <?php if($showWishlist || $showCompare || $showCart): ?>
-                                    <div class="product actions">
+                                    <div class="product-item-actions">
                                         <?php if($showCart): ?>
-                                            <div class="primary">
+                                            <div class="actions-primary">
                                                 <?php if($_item->isSaleable()): ?>
                                                     <?php if ($_item->getTypeInstance()->hasRequiredOptions($_item)): ?>
                                                         <button class="action tocart primary"
@@ -100,15 +101,15 @@ if ($exist = ($this->getProductCollection() && $this->getProductCollection()->ge
                                                     <?php endif; ?>
                                                 <?php else: ?>
                                                     <?php if ($_item->getIsSalable()): ?>
-                                                        <p class="stock available"><span><?php echo __('In stock') ?></span></p>
+                                                        <div class="stock available"><span><?php echo __('In stock') ?></span></div>
                                                     <?php else: ?>
-                                                        <p class="stock unavailable"><span><?php echo __('Out of stock') ?></span></p>
+                                                        <div class="stock unavailable"><span><?php echo __('Out of stock') ?></span></div>
                                                     <?php endif; ?>
                                                 <?php endif; ?>
                                             </div>
                                         <?php endif; ?>
                                         <?php if($showWishlist || $showCompare): ?>
-                                            <div class="secondary-addto-links" data-role="add-to-links">
+                                            <div class="actions-secondary" data-role="add-to-links">
                                                 <?php if ($this->helper('Magento\Wishlist\Helper\Data')->isAllow() && $showWishlist): ?>
                                                     <a href="#"
                                                        data-post='<?php echo $this->getAddToWishlistParams($_item); ?>'
@@ -129,12 +130,21 @@ if ($exist = ($this->getProductCollection() && $this->getProductCollection()->ge
                                         <?php endif; ?>
                                     </div>
                                 <?php endif; ?>
+                                <?php if($description):?>
+                                    <div class="product-item-description">
+                                        <?php echo $_helper->productAttribute($_item, $_item->getShortDescription(), 'short_description') ?>
+                                        <a title="<?php echo $this->escapeHtml($_item->getName()) ?>"
+                                           href="<?php echo $this->getProductUrl($_item) ?>"
+                                           class="action more"><?php echo __('Learn More') ?></a>
+                                    </div>
+                                <?php endif; ?>
                             </div>
                         </div>
                         <?php echo ($iterator==count($items)+1) ? '</li>' : '' ?>
                     <?php endforeach ?>
                 </ol>
             </div>
+            <?php echo $this->getPagerHtml() ?>
         </div>
     </div>
 <?php endif;?>
diff --git a/app/code/Magento/CatalogImportExport/composer.json b/app/code/Magento/CatalogImportExport/composer.json
index be52aced3e2..7d98b3c2e29 100644
--- a/app/code/Magento/CatalogImportExport/composer.json
+++ b/app/code/Magento/CatalogImportExport/composer.json
@@ -3,20 +3,20 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-catalog": "0.1.0-alpha102",
-        "magento/module-eav": "0.1.0-alpha102",
-        "magento/module-import-export": "0.1.0-alpha102",
-        "magento/module-indexer": "0.1.0-alpha102",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-catalog-inventory": "0.1.0-alpha102",
-        "magento/module-customer": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-catalog": "0.1.0-alpha103",
+        "magento/module-eav": "0.1.0-alpha103",
+        "magento/module-import-export": "0.1.0-alpha103",
+        "magento/module-indexer": "0.1.0-alpha103",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-catalog-inventory": "0.1.0-alpha103",
+        "magento/module-customer": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "ext-ctype": "*",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/CatalogInventory/Service/V1/Data/LowStockCriteria.php b/app/code/Magento/CatalogInventory/Service/V1/Data/LowStockCriteria.php
index 577a57c5d86..83852ba605c 100644
--- a/app/code/Magento/CatalogInventory/Service/V1/Data/LowStockCriteria.php
+++ b/app/code/Magento/CatalogInventory/Service/V1/Data/LowStockCriteria.php
@@ -23,7 +23,7 @@
  */
 namespace Magento\CatalogInventory\Service\V1\Data;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObject;
+use Magento\Framework\Api\AbstractExtensibleObject;
 
 /**
  * Low stock criteria data object
diff --git a/app/code/Magento/CatalogInventory/Service/V1/Data/LowStockCriteriaBuilder.php b/app/code/Magento/CatalogInventory/Service/V1/Data/LowStockCriteriaBuilder.php
index cbd01980909..a8ce76f69e1 100644
--- a/app/code/Magento/CatalogInventory/Service/V1/Data/LowStockCriteriaBuilder.php
+++ b/app/code/Magento/CatalogInventory/Service/V1/Data/LowStockCriteriaBuilder.php
@@ -28,7 +28,7 @@ namespace Magento\CatalogInventory\Service\V1\Data;
  *
  * @codeCoverageIgnore
  */
-class LowStockCriteriaBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder
+class LowStockCriteriaBuilder extends \Magento\Framework\Api\ExtensibleObjectBuilder
 {
     /**
      * Set page size
diff --git a/app/code/Magento/CatalogInventory/Service/V1/Data/LowStockResult.php b/app/code/Magento/CatalogInventory/Service/V1/Data/LowStockResult.php
index 91b5961c877..02b8067efa3 100644
--- a/app/code/Magento/CatalogInventory/Service/V1/Data/LowStockResult.php
+++ b/app/code/Magento/CatalogInventory/Service/V1/Data/LowStockResult.php
@@ -23,7 +23,7 @@
  */
 namespace Magento\CatalogInventory\Service\V1\Data;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObject;
+use Magento\Framework\Api\AbstractExtensibleObject;
 
 /**
  * Low stock search result data object
diff --git a/app/code/Magento/CatalogInventory/Service/V1/Data/LowStockResultBuilder.php b/app/code/Magento/CatalogInventory/Service/V1/Data/LowStockResultBuilder.php
index 2d168f9dd2f..4009d8c1180 100644
--- a/app/code/Magento/CatalogInventory/Service/V1/Data/LowStockResultBuilder.php
+++ b/app/code/Magento/CatalogInventory/Service/V1/Data/LowStockResultBuilder.php
@@ -28,7 +28,7 @@ namespace Magento\CatalogInventory\Service\V1\Data;
  *
  * @codeCoverageIgnore
  */
-class LowStockResultBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder
+class LowStockResultBuilder extends \Magento\Framework\Api\ExtensibleObjectBuilder
 {
     /**
      * Set search criteria
diff --git a/app/code/Magento/CatalogInventory/Service/V1/Data/StockItem.php b/app/code/Magento/CatalogInventory/Service/V1/Data/StockItem.php
index d4b68935033..6cfb76d491b 100644
--- a/app/code/Magento/CatalogInventory/Service/V1/Data/StockItem.php
+++ b/app/code/Magento/CatalogInventory/Service/V1/Data/StockItem.php
@@ -23,7 +23,7 @@
  */
 namespace Magento\CatalogInventory\Service\V1\Data;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObject;
+use Magento\Framework\Api\AbstractExtensibleObject;
 
 /**
  * Stock item data object
diff --git a/app/code/Magento/CatalogInventory/Service/V1/Data/StockItemBuilder.php b/app/code/Magento/CatalogInventory/Service/V1/Data/StockItemBuilder.php
index 17eed4917ee..2e96602d3c4 100644
--- a/app/code/Magento/CatalogInventory/Service/V1/Data/StockItemBuilder.php
+++ b/app/code/Magento/CatalogInventory/Service/V1/Data/StockItemBuilder.php
@@ -23,11 +23,11 @@
  */
 namespace Magento\CatalogInventory\Service\V1\Data;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder;
+use Magento\Framework\Api\ExtensibleObjectBuilder;
 
 /**
  * Stock item data builder
  */
-class StockItemBuilder extends AbstractExtensibleObjectBuilder
+class StockItemBuilder extends ExtensibleObjectBuilder
 {
 }
diff --git a/app/code/Magento/CatalogInventory/Service/V1/Data/StockItemDetails.php b/app/code/Magento/CatalogInventory/Service/V1/Data/StockItemDetails.php
index 880588758a6..cf43022b544 100644
--- a/app/code/Magento/CatalogInventory/Service/V1/Data/StockItemDetails.php
+++ b/app/code/Magento/CatalogInventory/Service/V1/Data/StockItemDetails.php
@@ -23,7 +23,7 @@
  */
 namespace Magento\CatalogInventory\Service\V1\Data;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObject;
+use Magento\Framework\Api\AbstractExtensibleObject;
 
 /**
  * Stock item details data object
diff --git a/app/code/Magento/CatalogInventory/Service/V1/Data/StockItemDetailsBuilder.php b/app/code/Magento/CatalogInventory/Service/V1/Data/StockItemDetailsBuilder.php
index 4b29e608a3e..e0f449637a0 100644
--- a/app/code/Magento/CatalogInventory/Service/V1/Data/StockItemDetailsBuilder.php
+++ b/app/code/Magento/CatalogInventory/Service/V1/Data/StockItemDetailsBuilder.php
@@ -23,14 +23,14 @@
  */
 namespace Magento\CatalogInventory\Service\V1\Data;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder;
+use Magento\Framework\Api\ExtensibleObjectBuilder;
 
 /**
  * Stock item details data builder
  *
  * @codeCoverageIgnore
  */
-class StockItemDetailsBuilder extends AbstractExtensibleObjectBuilder
+class StockItemDetailsBuilder extends ExtensibleObjectBuilder
 {
     /**
      * @param int $qty
diff --git a/app/code/Magento/CatalogInventory/Service/V1/Data/StockStatus.php b/app/code/Magento/CatalogInventory/Service/V1/Data/StockStatus.php
index 4846d4701b4..b09c83f292b 100644
--- a/app/code/Magento/CatalogInventory/Service/V1/Data/StockStatus.php
+++ b/app/code/Magento/CatalogInventory/Service/V1/Data/StockStatus.php
@@ -23,7 +23,7 @@
  */
 namespace Magento\CatalogInventory\Service\V1\Data;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObject;
+use Magento\Framework\Api\AbstractExtensibleObject;
 
 /**
  * Stock status data object
diff --git a/app/code/Magento/CatalogInventory/Service/V1/Data/StockStatusBuilder.php b/app/code/Magento/CatalogInventory/Service/V1/Data/StockStatusBuilder.php
index e5ab3e3e7b8..24e5fd4b65f 100644
--- a/app/code/Magento/CatalogInventory/Service/V1/Data/StockStatusBuilder.php
+++ b/app/code/Magento/CatalogInventory/Service/V1/Data/StockStatusBuilder.php
@@ -23,11 +23,11 @@
  */
 namespace Magento\CatalogInventory\Service\V1\Data;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder;
+use Magento\Framework\Api\ExtensibleObjectBuilder;
 
 /**
  * Stock status data builder
  */
-class StockStatusBuilder extends AbstractExtensibleObjectBuilder
+class StockStatusBuilder extends ExtensibleObjectBuilder
 {
 }
diff --git a/app/code/Magento/CatalogInventory/composer.json b/app/code/Magento/CatalogInventory/composer.json
index cedbdbc01a9..859be9a5e01 100644
--- a/app/code/Magento/CatalogInventory/composer.json
+++ b/app/code/Magento/CatalogInventory/composer.json
@@ -3,19 +3,19 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-catalog": "0.1.0-alpha102",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-customer": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/module-indexer": "0.1.0-alpha102",
-        "magento/module-sales": "0.1.0-alpha102",
-        "magento/module-eav": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-catalog": "0.1.0-alpha103",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-customer": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/module-indexer": "0.1.0-alpha103",
+        "magento/module-sales": "0.1.0-alpha103",
+        "magento/module-eav": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/CatalogInventory/data/cataloginventory_setup/data-upgrade-1.6.0.0.3-1.6.0.0.4.php b/app/code/Magento/CatalogInventory/data/cataloginventory_setup/data-upgrade-1.6.0.0.3-1.6.0.0.4.php
index e526aedb298..d8151d15dc7 100644
--- a/app/code/Magento/CatalogInventory/data/cataloginventory_setup/data-upgrade-1.6.0.0.3-1.6.0.0.4.php
+++ b/app/code/Magento/CatalogInventory/data/cataloginventory_setup/data-upgrade-1.6.0.0.3-1.6.0.0.4.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/** @var $this \Magento\Catalog\Model\Resource\Setup */
+/** @var $this \Magento\Eav\Model\Entity\Setup */
 
 $groupName = 'Product Details';
 $entityTypeId = $this->getEntityTypeId(\Magento\Catalog\Model\Product::ENTITY);
diff --git a/app/code/Magento/CatalogInventory/etc/module.xml b/app/code/Magento/CatalogInventory/etc/module.xml
index 3125cc3629c..e486b82fdf9 100644
--- a/app/code/Magento/CatalogInventory/etc/module.xml
+++ b/app/code/Magento/CatalogInventory/etc/module.xml
@@ -24,7 +24,7 @@
  */
 -->
 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/Module/etc/module.xsd">
-    <module name="Magento_CatalogInventory" schema_version="1.6.0.0.4" active="true">
+    <module name="Magento_CatalogInventory" schema_version="1.6.0.0.5" active="true">
         <sequence>
             <module name="Magento_Catalog"/>
         </sequence>
diff --git a/app/code/Magento/CatalogInventory/sql/cataloginventory_setup/install-1.6.0.0.php b/app/code/Magento/CatalogInventory/sql/cataloginventory_setup/install-1.6.0.0.php
index 963c66b7213..d21a28102b9 100644
--- a/app/code/Magento/CatalogInventory/sql/cataloginventory_setup/install-1.6.0.0.php
+++ b/app/code/Magento/CatalogInventory/sql/cataloginventory_setup/install-1.6.0.0.php
@@ -22,8 +22,8 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
-/* @var $installer \Magento\Eav\Model\Entity\Setup */
 
 $installer->startSetup();
 
diff --git a/app/code/Magento/CatalogInventory/sql/cataloginventory_setup/upgrade-1.6.0.0-1.6.0.0.1.php b/app/code/Magento/CatalogInventory/sql/cataloginventory_setup/upgrade-1.6.0.0-1.6.0.0.1.php
index 187a3bb8444..51ffd840a46 100644
--- a/app/code/Magento/CatalogInventory/sql/cataloginventory_setup/upgrade-1.6.0.0-1.6.0.0.1.php
+++ b/app/code/Magento/CatalogInventory/sql/cataloginventory_setup/upgrade-1.6.0.0-1.6.0.0.1.php
@@ -22,9 +22,8 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/** @var $installer \Magento\Eav\Model\Entity\Setup */
+/** @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
-/** @var $connection \Magento\Framework\DB\Adapter\Pdo\Mysql */
 $connection = $installer->getConnection();
 $connection->changeTableEngine(
     $installer->getTable('cataloginventory_stock_status_tmp'),
diff --git a/app/code/Magento/CatalogInventory/sql/cataloginventory_setup/upgrade-1.6.0.0.1-1.6.0.0.2.php b/app/code/Magento/CatalogInventory/sql/cataloginventory_setup/upgrade-1.6.0.0.1-1.6.0.0.2.php
index 118d5d3cf35..e4a68a03cae 100644
--- a/app/code/Magento/CatalogInventory/sql/cataloginventory_setup/upgrade-1.6.0.0.1-1.6.0.0.2.php
+++ b/app/code/Magento/CatalogInventory/sql/cataloginventory_setup/upgrade-1.6.0.0.1-1.6.0.0.2.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/** @var $installer \Magento\Eav\Model\Entity\Setup */
+/** @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 /**
diff --git a/app/code/Magento/CatalogInventory/sql/cataloginventory_setup/upgrade-1.6.0.0.2-1.6.0.0.3.php b/app/code/Magento/CatalogInventory/sql/cataloginventory_setup/upgrade-1.6.0.0.2-1.6.0.0.3.php
index 6b40b1c3474..d65adec44b3 100644
--- a/app/code/Magento/CatalogInventory/sql/cataloginventory_setup/upgrade-1.6.0.0.2-1.6.0.0.3.php
+++ b/app/code/Magento/CatalogInventory/sql/cataloginventory_setup/upgrade-1.6.0.0.2-1.6.0.0.3.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/** @var $this \Magento\Eav\Model\Entity\Setup */
+/** @var $this \Magento\Setup\Module\SetupModule */
 
 $this->getConnection()->changeColumn(
     $this->getTable('cataloginventory_stock_item'),
diff --git a/app/code/Magento/CatalogInventory/sql/cataloginventory_setup/upgrade-1.6.0.0.4-1.6.0.0.5.php b/app/code/Magento/CatalogInventory/sql/cataloginventory_setup/upgrade-1.6.0.0.4-1.6.0.0.5.php
index eb950ab693f..57885f100b9 100644
--- a/app/code/Magento/CatalogInventory/sql/cataloginventory_setup/upgrade-1.6.0.0.4-1.6.0.0.5.php
+++ b/app/code/Magento/CatalogInventory/sql/cataloginventory_setup/upgrade-1.6.0.0.4-1.6.0.0.5.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/** @var $this \Magento\Eav\Model\Entity\Setup */
+/** @var $this \Magento\Setup\Module\SetupModule */
 
 $this->startSetup();
 
diff --git a/app/code/Magento/CatalogRule/composer.json b/app/code/Magento/CatalogRule/composer.json
index e7f21fa4506..653131508c7 100644
--- a/app/code/Magento/CatalogRule/composer.json
+++ b/app/code/Magento/CatalogRule/composer.json
@@ -3,17 +3,17 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-rule": "0.1.0-alpha102",
-        "magento/module-catalog": "0.1.0-alpha102",
-        "magento/module-customer": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/module-eav": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-rule": "0.1.0-alpha103",
+        "magento/module-catalog": "0.1.0-alpha103",
+        "magento/module-customer": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/module-eav": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/CatalogRule/sql/catalogrule_setup/install-1.6.0.0.php b/app/code/Magento/CatalogRule/sql/catalogrule_setup/install-1.6.0.0.php
index 87808ba427f..e977263942f 100644
--- a/app/code/Magento/CatalogRule/sql/catalogrule_setup/install-1.6.0.0.php
+++ b/app/code/Magento/CatalogRule/sql/catalogrule_setup/install-1.6.0.0.php
@@ -23,8 +23,7 @@
  */
 
 
-/* @var $installer \Magento\Framework\Module\Setup */
-
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 $installer->startSetup();
diff --git a/app/code/Magento/CatalogRule/sql/catalogrule_setup/upgrade-1.6.0.0-1.6.0.1.php b/app/code/Magento/CatalogRule/sql/catalogrule_setup/upgrade-1.6.0.0-1.6.0.1.php
index 474e434f839..5cd49cf98fe 100644
--- a/app/code/Magento/CatalogRule/sql/catalogrule_setup/upgrade-1.6.0.0-1.6.0.1.php
+++ b/app/code/Magento/CatalogRule/sql/catalogrule_setup/upgrade-1.6.0.0-1.6.0.1.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* @var $installer \Magento\Framework\Module\Setup */
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 $tableName = $installer->getTable('catalogrule');
diff --git a/app/code/Magento/CatalogRule/sql/catalogrule_setup/upgrade-1.6.0.1-1.6.0.2.php b/app/code/Magento/CatalogRule/sql/catalogrule_setup/upgrade-1.6.0.1-1.6.0.2.php
index ef440864e16..708576300b1 100644
--- a/app/code/Magento/CatalogRule/sql/catalogrule_setup/upgrade-1.6.0.1-1.6.0.2.php
+++ b/app/code/Magento/CatalogRule/sql/catalogrule_setup/upgrade-1.6.0.1-1.6.0.2.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* @var $installer \Magento\Framework\Module\Setup */
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 $connection = $installer->getConnection();
 
diff --git a/app/code/Magento/CatalogRule/sql/catalogrule_setup/upgrade-1.6.0.2-1.6.0.3.php b/app/code/Magento/CatalogRule/sql/catalogrule_setup/upgrade-1.6.0.2-1.6.0.3.php
index c221480ba3a..3d0c905c37b 100644
--- a/app/code/Magento/CatalogRule/sql/catalogrule_setup/upgrade-1.6.0.2-1.6.0.3.php
+++ b/app/code/Magento/CatalogRule/sql/catalogrule_setup/upgrade-1.6.0.2-1.6.0.3.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* @var $installer \Magento\Framework\Module\Setup */
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 $installer->startSetup();
diff --git a/app/code/Magento/CatalogSearch/composer.json b/app/code/Magento/CatalogSearch/composer.json
index 4b29ff64c59..f5caacd0978 100644
--- a/app/code/Magento/CatalogSearch/composer.json
+++ b/app/code/Magento/CatalogSearch/composer.json
@@ -3,21 +3,21 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-catalog": "0.1.0-alpha102",
-        "magento/module-search": "0.1.0-alpha102",
-        "magento/module-customer": "0.1.0-alpha102",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-directory": "0.1.0-alpha102",
-        "magento/module-indexer": "0.1.0-alpha102",
-        "magento/module-eav": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/module-theme": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-catalog": "0.1.0-alpha103",
+        "magento/module-search": "0.1.0-alpha103",
+        "magento/module-customer": "0.1.0-alpha103",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-directory": "0.1.0-alpha103",
+        "magento/module-indexer": "0.1.0-alpha103",
+        "magento/module-eav": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/module-theme": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/CatalogSearch/sql/catalogsearch_setup/install-1.6.0.0.php b/app/code/Magento/CatalogSearch/sql/catalogsearch_setup/install-1.6.0.0.php
index b593ecfe741..d253fa275c6 100644
--- a/app/code/Magento/CatalogSearch/sql/catalogsearch_setup/install-1.6.0.0.php
+++ b/app/code/Magento/CatalogSearch/sql/catalogsearch_setup/install-1.6.0.0.php
@@ -22,8 +22,8 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
-/* @var $installer \Magento\Framework\Module\Setup */
 
 $installer->startSetup();
 
diff --git a/app/code/Magento/CatalogUrlRewrite/composer.json b/app/code/Magento/CatalogUrlRewrite/composer.json
index d16fd733c3b..3333a8d3f81 100644
--- a/app/code/Magento/CatalogUrlRewrite/composer.json
+++ b/app/code/Magento/CatalogUrlRewrite/composer.json
@@ -3,18 +3,18 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/module-catalog": "0.1.0-alpha102",
-        "magento/module-catalog-import-export": "0.1.0-alpha102",
-        "magento/module-eav": "0.1.0-alpha102",
-        "magento/module-import-export": "0.1.0-alpha102",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-url-rewrite": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/module-catalog": "0.1.0-alpha103",
+        "magento/module-catalog-import-export": "0.1.0-alpha103",
+        "magento/module-eav": "0.1.0-alpha103",
+        "magento/module-import-export": "0.1.0-alpha103",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-url-rewrite": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/CatalogUrlRewrite/data/catalogurlrewrite_setup/data-install-1.0.0.0.php b/app/code/Magento/CatalogUrlRewrite/data/catalogurlrewrite_setup/data-install-1.0.0.0.php
index 7a51d3f0190..30afee39760 100644
--- a/app/code/Magento/CatalogUrlRewrite/data/catalogurlrewrite_setup/data-install-1.0.0.0.php
+++ b/app/code/Magento/CatalogUrlRewrite/data/catalogurlrewrite_setup/data-install-1.0.0.0.php
@@ -21,6 +21,7 @@
  * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
+
 /** @var $this \Magento\Catalog\Model\Resource\Setup */
 $this->addAttribute(
     \Magento\Catalog\Model\Category::ENTITY,
diff --git a/app/code/Magento/CatalogUrlRewrite/etc/install/di.xml b/app/code/Magento/CatalogUrlRewrite/etc/install/di.xml
deleted file mode 100644
index 51d426c2e2b..00000000000
--- a/app/code/Magento/CatalogUrlRewrite/etc/install/di.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0"?>
-<!--
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Academic Free License (AFL 3.0)
- * that is bundled with this package in the file LICENSE_AFL.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/afl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
- */
--->
-<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../lib/internal/Magento/Framework/ObjectManager/etc/config.xsd">
-    <type name="Magento\CatalogImportExport\Model\Import\Product">
-        <plugin name="import_save_plugin" type="Magento\CatalogUrlRewrite\Model\Product\Plugin\Import"/>
-    </type>
-    <type name="Magento\Catalog\Model\Resource\Category">
-        <plugin name="category_move_plugin" type="Magento\CatalogUrlRewrite\Model\Category\Plugin\Category\Move"/>
-    </type>
-    <type name="Magento\UrlRewrite\Model\StorageInterface">
-        <plugin name="storage_plugin" type="Magento\CatalogUrlRewrite\Model\Category\Plugin\Storage"/>
-    </type>
-</config>
diff --git a/app/code/Magento/CatalogUrlRewrite/etc/install/events.xml b/app/code/Magento/CatalogUrlRewrite/etc/install/events.xml
deleted file mode 100644
index 39b12d18bcc..00000000000
--- a/app/code/Magento/CatalogUrlRewrite/etc/install/events.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0"?>
-<!--
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Academic Free License (AFL 3.0)
- * that is bundled with this package in the file LICENSE_AFL.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/afl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
- */
--->
-<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../lib/internal/Magento/Framework/Event/etc/events.xsd">
-    <event name="catalog_category_prepare_save">
-        <observer name="category_save_rewrites_history_setter" instance="Magento\CatalogUrlRewrite\Observer\CategorySaveRewritesHistorySetter" method="invoke"/>
-    </event>
-    <event name="catalog_category_save_before">
-        <observer name="category_url_path_autogeneration" instance="Magento\CatalogUrlRewrite\Observer\CategoryUrlPathAutogenerator" method="invoke"/>
-    </event>
-    <event name="catalog_category_save_after">
-        <observer name="process_url_rewrite_saving" instance="Magento\CatalogUrlRewrite\Model\Category\Observer" method="processUrlRewriteSaving"/>
-    </event>
-    <event name="catalog_product_save_before">
-        <observer name="product_url_key_autogeneration" instance="Magento\CatalogUrlRewrite\Observer\ProductUrlKeyAutogenerator" method="invoke"/>
-    </event>
-    <event name="catalog_product_save_after">
-        <observer name="process_url_rewrite_saving" instance="Magento\CatalogUrlRewrite\Model\Product\Observer" method="processUrlRewriteSaving"/>
-    </event>
-</config>
diff --git a/app/code/Magento/CatalogUrlRewrite/sql/catalogurlrewrite_setup/install-1.0.0.0.php b/app/code/Magento/CatalogUrlRewrite/sql/catalogurlrewrite_setup/install-1.0.0.0.php
index 8d0157ef980..1f4e6d07e88 100644
--- a/app/code/Magento/CatalogUrlRewrite/sql/catalogurlrewrite_setup/install-1.0.0.0.php
+++ b/app/code/Magento/CatalogUrlRewrite/sql/catalogurlrewrite_setup/install-1.0.0.0.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* @var $installer \Magento\Framework\Module\Setup */
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 $installer->startSetup();
diff --git a/app/code/Magento/Centinel/composer.json b/app/code/Magento/Centinel/composer.json
index fed59975419..d5b7d880aa0 100644
--- a/app/code/Magento/Centinel/composer.json
+++ b/app/code/Magento/Centinel/composer.json
@@ -3,16 +3,16 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-checkout": "0.1.0-alpha102",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/module-sales": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-checkout": "0.1.0-alpha103",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/module-sales": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Checkout/Block/Onepage/Review.php b/app/code/Magento/Checkout/Block/Onepage/Review.php
index 946a9662220..55939e2d8b9 100644
--- a/app/code/Magento/Checkout/Block/Onepage/Review.php
+++ b/app/code/Magento/Checkout/Block/Onepage/Review.php
@@ -23,12 +23,7 @@
  */
 namespace Magento\Checkout\Block\Onepage;
 
-/**
- * One page checkout status
- *
- * @author      Magento Core Team <core@magentocommerce.com>
- */
-class Review extends \Magento\Checkout\Block\Onepage\AbstractOnepage
+class Review extends AbstractOnepage
 {
     /**
      * @return void
@@ -40,7 +35,5 @@ class Review extends \Magento\Checkout\Block\Onepage\AbstractOnepage
             array('label' => __('Order Review'), 'is_show' => $this->isShow())
         );
         parent::_construct();
-
-        $this->getQuote()->collectTotals()->save();
     }
 }
diff --git a/app/code/Magento/Checkout/Model/Cart/Access/ReadPlugin.php b/app/code/Magento/Checkout/Model/Cart/Access/ReadPlugin.php
index ec5eacba063..bcde4d6496e 100644
--- a/app/code/Magento/Checkout/Model/Cart/Access/ReadPlugin.php
+++ b/app/code/Magento/Checkout/Model/Cart/Access/ReadPlugin.php
@@ -25,7 +25,7 @@
 namespace Magento\Checkout\Model\Cart\Access;
 
 use Magento\Authorization\Model\UserContextInterface;
-use \Magento\Framework\Service\V1\Data\SearchCriteria;
+use \Magento\Framework\Api\SearchCriteria;
 use \Magento\Framework\Exception\AuthorizationException;
 
 class ReadPlugin
diff --git a/app/code/Magento/Checkout/Model/Type/Onepage.php b/app/code/Magento/Checkout/Model/Type/Onepage.php
index c9890bc9eec..8ffe5fbcac0 100644
--- a/app/code/Magento/Checkout/Model/Type/Onepage.php
+++ b/app/code/Magento/Checkout/Model/Type/Onepage.php
@@ -363,7 +363,7 @@ class Onepage
 
         $address = $this->getQuote()->getBillingAddress();
         $addressForm = $this->_formFactory->create(
-            \Magento\Customer\Service\V1\AddressMetadataServiceInterface::ENTITY_TYPE_ADDRESS,
+            \Magento\Customer\Api\AddressMetadataInterface::ENTITY_TYPE_ADDRESS,
             'customer_address_edit',
             array(),
             $this->_request->isAjax(),
@@ -512,7 +512,7 @@ class Onepage
         $quote = $this->getQuote();
         $isCustomerNew = !$quote->getCustomerId();
         $customer = $quote->getCustomerData();
-        $customerData = \Magento\Framework\Service\ExtensibleDataObjectConverter::toFlatArray($customer);
+        $customerData = \Magento\Framework\Api\ExtensibleDataObjectConverter::toFlatArray($customer);
 
         /** @var Form $customerForm */
         $customerForm = $this->_formFactory->create(
@@ -577,7 +577,7 @@ class Onepage
         $this->_objectCopyService->copyFieldsetToTarget(
             'customer_account',
             'to_quote',
-            \Magento\Framework\Service\ExtensibleDataObjectConverter::toFlatArray($customer),
+            \Magento\Framework\Api\ExtensibleDataObjectConverter::toFlatArray($customer),
             $quote
         );
 
diff --git a/app/code/Magento/Checkout/Service/V1/Address/Converter.php b/app/code/Magento/Checkout/Service/V1/Address/Converter.php
index b1202eb98fe..45c849cbeaf 100644
--- a/app/code/Magento/Checkout/Service/V1/Address/Converter.php
+++ b/app/code/Magento/Checkout/Service/V1/Address/Converter.php
@@ -27,8 +27,8 @@ use Magento\Checkout\Service\V1\Data\Cart\Address;
 use Magento\Checkout\Service\V1\Data\Cart\AddressBuilder;
 use Magento\Checkout\Service\V1\Data\Cart\Address\Region;
 use Magento\Customer\Service\V1\CustomerMetadataServiceInterface;
-use Magento\Framework\Service\Data\AttributeValue;
-use Magento\Framework\Service\SimpleDataObjectConverter;
+use Magento\Framework\Api\AttributeValue;
+use Magento\Framework\Api\SimpleDataObjectConverter;
 
 /** Quote shipping address converter service. */
 class Converter
@@ -114,7 +114,7 @@ class Converter
 
         //set custom attributes
         $customAttributes = $dataObject->getCustomAttributes();
-        /** @var \Magento\Framework\Service\Data\AttributeValue $attributeData */
+        /** @var \Magento\Framework\Api\AttributeValue $attributeData */
         foreach ($customAttributes as $attributeData) {
             $address->setData($attributeData->getAttributeCode(), $attributeData->getValue());
         }
diff --git a/app/code/Magento/Checkout/Service/V1/Cart/ReadService.php b/app/code/Magento/Checkout/Service/V1/Cart/ReadService.php
index 3a5885f7cde..adfb0ceed57 100644
--- a/app/code/Magento/Checkout/Service/V1/Cart/ReadService.php
+++ b/app/code/Magento/Checkout/Service/V1/Cart/ReadService.php
@@ -23,13 +23,13 @@
  */
 namespace Magento\Checkout\Service\V1\Cart;
 
-use \Magento\Framework\Service\V1\Data\SearchCriteria;
+use \Magento\Framework\Api\SearchCriteria;
 use \Magento\Sales\Model\Quote;
 use \Magento\Sales\Model\QuoteRepository;
 use \Magento\Sales\Model\Resource\Quote\Collection as QuoteCollection;
 
 use \Magento\Framework\Exception\InputException;
-use \Magento\Framework\Service\V1\Data\Search\FilterGroup;
+use \Magento\Framework\Api\Search\FilterGroup;
 use \Magento\Checkout\Service\V1\Data;
 
 /** 
@@ -137,7 +137,7 @@ class ReadService implements ReadServiceInterface
     /**
      * {@inheritDoc}
      *
-     * @param \Magento\Framework\Service\V1\Data\SearchCriteria $searchCriteria The search criteria.
+     * @param \Magento\Framework\Api\SearchCriteria $searchCriteria The search criteria.
      * @return \Magento\Checkout\Service\V1\Data\CartSearchResults Cart search results object.
      */
     public function getCartList(SearchCriteria $searchCriteria)
diff --git a/app/code/Magento/Checkout/Service/V1/Cart/ReadServiceInterface.php b/app/code/Magento/Checkout/Service/V1/Cart/ReadServiceInterface.php
index 90ee6e54e6e..624b5769c57 100644
--- a/app/code/Magento/Checkout/Service/V1/Cart/ReadServiceInterface.php
+++ b/app/code/Magento/Checkout/Service/V1/Cart/ReadServiceInterface.php
@@ -23,7 +23,7 @@
  */
 namespace Magento\Checkout\Service\V1\Cart;
 
-use \Magento\Framework\Service\V1\Data\SearchCriteria;
+use \Magento\Framework\Api\SearchCriteria;
 
 /** 
  * Cart read service interface. 
@@ -51,7 +51,7 @@ interface ReadServiceInterface
     /**
      * Enables administrative users to list carts that match specified search criteria.
      *
-     * @param \Magento\Framework\Service\V1\Data\SearchCriteria $searchCriteria The search criteria.
+     * @param \Magento\Framework\Api\SearchCriteria $searchCriteria The search criteria.
      * @return \Magento\Checkout\Service\V1\Data\CartSearchResults Cart search results object.
      */
     public function getCartList(SearchCriteria $searchCriteria);
diff --git a/app/code/Magento/Checkout/Service/V1/Data/Cart.php b/app/code/Magento/Checkout/Service/V1/Data/Cart.php
index aac85942d9e..9a16c8b8cc5 100644
--- a/app/code/Magento/Checkout/Service/V1/Data/Cart.php
+++ b/app/code/Magento/Checkout/Service/V1/Data/Cart.php
@@ -28,7 +28,7 @@ namespace Magento\Checkout\Service\V1\Data;
  *
  * @codeCoverageIgnore
  */
-class Cart extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+class Cart extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     /**
      * Cart ID.
diff --git a/app/code/Magento/Checkout/Service/V1/Data/Cart/Address.php b/app/code/Magento/Checkout/Service/V1/Data/Cart/Address.php
index 682ff364d3c..852d9ced69c 100644
--- a/app/code/Magento/Checkout/Service/V1/Data/Cart/Address.php
+++ b/app/code/Magento/Checkout/Service/V1/Data/Cart/Address.php
@@ -28,7 +28,7 @@ namespace Magento\Checkout\Service\V1\Data\Cart;
  *
  * @codeCoverageIgnore
  */
-class Address extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+class Address extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     /**#@+
      * Constants defined for keys of array, makes typos less likely
diff --git a/app/code/Magento/Checkout/Service/V1/Data/Cart/Address/Region.php b/app/code/Magento/Checkout/Service/V1/Data/Cart/Address/Region.php
index 3f11e19f1bf..af4bd358773 100644
--- a/app/code/Magento/Checkout/Service/V1/Data/Cart/Address/Region.php
+++ b/app/code/Magento/Checkout/Service/V1/Data/Cart/Address/Region.php
@@ -26,7 +26,7 @@ namespace Magento\Checkout\Service\V1\Data\Cart\Address;
 /**
  * @codeCoverageIgnore
  */
-class Region extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+class Region extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     /**#@+
      * Array keys
diff --git a/app/code/Magento/Checkout/Service/V1/Data/Cart/AddressBuilder.php b/app/code/Magento/Checkout/Service/V1/Data/Cart/AddressBuilder.php
index 355d91d0964..59fe4b3af21 100644
--- a/app/code/Magento/Checkout/Service/V1/Data/Cart/AddressBuilder.php
+++ b/app/code/Magento/Checkout/Service/V1/Data/Cart/AddressBuilder.php
@@ -26,15 +26,15 @@ namespace Magento\Checkout\Service\V1\Data\Cart;
 use Magento\Checkout\Service\V1\Data\Cart\Address\Region;
 use Magento\Checkout\Service\V1\Data\Cart\Address\RegionBuilder;
 use Magento\Customer\Service\V1\CustomerMetadataServiceInterface;
-use Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder;
-use Magento\Framework\Service\Data\AttributeValueBuilder;
+use Magento\Framework\Api\ExtensibleObjectBuilder;
+use Magento\Framework\Api\AttributeValueBuilder;
 
 /**
  * Quote address data object builder
  *
  * @codeCoverageIgnore
  */
-class AddressBuilder extends AbstractExtensibleObjectBuilder
+class AddressBuilder extends ExtensibleObjectBuilder
 {
     /**
      * Region builder
@@ -44,20 +44,20 @@ class AddressBuilder extends AbstractExtensibleObjectBuilder
     protected $_regionBuilder;
 
     /**
-     * @param \Magento\Framework\Service\Data\ObjectFactory $objectFactory
+     * @param \Magento\Framework\Api\ObjectFactory $objectFactory
      * @param AttributeValueBuilder $valueBuilder
      * @param CustomerMetadataServiceInterface $metadataService
      * @param RegionBuilder $regionBuilder
      */
     public function __construct(
-        \Magento\Framework\Service\Data\ObjectFactory $objectFactory,
+        \Magento\Framework\Api\ObjectFactory $objectFactory,
         AttributeValueBuilder $valueBuilder,
         CustomerMetadataServiceInterface $metadataService,
         RegionBuilder $regionBuilder
     ) {
         parent::__construct($objectFactory, $valueBuilder, $metadataService);
         $this->_regionBuilder = $regionBuilder;
-        $this->_data[Address::KEY_REGION] = $regionBuilder->create();
+        $this->data[Address::KEY_REGION] = $regionBuilder->create();
     }
 
     /**
diff --git a/app/code/Magento/Checkout/Service/V1/Data/Cart/Coupon.php b/app/code/Magento/Checkout/Service/V1/Data/Cart/Coupon.php
index 5b4c401d48d..055cff682d9 100644
--- a/app/code/Magento/Checkout/Service/V1/Data/Cart/Coupon.php
+++ b/app/code/Magento/Checkout/Service/V1/Data/Cart/Coupon.php
@@ -28,7 +28,7 @@ namespace Magento\Checkout\Service\V1\Data\Cart;
  *
  * @codeCoverageIgnore
  */
-class Coupon extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+class Coupon extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     /**
      * Coupon code.
diff --git a/app/code/Magento/Checkout/Service/V1/Data/Cart/CouponBuilder.php b/app/code/Magento/Checkout/Service/V1/Data/Cart/CouponBuilder.php
index 01e18267be5..c9306c78c37 100644
--- a/app/code/Magento/Checkout/Service/V1/Data/Cart/CouponBuilder.php
+++ b/app/code/Magento/Checkout/Service/V1/Data/Cart/CouponBuilder.php
@@ -27,7 +27,7 @@ namespace Magento\Checkout\Service\V1\Data\Cart;
 /**
  * @codeCoverageIgnore
  */
-class CouponBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder
+class CouponBuilder extends \Magento\Framework\Api\ExtensibleObjectBuilder
 {
     /**
      * @param string $value
diff --git a/app/code/Magento/Checkout/Service/V1/Data/Cart/Currency.php b/app/code/Magento/Checkout/Service/V1/Data/Cart/Currency.php
index 9559c5a33b3..2e4725a0a73 100644
--- a/app/code/Magento/Checkout/Service/V1/Data/Cart/Currency.php
+++ b/app/code/Magento/Checkout/Service/V1/Data/Cart/Currency.php
@@ -28,7 +28,7 @@ namespace Magento\Checkout\Service\V1\Data\Cart;
  *
  * @codeCoverageIgnore
  */
-class Currency extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+class Currency extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     const GLOBAL_CURRENCY_CODE = 'global_currency_code';
 
diff --git a/app/code/Magento/Checkout/Service/V1/Data/Cart/Customer.php b/app/code/Magento/Checkout/Service/V1/Data/Cart/Customer.php
index 0a2357fec14..599ef2e87d4 100644
--- a/app/code/Magento/Checkout/Service/V1/Data/Cart/Customer.php
+++ b/app/code/Magento/Checkout/Service/V1/Data/Cart/Customer.php
@@ -28,7 +28,7 @@ namespace Magento\Checkout\Service\V1\Data\Cart;
  *
  * @codeCoverageIgnore
  */
-class Customer extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+class Customer extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     /**
      * Customer ID.
diff --git a/app/code/Magento/Checkout/Service/V1/Data/Cart/CustomerBuilder.php b/app/code/Magento/Checkout/Service/V1/Data/Cart/CustomerBuilder.php
index b8fe64c4743..6b989bfa0c7 100644
--- a/app/code/Magento/Checkout/Service/V1/Data/Cart/CustomerBuilder.php
+++ b/app/code/Magento/Checkout/Service/V1/Data/Cart/CustomerBuilder.php
@@ -28,7 +28,7 @@ namespace Magento\Checkout\Service\V1\Data\Cart;
  *
  * @codeCoverageIgnore
  */
-class CustomerBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder
+class CustomerBuilder extends \Magento\Framework\Api\ExtensibleObjectBuilder
 {
     /**
      * Set customer id
diff --git a/app/code/Magento/Checkout/Service/V1/Data/Cart/Item.php b/app/code/Magento/Checkout/Service/V1/Data/Cart/Item.php
index e74a7b4c5ee..4e6eb1768c1 100644
--- a/app/code/Magento/Checkout/Service/V1/Data/Cart/Item.php
+++ b/app/code/Magento/Checkout/Service/V1/Data/Cart/Item.php
@@ -29,7 +29,7 @@ namespace Magento\Checkout\Service\V1\Data\Cart;
  * 
  * @codeCoverageIgnore
  */
-class Item extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+class Item extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     /**
      * Item ID.
diff --git a/app/code/Magento/Checkout/Service/V1/Data/Cart/PaymentMethod.php b/app/code/Magento/Checkout/Service/V1/Data/Cart/PaymentMethod.php
index ea3eb475b8f..14ba6685731 100644
--- a/app/code/Magento/Checkout/Service/V1/Data/Cart/PaymentMethod.php
+++ b/app/code/Magento/Checkout/Service/V1/Data/Cart/PaymentMethod.php
@@ -27,7 +27,7 @@ namespace Magento\Checkout\Service\V1\Data\Cart;
 /**
  * @codeCoverageIgnore
  */
-class PaymentMethod extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+class PaymentMethod extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     /**
      * Payment method
diff --git a/app/code/Magento/Checkout/Service/V1/Data/Cart/ShippingMethod.php b/app/code/Magento/Checkout/Service/V1/Data/Cart/ShippingMethod.php
index 7975c482fe8..d3dab50fb8a 100644
--- a/app/code/Magento/Checkout/Service/V1/Data/Cart/ShippingMethod.php
+++ b/app/code/Magento/Checkout/Service/V1/Data/Cart/ShippingMethod.php
@@ -28,7 +28,7 @@ namespace Magento\Checkout\Service\V1\Data\Cart;
  *
  * @codeCoverageIgnore
  */
-class ShippingMethod extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+class ShippingMethod extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     /**
      * Shipping carrier code.
diff --git a/app/code/Magento/Checkout/Service/V1/Data/Cart/Totals.php b/app/code/Magento/Checkout/Service/V1/Data/Cart/Totals.php
index d7cb780dcb7..e56a5dc6fe4 100644
--- a/app/code/Magento/Checkout/Service/V1/Data/Cart/Totals.php
+++ b/app/code/Magento/Checkout/Service/V1/Data/Cart/Totals.php
@@ -28,7 +28,7 @@ namespace Magento\Checkout\Service\V1\Data\Cart;
  *
  * @codeCoverageIgnore
  */
-class Totals extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+class Totals extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     /* TOTALS */
     const GRAND_TOTAL = 'grand_total';
diff --git a/app/code/Magento/Checkout/Service/V1/Data/Cart/Totals/Item.php b/app/code/Magento/Checkout/Service/V1/Data/Cart/Totals/Item.php
index d81f628688a..9f7c98cf7f4 100644
--- a/app/code/Magento/Checkout/Service/V1/Data/Cart/Totals/Item.php
+++ b/app/code/Magento/Checkout/Service/V1/Data/Cart/Totals/Item.php
@@ -28,7 +28,7 @@ namespace Magento\Checkout\Service\V1\Data\Cart\Totals;
  *
  * @codeCoverageIgnore
  */
-class Item extends \Magento\Framework\Service\Data\AbstractSimpleObject
+class Item extends \Magento\Framework\Api\AbstractSimpleObject
 {
     /**
      * Price.
diff --git a/app/code/Magento/Checkout/Service/V1/Data/CartBuilder.php b/app/code/Magento/Checkout/Service/V1/Data/CartBuilder.php
index 12c768395d5..d9a81cd262d 100644
--- a/app/code/Magento/Checkout/Service/V1/Data/CartBuilder.php
+++ b/app/code/Magento/Checkout/Service/V1/Data/CartBuilder.php
@@ -30,7 +30,7 @@ use \Magento\Checkout\Service\V1\Data\Cart\Currency;
  *
  * @codeCoverageIgnore
  */
-class CartBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder
+class CartBuilder extends \Magento\Framework\Api\ExtensibleObjectBuilder
 {
     /**
      * Cart/quote id
diff --git a/app/code/Magento/Checkout/Service/V1/Data/CartSearchResults.php b/app/code/Magento/Checkout/Service/V1/Data/CartSearchResults.php
index 19442cccb8b..cd9738416b1 100644
--- a/app/code/Magento/Checkout/Service/V1/Data/CartSearchResults.php
+++ b/app/code/Magento/Checkout/Service/V1/Data/CartSearchResults.php
@@ -26,7 +26,7 @@ namespace Magento\Checkout\Service\V1\Data;
 /**
  * @codeCoverageIgnore
  */
-class CartSearchResults extends \Magento\Framework\Service\V1\Data\SearchResults
+class CartSearchResults extends \Magento\Framework\Api\SearchResults
 {
     /**
      * Get items
diff --git a/app/code/Magento/Checkout/Service/V1/Data/CartSearchResultsBuilder.php b/app/code/Magento/Checkout/Service/V1/Data/CartSearchResultsBuilder.php
index 8fb67d717cb..31005a60fa8 100644
--- a/app/code/Magento/Checkout/Service/V1/Data/CartSearchResultsBuilder.php
+++ b/app/code/Magento/Checkout/Service/V1/Data/CartSearchResultsBuilder.php
@@ -23,11 +23,11 @@
  */
 namespace Magento\Checkout\Service\V1\Data;
 
-use Magento\Framework\Service\Data\AttributeValueBuilder;
-use Magento\Framework\Service\Data\MetadataServiceInterface;
-use Magento\Framework\Service\Data\ObjectFactory;
-use Magento\Framework\Service\V1\Data\AbstractSearchResultsBuilder;
-use Magento\Framework\Service\V1\Data\SearchCriteriaBuilder;
+use Magento\Framework\Api\AttributeValueBuilder;
+use Magento\Framework\Api\MetadataServiceInterface;
+use Magento\Framework\Api\ObjectFactory;
+use Magento\Framework\Api\AbstractSearchResultsBuilder;
+use Magento\Framework\Api\SearchCriteriaBuilder;
 
 /**
  * @codeCoverageIgnore
diff --git a/app/code/Magento/Checkout/Service/V1/Data/PaymentMethod.php b/app/code/Magento/Checkout/Service/V1/Data/PaymentMethod.php
index 2e7b6271c2c..6e446caa3a3 100644
--- a/app/code/Magento/Checkout/Service/V1/Data/PaymentMethod.php
+++ b/app/code/Magento/Checkout/Service/V1/Data/PaymentMethod.php
@@ -27,7 +27,7 @@ namespace Magento\Checkout\Service\V1\Data;
 /**
  * @codeCoverageIgnore
  */
-class PaymentMethod extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+class PaymentMethod extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     const CODE = 'code';
 
diff --git a/app/code/Magento/Checkout/composer.json b/app/code/Magento/Checkout/composer.json
index c038af054af..01939494ff4 100644
--- a/app/code/Magento/Checkout/composer.json
+++ b/app/code/Magento/Checkout/composer.json
@@ -3,27 +3,27 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-sales": "0.1.0-alpha102",
-        "magento/module-authorization": "0.1.0-alpha102",
-        "magento/module-catalog-inventory": "0.1.0-alpha102",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-customer": "0.1.0-alpha102",
-        "magento/module-catalog": "0.1.0-alpha102",
-        "magento/module-payment": "0.1.0-alpha102",
-        "magento/module-tax": "0.1.0-alpha102",
-        "magento/module-directory": "0.1.0-alpha102",
-        "magento/module-eav": "0.1.0-alpha102",
-        "magento/module-gift-message": "0.1.0-alpha102",
-        "magento/module-wishlist": "0.1.0-alpha102",
-        "magento/module-page-cache": "0.1.0-alpha102",
-        "magento/module-theme": "0.1.0-alpha102",
-        "magento/module-msrp": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-sales": "0.1.0-alpha103",
+        "magento/module-authorization": "0.1.0-alpha103",
+        "magento/module-catalog-inventory": "0.1.0-alpha103",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-customer": "0.1.0-alpha103",
+        "magento/module-catalog": "0.1.0-alpha103",
+        "magento/module-payment": "0.1.0-alpha103",
+        "magento/module-tax": "0.1.0-alpha103",
+        "magento/module-directory": "0.1.0-alpha103",
+        "magento/module-eav": "0.1.0-alpha103",
+        "magento/module-gift-message": "0.1.0-alpha103",
+        "magento/module-wishlist": "0.1.0-alpha103",
+        "magento/module-page-cache": "0.1.0-alpha103",
+        "magento/module-theme": "0.1.0-alpha103",
+        "magento/module-msrp": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Checkout/view/frontend/layout/checkout_cart_index.xml b/app/code/Magento/Checkout/view/frontend/layout/checkout_cart_index.xml
index 083c782c598..6a42d6bd3f9 100644
--- a/app/code/Magento/Checkout/view/frontend/layout/checkout_cart_index.xml
+++ b/app/code/Magento/Checkout/view/frontend/layout/checkout_cart_index.xml
@@ -29,7 +29,7 @@
     <body>
         <referenceContainer name="content">
             <block class="Magento\Checkout\Block\Cart" name="checkout.cart" template="cart.phtml">
-                <container name="checkout.cart.items" label="invisible" as="with-items">
+                <container name="checkout.cart.items" as="with-items">
                     <container name="checkout.cart.form.before" as="form_before" label="Shopping Cart Items Before" htmlTag="div" htmlClass="rewards" before="checkout.cart.form"/>
                     <block class="Magento\Checkout\Block\Cart" name="checkout.cart.form" as="cart-items" template="cart/form.phtml">
                         <block class="Magento\Framework\View\Element\RendererList" name="checkout.cart.item.renderers" as="renderer.list"/>
@@ -52,7 +52,7 @@
                         </arguments>
                     </block>
                 </container>
-                <container name="checkout.cart.noitems" label="invisible" as="no-items">
+                <container name="checkout.cart.noitems" as="no-items">
                     <block class="Magento\Checkout\Block\Cart" name="checkout.cart.empty" before="-" template="cart/noItems.phtml"/>
                     <container name="checkout.cart.empty.widget" as="checkout_cart_empty_widget" label="Empty Shopping Cart Content Before"/>
                 </container>
diff --git a/app/code/Magento/Checkout/view/frontend/layout/checkout_onepage_additional.xml b/app/code/Magento/Checkout/view/frontend/layout/checkout_onepage_additional.xml
deleted file mode 100644
index ee4479cd775..00000000000
--- a/app/code/Magento/Checkout/view/frontend/layout/checkout_onepage_additional.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0"?>
-<!--
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Academic Free License (AFL 3.0)
- * that is bundled with this package in the file LICENSE_AFL.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/afl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
- */
--->
-<layout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/layout_generic.xsd">
-    <container name="root">
-        <block class="Magento\Checkout\Block\Onepage\Shipping\Method\Additional" name="shipping_method_additional" template="onepage/shipping_method/additional.phtml">
-            <arguments>
-                <argument name="dontDisplayContainer" xsi:type="string">1</argument>
-            </arguments>
-        </block>
-    </container>
-</layout>
diff --git a/app/code/Magento/Checkout/view/frontend/layout/checkout_onepage_index.xml b/app/code/Magento/Checkout/view/frontend/layout/checkout_onepage_index.xml
index 936a2a43768..20a65fd854b 100644
--- a/app/code/Magento/Checkout/view/frontend/layout/checkout_onepage_index.xml
+++ b/app/code/Magento/Checkout/view/frontend/layout/checkout_onepage_index.xml
@@ -31,10 +31,10 @@
             <block class="Magento\Checkout\Block\Onepage" name="checkout.onepage" template="onepage.phtml">
                 <block class="Magento\Checkout\Block\Onepage\Login" name="checkout.onepage.login" as="login" template="onepage/login.phtml" cacheable="false">
                     <container name="checkout.onepage.login.before" as="login_before" label="Login/Registration Before" htmlTag="div"/>
-                    <container name="form.login.additional.info" label="invisible" as="form_additional_info"/>
+                    <container name="form.login.additional.info" as="form_additional_info"/>
                 </block>
                 <block class="Magento\Checkout\Block\Onepage\Billing" name="checkout.onepage.billing" as="billing" template="onepage/billing.phtml" cacheable="false">
-                    <container name="form.billing.additional.info" label="invisible" as="form_additional_info"/>
+                    <container name="form.billing.additional.info" as="form_additional_info"/>
                 </block>
                 <block class="Magento\Checkout\Block\Onepage\Shipping" name="checkout.onepage.shipping" as="shipping" template="onepage/shipping.phtml" cacheable="false"/>
                 <block class="Magento\Checkout\Block\Onepage\Shipping\Method" name="checkout.onepage.shipping_method" as="shipping_method" template="onepage/shipping_method.phtml" cacheable="false">
diff --git a/app/code/Magento/Checkout/view/frontend/layout/checkout_onepage_shippingmethod.xml b/app/code/Magento/Checkout/view/frontend/layout/checkout_onepage_shippingmethod.xml
index 7ce8ecf569a..a75305dba02 100644
--- a/app/code/Magento/Checkout/view/frontend/layout/checkout_onepage_shippingmethod.xml
+++ b/app/code/Magento/Checkout/view/frontend/layout/checkout_onepage_shippingmethod.xml
@@ -26,6 +26,8 @@
 <layout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/layout_generic.xsd">
     <update handle="checkout_shipping_price_renderer" />
     <container name="root">
-        <block class="Magento\Checkout\Block\Onepage\Shipping\Method\Available" name="shipping_method" template="onepage/shipping_method/available.phtml"/>
+        <block class="Magento\Checkout\Block\Onepage\Shipping\Method\Available" name="checkout.onepage.shipping_method.available" as="available" template="onepage/shipping_method/available.phtml"/>
+        <block class="Magento\Checkout\Block\Onepage\Shipping\Method\Additional" name="checkout.onepage.shipping_method.additional" as="additional" template="onepage/shipping_method/additional.phtml">
+        </block>
     </container>
 </layout>
diff --git a/app/code/Magento/Checkout/view/frontend/templates/cart/coupon.phtml b/app/code/Magento/Checkout/view/frontend/templates/cart/coupon.phtml
index 4108d230e9a..c2a0c751552 100644
--- a/app/code/Magento/Checkout/view/frontend/templates/cart/coupon.phtml
+++ b/app/code/Magento/Checkout/view/frontend/templates/cart/coupon.phtml
@@ -32,7 +32,7 @@
                                                "removeCouponSelector": "#remove-coupon",
                                                "applyButton": "button.action.apply",
                                                "cancelButton": "button.action.cancel"}}'>
-            <fieldset class="fieldset coupon<?php strlen($this->getCouponCode()) ? ' applied' : ''?>">
+            <div class="fieldset coupon<?php strlen($this->getCouponCode()) ? ' applied' : ''?>">
                 <input type="hidden" name="remove" id="remove-coupon" value="0" />
                 <div class="field">
                     <label for="coupon_code" class="label"><span><?php echo __('Enter your code') ?></span></label>
@@ -53,7 +53,7 @@
                         </div>
                     <?php endif; ?>
                 </div>
-            </fieldset>
+            </div>
         </form>
     </div>
 </div>
diff --git a/app/code/Magento/Checkout/view/frontend/templates/cart/form.phtml b/app/code/Magento/Checkout/view/frontend/templates/cart/form.phtml
index 21fcc1ef1ae..9017984d190 100644
--- a/app/code/Magento/Checkout/view/frontend/templates/cart/form.phtml
+++ b/app/code/Magento/Checkout/view/frontend/templates/cart/form.phtml
@@ -30,7 +30,7 @@
           method="post"
           id="form-validate"
           data-mage-init='{"validation":{}}'
-          class="form cart">
+          class="form form-cart">
     <?php echo $this->getBlockHtml('formkey'); ?>
     <div class="cart table-wrapper<?php echo $mergedCells == 2 ? ' detailed' : ''; ?>">
         <table id="shopping-cart-table"
diff --git a/app/code/Magento/Checkout/view/frontend/templates/cart/item/default.phtml b/app/code/Magento/Checkout/view/frontend/templates/cart/item/default.phtml
index 58ac39ba67e..ef28a027644 100644
--- a/app/code/Magento/Checkout/view/frontend/templates/cart/item/default.phtml
+++ b/app/code/Magento/Checkout/view/frontend/templates/cart/item/default.phtml
@@ -34,14 +34,14 @@ $canApplyMsrp = $helper->isShowBeforeOrderConfirm($product) && $helper->isMinima
 <tbody class="cart item">
 <tr class="item info item-info">
     <td data-th="<?php echo $this->escapeHtml(__('Item')); ?>" class="col item">
-        <?php if ($this->hasProductUrl()):?><a href="<?php echo $this->getProductUrl() ?>" title="<?php echo $this->escapeHtml($this->getProductName()) ?>" class="product photo product-item-photo">
+        <?php if ($this->hasProductUrl()):?><a href="<?php echo $this->getProductUrl() ?>" title="<?php echo $this->escapeHtml($this->getProductName()) ?>" class="product-item-photo">
             <?php else:?>
-            <span class="product photo product-item-photo">
+            <span class="product-item-photo">
         <?php endif;?>
         <?php echo $this->getLayout()->createBlock('Magento\Catalog\Block\Product\Image')->init($this->getProductForThumbnail(), 'cart_page_product_thumbnail')->toHtml(); ?>
             <?php if ($this->hasProductUrl()):?></a><?php else: ?></span><?php endif; ?>
-        <div class="product details product-item-details">
-            <strong class="product name product-item-name">
+        <div class="product-item-details">
+            <strong class="product-item-name">
                 <?php if ($this->hasProductUrl()):?>
                     <a href="<?php echo $this->getProductUrl() ?>"><?php echo $this->escapeHtml($this->getProductName()) ?></a>
                 <?php else: ?>
@@ -93,16 +93,19 @@ $canApplyMsrp = $helper->isShowBeforeOrderConfirm($product) && $helper->isMinima
             <?php $cols++; ?>
         </td>
     <?php else: ?>
-
-    <td class="col price" data-th="<?php echo $this->escapeHtml(__('Price')); ?>">
-        <?php echo $this->getUnitPriceHtml($_item); ?>
-        <?php $cols++; ?>
-    </td>
-
+        <td class="col price" data-th="<?php echo $this->escapeHtml(__('Price')); ?>">
+            <?php echo $this->getUnitPriceHtml($_item); ?>
+            <?php $cols++; ?>
+        </td>
     <?php endif; ?>
     <td class="col qty" data-th="<?php echo $this->escapeHtml(__('Qty')); ?>">
-        <div class="control qty">
-            <input name="cart[<?php echo $_item->getId() ?>][qty]" value="<?php echo $this->getQty() ?>" type="number" size="4" title="<?php echo __('Qty') ?>" class="input-text qty" maxlength="12" data-validate="{required:true,'validate-greater-than-zero':true}"/>
+        <div class="field qty">
+            <label class="label" for="cart-<?php echo $_item->getId() ?>-qty">
+                <span><?php echo __('Qty') ?></span>
+            </label>
+            <div class="control qty">
+                <input id="cart-<?php echo $_item->getId() ?>-qty" name="cart[<?php echo $_item->getId() ?>][qty]" value="<?php echo $this->getQty() ?>" type="number" size="4" title="<?php echo __('Qty') ?>" class="input-text qty" maxlength="12" data-validate="{required:true,'validate-greater-than-zero':true}"/>
+            </div>
         </div>
         <?php $cols++; ?>
     </td>
@@ -115,7 +118,6 @@ $canApplyMsrp = $helper->isShowBeforeOrderConfirm($product) && $helper->isMinima
         <?php endif; ?>
         <?php $cols++; ?>
     </td>
-
 </tr>
 <tr class="item actions item-actions">
     <td colspan="<?php echo $cols;?>">
diff --git a/app/code/Magento/Checkout/view/frontend/templates/cart/shipping.phtml b/app/code/Magento/Checkout/view/frontend/templates/cart/shipping.phtml
index 028bc8203bd..3974da46e91 100644
--- a/app/code/Magento/Checkout/view/frontend/templates/cart/shipping.phtml
+++ b/app/code/Magento/Checkout/view/frontend/templates/cart/shipping.phtml
@@ -28,6 +28,9 @@
     <div class="content" data-role="content">
     <form action="<?php echo $this->getUrl('checkout/cart/estimatePost') ?>" method="post" id="shipping-zip-form">
         <fieldset class="fieldset estimate">
+            <legend class="legend">
+                <span><?php echo __('Estimate Shipping and Tax') ?></span>
+            </legend><br>
             <p class="field note"><?php echo __('Enter your destination to get a shipping estimate.') ?></p>
             <div class="field country">
                 <label for="country" class="label"><span><?php echo __('Country') ?></span></label>
diff --git a/app/code/Magento/Checkout/view/frontend/templates/cart/sidebar/default.phtml b/app/code/Magento/Checkout/view/frontend/templates/cart/sidebar/default.phtml
index f12f42d4dd7..5950d2c845c 100644
--- a/app/code/Magento/Checkout/view/frontend/templates/cart/sidebar/default.phtml
+++ b/app/code/Magento/Checkout/view/frontend/templates/cart/sidebar/default.phtml
@@ -34,17 +34,17 @@ $imageBlock = $this->getLayout()->createBlock('Magento\Catalog\Block\Product\Ima
 <li class="item product product-item">
     <div class="product">
         <?php if ($this->hasProductUrl()): ?>
-            <a href="<?php echo $this->getProductUrl()?>" title="<?php echo $this->escapeHtml($this->getProductName()) ?>" class="product photo product-item-photo">
+            <a href="<?php echo $this->getProductUrl()?>" title="<?php echo $this->escapeHtml($this->getProductName()) ?>" class="product-item-photo">
                 <?php echo $imageBlock->init($this->getProductForThumbnail(), 'mini_cart_product_thumbnail')->toHtml() ?>
             </a>
         <?php else: ?>
-            <span class="product photo product-item-photo">
+            <span class="product-item-photo">
                 <?php echo $imageBlock->init($this->getProductForThumbnail(), 'mini_cart_product_thumbnail')->toHtml() ?>
             </span>
         <?php endif; ?>
 
-        <div class="product details product-item-details">
-            <strong class="product name product-item-name">
+        <div class="product-item-details">
+            <strong class="product-item-name">
                 <?php if ($this->hasProductUrl()): ?>
                     <a href="<?php echo $this->getProductUrl() ?>"><?php echo $this->escapeHtml($this->getProductName()) ?></a>
                 <?php else: ?>
diff --git a/app/code/Magento/Checkout/view/frontend/templates/onepage/billing.phtml b/app/code/Magento/Checkout/view/frontend/templates/onepage/billing.phtml
index 93c9ac461ab..11e3832c172 100644
--- a/app/code/Magento/Checkout/view/frontend/templates/onepage/billing.phtml
+++ b/app/code/Magento/Checkout/view/frontend/templates/onepage/billing.phtml
@@ -70,7 +70,10 @@
                 <div class="nested">
                     <?php $_streetValidationClass = trim(str_replace('required-entry', '', $_streetValidationClass)); ?>
                     <?php for ($_i = 2, $_n = $this->helper('Magento\Customer\Helper\Address')->getStreetLines(); $_i <= $_n; $_i++): ?>
-                        <div class="field additional no-label">
+                        <div class="field additional">
+                            <label class="label" for="billing:street<?php echo $_i ?>">
+                                <span><?php echo __('Address') ?></span>
+                            </label>
                             <div class="control">
                                 <input type="text" title="<?php echo __('Street Address %1', $_i) ?>" name="billing[street][]" id="billing:street<?php echo $_i ?>" value="<?php echo $this->escapeHtml($this->getAddress()->getStreet($_i)) ?>" class="input-text <?php echo $_streetValidationClass ?>" />
                             </div>
diff --git a/app/code/Magento/Checkout/view/frontend/templates/onepage/payment.phtml b/app/code/Magento/Checkout/view/frontend/templates/onepage/payment.phtml
index fef6185f701..da49c3d13d9 100644
--- a/app/code/Magento/Checkout/view/frontend/templates/onepage/payment.phtml
+++ b/app/code/Magento/Checkout/view/frontend/templates/onepage/payment.phtml
@@ -25,6 +25,9 @@
 <form id="co-payment-form" class="form payments">
     <?php echo $this->getBlockHtml('formkey') ?>
     <fieldset class="fieldset">
+        <legend class="legend payments-title">
+            <span><?php echo __('Payment Information') ?></span>
+        </legend><br>
         <?php echo $this->getChildChildHtml('methods_additional') ?>
         <div id="checkout-payment-method-load" class="opc-payment"></div>
     </fieldset>
diff --git a/app/code/Magento/Checkout/view/frontend/templates/onepage/shipping.phtml b/app/code/Magento/Checkout/view/frontend/templates/onepage/shipping.phtml
index 7b69b6a9070..88f992aa513 100644
--- a/app/code/Magento/Checkout/view/frontend/templates/onepage/shipping.phtml
+++ b/app/code/Magento/Checkout/view/frontend/templates/onepage/shipping.phtml
@@ -55,7 +55,10 @@
                 <div class="nested">
                 <?php $_streetValidationClass = trim(str_replace('required-entry', '', $_streetValidationClass)); ?>
                 <?php for ($_i = 2, $_n = $this->helper('Magento\Customer\Helper\Address')->getStreetLines(); $_i <= $_n; $_i++): ?>
-                     <div class="field additional no-label">
+                     <div class="field additional">
+                         <label class="label" for="shipping:street<?php echo $_i ?>">
+                             <span><?php echo __('Street Address %1', $_i) ?></span>
+                         </label>
                         <div class="control">
                             <input type="text" title="<?php echo __('Street Address %1', $_i) ?>" name="shipping[street][]" id="shipping:street<?php echo $_i ?>" value="<?php echo $this->escapeHtml($this->getAddress()->getStreet($_i)) ?>" class="input-text <?php echo $_streetValidationClass ?>" />
                         </div>
diff --git a/app/code/Magento/Checkout/view/frontend/templates/onepage/shipping_method/available.phtml b/app/code/Magento/Checkout/view/frontend/templates/onepage/shipping_method/available.phtml
index 1a861ebcd02..f32842278bf 100644
--- a/app/code/Magento/Checkout/view/frontend/templates/onepage/shipping_method/available.phtml
+++ b/app/code/Magento/Checkout/view/frontend/templates/onepage/shipping_method/available.phtml
@@ -32,24 +32,29 @@
     <?php $_sole = count($_shippingRateGroups) == 1; foreach ($_shippingRateGroups as $code => $_rates): ?>
         <dt class="item-title <?php echo $code ?>"><?php echo $this->escapeHtml($this->getCarrierName($code)) ?></dt>
         <dd class="item-content <?php echo $code ?>">
-            <?php $_sole = $_sole && count($_rates) == 1; foreach ($_rates as $_rate): ?>
-                <?php $shippingCodePrice[] = '"'.$_rate->getCode().'":'.(float)$_rate->getPrice(); ?>
-                <div class="field choice">
-                   <?php if ($_rate->getErrorMessage()): ?>
-                    <div class="message error"><div><?php echo $this->escapeHtml($_rate->getErrorMessage()) ?></div></div>
-                   <?php else: ?>
-                        <?php if ($_sole) : ?>
-                        <span class="no-display"><input name="shipping_method" type="radio" value="<?php echo $_rate->getCode() ?>" id="s_method_<?php echo $_rate->getCode() ?>" checked="checked" /></span>
-                        <?php else: ?>
-                        <input name="shipping_method" type="radio" value="<?php echo $_rate->getCode() ?>" id="s_method_<?php echo $_rate->getCode() ?>"<?php if($_rate->getCode()===$this->getAddressShippingMethod()) echo ' checked="checked"' ?> class="radio"/>
-                        <?php endif; ?>
-                        <label class="label" for="s_method_<?php echo $_rate->getCode() ?>"><span><?php echo $this->escapeHtml($_rate->getMethodTitle()) ?>
-                        <?php echo $this->getShippingPriceHtml($_rate); ?>
-                        </span>
-                        </label>
-                   <?php endif ?>
-                </div>
-            <?php endforeach; ?>
+            <fieldset class="fieldset">
+                <legend class="legend"><span><?php echo $this->escapeHtml($this->getCarrierName($code)) ?></span></legend><br>
+                <?php $_sole = $_sole && count($_rates) == 1; foreach ($_rates as $_rate): ?>
+                    <?php $shippingCodePrice[] = '"'.$_rate->getCode().'":'.(float)$_rate->getPrice(); ?>
+                    <div class="field choice">
+                       <?php if ($_rate->getErrorMessage()): ?>
+                        <div class="message error"><div><?php echo $this->escapeHtml($_rate->getErrorMessage()) ?></div></div>
+                       <?php else: ?>
+                            <?php if ($_sole) : ?>
+                            <span class="no-display"><input name="shipping_method" type="radio" value="<?php echo $_rate->getCode() ?>" id="s_method_<?php echo $_rate->getCode() ?>" checked="checked" /></span>
+                            <?php else: ?>
+                            <div class="control">
+                                <input name="shipping_method" type="radio" value="<?php echo $_rate->getCode() ?>" id="s_method_<?php echo $_rate->getCode() ?>"<?php if($_rate->getCode()===$this->getAddressShippingMethod()) echo ' checked="checked"' ?> class="radio"/>
+                            </div>
+                            <?php endif; ?>
+                            <label class="label" for="s_method_<?php echo $_rate->getCode() ?>"><span><?php echo $this->escapeHtml($_rate->getMethodTitle()) ?>
+                            <?php echo $this->getShippingPriceHtml($_rate); ?>
+                            </span>
+                            </label>
+                       <?php endif ?>
+                    </div>
+                <?php endforeach; ?>
+            </fieldset>
         </dd>
     <?php endforeach; ?>
     </dl>
diff --git a/app/code/Magento/CheckoutAgreements/Service/V1/Data/Agreement.php b/app/code/Magento/CheckoutAgreements/Service/V1/Data/Agreement.php
index 882a708d045..dd781490c06 100644
--- a/app/code/Magento/CheckoutAgreements/Service/V1/Data/Agreement.php
+++ b/app/code/Magento/CheckoutAgreements/Service/V1/Data/Agreement.php
@@ -23,7 +23,7 @@
  */
 namespace Magento\CheckoutAgreements\Service\V1\Data;
 
-use \Magento\Framework\Service\Data\AbstractExtensibleObject;
+use \Magento\Framework\Api\AbstractExtensibleObject;
 
 /**
  * Checkout agreement data object.
diff --git a/app/code/Magento/CheckoutAgreements/Service/V1/Data/AgreementBuilder.php b/app/code/Magento/CheckoutAgreements/Service/V1/Data/AgreementBuilder.php
index eee32b41b62..00bdee4d36d 100644
--- a/app/code/Magento/CheckoutAgreements/Service/V1/Data/AgreementBuilder.php
+++ b/app/code/Magento/CheckoutAgreements/Service/V1/Data/AgreementBuilder.php
@@ -23,14 +23,14 @@
  */
 namespace Magento\CheckoutAgreements\Service\V1\Data;
 
-use \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder;
+use \Magento\Framework\Api\ExtensibleObjectBuilder;
 
 /**
  * Checkout agreement data object builder.
- * 
+ *
  * @codeCoverageIgnore
  */
-class AgreementBuilder extends AbstractExtensibleObjectBuilder
+class AgreementBuilder extends ExtensibleObjectBuilder
 {
     /**
      * Sets the agreement ID.
diff --git a/app/code/Magento/CheckoutAgreements/composer.json b/app/code/Magento/CheckoutAgreements/composer.json
index fc699375f82..555ebf8e905 100644
--- a/app/code/Magento/CheckoutAgreements/composer.json
+++ b/app/code/Magento/CheckoutAgreements/composer.json
@@ -3,14 +3,14 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-checkout": "0.1.0-alpha102",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-checkout": "0.1.0-alpha103",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/CheckoutAgreements/sql/checkoutagreements_setup/install-1.0.0.0.php b/app/code/Magento/CheckoutAgreements/sql/checkoutagreements_setup/install-1.0.0.0.php
index bc275852858..bc43c5591f2 100644
--- a/app/code/Magento/CheckoutAgreements/sql/checkoutagreements_setup/install-1.0.0.0.php
+++ b/app/code/Magento/CheckoutAgreements/sql/checkoutagreements_setup/install-1.0.0.0.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* @var $installer \Magento\Framework\Module\Setup */
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 $installer->startSetup();
 
diff --git a/app/code/Magento/Cms/composer.json b/app/code/Magento/Cms/composer.json
index 62fdca41185..14df5fea779 100644
--- a/app/code/Magento/Cms/composer.json
+++ b/app/code/Magento/Cms/composer.json
@@ -3,19 +3,19 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-theme": "0.1.0-alpha102",
-        "magento/module-widget": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/module-catalog": "0.1.0-alpha102",
-        "magento/module-email": "0.1.0-alpha102",
-        "magento/module-ui": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-theme": "0.1.0-alpha103",
+        "magento/module-widget": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/module-catalog": "0.1.0-alpha103",
+        "magento/module-email": "0.1.0-alpha103",
+        "magento/module-ui": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Cms/data/cms_setup/data-install-1.6.0.0.php b/app/code/Magento/Cms/data/cms_setup/data-install-1.6.0.0.php
index 43ac20c90e8..702eae96f71 100644
--- a/app/code/Magento/Cms/data/cms_setup/data-install-1.6.0.0.php
+++ b/app/code/Magento/Cms/data/cms_setup/data-install-1.6.0.0.php
@@ -21,7 +21,8 @@
  * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
-/** @var \Magento\Cms\Model\Resource\Setup $this */
+
+/** @var $this \Magento\Cms\Model\Resource\Setup */
 
 $cmsPages = array(
     array(
diff --git a/app/code/Magento/Cms/data/cms_setup/data-upgrade-1.6.0.0-1.6.0.1.php b/app/code/Magento/Cms/data/cms_setup/data-upgrade-1.6.0.0-1.6.0.1.php
index ce4239a0094..3b0a93354a5 100644
--- a/app/code/Magento/Cms/data/cms_setup/data-upgrade-1.6.0.0-1.6.0.1.php
+++ b/app/code/Magento/Cms/data/cms_setup/data-upgrade-1.6.0.0-1.6.0.1.php
@@ -21,7 +21,8 @@
  * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
-/** @var \Magento\Cms\Model\Resource\Setup $this */
+
+/** @var $this \Magento\Cms\Model\Resource\Setup */
 
 $pageContent = <<<EOD
 <p style="color: #ff0000; font-weight: bold; font-size: 13px">
@@ -241,7 +242,6 @@ $privacyPageData = array(
     'sort_order' => 0
 );
 
-/** @var \Magento\Cms\Model\Page $page */
 $this->createPage()->setData($privacyPageData)->save();
 
 $footerLinksBlock = $this->createPage()->load('footer_links', 'identifier');
diff --git a/app/code/Magento/Cms/data/cms_setup/data-upgrade-1.6.0.2-1.6.0.3.php b/app/code/Magento/Cms/data/cms_setup/data-upgrade-1.6.0.2-1.6.0.3.php
index aebce89d2c0..16f789dd549 100644
--- a/app/code/Magento/Cms/data/cms_setup/data-upgrade-1.6.0.2-1.6.0.3.php
+++ b/app/code/Magento/Cms/data/cms_setup/data-upgrade-1.6.0.2-1.6.0.3.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/** @var $installer \Magento\Framework\Module\Setup\Migration */
+/** @var $this \Magento\Cms\Model\Resource\Setup */
 $installer = $this->createMigrationSetup();
 $installer->startSetup();
 
diff --git a/app/code/Magento/Cms/data/cms_setup/data-upgrade-1.6.0.3-2.0.0.0.php b/app/code/Magento/Cms/data/cms_setup/data-upgrade-1.6.0.3-2.0.0.0.php
index fc2116aae29..a78b2d03128 100644
--- a/app/code/Magento/Cms/data/cms_setup/data-upgrade-1.6.0.3-2.0.0.0.php
+++ b/app/code/Magento/Cms/data/cms_setup/data-upgrade-1.6.0.3-2.0.0.0.php
@@ -21,7 +21,8 @@
  * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
-/** @var \Magento\Cms\Model\Resource\Setup $this */
+
+/** @var $this \Magento\Cms\Model\Resource\Setup */
 
 $cookieRestriction = $this->createPage()->load('privacy-policy-cookie-restriction-mode', 'identifier');
 
diff --git a/app/code/Magento/Cms/sql/cms_setup/install-1.6.0.0.php b/app/code/Magento/Cms/sql/cms_setup/install-1.6.0.0.php
index 8024899394f..c4d26938488 100644
--- a/app/code/Magento/Cms/sql/cms_setup/install-1.6.0.0.php
+++ b/app/code/Magento/Cms/sql/cms_setup/install-1.6.0.0.php
@@ -22,8 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-
-/* @var $installer \Magento\Framework\Module\Setup */
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 $installer->startSetup();
diff --git a/app/code/Magento/Cms/sql/cms_setup/upgrade-2.0.0.0-2.0.0.1.php b/app/code/Magento/Cms/sql/cms_setup/upgrade-2.0.0.0-2.0.0.1.php
index fd2d029f7e8..f3d0f01278c 100644
--- a/app/code/Magento/Cms/sql/cms_setup/upgrade-2.0.0.0-2.0.0.1.php
+++ b/app/code/Magento/Cms/sql/cms_setup/upgrade-2.0.0.0-2.0.0.1.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* @var $installer \Magento\Framework\Module\Setup */
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 $installer->startSetup();
diff --git a/app/code/Magento/CmsUrlRewrite/composer.json b/app/code/Magento/CmsUrlRewrite/composer.json
index fd023b12220..7e9b6101b4f 100644
--- a/app/code/Magento/CmsUrlRewrite/composer.json
+++ b/app/code/Magento/CmsUrlRewrite/composer.json
@@ -3,13 +3,13 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-cms": "0.1.0-alpha102",
-        "magento/module-url-rewrite": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-cms": "0.1.0-alpha103",
+        "magento/module-url-rewrite": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/ConfigurableImportExport/composer.json b/app/code/Magento/ConfigurableImportExport/composer.json
index 43d2b8fd4b2..40df384e749 100644
--- a/app/code/Magento/ConfigurableImportExport/composer.json
+++ b/app/code/Magento/ConfigurableImportExport/composer.json
@@ -3,16 +3,16 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-catalog": "0.1.0-alpha102",
-        "magento/module-catalog-import-export": "0.1.0-alpha102",
-        "magento/module-eav": "0.1.0-alpha102",
-        "magento/module-import-export": "0.1.0-alpha102",
-        "magento/module-configurable-product": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-catalog": "0.1.0-alpha103",
+        "magento/module-catalog-import-export": "0.1.0-alpha103",
+        "magento/module-eav": "0.1.0-alpha103",
+        "magento/module-import-export": "0.1.0-alpha103",
+        "magento/module-configurable-product": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/ConfigurableProduct/Service/V1/Data/Option.php b/app/code/Magento/ConfigurableProduct/Service/V1/Data/Option.php
index 58d539d08ec..ed6f6726e17 100644
--- a/app/code/Magento/ConfigurableProduct/Service/V1/Data/Option.php
+++ b/app/code/Magento/ConfigurableProduct/Service/V1/Data/Option.php
@@ -26,7 +26,7 @@ namespace Magento\ConfigurableProduct\Service\V1\Data;
 /**
  * @codeCoverageIgnore
  */
-class Option extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+class Option extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     /**#@+
      * Constants defined for keys of array
diff --git a/app/code/Magento/ConfigurableProduct/Service/V1/Data/Option/Value.php b/app/code/Magento/ConfigurableProduct/Service/V1/Data/Option/Value.php
index 5b3e04b675d..ff77c205112 100644
--- a/app/code/Magento/ConfigurableProduct/Service/V1/Data/Option/Value.php
+++ b/app/code/Magento/ConfigurableProduct/Service/V1/Data/Option/Value.php
@@ -26,7 +26,7 @@ namespace Magento\ConfigurableProduct\Service\V1\Data\Option;
 /**
  * @codeCoverageIgnore
  */
-class Value extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+class Value extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     const INDEX = 'index';
     const PRICE = 'price';
diff --git a/app/code/Magento/ConfigurableProduct/Service/V1/Data/Option/ValueBuilder.php b/app/code/Magento/ConfigurableProduct/Service/V1/Data/Option/ValueBuilder.php
index 112195fe807..af13854801d 100644
--- a/app/code/Magento/ConfigurableProduct/Service/V1/Data/Option/ValueBuilder.php
+++ b/app/code/Magento/ConfigurableProduct/Service/V1/Data/Option/ValueBuilder.php
@@ -23,16 +23,16 @@
  */
 namespace Magento\ConfigurableProduct\Service\V1\Data\Option;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder;
+use Magento\Framework\Api\ExtensibleObjectBuilder;
 
 /**
  * @codeCoverageIgnore
  */
-class ValueBuilder extends AbstractExtensibleObjectBuilder
+class ValueBuilder extends ExtensibleObjectBuilder
 {
     /**
-     * @param float $value 
-     * @return self 
+     * @param float $value
+     * @return self
      */
     public function setPrice($value)
     {
@@ -40,8 +40,8 @@ class ValueBuilder extends AbstractExtensibleObjectBuilder
     }
 
     /**
-     * @param int $value 
-     * @return self 
+     * @param int $value
+     * @return self
      */
     public function setPercent($value)
     {
diff --git a/app/code/Magento/ConfigurableProduct/Service/V1/Data/OptionBuilder.php b/app/code/Magento/ConfigurableProduct/Service/V1/Data/OptionBuilder.php
index f74e0785f70..e0f03514a01 100644
--- a/app/code/Magento/ConfigurableProduct/Service/V1/Data/OptionBuilder.php
+++ b/app/code/Magento/ConfigurableProduct/Service/V1/Data/OptionBuilder.php
@@ -26,7 +26,7 @@ namespace Magento\ConfigurableProduct\Service\V1\Data;
 /**
  * @codeCoverageIgnore
  */
-class OptionBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder
+class OptionBuilder extends \Magento\Framework\Api\ExtensibleObjectBuilder
 {
     /**
      * @param int $value
@@ -65,8 +65,8 @@ class OptionBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleOb
     }
 
     /**
-     * @param bool $value 
-     * @return self 
+     * @param bool $value
+     * @return self
      */
     public function setType($value)
     {
diff --git a/app/code/Magento/ConfigurableProduct/composer.json b/app/code/Magento/ConfigurableProduct/composer.json
index fe5dafeb368..1a43a63ebcb 100644
--- a/app/code/Magento/ConfigurableProduct/composer.json
+++ b/app/code/Magento/ConfigurableProduct/composer.json
@@ -3,23 +3,23 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-catalog": "0.1.0-alpha102",
-        "magento/module-catalog-inventory": "0.1.0-alpha102",
-        "magento/module-sales": "0.1.0-alpha102",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-checkout": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/module-eav": "0.1.0-alpha102",
-        "magento/module-customer": "0.1.0-alpha102",
-        "magento/module-catalog-rule": "0.1.0-alpha102",
-        "magento/module-directory": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
-        "magento/module-webapi": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-catalog": "0.1.0-alpha103",
+        "magento/module-catalog-inventory": "0.1.0-alpha103",
+        "magento/module-sales": "0.1.0-alpha103",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-checkout": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/module-eav": "0.1.0-alpha103",
+        "magento/module-customer": "0.1.0-alpha103",
+        "magento/module-catalog-rule": "0.1.0-alpha103",
+        "magento/module-directory": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
+        "magento/module-webapi": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/ConfigurableProduct/data/configurableproduct_setup/data-install-1.0.0.0.php b/app/code/Magento/ConfigurableProduct/data/configurableproduct_setup/data-install-1.0.0.0.php
index 3a082776544..b8795ac4ac6 100644
--- a/app/code/Magento/ConfigurableProduct/data/configurableproduct_setup/data-install-1.0.0.0.php
+++ b/app/code/Magento/ConfigurableProduct/data/configurableproduct_setup/data-install-1.0.0.0.php
@@ -21,6 +21,7 @@
  * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
+
 /** @var $installer \Magento\Catalog\Model\Resource\Setup */
 $installer = $this;
 
diff --git a/app/code/Magento/ConfigurableProduct/sql/configurableproduct_setup/install-1.0.0.0.php b/app/code/Magento/ConfigurableProduct/sql/configurableproduct_setup/install-1.0.0.0.php
index 16fbce94190..85125ed2ef1 100644
--- a/app/code/Magento/ConfigurableProduct/sql/configurableproduct_setup/install-1.0.0.0.php
+++ b/app/code/Magento/ConfigurableProduct/sql/configurableproduct_setup/install-1.0.0.0.php
@@ -23,8 +23,8 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
-/* @var $installer \Magento\Catalog\Model\Resource\Setup */
 
 $installer->startSetup();
 
diff --git a/app/code/Magento/Contact/composer.json b/app/code/Magento/Contact/composer.json
index 8495841bb87..ea086566758 100644
--- a/app/code/Magento/Contact/composer.json
+++ b/app/code/Magento/Contact/composer.json
@@ -3,15 +3,15 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-customer": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/module-cms": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-customer": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/module-cms": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Core/composer.json b/app/code/Magento/Core/composer.json
index e145c2943ff..b32e8bdd5a9 100644
--- a/app/code/Magento/Core/composer.json
+++ b/app/code/Magento/Core/composer.json
@@ -3,18 +3,18 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/module-cron": "0.1.0-alpha102",
-        "magento/module-theme": "0.1.0-alpha102",
-        "magento/module-eav": "0.1.0-alpha102",
-        "magento/module-page-cache": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/module-cron": "0.1.0-alpha103",
+        "magento/module-theme": "0.1.0-alpha103",
+        "magento/module-eav": "0.1.0-alpha103",
+        "magento/module-page-cache": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "lib-libxml": "*",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Core/data/core_setup/data-upgrade-1.6.0.12-1.6.0.13.php b/app/code/Magento/Core/data/core_setup/data-upgrade-1.6.0.12-1.6.0.13.php
index 1655e11fc2a..96ae466cd1a 100644
--- a/app/code/Magento/Core/data/core_setup/data-upgrade-1.6.0.12-1.6.0.13.php
+++ b/app/code/Magento/Core/data/core_setup/data-upgrade-1.6.0.12-1.6.0.13.php
@@ -22,11 +22,11 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
+/** @var $this \Magento\Core\Model\Resource\Setup */
 $fileCollection = $this->createThemeFactory();
 $fileCollection->addDefaultPattern('*');
 $fileCollection->setItemObjectClass('Magento\Core\Model\Theme\Data');
 
-/** @var $themeDbCollection \Magento\Core\Model\Resource\Theme\Collection */
 $themeDbCollection = $this->createThemeResourceFactory();
 $themeDbCollection->setItemObjectClass('Magento\Core\Model\Theme\Data');
 
diff --git a/app/code/Magento/Core/data/core_setup/data-upgrade-1.6.0.2-1.6.0.3.php b/app/code/Magento/Core/data/core_setup/data-upgrade-1.6.0.2-1.6.0.3.php
index e5f9d26debf..ef8b1a2e051 100644
--- a/app/code/Magento/Core/data/core_setup/data-upgrade-1.6.0.2-1.6.0.3.php
+++ b/app/code/Magento/Core/data/core_setup/data-upgrade-1.6.0.2-1.6.0.3.php
@@ -22,7 +22,7 @@
  * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* @var $installer \Magento\Framework\Module\Setup */
+/* @var $installer \Magento\Core\Model\Resource\Setup */
 $installer = $this;
 $connection = $installer->getConnection();
 $connection->update(
diff --git a/app/code/Magento/Core/data/core_setup/data-upgrade-1.6.0.3-1.6.0.4.php b/app/code/Magento/Core/data/core_setup/data-upgrade-1.6.0.3-1.6.0.4.php
index 5a1e1516d49..66ea8928b31 100644
--- a/app/code/Magento/Core/data/core_setup/data-upgrade-1.6.0.3-1.6.0.4.php
+++ b/app/code/Magento/Core/data/core_setup/data-upgrade-1.6.0.3-1.6.0.4.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/** @var $installer \Magento\Framework\Module\Setup\Migration */
+/** @var $this \Magento\Core\Model\Resource\Setup */
 $installer = $this->createMigrationSetup();
 $installer->startSetup();
 
diff --git a/app/code/Magento/Core/data/core_setup/data-upgrade-1.6.0.4-1.6.0.5.php b/app/code/Magento/Core/data/core_setup/data-upgrade-1.6.0.4-1.6.0.5.php
index 0e03bc5a296..c740802c293 100644
--- a/app/code/Magento/Core/data/core_setup/data-upgrade-1.6.0.4-1.6.0.5.php
+++ b/app/code/Magento/Core/data/core_setup/data-upgrade-1.6.0.4-1.6.0.5.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/** @var $installer \Magento\Framework\Module\Setup */
+/** @var $installer \Magento\Core\Model\Resource\Setup */
 $installer = $this;
 $installer->startSetup();
 
diff --git a/app/code/Magento/Core/data/core_setup/data-upgrade-1.6.0.5-1.6.0.6.php b/app/code/Magento/Core/data/core_setup/data-upgrade-1.6.0.5-1.6.0.6.php
index 9b9903ae248..88558b9b195 100644
--- a/app/code/Magento/Core/data/core_setup/data-upgrade-1.6.0.5-1.6.0.6.php
+++ b/app/code/Magento/Core/data/core_setup/data-upgrade-1.6.0.5-1.6.0.6.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/** @var $installer \Magento\Framework\Module\Setup */
+/** @var $installer \Magento\Core\Model\Resource\Setup */
 $installer = $this;
 $installer->startSetup();
 
diff --git a/app/code/Magento/Core/etc/di.xml b/app/code/Magento/Core/etc/di.xml
index b19ce4ecde7..6b0cccecec7 100644
--- a/app/code/Magento/Core/etc/di.xml
+++ b/app/code/Magento/Core/etc/di.xml
@@ -77,13 +77,16 @@
     <preference for="Magento\Framework\Stdlib\DateTime\TimezoneInterface" type="Magento\Framework\Stdlib\DateTime\Timezone" />
     <preference for="Magento\Framework\Stdlib\DateTime\DateInterface" type="Magento\Framework\Stdlib\DateTime\Date" />
     <preference for="Magento\Framework\Less\PreProcessor\ErrorHandlerInterface" type="Magento\Framework\Less\PreProcessor\ErrorHandler" />
-    <preference for="Magento\Framework\Module\ResourceInterface" type="Magento\Install\Model\Resource\Resource" />
+    <preference for="Magento\Framework\Module\ResourceInterface" type="Magento\Framework\Module\Resource" />
     <preference for="Magento\Framework\App\Config\Resource\ConfigInterface" type="Magento\Core\Model\Resource\Config" />
     <preference for="Magento\Framework\App\DesignInterface" type="Magento\Core\Model\Design" />
     <preference for="Magento\Framework\Pricing\Amount\AmountInterface" type="Magento\Framework\Pricing\Amount\Base" />
     <preference for="Magento\Framework\Stdlib\CookieManager" type="Magento\Framework\Stdlib\Cookie\PhpCookieManager" />
     <preference for="Magento\Framework\View\Page\FaviconInterface" type="Magento\Theme\Model\Favicon\Favicon" />
-    <preference for="Magento\Framework\Api\Data\AttributeInterface" type="Magento\Framework\Service\Data\AttributeValue" />
+    <preference for="Magento\Framework\Api\SearchResultsInterface" type="Magento\Framework\Api\SearchResults" />
+    <preference for="Magento\Framework\Api\SearchCriteriaInterface" type="Magento\Framework\Api\SearchCriteria" />
+    <preference for="Magento\Framework\Api\AttributeInterface" type="Magento\Framework\Api\AttributeValue" />
+    <preference for="Magento\Framework\View\Design\Theme\ListInterface" type="Magento\Core\Model\Theme\Collection" />
     <type name="Magento\Framework\App\DefaultPath\DefaultPath">
         <arguments>
             <argument name="parts" xsi:type="array">
@@ -421,7 +424,6 @@
             <argument name="themes" xsi:type="array">
                 <item name="frontend" xsi:type="string">Magento/blank</item>
                 <item name="adminhtml" xsi:type="string">Magento/backend</item>
-                <item name="install" xsi:type="string">Magento/basic</item>
             </argument>
         </arguments>
     </type>
diff --git a/app/code/Magento/Core/sql/core_setup/install-1.6.0.0.php b/app/code/Magento/Core/sql/core_setup/install-1.6.0.0.php
index f9acae362c9..af689c75402 100644
--- a/app/code/Magento/Core/sql/core_setup/install-1.6.0.0.php
+++ b/app/code/Magento/Core/sql/core_setup/install-1.6.0.0.php
@@ -22,8 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-
-/* @var $installer \Magento\Framework\Module\Setup */
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 $installer->startSetup();
diff --git a/app/code/Magento/Core/sql/core_setup/upgrade-1.6.0.1-1.6.0.2.php b/app/code/Magento/Core/sql/core_setup/upgrade-1.6.0.1-1.6.0.2.php
index bd1fd912915..bb72a231241 100644
--- a/app/code/Magento/Core/sql/core_setup/upgrade-1.6.0.1-1.6.0.2.php
+++ b/app/code/Magento/Core/sql/core_setup/upgrade-1.6.0.1-1.6.0.2.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* @var $installer \Magento\Framework\Module\Setup */
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 $installer->startSetup();
diff --git a/app/code/Magento/Core/sql/core_setup/upgrade-1.6.0.10-1.6.0.11.php b/app/code/Magento/Core/sql/core_setup/upgrade-1.6.0.10-1.6.0.11.php
index 2b7dfd23093..7d510332e79 100644
--- a/app/code/Magento/Core/sql/core_setup/upgrade-1.6.0.10-1.6.0.11.php
+++ b/app/code/Magento/Core/sql/core_setup/upgrade-1.6.0.10-1.6.0.11.php
@@ -22,7 +22,7 @@
  * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* @var $installer \Magento\Framework\Module\Setup */
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 $installer->startSetup();
diff --git a/app/code/Magento/Core/sql/core_setup/upgrade-1.6.0.11-1.6.0.12.php b/app/code/Magento/Core/sql/core_setup/upgrade-1.6.0.11-1.6.0.12.php
index ad640dfd353..0282a04b3f7 100644
--- a/app/code/Magento/Core/sql/core_setup/upgrade-1.6.0.11-1.6.0.12.php
+++ b/app/code/Magento/Core/sql/core_setup/upgrade-1.6.0.11-1.6.0.12.php
@@ -22,7 +22,7 @@
  * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* @var $installer \Magento\Framework\Module\Setup */
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 $installer->startSetup();
diff --git a/app/code/Magento/Core/sql/core_setup/upgrade-1.6.0.12-1.6.0.13.php b/app/code/Magento/Core/sql/core_setup/upgrade-1.6.0.12-1.6.0.13.php
index ca1a5499a03..0b1df3e2eea 100644
--- a/app/code/Magento/Core/sql/core_setup/upgrade-1.6.0.12-1.6.0.13.php
+++ b/app/code/Magento/Core/sql/core_setup/upgrade-1.6.0.12-1.6.0.13.php
@@ -22,7 +22,7 @@
  * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* @var $installer \Magento\Framework\Module\Setup */
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 $installer->startSetup();
 
diff --git a/app/code/Magento/Core/sql/core_setup/upgrade-1.6.0.13-1.6.0.14.php b/app/code/Magento/Core/sql/core_setup/upgrade-1.6.0.13-1.6.0.14.php
index 107cbdcee47..5d086f014cf 100644
--- a/app/code/Magento/Core/sql/core_setup/upgrade-1.6.0.13-1.6.0.14.php
+++ b/app/code/Magento/Core/sql/core_setup/upgrade-1.6.0.13-1.6.0.14.php
@@ -22,6 +22,6 @@
  * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* @var $this \Magento\Framework\Module\Setup */
+/* @var $this \Magento\Setup\Module\SetupModule */
 $connection = $this->getConnection();
 $connection->dropTable('core_theme_file_update');
diff --git a/app/code/Magento/Core/sql/core_setup/upgrade-1.6.0.14-1.6.0.15.php b/app/code/Magento/Core/sql/core_setup/upgrade-1.6.0.14-1.6.0.15.php
index 119f2a8b46d..ba6bb0a0384 100644
--- a/app/code/Magento/Core/sql/core_setup/upgrade-1.6.0.14-1.6.0.15.php
+++ b/app/code/Magento/Core/sql/core_setup/upgrade-1.6.0.14-1.6.0.15.php
@@ -22,7 +22,7 @@
  * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* @var $installer \Magento\Framework\Module\Setup */
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 $installer->startSetup();
diff --git a/app/code/Magento/Core/sql/core_setup/upgrade-1.6.0.2-1.6.0.3.php b/app/code/Magento/Core/sql/core_setup/upgrade-1.6.0.2-1.6.0.3.php
index 555b3bcd2b0..0abbdd3c6c3 100644
--- a/app/code/Magento/Core/sql/core_setup/upgrade-1.6.0.2-1.6.0.3.php
+++ b/app/code/Magento/Core/sql/core_setup/upgrade-1.6.0.2-1.6.0.3.php
@@ -22,7 +22,7 @@
  * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* @var $installer \Magento\Framework\Module\Setup */
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 $installer->startSetup();
diff --git a/app/code/Magento/Core/sql/core_setup/upgrade-1.6.0.3-1.6.0.4.php b/app/code/Magento/Core/sql/core_setup/upgrade-1.6.0.3-1.6.0.4.php
index eaae8cff7c7..7813b78306f 100644
--- a/app/code/Magento/Core/sql/core_setup/upgrade-1.6.0.3-1.6.0.4.php
+++ b/app/code/Magento/Core/sql/core_setup/upgrade-1.6.0.3-1.6.0.4.php
@@ -22,7 +22,7 @@
  * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* @var $installer \Magento\Framework\Module\Setup */
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 $installer->startSetup();
diff --git a/app/code/Magento/Core/sql/core_setup/upgrade-1.6.0.5-1.6.0.6.php b/app/code/Magento/Core/sql/core_setup/upgrade-1.6.0.5-1.6.0.6.php
index 7beb3848c09..5cfc71569d0 100644
--- a/app/code/Magento/Core/sql/core_setup/upgrade-1.6.0.5-1.6.0.6.php
+++ b/app/code/Magento/Core/sql/core_setup/upgrade-1.6.0.5-1.6.0.6.php
@@ -22,7 +22,7 @@
  * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* @var $installer \Magento\Framework\Module\Setup */
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 $installer->startSetup();
diff --git a/app/code/Magento/Core/sql/core_setup/upgrade-1.6.0.6-1.6.0.7.php b/app/code/Magento/Core/sql/core_setup/upgrade-1.6.0.6-1.6.0.7.php
index 8d7ad8c810f..3481b2f037f 100644
--- a/app/code/Magento/Core/sql/core_setup/upgrade-1.6.0.6-1.6.0.7.php
+++ b/app/code/Magento/Core/sql/core_setup/upgrade-1.6.0.6-1.6.0.7.php
@@ -22,7 +22,7 @@
  * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* @var $installer \Magento\Framework\Module\Setup */
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 $installer->startSetup();
diff --git a/app/code/Magento/Core/sql/core_setup/upgrade-1.6.0.7-1.6.0.8.php b/app/code/Magento/Core/sql/core_setup/upgrade-1.6.0.7-1.6.0.8.php
index 3359dfceff3..c3008afc905 100644
--- a/app/code/Magento/Core/sql/core_setup/upgrade-1.6.0.7-1.6.0.8.php
+++ b/app/code/Magento/Core/sql/core_setup/upgrade-1.6.0.7-1.6.0.8.php
@@ -22,7 +22,7 @@
  * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* @var $installer \Magento\Framework\Module\Setup */
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 $installer->startSetup();
diff --git a/app/code/Magento/Core/sql/core_setup/upgrade-1.6.0.8-1.6.0.9.php b/app/code/Magento/Core/sql/core_setup/upgrade-1.6.0.8-1.6.0.9.php
index f0b68ad1937..fda35b58a74 100644
--- a/app/code/Magento/Core/sql/core_setup/upgrade-1.6.0.8-1.6.0.9.php
+++ b/app/code/Magento/Core/sql/core_setup/upgrade-1.6.0.8-1.6.0.9.php
@@ -22,7 +22,7 @@
  * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* @var $installer \Magento\Framework\Module\Setup */
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 $installer->startSetup();
diff --git a/app/code/Magento/Core/sql/core_setup/upgrade-1.6.0.9-1.6.0.10.php b/app/code/Magento/Core/sql/core_setup/upgrade-1.6.0.9-1.6.0.10.php
index 6954a5cf376..cf4e7f9dde9 100644
--- a/app/code/Magento/Core/sql/core_setup/upgrade-1.6.0.9-1.6.0.10.php
+++ b/app/code/Magento/Core/sql/core_setup/upgrade-1.6.0.9-1.6.0.10.php
@@ -22,7 +22,7 @@
  * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* @var $installer \Magento\Framework\Module\Setup */
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 $installer->startSetup();
diff --git a/app/code/Magento/Core/view/adminhtml/web/prototype/magento.css b/app/code/Magento/Core/view/adminhtml/web/prototype/magento.css
index d4b0c94a76a..492526f8412 100644
--- a/app/code/Magento/Core/view/adminhtml/web/prototype/magento.css
+++ b/app/code/Magento/Core/view/adminhtml/web/prototype/magento.css
@@ -162,10 +162,6 @@
     padding: 6px 0 0;
 }
 
-.popup-window [id$="_focus_anchor"]:focus {
-    outline: none;
-}
-
 .popup-window .page-actions {
     padding: 0;
     position: absolute;
diff --git a/app/code/Magento/Core/view/frontend/web/prototype/magento.css b/app/code/Magento/Core/view/frontend/web/prototype/magento.css
index 97a1b34a5cc..9c649735b05 100644
--- a/app/code/Magento/Core/view/frontend/web/prototype/magento.css
+++ b/app/code/Magento/Core/view/frontend/web/prototype/magento.css
@@ -137,7 +137,6 @@
   padding: 9px 11px 9px;
   box-shadow: none;
   text-shadow: none;
-  outline: none;
   text-decoration: none;
 }
 
diff --git a/app/code/Magento/Cron/composer.json b/app/code/Magento/Cron/composer.json
index cbc749a5bf0..b5784bd3d38 100644
--- a/app/code/Magento/Cron/composer.json
+++ b/app/code/Magento/Cron/composer.json
@@ -3,13 +3,13 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Cron/sql/cron_setup/install-1.6.0.0.php b/app/code/Magento/Cron/sql/cron_setup/install-1.6.0.0.php
index 988e630aebd..a947772dc9d 100644
--- a/app/code/Magento/Cron/sql/cron_setup/install-1.6.0.0.php
+++ b/app/code/Magento/Cron/sql/cron_setup/install-1.6.0.0.php
@@ -22,9 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-
-/* @var $installer \Magento\Framework\Module\Setup */
-
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 $installer->startSetup();
diff --git a/app/code/Magento/CurrencySymbol/composer.json b/app/code/Magento/CurrencySymbol/composer.json
index 9d232c2af2a..3477e2ed64c 100644
--- a/app/code/Magento/CurrencySymbol/composer.json
+++ b/app/code/Magento/CurrencySymbol/composer.json
@@ -3,16 +3,16 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-page-cache": "0.1.0-alpha102",
-        "magento/module-directory": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-page-cache": "0.1.0-alpha103",
+        "magento/module-directory": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Customer/Api/AccountManagementInterface.php b/app/code/Magento/Customer/Api/AccountManagementInterface.php
index cff1135d78b..b32cb52ab15 100644
--- a/app/code/Magento/Customer/Api/AccountManagementInterface.php
+++ b/app/code/Magento/Customer/Api/AccountManagementInterface.php
@@ -30,18 +30,6 @@ namespace Magento\Customer\Api;
  */
 interface AccountManagementInterface
 {
-    const DEFAULT_PASSWORD_LENGTH = 6;
-
-    /**
-     * Constants for the type of new account email to be sent
-     */
-    const NEW_ACCOUNT_EMAIL_REGISTERED = 'registered';
-
-    /**
-     * Welcome email, when confirmation is enabled
-     */
-    const NEW_ACCOUNT_EMAIL_CONFIRMATION = 'confirmation';
-
     /**
      * Create customer account. Perform necessary business operations like sending email.
      *
@@ -51,7 +39,11 @@ interface AccountManagementInterface
      * @return \Magento\Customer\Api\Data\CustomerInterface
      * @throws \Magento\Framework\Exception\LocalizedException
      */
-    public function createAccount(\Magento\Customer\Api\Data\CustomerInterface $customer, $password, $redirectUrl = '');
+    public function createAccount(
+        \Magento\Customer\Api\Data\CustomerInterface $customer,
+        $password = null,
+        $redirectUrl = ''
+    );
 
     /**
      * Create customer account using provided hashed password. Should not be exposed as a webapi.
diff --git a/app/code/Magento/Customer/Api/AddressMetadataInterface.php b/app/code/Magento/Customer/Api/AddressMetadataInterface.php
index 92fbea73856..456ec308192 100644
--- a/app/code/Magento/Customer/Api/AddressMetadataInterface.php
+++ b/app/code/Magento/Customer/Api/AddressMetadataInterface.php
@@ -33,5 +33,5 @@ interface AddressMetadataInterface extends MetadataInterface
 
     const ENTITY_TYPE_ADDRESS = 'customer_address';
 
-    const DATA_INTERFACE_NAME = 'Magento\Customer\Api\Data\Address';
+    const DATA_INTERFACE_NAME = 'Magento\Customer\Api\Data\AddressInterface';
 }
diff --git a/app/code/Magento/Customer/Api/AddressRepositoryInterface.php b/app/code/Magento/Customer/Api/AddressRepositoryInterface.php
index f7a1e069815..655326a58de 100644
--- a/app/code/Magento/Customer/Api/AddressRepositoryInterface.php
+++ b/app/code/Magento/Customer/Api/AddressRepositoryInterface.php
@@ -50,11 +50,11 @@ interface AddressRepositoryInterface
     /**
      * Retrieve customers addresses matching the specified criteria.
      *
-     * @param \Magento\Framework\Api\Data\SearchCriteriaInterface $searchCriteria
+     * @param \Magento\Framework\Api\SearchCriteriaInterface $searchCriteria
      * @return \Magento\Customer\Api\Data\AddressSearchResultsInterface
      * @throws \Magento\Framework\Exception\LocalizedException
      */
-    public function getList(\Magento\Framework\Api\Data\SearchCriteriaInterface $searchCriteria);
+    public function getList(\Magento\Framework\Api\SearchCriteriaInterface $searchCriteria);
 
     /**
      * Delete customer address.
diff --git a/app/code/Magento/Customer/Api/CustomerMetadataInterface.php b/app/code/Magento/Customer/Api/CustomerMetadataInterface.php
index c7c2448567f..cc1466a2038 100644
--- a/app/code/Magento/Customer/Api/CustomerMetadataInterface.php
+++ b/app/code/Magento/Customer/Api/CustomerMetadataInterface.php
@@ -33,5 +33,5 @@ interface CustomerMetadataInterface extends MetadataInterface
 
     const ENTITY_TYPE_CUSTOMER = 'customer';
 
-    const DATA_INTERFACE_NAME = 'Magento\Customer\Api\Data\Customer';
+    const DATA_INTERFACE_NAME = 'Magento\Customer\Api\Data\CustomerInterface';
 }
diff --git a/app/code/Magento/Customer/Api/CustomerRepositoryInterface.php b/app/code/Magento/Customer/Api/CustomerRepositoryInterface.php
index cab779b8f69..b53f272b329 100644
--- a/app/code/Magento/Customer/Api/CustomerRepositoryInterface.php
+++ b/app/code/Magento/Customer/Api/CustomerRepositoryInterface.php
@@ -34,12 +34,13 @@ interface CustomerRepositoryInterface
      * Create customer.
      *
      * @param \Magento\Customer\Api\Data\CustomerInterface $customer
+     * @param string $passwordHash
      * @return \Magento\Customer\Api\Data\CustomerInterface
      * @throws \Magento\Framework\Exception\InputException If bad input is provided
      * @throws \Magento\Framework\Exception\State\InputMismatchException If the provided email is already used
      * @throws \Magento\Framework\Exception\LocalizedException
      */
-    public function save(\Magento\Customer\Api\Data\CustomerInterface $customer);
+    public function save(\Magento\Customer\Api\Data\CustomerInterface $customer, $passwordHash = null);
 
     /**
      * Retrieve customer.
@@ -47,19 +48,30 @@ interface CustomerRepositoryInterface
      * @param string $email
      * @param int|null $websiteId
      * @return \Magento\Customer\Api\Data\CustomerInterface
-     * @throws \Magento\Framework\Exception\NoSuchEntityException If customer with the specified ID does not exist.
+     * @throws \Magento\Framework\Exception\NoSuchEntityException If customer with the specified email does not exist.
      * @throws \Magento\Framework\Exception\LocalizedException
      */
     public function get($email, $websiteId = null);
 
+    /**
+     * Retrieve customer.
+     *
+     * @param int $customerId
+     * @param int|null $websiteId
+     * @return \Magento\Customer\Api\Data\CustomerInterface
+     * @throws \Magento\Framework\Exception\NoSuchEntityException If customer with the specified ID does not exist.
+     * @throws \Magento\Framework\Exception\LocalizedException
+     */
+    public function getById($customerId, $websiteId = null);
+
     /**
      * Retrieve customers which match a specified criteria.
      *
-     * @param \Magento\Framework\Api\Data\SearchCriteriaInterface $searchCriteria
+     * @param \Magento\Framework\Api\SearchCriteriaInterface $searchCriteria
      * @return \Magento\Customer\Api\Data\CustomerSearchResultsInterface
      * @throws \Magento\Framework\Exception\LocalizedException
      */
-    public function getList(\Magento\Framework\Api\Data\SearchCriteriaInterface $searchCriteria);
+    public function getList(\Magento\Framework\Api\SearchCriteriaInterface $searchCriteria);
 
     /**
      * Delete customer.
diff --git a/app/code/Magento/Customer/Api/Data/AddressInterface.php b/app/code/Magento/Customer/Api/Data/AddressInterface.php
index 5116c7a1a42..3e616dd30f4 100644
--- a/app/code/Magento/Customer/Api/Data/AddressInterface.php
+++ b/app/code/Magento/Customer/Api/Data/AddressInterface.php
@@ -25,13 +25,34 @@
 
 namespace Magento\Customer\Api\Data;
 
-use Magento\Framework\Api\Data\ExtensibleDataInterface;
+use Magento\Framework\Api\ExtensibleDataInterface;
 
 /**
  * Customer address interface.
  */
 interface AddressInterface extends ExtensibleDataInterface
 {
+    /**#@+
+     * Constants for keys of data array. Identical to the name of the getter in snake case
+     */
+    const ID = 'id';
+    const CUSTOMER_ID = 'customer_id';
+    const REGION = 'region';
+    const COUNTRY_ID = 'country_id';
+    const STREET = 'street';
+    const COMPANY = 'company';
+    const TELEPHONE = 'telephone';
+    const FAX = 'fax';
+    const POSTCODE = 'postcode';
+    const CITY = 'city';
+    const FIRSTNAME = 'firstname';
+    const LASTNAME = 'lastname';
+    const MIDDLENAME = 'middlename';
+    const PREFIX = 'prefix';
+    const SUFFIX = 'suffix';
+    const VAT_ID = 'vat_id';
+    /**#@-*/
+
     /**
      * Get ID
      *
@@ -54,9 +75,9 @@ interface AddressInterface extends ExtensibleDataInterface
     public function getRegion();
 
     /**
-     * Get country id
+     * Two-letter country code in ISO_3166-2 format
      *
-     * @return int|null
+     * @return string|null
      */
     public function getCountryId();
 
diff --git a/app/code/Magento/Customer/Api/Data/AddressSearchResultsInterface.php b/app/code/Magento/Customer/Api/Data/AddressSearchResultsInterface.php
index c73da297a2b..5dfb8dd4006 100644
--- a/app/code/Magento/Customer/Api/Data/AddressSearchResultsInterface.php
+++ b/app/code/Magento/Customer/Api/Data/AddressSearchResultsInterface.php
@@ -27,7 +27,7 @@ namespace Magento\Customer\Api\Data;
 /**
  * Interface for customer address search results.
  */
-interface AddressSearchResultsInterface extends \Magento\Framework\Api\Data\SearchResultsInterface
+interface AddressSearchResultsInterface extends \Magento\Framework\Api\SearchResultsInterface
 {
     /**
      * Get customer addresses list.
diff --git a/app/code/Magento/Customer/Api/Data/AttributeMetadataInterface.php b/app/code/Magento/Customer/Api/Data/AttributeMetadataInterface.php
index 76956a33f39..478b84718b7 100644
--- a/app/code/Magento/Customer/Api/Data/AttributeMetadataInterface.php
+++ b/app/code/Magento/Customer/Api/Data/AttributeMetadataInterface.php
@@ -29,6 +29,28 @@ namespace Magento\Customer\Api\Data;
  */
 interface AttributeMetadataInterface
 {
+    /**#@+
+     * Constants used as keys of data array
+     */
+    const ATTRIBUTE_CODE = 'attribute_code';
+    const FRONTEND_INPUT = 'frontend_input';
+    const INPUT_FILTER = 'input_filter';
+    const STORE_LABEL = 'store_label';
+    const VALIDATION_RULES = 'validation_rules';
+    const OPTIONS = 'options';
+    const VISIBLE = 'visible';
+    const REQUIRED = 'required';
+    const MULTILINE_COUNT = 'multiline_count';
+    const DATA_MODEL = 'data_model';
+    const USER_DEFINED = 'user_defined';
+    const FRONTEND_CLASS = 'frontend_class';
+    const SORT_ORDER = 'sort_order';
+    const FRONTEND_LABEL = 'frontend_label';
+    const SYSTEM = 'system';
+    const NOTE = 'note';
+    const BACKEND_TYPE = 'backend_type';
+    /**#@-*/
+
     /**
      * Retrieve code of the attribute.
      *
@@ -60,7 +82,7 @@ interface AttributeMetadataInterface
     /**
      * Retrieve validation rules.
      *
-     * @return \Magento\Customer\Service\V1\Data\Eav\ValidationRule[]
+     * @return \Magento\Customer\Api\Data\ValidationRuleInterface[]
      */
     public function getValidationRules();
 
@@ -95,7 +117,7 @@ interface AttributeMetadataInterface
     /**
      * Return options of the attribute (key => value pairs for select)
      *
-     * @return \Magento\Customer\Service\V1\Data\Eav\Option[]
+     * @return \Magento\Customer\Api\Data\OptionInterface[]
      */
     public function getOptions();
 
diff --git a/app/code/Magento/Customer/Api/Data/CustomerInterface.php b/app/code/Magento/Customer/Api/Data/CustomerInterface.php
index 68d6a863275..252363cf006 100644
--- a/app/code/Magento/Customer/Api/Data/CustomerInterface.php
+++ b/app/code/Magento/Customer/Api/Data/CustomerInterface.php
@@ -25,13 +25,37 @@
 
 namespace Magento\Customer\Api\Data;
 
-use Magento\Framework\Api\Data\ExtensibleDataInterface;
+use Magento\Framework\Api\ExtensibleDataInterface;
 
 /**
  * Customer interface.
  */
 interface CustomerInterface extends ExtensibleDataInterface
 {
+    /**#@+
+     * Constants defined for keys of the data array. Identical to the name of the getter in snake case
+     */
+    const ID = 'id';
+    const CONFIRMATION = 'confirmation';
+    const CREATED_AT = 'created_at';
+    const CREATED_IN = 'created_in';
+    const DOB = 'dob';
+    const EMAIL = 'email';
+    const FIRSTNAME = 'firstname';
+    const GENDER = 'gender';
+    const GROUP_ID = 'group_id';
+    const LASTNAME = 'lastname';
+    const MIDDLENAME = 'middlename';
+    const PREFIX = 'prefix';
+    const STORE_ID = 'store_id';
+    const SUFFIX = 'suffix';
+    const TAXVAT = 'taxvat';
+    const WEBSITE_ID = 'website_id';
+    const DEFAULT_BILLING = 'default_billing';
+    const DEFAULT_SHIPPING = 'default_shipping';
+    const KEY_ADDRESSES = 'addresses';
+    /**#@-*/
+
     /**
      * Get customer id
      *
diff --git a/app/code/Magento/Customer/Api/Data/CustomerSearchResultsInterface.php b/app/code/Magento/Customer/Api/Data/CustomerSearchResultsInterface.php
index 702c2bea45b..af463d4fba3 100644
--- a/app/code/Magento/Customer/Api/Data/CustomerSearchResultsInterface.php
+++ b/app/code/Magento/Customer/Api/Data/CustomerSearchResultsInterface.php
@@ -27,7 +27,7 @@ namespace Magento\Customer\Api\Data;
 /**
  * Interface for customer search results.
  */
-interface CustomerSearchResultsInterface extends \Magento\Framework\Api\Data\SearchResultsInterface
+interface CustomerSearchResultsInterface extends \Magento\Framework\Api\SearchResultsInterface
 {
     /**
      * Get customers list.
diff --git a/app/code/Magento/Customer/Api/Data/GroupInterface.php b/app/code/Magento/Customer/Api/Data/GroupInterface.php
index 901776333ba..b375e4c3000 100644
--- a/app/code/Magento/Customer/Api/Data/GroupInterface.php
+++ b/app/code/Magento/Customer/Api/Data/GroupInterface.php
@@ -25,17 +25,26 @@
 
 namespace Magento\Customer\Api\Data;
 
-use Magento\Framework\Api\Data\ExtensibleDataInterface;
+use Magento\Framework\Api\ExtensibleDataInterface;
 
 /**
  * Customer group interface.
  */
 interface GroupInterface extends ExtensibleDataInterface
 {
+    /**#@+
+     * Constants for keys of data array
+     */
+    const ID = 'id';
+    const CODE = 'code';
+    const TAX_CLASS_ID = 'tax_class_id';
+    const TAX_CLASS_NAME = 'tax_class_name';
+    /**#@-*/
+
     /**
      * Get id
      *
-     * @return int
+     * @return int|null
      */
     public function getId();
 
@@ -56,7 +65,7 @@ interface GroupInterface extends ExtensibleDataInterface
     /**
      * Get tax class name
      *
-     * @return string
+     * @return string|null
      */
     public function getTaxClassName();
 }
diff --git a/app/code/Magento/Customer/Api/Data/GroupSearchResultsInterface.php b/app/code/Magento/Customer/Api/Data/GroupSearchResultsInterface.php
index 61b28e75ef7..1aa2bfd8f5f 100644
--- a/app/code/Magento/Customer/Api/Data/GroupSearchResultsInterface.php
+++ b/app/code/Magento/Customer/Api/Data/GroupSearchResultsInterface.php
@@ -27,7 +27,7 @@ namespace Magento\Customer\Api\Data;
 /**
  * Interface for customer groups search results.
  */
-interface GroupSearchResultsInterface extends \Magento\Framework\Api\Data\SearchResultsInterface
+interface GroupSearchResultsInterface extends \Magento\Framework\Api\SearchResultsInterface
 {
     /**
      * Get customer groups list.
diff --git a/app/code/Magento/Customer/Api/Data/OptionInterface.php b/app/code/Magento/Customer/Api/Data/OptionInterface.php
new file mode 100644
index 00000000000..67e9c974423
--- /dev/null
+++ b/app/code/Magento/Customer/Api/Data/OptionInterface.php
@@ -0,0 +1,61 @@
+<?php
+/**
+ *
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Customer\Api\Data;
+
+/**
+ * Option interface.
+ */
+interface OptionInterface
+{
+    /**#@+
+     * Constants for keys of data array
+     */
+    const LABEL = 'label';
+    const VALUE = 'value';
+    const OPTIONS = 'options';
+    /**#@-*/
+
+    /**
+     * Get option label
+     *
+     * @return string
+     */
+    public function getLabel();
+
+    /**
+     * Get option value
+     *
+     * @return string|null
+     */
+    public function getValue();
+
+    /**
+     * Get nested options
+     *
+     * @return \Magento\Customer\Api\Data\OptionInterface[]|null
+     */
+    public function getOptions();
+}
diff --git a/app/code/Magento/Customer/Api/Data/RegionInterface.php b/app/code/Magento/Customer/Api/Data/RegionInterface.php
index ffcb8f27596..e4c1cee8c1b 100644
--- a/app/code/Magento/Customer/Api/Data/RegionInterface.php
+++ b/app/code/Magento/Customer/Api/Data/RegionInterface.php
@@ -24,13 +24,21 @@
  */
 namespace Magento\Customer\Api\Data;
 
-use Magento\Framework\Api\Data\ExtensibleDataInterface;
+use Magento\Framework\Api\ExtensibleDataInterface;
 
 /**
  * Customer address region interface.
  */
 interface RegionInterface extends ExtensibleDataInterface
 {
+    /**#@+
+     * Constants for keys of data array. Identical to the getters in snake case
+     */
+    const REGION_CODE = 'region_code';
+    const REGION = 'region';
+    const REGION_ID = 'region_id';
+    /**#@-*/
+
     /**
      * Get region code
      *
diff --git a/app/code/Magento/Customer/Api/Data/ValidationResultsInterface.php b/app/code/Magento/Customer/Api/Data/ValidationResultsInterface.php
index f8895e8d762..ce16a5c0695 100644
--- a/app/code/Magento/Customer/Api/Data/ValidationResultsInterface.php
+++ b/app/code/Magento/Customer/Api/Data/ValidationResultsInterface.php
@@ -30,6 +30,13 @@ namespace Magento\Customer\Api\Data;
  */
 interface ValidationResultsInterface
 {
+    /**#@+
+     * Constants for keys of data array
+     */
+    const VALID = 'valid';
+    const MESSAGES = 'messages';
+    /**#@-*/
+
     /**
      * Check if the provided data is valid.
      *
diff --git a/app/code/Magento/Install/Block/Db/Type/Mysql4.php b/app/code/Magento/Customer/Api/Data/ValidationRuleInterface.php
similarity index 69%
rename from app/code/Magento/Install/Block/Db/Type/Mysql4.php
rename to app/code/Magento/Customer/Api/Data/ValidationRuleInterface.php
index c3b57551aac..9cdd3574a79 100644
--- a/app/code/Magento/Install/Block/Db/Type/Mysql4.php
+++ b/app/code/Magento/Customer/Api/Data/ValidationRuleInterface.php
@@ -1,5 +1,6 @@
 <?php
 /**
+ *
  * Magento
  *
  * NOTICE OF LICENSE
@@ -22,19 +23,31 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
+namespace Magento\Customer\Api\Data;
+
 /**
- * Mysql4 config installation block
- *
- * @author      Magento Core Team <core@magentocommerce.com>
+ * Validation rule interface.
  */
-namespace Magento\Install\Block\Db\Type;
-
-class Mysql4 extends \Magento\Install\Block\Db\Type
+interface ValidationRuleInterface
 {
+    /**#@+
+     * Constants for keys of data array
+     */
+    const NAME = 'name';
+    const VALUE = 'value';
+    /**#@-*/
+
+    /**
+     * Get validation rule name
+     *
+     * @return string
+     */
+    public function getName();
+
     /**
-     * Db title
+     * Get validation rule value
      *
-     * @var string
+     * @return string
      */
-    protected $_title = 'MySQL';
+    public function getValue();
 }
diff --git a/app/code/Magento/Customer/Api/GroupManagementInterface.php b/app/code/Magento/Customer/Api/GroupManagementInterface.php
index a8a36ac8bab..cb2e4a32092 100644
--- a/app/code/Magento/Customer/Api/GroupManagementInterface.php
+++ b/app/code/Magento/Customer/Api/GroupManagementInterface.php
@@ -32,12 +32,12 @@ interface GroupManagementInterface
     /**
      * Check if customer group can be deleted.
      *
-     * @param int $groupId
+     * @param int $id
      * @return bool
      * @throws \Magento\Framework\Exception\NoSuchEntityException If group is not found
      * @throws \Magento\Framework\Exception\LocalizedException
      */
-    public function isReadonly($groupId);
+    public function isReadonly($id);
 
     /**
      * Get default customer group.
diff --git a/app/code/Magento/Customer/Api/GroupRepositoryInterface.php b/app/code/Magento/Customer/Api/GroupRepositoryInterface.php
index a89bd29c2fb..e1209277374 100644
--- a/app/code/Magento/Customer/Api/GroupRepositoryInterface.php
+++ b/app/code/Magento/Customer/Api/GroupRepositoryInterface.php
@@ -46,12 +46,12 @@ interface GroupRepositoryInterface
     /**
      * Get customer group by group ID.
      *
-     * @param int $groupId
+     * @param int $id
      * @return \Magento\Customer\Api\Data\GroupInterface
      * @throws \Magento\Framework\Exception\NoSuchEntityException If $groupId is not found
      * @throws \Magento\Framework\Exception\LocalizedException
      */
-    public function get($groupId);
+    public function get($id);
 
     /**
      * Retrieve customer groups.
@@ -59,11 +59,11 @@ interface GroupRepositoryInterface
      * The list of groups can be filtered to exclude the NOT_LOGGED_IN group using the first parameter and/or it can
      * be filtered by tax class.
      *
-     * @param \Magento\Framework\Api\Data\SearchCriteriaInterface $searchCriteria
+     * @param \Magento\Framework\Api\SearchCriteriaInterface $searchCriteria
      * @return \Magento\Customer\Api\Data\GroupSearchResultsInterface
      * @throws \Magento\Framework\Exception\LocalizedException
      */
-    public function getList(\Magento\Framework\Api\Data\SearchCriteriaInterface $searchCriteria);
+    public function getList(\Magento\Framework\Api\SearchCriteriaInterface $searchCriteria);
 
     /**
      * Delete customer group.
@@ -78,11 +78,11 @@ interface GroupRepositoryInterface
     /**
      * Delete customer group by ID.
      *
-     * @param int $groupId
+     * @param int $id
      * @return bool true on success
      * @throws \Magento\Framework\Exception\NoSuchEntityException
      * @throws \Magento\Framework\Exception\StateException If customer group cannot be deleted
      * @throws \Magento\Framework\Exception\LocalizedException
      */
-    public function deleteById($groupId);
+    public function deleteById($id);
 }
diff --git a/app/code/Magento/Customer/Api/MetadataInterface.php b/app/code/Magento/Customer/Api/MetadataInterface.php
index 63197ef988b..cae0dd577ab 100644
--- a/app/code/Magento/Customer/Api/MetadataInterface.php
+++ b/app/code/Magento/Customer/Api/MetadataInterface.php
@@ -27,7 +27,7 @@ namespace Magento\Customer\Api;
 /**
  * Interface for getting attributes metadata. Note that this interface should not be used directly, use its children.
  */
-interface MetadataInterface
+interface MetadataInterface extends \Magento\Framework\Api\MetadataServiceInterface
 {
     /**
      * Retrieve all attributes filtered by form code
diff --git a/app/code/Magento/Customer/Block/Adminhtml/Edit/Form.php b/app/code/Magento/Customer/Block/Adminhtml/Edit/Form.php
index 65f3ad7861e..c75b45a1401 100644
--- a/app/code/Magento/Customer/Block/Adminhtml/Edit/Form.php
+++ b/app/code/Magento/Customer/Block/Adminhtml/Edit/Form.php
@@ -83,7 +83,7 @@ class Form extends \Magento\Backend\Block\Widget\Form\Generic
             $form->addField('id', 'hidden', array('name' => 'customer_id'));
             $customer = $this->_customerAccountService->getCustomer($customerId);
             $form->setValues(
-                \Magento\Framework\Service\ExtensibleDataObjectConverter::toFlatArray($customer)
+                \Magento\Framework\Api\ExtensibleDataObjectConverter::toFlatArray($customer)
             )->addValues(
                 array('customer_id' => $customerId)
             );
diff --git a/app/code/Magento/Customer/Block/Adminhtml/Edit/Tab/Account.php b/app/code/Magento/Customer/Block/Adminhtml/Edit/Tab/Account.php
index 3fd6e8f1a0c..addab2709eb 100644
--- a/app/code/Magento/Customer/Block/Adminhtml/Edit/Tab/Account.php
+++ b/app/code/Magento/Customer/Block/Adminhtml/Edit/Tab/Account.php
@@ -24,7 +24,7 @@
 namespace Magento\Customer\Block\Adminhtml\Edit\Tab;
 
 use Magento\Customer\Service\V1\CustomerAccountServiceInterface;
-use Magento\Framework\Service\ExtensibleDataObjectConverter;
+use Magento\Framework\Api\ExtensibleDataObjectConverter;
 
 /**
  * Customer account form block
diff --git a/app/code/Magento/Customer/Block/Adminhtml/Edit/Tab/Addresses.php b/app/code/Magento/Customer/Block/Adminhtml/Edit/Tab/Addresses.php
index 7d250dda2cb..b0b4ba6156d 100644
--- a/app/code/Magento/Customer/Block/Adminhtml/Edit/Tab/Addresses.php
+++ b/app/code/Magento/Customer/Block/Adminhtml/Edit/Tab/Addresses.php
@@ -28,7 +28,6 @@ use Magento\Customer\Service\V1\AddressMetadataServiceInterface;
 use Magento\Customer\Service\V1\Data\Eav\AttributeMetadataBuilder;
 use Magento\Customer\Service\V1\Data\Address;
 use Magento\Customer\Service\V1\CustomerAccountServiceInterface;
-use Magento\Customer\Service\V1\CustomerMetadataServiceInterface;
 use Magento\Customer\Service\V1\Data\AddressBuilder;
 use Magento\Customer\Service\V1\Data\CustomerBuilder;
 use Magento\Framework\Exception\NoSuchEntityException;
@@ -233,7 +232,6 @@ class Addresses extends GenericMetadata
      */
     public function initForm()
     {
-
         $customerData = $this->_backendSession->getCustomerData();
 
         /** @var \Magento\Framework\Data\Form $form */
@@ -294,6 +292,12 @@ class Addresses extends GenericMetadata
             $country->addClass('countries');
         }
 
+        $postcode = $form->getElement('postcode');
+        if ($postcode) {
+            $postcode->removeClass('required-entry')
+                ->setRequired(!$this->_directoryHelper->isZipCodeOptional($address->getCountryId()));
+        }
+
         if ($this->isReadonly()) {
             foreach ($this->_addressMetadataService->getAllAttributesMetadata() as $attribute) {
                 $element = $form->getElement($attribute->getAttributeCode());
@@ -345,6 +349,30 @@ class Addresses extends GenericMetadata
         return $this;
     }
 
+    /**
+     * @param Address $address
+     * @return $this
+     */
+    public function initAddressForm(Address $address)
+    {
+        $form = $this->initForm()->getForm();
+
+        $postcode = $form->getElement('postcode');
+        if ($postcode) {
+            $postcode->removeClass('required-entry')
+                ->setRequired(!$this->_directoryHelper->isZipCodeOptional($address->getCountryId()));
+        }
+
+        $form->addValues(AddressConverter::toFlatArray($address))
+            ->setHtmlIdPrefix("_item{$address->getId()}")
+            ->setFieldNameSuffix('address[' . $address->getId() . ']');
+
+        $this->addValuesToNamePrefixElement($address->getPrefix())
+            ->addValuesToNameSuffixElement($address->getSuffix());
+
+        return $this;
+    }
+
     /**
      * @return string
      */
diff --git a/app/code/Magento/Customer/Block/Widget/Dob.php b/app/code/Magento/Customer/Block/Widget/Dob.php
index 2a33cba3ea9..8edd889b94c 100644
--- a/app/code/Magento/Customer/Block/Widget/Dob.php
+++ b/app/code/Magento/Customer/Block/Widget/Dob.php
@@ -24,7 +24,7 @@
 namespace Magento\Customer\Block\Widget;
 
 use Magento\Framework\Stdlib\DateTime\TimezoneInterface;
-use Magento\Framework\Service\ArrayObjectSearch;
+use Magento\Framework\Api\ArrayObjectSearch;
 
 class Dob extends AbstractWidget
 {
diff --git a/app/code/Magento/Customer/Block/Widget/Gender.php b/app/code/Magento/Customer/Block/Widget/Gender.php
index 9654cce28d4..695a829fc7f 100644
--- a/app/code/Magento/Customer/Block/Widget/Gender.php
+++ b/app/code/Magento/Customer/Block/Widget/Gender.php
@@ -26,7 +26,7 @@ namespace Magento\Customer\Block\Widget;
 use Magento\Customer\Service\V1\CustomerMetadataServiceInterface;
 use Magento\Customer\Service\V1\CustomerAccountServiceInterface;
 use Magento\Customer\Service\V1\Data\Customer;
-use Magento\Customer\Service\V1\Data\Eav\Option;
+use Magento\Customer\Api\Data\OptionInterface;
 
 /**
  * Block to render customer's gender attribute
@@ -107,7 +107,7 @@ class Gender extends AbstractWidget
 
     /**
      * Returns options from gender attribute
-     * @return Option[]
+     * @return OptionInterface[]
      */
     public function getGenderOptions()
     {
diff --git a/app/code/Magento/Customer/Controller/Account/CreatePost.php b/app/code/Magento/Customer/Controller/Account/CreatePost.php
index b973b74dc82..31fdf9827e2 100644
--- a/app/code/Magento/Customer/Controller/Account/CreatePost.php
+++ b/app/code/Magento/Customer/Controller/Account/CreatePost.php
@@ -205,16 +205,23 @@ class CreatePost extends \Magento\Customer\Controller\Account
         $this->_getSession()->regenerateId();
 
         try {
-            $customer = $this->customerExtractor->extract('customer_account_create', $this->_request);
             $address = $this->extractAddress();
             $addresses = is_null($address) ? array() : array($address);
-            $password = $this->getRequest()->getParam('password');
-            $redirectUrl = $this->_getSession()->getBeforeAuthUrl();
+
+            $customer = $this->customerExtractor->extract('customer_account_create', $this->_request);
             $customerDetails = $this->customerDetailsBuilder
                 ->setCustomer($customer)
                 ->setAddresses($addresses)
                 ->create();
-            $customer = $this->customerAccountService->createCustomer($customerDetails, $password, $redirectUrl);
+
+            $password = $this->getRequest()->getParam('password');
+            $confirmation = $this->getRequest()->getParam('password_confirmation');
+            $redirectUrl = $this->_getSession()->getBeforeAuthUrl();
+
+            $this->checkPasswordConfirmation($password, $confirmation);
+
+            $customer = $this->customerAccountService
+                ->createCustomer($customerDetails, $password, $redirectUrl);
 
             if ($this->getRequest()->getParam('is_subscribed', false)) {
                 $this->subscriberFactory->create()->subscribeCustomerById($customer->getId());
@@ -268,6 +275,28 @@ class CreatePost extends \Magento\Customer\Controller\Account
         $this->getResponse()->setRedirect($this->_redirect->error($defaultUrl));
     }
 
+    /**
+     * Make sure that password and password confirmation matched
+     *
+     * @param string $password
+     * @param string $confirmation
+     * @return void
+     * @throws InputException
+     */
+    protected function checkPasswordConfirmation($password, $confirmation)
+    {
+        $password = trim($password);
+        if (empty($password)) {
+            throw new InputException(
+                'The password must have at least %1 characters.',
+                [CustomerAccountServiceInterface::MIN_PASSWORD_LENGTH]
+            );
+        }
+        if (empty($confirmation) || $password != $confirmation) {
+            throw new InputException('Please make sure your passwords match.');
+        }
+    }
+
     /**
      * Retrieve success message
      *
diff --git a/app/code/Magento/Customer/Controller/Account/EditPost.php b/app/code/Magento/Customer/Controller/Account/EditPost.php
index a72249034d6..5641135d0fb 100644
--- a/app/code/Magento/Customer/Controller/Account/EditPost.php
+++ b/app/code/Magento/Customer/Controller/Account/EditPost.php
@@ -27,8 +27,8 @@ namespace Magento\Customer\Controller\Account;
 use Magento\Framework\App\Action\Context;
 use Magento\Customer\Model\Session;
 use Magento\Customer\Service\V1\CustomerAccountServiceInterface;
-use Magento\Customer\Service\V1\Data\CustomerBuilder;
-use Magento\Customer\Service\V1\Data\CustomerDetailsBuilder;
+use Magento\Customer\Api\CustomerRepositoryInterface;
+use Magento\Customer\Api\Data\CustomerDataBuilder;
 use Magento\Core\App\Action\FormKeyValidator;
 use Magento\Customer\Model\CustomerExtractor;
 use Magento\Framework\Exception\InputException;
@@ -42,11 +42,11 @@ class EditPost extends \Magento\Customer\Controller\Account
     /** @var CustomerAccountServiceInterface  */
     protected $customerAccountService;
 
-    /** @var CustomerBuilder */
-    protected $customerBuilder;
+    /** @var CustomerRepositoryInterface  */
+    protected $customerRepository;
 
-    /** @var CustomerDetailsBuilder */
-    protected $customerDetailsBuilder;
+    /** @var CustomerDataBuilder */
+    protected $customerDataBuilder;
 
     /** @var FormKeyValidator */
     protected $formKeyValidator;
@@ -58,25 +58,24 @@ class EditPost extends \Magento\Customer\Controller\Account
      * @param Context $context
      * @param Session $customerSession
      * @param CustomerAccountServiceInterface $customerAccountService
-     * @param CustomerDetailsBuilder $customerDetailsBuilder
+     * @param CustomerRepositoryInterface $customerRepository
+     * @param CustomerDataBuilder $customerDataBuilder
      * @param FormKeyValidator $formKeyValidator
-     * @param CustomerBuilder $customerBuilder
      * @param CustomerExtractor $customerExtractor
-     *
      * @SuppressWarnings(PHPMD.ExcessiveParameterList)
      */
     public function __construct(
         Context $context,
         Session $customerSession,
         CustomerAccountServiceInterface $customerAccountService,
-        CustomerBuilder $customerBuilder,
-        CustomerDetailsBuilder $customerDetailsBuilder,
+        CustomerRepositoryInterface $customerRepository,
+        CustomerDataBuilder $customerDataBuilder,
         FormKeyValidator $formKeyValidator,
         CustomerExtractor $customerExtractor
     ) {
         $this->customerAccountService = $customerAccountService;
-        $this->customerBuilder = $customerBuilder;
-        $this->customerDetailsBuilder = $customerDetailsBuilder;
+        $this->customerRepository = $customerRepository;
+        $this->customerDataBuilder = $customerDataBuilder;
         $this->formKeyValidator = $formKeyValidator;
         $this->customerExtractor = $customerExtractor;
         parent::__construct($context, $customerSession);
@@ -98,14 +97,13 @@ class EditPost extends \Magento\Customer\Controller\Account
         if ($this->getRequest()->isPost()) {
             $customerId = $this->_getSession()->getCustomerId();
             $customer = $this->customerExtractor->extract('customer_account_edit', $this->_request);
-            $this->customerBuilder->populate($customer);
-            $this->customerBuilder->setId($customerId);
-            $customer = $this->customerBuilder->create();
+            $this->customerDataBuilder->populateWithArray($customer->__toArray());
+            $this->customerDataBuilder->setId($customerId);
 
             if ($this->getRequest()->getParam('change_password')) {
                 $currPass = $this->getRequest()->getPost('current_password');
                 $newPass = $this->getRequest()->getPost('password');
-                $confPass = $this->getRequest()->getPost('confirmation');
+                $confPass = $this->getRequest()->getPost('password_confirmation');
 
                 if (strlen($newPass)) {
                     if ($newPass == $confPass) {
@@ -128,8 +126,7 @@ class EditPost extends \Magento\Customer\Controller\Account
             }
 
             try {
-                $this->customerDetailsBuilder->setCustomer($customer);
-                $this->customerAccountService->updateCustomer($customerId, $this->customerDetailsBuilder->create());
+                $this->customerRepository->save($this->customerDataBuilder->create());
             } catch (AuthenticationException $e) {
                 $this->messageManager->addError($e->getMessage());
             } catch (InputException $e) {
diff --git a/app/code/Magento/Customer/Controller/Account/ResetPasswordPost.php b/app/code/Magento/Customer/Controller/Account/ResetPasswordPost.php
index 3bc67d8e6aa..c3811a527f6 100644
--- a/app/code/Magento/Customer/Controller/Account/ResetPasswordPost.php
+++ b/app/code/Magento/Customer/Controller/Account/ResetPasswordPost.php
@@ -59,7 +59,7 @@ class ResetPasswordPost extends \Magento\Customer\Controller\Account
         $resetPasswordToken = (string)$this->getRequest()->getQuery('token');
         $customerId = (int)$this->getRequest()->getQuery('id');
         $password = (string)$this->getRequest()->getPost('password');
-        $passwordConfirmation = (string)$this->getRequest()->getPost('confirmation');
+        $passwordConfirmation = (string)$this->getRequest()->getPost('password_confirmation');
 
         if ($password !== $passwordConfirmation) {
             $this->messageManager->addError(__("New Password and Confirm New Password values didn't match."));
diff --git a/app/code/Magento/Customer/Controller/Address.php b/app/code/Magento/Customer/Controller/Address.php
index aa59d276f07..fc8c6df73dd 100644
--- a/app/code/Magento/Customer/Controller/Address.php
+++ b/app/code/Magento/Customer/Controller/Address.php
@@ -47,6 +47,11 @@ class Address extends \Magento\Framework\App\Action\Action
      */
     protected $_addressService;
 
+    /**
+     * @var \Magento\Customer\Api\AddressRepositoryInterface
+     */
+    protected $_addressRepository;
+
     /**
      * @var \Magento\Customer\Model\Metadata\FormFactory
      */
@@ -62,6 +67,21 @@ class Address extends \Magento\Framework\App\Action\Action
      */
     protected $_addressBuilder;
 
+    /**
+     * @var \Magento\Customer\Model\Data\AddressDataBuilder
+     */
+    protected $_addressDataBuilder;
+
+    /**
+     * @var \Magento\Customer\Api\Data\RegionDataBuilder
+     */
+    protected $_regionDataBuilder;
+
+    /**
+     * @var \Magento\Framework\Reflection\DataObjectProcessor
+     */
+    protected $_dataProcessor;
+
     /**
      * @param \Magento\Framework\App\Action\Context $context
      * @param \Magento\Customer\Model\Session $customerSession
@@ -70,9 +90,14 @@ class Address extends \Magento\Framework\App\Action\Action
      * @param \Magento\Customer\Model\Metadata\FormFactory $formFactory
      * @param \Magento\Customer\Service\V1\Data\RegionBuilder $regionBuilder
      * @param \Magento\Customer\Service\V1\Data\AddressBuilder $addressBuilder
+     * @param \Magento\Customer\Api\AddressRepositoryInterface $addressRepository
+     * @param \Magento\Customer\Api\Data\AddressDataBuilder $addressDataBuilder
+     * @param \Magento\Customer\Api\Data\RegionDataBuilder $regionDataBuilder
+     * @param \Magento\Framework\Reflection\DataObjectProcessor $dataProcessor
      * @internal param \Magento\Customer\Helper\Data $customerData
      * @internal param \Magento\Customer\Model\AddressFactory $addressFactory
      * @internal param \Magento\Customer\Model\Address\FormFactory $addressFormFactory
+     * @SuppressWarnings(PHPMD.ExcessiveParameterList)
      */
     public function __construct(
         \Magento\Framework\App\Action\Context $context,
@@ -81,7 +106,11 @@ class Address extends \Magento\Framework\App\Action\Action
         \Magento\Customer\Service\V1\CustomerAddressServiceInterface $addressService,
         \Magento\Customer\Model\Metadata\FormFactory $formFactory,
         \Magento\Customer\Service\V1\Data\RegionBuilder $regionBuilder,
-        \Magento\Customer\Service\V1\Data\AddressBuilder $addressBuilder
+        \Magento\Customer\Service\V1\Data\AddressBuilder $addressBuilder,
+        \Magento\Customer\Api\AddressRepositoryInterface $addressRepository,
+        \Magento\Customer\Api\Data\AddressDataBuilder $addressDataBuilder,
+        \Magento\Customer\Api\Data\RegionDataBuilder $regionDataBuilder,
+        \Magento\Framework\Reflection\DataObjectProcessor $dataProcessor
     ) {
         $this->_customerSession = $customerSession;
         $this->_formKeyValidator = $formKeyValidator;
@@ -89,6 +118,10 @@ class Address extends \Magento\Framework\App\Action\Action
         $this->_formFactory = $formFactory;
         $this->_regionBuilder = $regionBuilder;
         $this->_addressBuilder = $addressBuilder;
+        $this->_addressRepository = $addressRepository;
+        $this->_addressDataBuilder = $addressDataBuilder;
+        $this->_regionDataBuilder = $regionDataBuilder;
+        $this->_dataProcessor = $dataProcessor;
         parent::__construct($context);
     }
 
diff --git a/app/code/Magento/Customer/Controller/Address/FormPost.php b/app/code/Magento/Customer/Controller/Address/FormPost.php
index 0e8f0d8a1b3..8b68db91148 100644
--- a/app/code/Magento/Customer/Controller/Address/FormPost.php
+++ b/app/code/Magento/Customer/Controller/Address/FormPost.php
@@ -25,6 +25,7 @@
 namespace Magento\Customer\Controller\Address;
 
 use Magento\Framework\Exception\InputException;
+use Magento\Customer\Api\Data\RegionInterface;
 
 class FormPost extends \Magento\Customer\Controller\Address
 {
@@ -38,28 +39,42 @@ class FormPost extends \Magento\Customer\Controller\Address
         $addressId = $this->getRequest()->getParam('id');
         $existingAddressData = array();
         if ($addressId) {
-            $existingAddress = $this->_addressService->getAddress($addressId);
-            if ($existingAddress->getId()) {
-                $existingAddressData = \Magento\Customer\Service\V1\Data\AddressConverter::toFlatArray(
-                    $existingAddress
-                );
-            }
+            $existingAddress = $this->_addressRepository->get($addressId);
+
+            $existingAddressData = $this->_dataProcessor
+                ->buildOutputDataArray($existingAddress, '\Magento\Customer\Api\Data\AddressInterface');
+
+            $region = $existingAddress->getRegion()->getRegion();
+            $existingAddressData['region_code'] = $existingAddress->getRegion()->getRegionCode();
+            $existingAddressData['region_id'] = $existingAddress->getRegion()->getRegionId();
+            $existingAddressData['region'] = $region;
         }
 
         /** @var \Magento\Customer\Model\Metadata\Form $addressForm */
         $addressForm = $this->_formFactory->create('customer_address', 'customer_address_edit', $existingAddressData);
         $addressData = $addressForm->extractData($this->getRequest());
         $attributeValues = $addressForm->compactData($addressData);
-        $region = array('region_id' => $attributeValues['region_id'], 'region' => $attributeValues['region']);
+
+        $region = [
+            RegionInterface::REGION_ID => $attributeValues['region_id'],
+            RegionInterface::REGION => !empty($attributeValues['region']) ? $attributeValues['region'] : null,
+            RegionInterface::REGION_CODE => !empty($attributeValues['region_code'])
+                ? $attributeValues['region_code']
+                : null
+        ];
+
+        $region = $this->_regionDataBuilder
+            ->populateWithArray($region)
+            ->create();
+
         unset($attributeValues['region'], $attributeValues['region_id']);
         $attributeValues['region'] = $region;
-        return $this->_addressBuilder->populateWithArray(
-            array_merge($existingAddressData, $attributeValues)
-        )->setDefaultBilling(
-            $this->getRequest()->getParam('default_billing', false)
-        )->setDefaultShipping(
-            $this->getRequest()->getParam('default_shipping', false)
-        )->create();
+
+        return $this->_addressDataBuilder
+            ->populateWithArray(array_merge($existingAddressData, $attributeValues))
+            ->setCustomerId($this->_getSession()->getCustomerId())
+            ->setRegion($region)
+            ->create();
     }
 
     /**
@@ -79,10 +94,10 @@ class FormPost extends \Magento\Customer\Controller\Address
             $this->getResponse()->setRedirect($this->_redirect->error($this->_buildUrl('*/*/edit')));
             return;
         }
-        $customerId = $this->_getSession()->getCustomerId();
+
         try {
             $address = $this->_extractAddress();
-            $this->_addressService->saveAddresses($customerId, array($address));
+            $this->_addressRepository->save($address);
             $this->messageManager->addSuccess(__('The address has been saved.'));
             $url = $this->_buildUrl('*/*/index', array('_secure' => true));
             $this->getResponse()->setRedirect($this->_redirect->success($url));
diff --git a/app/code/Magento/Customer/Controller/Adminhtml/Customer/InvalidateToken.php b/app/code/Magento/Customer/Controller/Adminhtml/Customer/InvalidateToken.php
index 7b5e2fd7060..4755dfda45d 100644
--- a/app/code/Magento/Customer/Controller/Adminhtml/Customer/InvalidateToken.php
+++ b/app/code/Magento/Customer/Controller/Adminhtml/Customer/InvalidateToken.php
@@ -25,12 +25,6 @@
 
 namespace Magento\Customer\Controller\Adminhtml\Customer;
 
-use Magento\Customer\Service\V1\Data\CustomerBuilder;
-use Magento\Customer\Service\V1\CustomerAddressServiceInterface;
-use Magento\Customer\Service\V1\CustomerAccountServiceInterface;
-use Magento\Customer\Service\V1\Data\AddressBuilder;
-use Magento\Customer\Service\V1\Data\CustomerDetailsBuilder;
-
 /**
  *  Class to invalidate tokens for customers
  */
diff --git a/app/code/Magento/Customer/Controller/Adminhtml/Index.php b/app/code/Magento/Customer/Controller/Adminhtml/Index.php
index 3485fa2bd1e..4efc84c317e 100644
--- a/app/code/Magento/Customer/Controller/Adminhtml/Index.php
+++ b/app/code/Magento/Customer/Controller/Adminhtml/Index.php
@@ -28,6 +28,8 @@ use Magento\Customer\Service\V1\Data\AddressBuilder;
 use Magento\Customer\Service\V1\Data\CustomerDetailsBuilder;
 use Magento\Customer\Service\V1\CustomerAccountServiceInterface;
 use Magento\Customer\Service\V1\CustomerAddressServiceInterface;
+use Magento\Customer\Api\CustomerRepositoryInterface;
+use Magento\Customer\Api\Data\AddressDataBuilder;
 use Magento\Framework\Message\Error;
 use Magento\Customer\Controller\RegistryConstants;
 
@@ -72,6 +74,9 @@ class Index extends \Magento\Backend\App\Action
     /** @var  AddressBuilder */
     protected $_addressBuilder;
 
+    /** @var  AddressDataBuilder */
+    protected $_addressDataBuilder;
+
     /**
      * @var \Magento\Customer\Model\AddressFactory
      */
@@ -96,6 +101,9 @@ class Index extends \Magento\Backend\App\Action
     /** @var CustomerAccountServiceInterface */
     protected $_customerAccountService;
 
+    /** @var CustomerRepositoryInterface */
+    protected $_customerRepository;
+
     /** @var  \Magento\Customer\Helper\View */
     protected $_viewHelper;
 
@@ -113,11 +121,13 @@ class Index extends \Magento\Backend\App\Action
      * @param CustomerBuilder $customerBuilder
      * @param CustomerDetailsBuilder $customerDetailsBuilder
      * @param AddressBuilder $addressBuilder
+     * @param AddressDataBuilder $addressDataBuilder
      * @param CustomerAddressServiceInterface $addressService
      * @param \Magento\Customer\Service\V1\CustomerAccountServiceInterface $accountService
      * @param \Magento\Customer\Helper\View $viewHelper
      * @param \Magento\Customer\Helper\Data $helper
      * @param \Magento\Framework\Math\Random $random
+     * @param CustomerRepositoryInterface $customerRepository
      *
      * @SuppressWarnings(PHPMD.ExcessiveParameterList)
      */
@@ -132,11 +142,13 @@ class Index extends \Magento\Backend\App\Action
         CustomerBuilder $customerBuilder,
         CustomerDetailsBuilder $customerDetailsBuilder,
         AddressBuilder $addressBuilder,
+        AddressDataBuilder $addressDataBuilder,
         CustomerAddressServiceInterface $addressService,
         CustomerAccountServiceInterface $accountService,
         \Magento\Customer\Helper\View $viewHelper,
         \Magento\Customer\Helper\Data $helper,
-        \Magento\Framework\Math\Random $random
+        \Magento\Framework\Math\Random $random,
+        CustomerRepositoryInterface $customerRepository
     ) {
         $this->_fileFactory = $fileFactory;
         $this->_coreRegistry = $coreRegistry;
@@ -144,6 +156,7 @@ class Index extends \Magento\Backend\App\Action
         $this->_customerBuilder = $customerBuilder;
         $this->_customerDetailsBuilder = $customerDetailsBuilder;
         $this->_addressBuilder = $addressBuilder;
+        $this->_addressDataBuilder = $addressDataBuilder;
         $this->_addressFactory = $addressFactory;
         $this->_subscriberFactory = $subscriberFactory;
         $this->_dataHelper = $helper;
@@ -152,6 +165,7 @@ class Index extends \Magento\Backend\App\Action
         $this->_customerAccountService = $accountService;
         $this->_viewHelper = $viewHelper;
         $this->_random = $random;
+        $this->_customerRepository = $customerRepository;
         parent::__construct($context);
     }
 
diff --git a/app/code/Magento/Customer/Controller/Adminhtml/Index/Edit.php b/app/code/Magento/Customer/Controller/Adminhtml/Index/Edit.php
index 24d001f2702..8208d8da2e2 100644
--- a/app/code/Magento/Customer/Controller/Adminhtml/Index/Edit.php
+++ b/app/code/Magento/Customer/Controller/Adminhtml/Index/Edit.php
@@ -27,7 +27,7 @@ namespace Magento\Customer\Controller\Adminhtml\Index;
 use Magento\Customer\Service\V1\Data\Customer;
 use Magento\Framework\Exception\NoSuchEntityException;
 use Magento\Customer\Service\V1\Data\AddressConverter;
-use Magento\Framework\Service\ExtensibleDataObjectConverter;
+use Magento\Framework\Api\ExtensibleDataObjectConverter;
 
 class Edit extends \Magento\Customer\Controller\Adminhtml\Index
 {
diff --git a/app/code/Magento/Customer/Controller/Adminhtml/Index/Save.php b/app/code/Magento/Customer/Controller/Adminhtml/Index/Save.php
index 1dcd16ed6e4..f5ba7ba0c1c 100644
--- a/app/code/Magento/Customer/Controller/Adminhtml/Index/Save.php
+++ b/app/code/Magento/Customer/Controller/Adminhtml/Index/Save.php
@@ -27,8 +27,7 @@ namespace Magento\Customer\Controller\Adminhtml\Index;
 use Magento\Customer\Controller\RegistryConstants;
 use Magento\Customer\Service\V1\Data\Customer;
 use Magento\Framework\Exception\LocalizedException;
-use Magento\Customer\Service\V1\CustomerMetadataServiceInterface as CustomerMetadata;
-use Magento\Customer\Service\V1\AddressMetadataServiceInterface as AddressMetadata;
+use Magento\Customer\Service\V1\CustomerMetadataService as CustomerMetadata;
 
 class Save extends \Magento\Customer\Controller\Adminhtml\Index
 {
@@ -88,7 +87,7 @@ class Save extends \Magento\Customer\Controller\Adminhtml\Index
                 $addressData = $customerHelper->extractCustomerData(
                     $this->getRequest(),
                     'adminhtml_customer_address',
-                    AddressMetadata::ENTITY_TYPE_ADDRESS,
+                    \Magento\Customer\Api\AddressMetadataInterface::ENTITY_TYPE_ADDRESS,
                     array(),
                     $scope
                 );
@@ -119,6 +118,7 @@ class Save extends \Magento\Customer\Controller\Adminhtml\Index
      *
      * @return void
      * @SuppressWarnings(PHPMD.CyclomaticComplexity)
+     * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
      */
     public function execute()
     {
@@ -136,7 +136,7 @@ class Save extends \Magento\Customer\Controller\Adminhtml\Index
                 if ($isExistingCustomer) {
                     $savedCustomerData = $this->_customerAccountService->getCustomer($customerId);
                     $customerData = array_merge(
-                        \Magento\Framework\Service\ExtensibleDataObjectConverter::toFlatArray($savedCustomerData),
+                        \Magento\Framework\Api\ExtensibleDataObjectConverter::toFlatArray($savedCustomerData),
                         $customerData
                     );
                 }
diff --git a/app/code/Magento/Customer/Controller/Adminhtml/Index/Validate.php b/app/code/Magento/Customer/Controller/Adminhtml/Index/Validate.php
index 0c4252f9c1c..acaca679a05 100644
--- a/app/code/Magento/Customer/Controller/Adminhtml/Index/Validate.php
+++ b/app/code/Magento/Customer/Controller/Adminhtml/Index/Validate.php
@@ -47,7 +47,7 @@ class Validate extends \Magento\Customer\Controller\Adminhtml\Index
             $customerForm = $this->_formFactory->create(
                 'customer',
                 'adminhtml_customer',
-                \Magento\Framework\Service\ExtensibleDataObjectConverter::toFlatArray($customer),
+                \Magento\Framework\Api\ExtensibleDataObjectConverter::toFlatArray($customer),
                 true
             );
             $customerForm->setInvisibleIgnored(true);
diff --git a/app/code/Magento/Customer/Model/AccountManagement.php b/app/code/Magento/Customer/Model/AccountManagement.php
new file mode 100644
index 00000000000..ea1bbc19ff2
--- /dev/null
+++ b/app/code/Magento/Customer/Model/AccountManagement.php
@@ -0,0 +1,1104 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Customer\Model;
+
+use Magento\Customer\Api\AccountManagementInterface;
+use Magento\Customer\Api\AddressRepositoryInterface;
+use Magento\Customer\Api\CustomerRepositoryInterface;
+use Magento\Customer\Api\Data\CustomerInterface;
+use Magento\Customer\Helper\Data as CustomerDataHelper;
+use Magento\Customer\Model\Config\Share as ConfigShare;
+use Magento\Customer\Model\Customer as CustomerModel;
+use Magento\Customer\Model\CustomerFactory;
+use Magento\Customer\Model\CustomerRegistry;
+use Magento\Customer\Model\Metadata\Validator;
+use Magento\Customer\Service\V1\CustomerMetadataServiceInterface;
+use Magento\Framework\App\Config\ScopeConfigInterface;
+use Magento\Framework\Encryption\EncryptorInterface as Encryptor;
+use Magento\Framework\Event\ManagerInterface;
+use Magento\Framework\Exception\EmailNotConfirmedException;
+use Magento\Framework\Exception\InputException;
+use Magento\Framework\Exception\InvalidEmailOrPasswordException;
+use Magento\Framework\Exception\NoSuchEntityException;
+use Magento\Framework\Exception\State\ExpiredException;
+use Magento\Framework\Exception\State\InputMismatchException;
+use Magento\Framework\Exception\State\InvalidTransitionException;
+use Magento\Framework\Logger;
+use Magento\Framework\Mail\Exception as MailException;
+use Magento\Framework\Mail\Template\TransportBuilder;
+use Magento\Framework\Math\Random;
+use Magento\Framework\Stdlib\DateTime;
+use Magento\Framework\Stdlib\String as StringHelper;
+use Magento\Framework\StoreManagerInterface;
+use Magento\Framework\UrlInterface;
+use Magento\Framework\Reflection\DataObjectProcessor;
+
+/**
+ * Handle various customer account actions
+ *
+ * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
+ * @SuppressWarnings(PHPMD.TooManyFields)
+ * @SuppressWarnings(PHPMD.ExcessiveClassComplexity)
+ */
+class AccountManagement implements AccountManagementInterface
+{
+    /**
+     * Configuration paths for email templates and identities
+     */
+    const XML_PATH_REGISTER_EMAIL_TEMPLATE = 'customer/create_account/email_template';
+
+    const XML_PATH_REGISTER_EMAIL_IDENTITY = 'customer/create_account/email_identity';
+
+    const XML_PATH_REMIND_EMAIL_TEMPLATE = 'customer/password/remind_email_template';
+
+    const XML_PATH_FORGOT_EMAIL_TEMPLATE = 'customer/password/forgot_email_template';
+
+    const XML_PATH_FORGOT_EMAIL_IDENTITY = 'customer/password/forgot_email_identity';
+
+    const XML_PATH_RESET_PASSWORD_TEMPLATE = 'customer/password/reset_password_template';
+
+    const XML_PATH_IS_CONFIRM = 'customer/create_account/confirm';
+
+    const XML_PATH_CONFIRM_EMAIL_TEMPLATE = 'customer/create_account/email_confirmation_template';
+
+    const XML_PATH_CONFIRMED_EMAIL_TEMPLATE = 'customer/create_account/email_confirmed_template';
+
+    /**
+     * Codes of exceptions related to customer model
+     */
+    const EXCEPTION_EMAIL_EXISTS = 3;
+
+    // Constants for the type of new account email to be sent
+    const NEW_ACCOUNT_EMAIL_REGISTERED = 'registered';
+
+    // welcome email, when confirmation is enabled
+    const NEW_ACCOUNT_EMAIL_CONFIRMATION = 'confirmation';
+
+    // email with confirmation link
+
+    // Constants for confirmation statuses
+    const ACCOUNT_CONFIRMED = 'account_confirmed';
+
+    const ACCOUNT_CONFIRMATION_REQUIRED = 'account_confirmation_required';
+
+    const ACCOUNT_CONFIRMATION_NOT_REQUIRED = 'account_confirmation_not_required';
+
+    /**
+     * Constants for types of emails to send out.
+     * pdl:
+     * forgot, remind, reset email templates
+     */
+    const EMAIL_REMINDER = 'email_reminder';
+
+    const EMAIL_RESET = 'email_reset';
+
+    const MIN_PASSWORD_LENGTH = 6;
+
+    /**
+     * @var CustomerFactory
+     */
+    private $customerFactory;
+
+    /**
+     * @var \Magento\Customer\Api\Data\CustomerDataBuilder
+     */
+    private $customerDataBuilder;
+
+    /**
+     * @var \Magento\Customer\Api\Data\ValidationResultsDataBuilder
+     */
+    private $validationResultsDataBuilder;
+
+
+    /**
+     * @var ManagerInterface
+     */
+    private $eventManager;
+
+    /**
+     * @var \Magento\Framework\StoreManagerInterface
+     */
+    private $storeManager;
+
+    /**
+     * @var Random
+     */
+    private $mathRandom;
+
+    /**
+     * @var Converter
+     */
+    private $converter;
+
+    /**
+     * @var Validator
+     */
+    private $validator;
+
+    /**
+     * @var AddressRepositoryInterface
+     */
+    private $addressRepository;
+
+    /**
+     * @var CustomerMetadataServiceInterface
+     */
+    private $customerMetadataService;
+
+    /**
+     * @var UrlInterface
+     */
+    private $url;
+
+    /**
+     * @var Logger
+     */
+    protected $logger;
+
+    /**
+     * @var Encryptor
+     */
+    private $encryptor;
+
+    /**
+     * @var CustomerRegistry
+     */
+    private $customerRegistry;
+
+    /**
+     * @var ConfigShare
+     */
+    private $configShare;
+
+    /**
+     * @var StringHelper
+     */
+    private $stringHelper;
+
+    /**
+     * @var CustomerRepositoryInterface
+     */
+    private $customerRepository;
+    /**
+     * @var ScopeConfigInterface
+     */
+    private $scopeConfig;
+    /**
+     * @var TransportBuilder
+     */
+    private $transportBuilder;
+
+    /**
+     * @var DataObjectProcessor
+     */
+    protected $dataProcessor;
+
+    /**
+     * @var \Magento\Framework\Registry
+     */
+    protected $registry;
+
+    /**
+     * @var CustomerDataHelper
+     */
+    protected $customerDataHelper;
+
+    /**
+     * @var DateTime
+     */
+    protected $dateTime;
+
+    /**
+     * @var \Magento\Framework\ObjectFactory
+     */
+    protected $objectFactory;
+
+    /**
+     * @param CustomerFactory $customerFactory
+     * @param ManagerInterface $eventManager
+     * @param StoreManagerInterface $storeManager
+     * @param Random $mathRandom
+     * @param Converter $converter
+     * @param Validator $validator
+     * @param \Magento\Customer\Api\Data\ValidationResultsDataBuilder $validationResultsDataBuilder
+     * @param AddressRepositoryInterface $addressRepository
+     * @param CustomerMetadataServiceInterface $customerMetadataService
+     * @param CustomerRegistry $customerRegistry
+     * @param UrlInterface $url
+     * @param Logger $logger
+     * @param Encryptor $encryptor
+     * @param ConfigShare $configShare
+     * @param StringHelper $stringHelper
+     * @param CustomerRepositoryInterface $customerRepository
+     * @param ScopeConfigInterface $scopeConfig
+     * @param TransportBuilder $transportBuilder
+     * @param \Magento\Customer\Api\Data\CustomerDataBuilder $customerDataBuilder
+     * @param DataObjectProcessor $dataProcessor
+     * @param \Magento\Framework\Registry $registry
+     * @param CustomerDataHelper $customerDataHelper
+     * @param DateTime $dateTime
+     * @param \Magento\Framework\ObjectFactory $objectFactory
+     *
+     * @SuppressWarnings(PHPMD.ExcessiveParameterList)
+     */
+    public function __construct(
+        CustomerFactory $customerFactory,
+        ManagerInterface $eventManager,
+        StoreManagerInterface $storeManager,
+        Random $mathRandom,
+        Converter $converter,
+        Validator $validator,
+        \Magento\Customer\Api\Data\ValidationResultsDataBuilder $validationResultsDataBuilder,
+        AddressRepositoryInterface $addressRepository,
+        CustomerMetadataServiceInterface $customerMetadataService,
+        CustomerRegistry $customerRegistry,
+        UrlInterface $url,
+        Logger $logger,
+        Encryptor $encryptor,
+        ConfigShare $configShare,
+        StringHelper $stringHelper,
+        CustomerRepositoryInterface $customerRepository,
+        ScopeConfigInterface $scopeConfig,
+        TransportBuilder $transportBuilder,
+        \Magento\Customer\Api\Data\CustomerDataBuilder $customerDataBuilder,
+        DataObjectProcessor $dataProcessor,
+        \Magento\Framework\Registry $registry,
+        CustomerDataHelper $customerDataHelper,
+        DateTime $dateTime,
+        \Magento\Framework\ObjectFactory $objectFactory
+    ) {
+        $this->customerFactory = $customerFactory;
+        $this->eventManager = $eventManager;
+        $this->storeManager = $storeManager;
+        $this->mathRandom = $mathRandom;
+        $this->converter = $converter;
+        $this->validator = $validator;
+        $this->validationResultsDataBuilder = $validationResultsDataBuilder;
+        $this->addressRepository = $addressRepository;
+        $this->customerMetadataService = $customerMetadataService;
+        $this->customerRegistry = $customerRegistry;
+        $this->url = $url;
+        $this->logger = $logger;
+        $this->encryptor = $encryptor;
+        $this->configShare = $configShare;
+        $this->stringHelper = $stringHelper;
+        $this->customerRepository = $customerRepository;
+        $this->scopeConfig = $scopeConfig;
+        $this->transportBuilder = $transportBuilder;
+        $this->customerDataBuilder = $customerDataBuilder;
+        $this->dataProcessor = $dataProcessor;
+        $this->registry = $registry;
+        $this->customerDataHelper = $customerDataHelper;
+        $this->dateTime = $dateTime;
+        $this->objectFactory = $objectFactory;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function resendConfirmation($email, $websiteId = null, $redirectUrl = '')
+    {
+        $customer = $this->customerRepository->get($email, $websiteId);
+        if (!$customer->getConfirmation()) {
+            throw new InvalidTransitionException('No confirmation needed.');
+        }
+
+        try {
+            $this->sendNewAccountEmail(
+                $customer,
+                self::NEW_ACCOUNT_EMAIL_CONFIRMATION,
+                $redirectUrl,
+                $this->storeManager->getStore()->getId()
+            );
+        } catch (MailException $e) {
+            // If we are not able to send a new account email, this should be ignored
+            $this->logger->logException($e);
+        }
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function activate($email, $confirmationKey)
+    {
+        $customer = $this->customerRepository->get($email);
+
+        // check if customer is inactive
+        if (!$customer->getConfirmation()) {
+            throw new InvalidTransitionException('Account already active');
+        }
+
+        if ($customer->getConfirmation() !== $confirmationKey) {
+            throw new InputMismatchException('Invalid confirmation token');
+        }
+
+        $customer = $this->dataProcessor
+            ->buildOutputDataArray($customer, '\Magento\Customer\Api\Data\CustomerInterface');
+
+        $customer = $this->customerDataBuilder->populateWithArray($customer)->setConfirmation(null)->create();
+        $this->customerRepository->save($customer);
+        $this->sendNewAccountEmail($customer, 'confirmed', '', $this->storeManager->getStore()->getId());
+        return $customer;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function authenticate($username, $password)
+    {
+        $this->checkPasswordStrength($password);
+
+        try {
+            $customer = $this->customerRepository->get($username);
+        } catch (NoSuchEntityException $e) {
+            throw new InvalidEmailOrPasswordException('Invalid login or password.', []);
+        }
+
+        $hash = $this->customerRegistry->retrieveSecureData($customer->getId())->getPasswordHash();
+        if (!$this->encryptor->validateHash($password, $hash)) {
+            throw new InvalidEmailOrPasswordException('Invalid login or password.', []);
+        }
+
+        if ($customer->getConfirmation() && $this->isConfirmationRequired($customer)) {
+            throw new EmailNotConfirmedException('This account is not confirmed.', []);
+        }
+
+        $this->eventManager->dispatch(
+            'customer_customer_authenticated',
+            array('model' => $this->getFullCustomerObject($customer), 'password' => $password)
+        );
+
+        $this->eventManager->dispatch('customer_data_object_login', array('customer' => $customer));
+
+        return $customer;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function validateResetPasswordLinkToken($customerId, $resetPasswordLinkToken)
+    {
+        $this->validateResetPasswordToken($customerId, $resetPasswordLinkToken);
+        return true;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function initiatePasswordReset($email, $template, $websiteId = null)
+    {
+        if (is_null($websiteId)) {
+            $websiteId = $this->storeManager->getStore()->getWebsiteId();
+        }
+        // load customer by email
+        $customer = $this->customerRepository->get($email, $websiteId);
+
+        $newPasswordToken = $this->mathRandom->getUniqueHash();
+        $this->changeResetPasswordLinkToken($customer, $newPasswordToken);
+
+        try {
+            switch ($template) {
+                case AccountManagement::EMAIL_REMINDER:
+                    $this->sendPasswordReminderEmail($customer, $newPasswordToken);
+                    break;
+                case AccountManagement::EMAIL_RESET:
+                    $this->sendPasswordResetConfirmationEmail($customer);
+                    break;
+                default:
+                    throw new InputException(
+                        InputException::INVALID_FIELD_VALUE,
+                        ['value' => $template, 'fieldName' => 'email type']
+                    );
+            }
+        } catch (MailException $e) {
+            // If we are not able to send a reset password email, this should be ignored
+            $this->logger->logException($e);
+        }
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function resetPassword($email, $resetToken, $newPassword)
+    {
+        $customer = $this->customerRepository->get($email);
+        //Validate Token and new password strength
+        $this->validateResetPasswordToken($customer->getId(), $resetToken);
+        $this->checkPasswordStrength($newPassword);
+        //Update secure data
+        $customerSecure = $this->customerRegistry->retrieveSecureData($customer->getId());
+        $customerSecure->setRpToken(null);
+        $customerSecure->setRpTokenCreatedAt(null);
+        $customerSecure->setPasswordHash($this->createPasswordHash($newPassword));
+        $this->customerRepository->save($customer);
+        return true;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getConfirmationStatus($customerId)
+    {
+        // load customer by id
+        $customer = $this->customerRepository->getById($customerId);
+        if (!$customer->getConfirmation()) {
+            return self::ACCOUNT_CONFIRMED;
+        }
+        if ($this->isConfirmationRequired($customer)) {
+            return self::ACCOUNT_CONFIRMATION_REQUIRED;
+        }
+        return self::ACCOUNT_CONFIRMATION_NOT_REQUIRED;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function createAccount(
+        CustomerInterface $customer,
+        $password = null,
+        $redirectUrl = ''
+    ) {
+        if ($password) {
+            $this->checkPasswordStrength($password);
+        } else {
+            $password = $this->mathRandom->getRandomString(self::MIN_PASSWORD_LENGTH);
+        }
+        $hash = $this->createPasswordHash($password);
+        return $this->createAccountWithPasswordHash($customer, $hash, $redirectUrl);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function createAccountWithPasswordHash(
+        CustomerInterface $customer,
+        $hash,
+        $redirectUrl = ''
+    ) {
+        // This logic allows an existing customer to be added to a different store.  No new account is created.
+        // The plan is to move this logic into a new method called something like 'registerAccountWithStore'
+        if ($customer->getId()) {
+            $customer = $this->customerRepository->get($customer->getEmail());
+            $websiteId = $customer->getWebsiteId();
+
+            if ($this->isCustomerInStore($websiteId, $customer->getStoreId())) {
+                throw new InputException('Customer already exists in this store.');
+            }
+            // Existing password hash will be used from secured customer data registry when saving customer
+        }
+        // Make sure we have a storeId to associate this customer with.
+        if (!$customer->getStoreId()) {
+            if ($customer->getWebsiteId()) {
+                $storeId = $this->storeManager->getWebsite($customer->getWebsiteId())->getDefaultStore()->getId();
+            } else {
+                $storeId = $this->storeManager->getStore()->getId();
+            }
+
+            $customer = $this->customerDataBuilder->populate($customer)
+                ->setStoreId($storeId)
+                ->create();
+        }
+
+        try {
+            // If customer exists existing hash will be used by Repository
+            $customer = $this->customerRepository->save($customer, $hash);
+        } catch (\Magento\Customer\Exception $e) {
+            if ($e->getCode() === CustomerModel::EXCEPTION_EMAIL_EXISTS) {
+                throw new InputMismatchException('Customer with the same email already exists in associated website.');
+            }
+            throw $e;
+        }
+
+        foreach ($customer->getAddresses() as $address) {
+            $this->addressRepository->save($address);
+        }
+        $customer = $this->customerRepository->getById($customer->getId());
+        $newLinkToken = $this->mathRandom->getUniqueHash();
+        $this->changeResetPasswordLinkToken($customer, $newLinkToken);
+        $this->sendEmailConfirmation($customer, $redirectUrl);
+
+        return $customer;
+    }
+
+    /**
+     * Send either confirmation or welcome email after an account creation
+     *
+     * @param CustomerInterface $customer
+     * @param string $redirectUrl
+     * @return void
+     */
+    protected function sendEmailConfirmation(CustomerInterface $customer, $redirectUrl)
+    {
+        try {
+            if ($this->isConfirmationRequired($customer)) {
+                $this->sendNewAccountEmail(
+                    $customer,
+                    self::NEW_ACCOUNT_EMAIL_CONFIRMATION,
+                    $redirectUrl,
+                    $customer->getStoreId()
+                );
+            } else {
+                $this->sendNewAccountEmail(
+                    $customer,
+                    self::NEW_ACCOUNT_EMAIL_REGISTERED,
+                    $redirectUrl,
+                    $customer->getStoreId()
+                );
+            }
+        } catch (MailException $e) {
+            // If we are not able to send a new account email, this should be ignored
+            $this->logger->logException($e);
+        }
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function changePassword($email, $currentPassword, $newPassword)
+    {
+        try {
+            $customer = $this->customerRepository->get($email);
+        } catch (NoSuchEntityException $e) {
+            throw new InvalidEmailOrPasswordException("Password doesn't match for this account.");
+        }
+        $customerSecure = $this->customerRegistry->retrieveSecureData($customer->getId());
+        $hash = $customerSecure->getPasswordHash();
+        if (!$this->encryptor->validateHash($currentPassword, $hash)) {
+            throw new InvalidEmailOrPasswordException('Invalid login or password.', []);
+        }
+        $customerSecure->setRpToken(null);
+        $customerSecure->setRpTokenCreatedAt(null);
+        $this->checkPasswordStrength($newPassword);
+        $customerSecure->setPasswordHash($this->createPasswordHash($newPassword));
+        $this->customerRepository->save($customer);
+        // FIXME: Are we using the proper template here?
+        try {
+            $this->sendPasswordResetNotificationEmail($customer);
+        } catch (MailException $e) {
+            $this->logger->logException($e);
+        }
+
+        return true;
+    }
+
+    /**
+     * Make sure that password complies with minimum security requirements.
+     *
+     * @param string $password
+     * @return void
+     * @throws InputException
+     */
+    protected function checkPasswordStrength($password)
+    {
+        $length = $this->stringHelper->strlen($password);
+        if ($length < self::MIN_PASSWORD_LENGTH) {
+            throw new InputException(
+                'The password must have at least %min_length characters.',
+                ['min_length' => self::MIN_PASSWORD_LENGTH]
+            );
+        }
+        if ($this->stringHelper->strlen(trim($password)) != $length) {
+            throw new InputException('The password can not begin or end with a space.');
+        }
+    }
+
+    /**
+     * Create a hash for the given password
+     *
+     * @param string $password
+     * @return string
+     */
+    protected function createPasswordHash($password)
+    {
+        return $this->encryptor->getHash($password, true);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function validate(\Magento\Customer\Api\Data\CustomerInterface $customer)
+    {
+        $customerErrors = $this->validator->validateData(
+            \Magento\Framework\Api\ExtensibleDataObjectConverter::toFlatArray($customer),
+            [],
+            'customer'
+        );
+
+        if ($customerErrors !== true) {
+            return $this->validationResultsDataBuilder
+                ->setIsValid(false)
+                ->setMessages($this->validator->getMessages())
+                ->create();
+        }
+
+        $customerModel = $this->converter->createCustomerModel($customer);
+
+        $result = $customerModel->validate();
+        if (true !== $result && is_array($result)) {
+            return $this->validationResultsDataBuilder
+                ->setIsValid(false)
+                ->setMessages($result)
+                ->create();
+        }
+        return $this->validationResultsDataBuilder
+            ->setIsValid(true)
+            ->setMessages([])
+            ->create();
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function isEmailAvailable($customerEmail, $websiteId = null)
+    {
+        try {
+            if (is_null($websiteId)) {
+                $websiteId = $this->storeManager->getStore()->getWebsiteId();
+            }
+            $this->customerRepository->get($customerEmail, $websiteId);
+            return false;
+        } catch (NoSuchEntityException $e) {
+            return true;
+        }
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public function isCustomerInStore($customerWebsiteId, $storeId)
+    {
+        $ids = [];
+        if ((bool)$this->configShare->isWebsiteScope()) {
+            $ids = $this->storeManager->getWebsite($customerWebsiteId)->getStoreIds();
+        } else {
+            foreach ($this->storeManager->getStores() as $store) {
+                $ids[] = $store->getId();
+            }
+        }
+
+        return in_array($storeId, $ids);
+    }
+
+    /**
+     * Validate the Reset Password Token for a customer.
+     *
+     * @param int $customerId
+     * @param string $resetPasswordLinkToken
+     * @return bool
+     * @throws \Magento\Framework\Exception\State\InputMismatchException If token is mismatched
+     * @throws \Magento\Framework\Exception\State\ExpiredException If token is expired
+     * @throws \Magento\Framework\Exception\InputException If token or customer id is invalid
+     * @throws \Magento\Framework\Exception\NoSuchEntityException If customer doesn't exist
+     */
+    private function validateResetPasswordToken($customerId, $resetPasswordLinkToken)
+    {
+        if (empty($customerId) || $customerId < 0) {
+            $params = ['value' => $customerId, 'fieldName' => 'customerId'];
+            throw new InputException(InputException::INVALID_FIELD_VALUE, $params);
+        }
+        if (!is_string($resetPasswordLinkToken) || empty($resetPasswordLinkToken)) {
+            $params = ['fieldName' => 'resetPasswordLinkToken'];
+            throw new InputException(InputException::REQUIRED_FIELD, $params);
+        }
+
+        $customerSecureData = $this->customerRegistry->retrieveSecureData($customerId);
+        $rpToken = $customerSecureData->getRpToken();
+        $rpTokenCreatedAt = $customerSecureData->getRpTokenCreatedAt();
+
+        if (strcmp($rpToken, $resetPasswordLinkToken) !== 0) {
+            throw new InputMismatchException('Reset password token mismatch.');
+        } else if ($this->isResetPasswordLinkTokenExpired($rpToken, $rpTokenCreatedAt)) {
+            throw new ExpiredException('Reset password token expired.');
+        }
+
+        return true;
+    }
+
+    /**
+     * Check if customer can be deleted.
+     *
+     * @param int $customerId
+     * @return bool
+     * @throws \Magento\Framework\Exception\NoSuchEntityException If group is not found
+     * @throws \Magento\Framework\Exception\LocalizedException
+     */
+    public function isReadonly($customerId)
+    {
+        $customer = $this->customerRegistry->retrieveSecureData($customerId);
+        return $customer->getDeleteable();
+    }
+
+
+    /**
+     * Send email with new account related information
+     *
+     * @param CustomerInterface $customer
+     * @param string $type
+     * @param string $backUrl
+     * @param string $storeId
+     * @param string $sendemailStoreId
+     * @return $this
+     * @throws \Magento\Framework\Model\Exception
+     */
+    protected function sendNewAccountEmail(
+        $customer,
+        $type = 'registered',
+        $backUrl = '',
+        $storeId = '0',
+        $sendemailStoreId = null
+    ) {
+        $types = $this->getTemplateTypes();
+
+        if (!isset($types[$type])) {
+            throw new \Magento\Framework\Model\Exception(__('Wrong transactional account email type'));
+        }
+
+        if (!$storeId) {
+            $storeId = $this->getWebsiteStoreId($customer, $sendemailStoreId);
+        }
+
+        $store = $this->storeManager->getStore($customer->getStoreId());
+
+        $customerEmailData = $this->getFullCustomerObject($customer);
+
+        $this->sendEmailTemplate(
+            $customer,
+            $types[$type],
+            self::XML_PATH_REGISTER_EMAIL_IDENTITY,
+            array('customer' => $customerEmailData, 'back_url' => $backUrl, 'store' => $store),
+            $storeId
+        );
+
+        return $this;
+    }
+
+    /**
+     * @param CustomerInterface $customer
+     * @return $this
+     */
+    public function sendPasswordResetNotificationEmail($customer)
+    {
+        $storeId = $customer->getStoreId();
+        if (!$storeId) {
+            $storeId = $this->getWebsiteStoreId($customer);
+        }
+
+        /** @var \Magento\Framework\Mail\TransportInterface $transport */
+        $transport = $this->transportBuilder->setTemplateIdentifier(
+            $this->scopeConfig->getValue(
+                self::XML_PATH_RESET_PASSWORD_TEMPLATE,
+                \Magento\Store\Model\ScopeInterface::SCOPE_STORE,
+                $storeId
+            )
+        )->setTemplateOptions(
+            array('area' => \Magento\Framework\App\Area::AREA_FRONTEND, 'store' => $storeId)
+        )->setTemplateVars(
+            array('customer' => $customer, 'store' => $this->storeManager->getStore($storeId))
+        )->setFrom(
+            $this->scopeConfig->getValue(
+                self::XML_PATH_FORGOT_EMAIL_IDENTITY,
+                \Magento\Store\Model\ScopeInterface::SCOPE_STORE,
+                $storeId
+            )
+        )->addTo(
+            $customer->getEmail(),
+            $this->getName($customer)
+        )->getTransport();
+        $transport->sendMessage();
+
+        return $this;
+    }
+
+    /**
+     * Get either first store ID from a set website or the provided as default
+     *
+     * @param CustomerInterface $customer
+     * @param int|string|null $defaultStoreId
+     * @return int
+     */
+    protected function getWebsiteStoreId($customer, $defaultStoreId = null)
+    {
+        if ($customer->getWebsiteId() != 0 && empty($defaultStoreId)) {
+            $storeIds = $this->storeManager->getWebsite($customer->getWebsiteId())->getStoreIds();
+            reset($storeIds);
+            $defaultStoreId = current($storeIds);
+        }
+        return $defaultStoreId;
+    }
+
+    /**
+     * @return array
+     */
+    protected function getTemplateTypes()
+    {
+        /**
+         * 'registered'   welcome email, when confirmation is disabled
+         * 'confirmed'    welcome email, when confirmation is enabled
+         * 'confirmation' email with confirmation link
+         */
+        $types = array(
+            'registered' => self::XML_PATH_REGISTER_EMAIL_TEMPLATE,
+            'confirmed' => self::XML_PATH_CONFIRMED_EMAIL_TEMPLATE,
+            'confirmation' => self::XML_PATH_CONFIRM_EMAIL_TEMPLATE,
+        );
+        return $types;
+    }
+
+    /**
+     * Send corresponding email template
+     *
+     * @param CustomerInterface $customer
+     * @param string $template configuration path of email template
+     * @param string $sender configuration path of email identity
+     * @param array $templateParams
+     * @param int|null $storeId
+     * @return $this
+     */
+    protected function sendEmailTemplate($customer, $template, $sender, $templateParams = array(), $storeId = null)
+    {
+        /** @var \Magento\Framework\Mail\TransportInterface $transport */
+        $transport = $this->transportBuilder->setTemplateIdentifier(
+            $this->scopeConfig->getValue($template, \Magento\Store\Model\ScopeInterface::SCOPE_STORE, $storeId)
+        )->setTemplateOptions(
+            array('area' => \Magento\Framework\App\Area::AREA_FRONTEND, 'store' => $storeId)
+        )->setTemplateVars(
+            $templateParams
+        )->setFrom(
+            $this->scopeConfig->getValue($sender, \Magento\Store\Model\ScopeInterface::SCOPE_STORE, $storeId)
+        )->addTo(
+            $customer->getEmail(),
+            $this->getName($customer)
+        )->getTransport();
+        $transport->sendMessage();
+
+        return $this;
+    }
+
+    /**
+     * Get full customer name
+     *
+     * @param CustomerInterface $customer
+     * @return string
+     */
+    protected function getName($customer)
+    {
+        $name = '';
+
+        if ($this->customerMetadataService->getAttributeMetadata('prefix')->isVisible() && $customer->getPrefix()) {
+            $name .= $customer->getPrefix() . ' ';
+        }
+        $name .= $customer->getFirstname();
+        if ($this->customerMetadataService->getAttributeMetadata('middlename')->isVisible()
+            && $customer->getMiddlename()
+        ) {
+            $name .= ' ' . $customer->getMiddlename();
+        }
+        $name .= ' ' . $customer->getLastname();
+        if ($this->customerMetadataService->getAttributeMetadata('suffix')->isVisible()
+            && $customer->getSuffix()
+        ) {
+            $name .= ' ' . $customer->getSuffix();
+        }
+        return $name;
+    }
+
+    /**
+     * Check if accounts confirmation is required in config
+     *
+     * @param CustomerInterface $customer
+     * @return bool
+     */
+    protected function isConfirmationRequired($customer)
+    {
+        if ($this->canSkipConfirmation($customer)) {
+            return false;
+        }
+        $storeId = $customer->getStoreId() ? $customer->getStoreId() : null;
+
+        return (bool)$this->scopeConfig->getValue(
+            self::XML_PATH_IS_CONFIRM,
+            \Magento\Store\Model\ScopeInterface::SCOPE_STORE,
+            $storeId
+        );
+    }
+
+    /**
+     * Check whether confirmation may be skipped when registering using certain email address
+     *
+     * @param CustomerInterface $customer
+     * @return bool
+     */
+    protected function canSkipConfirmation($customer)
+    {
+        if (!$customer->getId()) {
+            return false;
+        }
+
+        /* If an email was used to start the registration process and it is the same email as the one
+           used to register, then this can skip confirmation.
+           */
+        $skipConfirmationIfEmail = $this->registry->registry("skip_confirmation_if_email");
+        if (!$skipConfirmationIfEmail) {
+            return false;
+        }
+
+        return strtolower($skipConfirmationIfEmail) === strtolower($customer->getEmail());
+    }
+
+    /**
+     * Check if rpToken is expired
+     *
+     * @param string $rpToken
+     * @param string $rpTokenCreatedAt
+     * @return bool
+     */
+    public function isResetPasswordLinkTokenExpired($rpToken, $rpTokenCreatedAt)
+    {
+        if (empty($rpToken) || empty($rpTokenCreatedAt)) {
+            return true;
+        }
+
+        $expirationPeriod = $this->customerDataHelper->getResetPasswordLinkExpirationPeriod();
+
+        $currentTimestamp = $this->dateTime->toTimestamp($this->dateTime->now());
+        $tokenTimestamp = $this->dateTime->toTimestamp($rpTokenCreatedAt);
+        if ($tokenTimestamp > $currentTimestamp) {
+            return true;
+        }
+
+        $dayDifference = floor(($currentTimestamp - $tokenTimestamp) / (24 * 60 * 60));
+        if ($dayDifference >= $expirationPeriod) {
+            return true;
+        }
+
+        return false;
+    }
+
+    /**
+     * Change reset password link token
+     *
+     * Stores new reset password link token
+     *
+     * @param CustomerInterface $customer
+     * @param string $passwordLinkToken
+     * @return bool
+     * @throws InputException
+     */
+    public function changeResetPasswordLinkToken($customer, $passwordLinkToken)
+    {
+        if (!is_string($passwordLinkToken) || empty($passwordLinkToken)) {
+            throw new InputException(
+                InputException::INVALID_FIELD_VALUE,
+                ['value' => $passwordLinkToken, 'fieldName' => 'password reset token']
+            );
+        }
+        if (is_string($passwordLinkToken) && !empty($passwordLinkToken)) {
+            $customerSecure = $this->customerRegistry->retrieveSecureData($customer->getId());
+            $customerSecure->setRpToken($passwordLinkToken);
+            $customerSecure->setRpTokenCreatedAt($this->dateTime->now());
+            $this->customerRepository->save($customer);
+        }
+        return true;
+    }
+
+    /**
+     * Send email with new customer password
+     *
+     * @param CustomerInterface $customer
+     * @param string $newPasswordToken
+     * @return $this
+     */
+    public function sendPasswordReminderEmail($customer, $newPasswordToken)
+    {
+        $this->url->setScope($customer->getStoreId());
+        //TODO : Fix how template is built. Maybe Framework Object or create new Email template data model?
+        // Check template to see what values need to be set in the data model to be passed
+        // Need to set the reset_password_url property of the object
+        $resetUrl = $this->url->getUrl(
+            'customer/account/createPassword',
+            [
+                '_query' => array('id' => $customer->getId(), 'token' => $newPasswordToken),
+                '_store' => $customer->getStoreId()
+            ]
+        );
+
+        $customerEmailData = $this->getFullCustomerObject($customer);
+        $customerEmailData->setResetPasswordUrl($resetUrl);
+
+        $this->sendEmailTemplate(
+            $customer,
+            self::XML_PATH_REMIND_EMAIL_TEMPLATE,
+            self::XML_PATH_FORGOT_EMAIL_IDENTITY,
+            array('customer' => $customerEmailData, 'store' => $this->storeManager->getStore($customer->getStoreId())),
+            $customer->getStoreId()
+        );
+
+        return $this;
+    }
+
+    /**
+     * Send email with reset password confirmation link
+     *
+     * @param CustomerInterface $customer
+     * @return $this
+     */
+    public function sendPasswordResetConfirmationEmail($customer)
+    {
+        $storeId = $customer->getStoreId();
+        if (!$storeId) {
+            $storeId = $this->getWebsiteStoreId($customer);
+        }
+
+        $customerEmailData = $this->getFullCustomerObject($customer);
+
+        $this->sendEmailTemplate(
+            $customer,
+            self::XML_PATH_FORGOT_EMAIL_TEMPLATE,
+            self::XML_PATH_FORGOT_EMAIL_IDENTITY,
+            array('customer' => $customerEmailData, 'store' => $this->storeManager->getStore($storeId)),
+            $storeId
+        );
+
+        return $this;
+    }
+
+    /**
+     * Create an object with data merged from Customer and CustomerSecure
+     *
+     * @param CustomerInterface $customer
+     * @return Data\CustomerSecure
+     */
+    protected function getFullCustomerObject($customer)
+    {
+        // No need to flatten the custom attributes or nested objects since the only usage is for email templates and
+        // object passed for events
+        $mergedCustomerData = $this->customerRegistry->retrieveSecureData($customer->getId());
+        $customerData = $this->dataProcessor
+            ->buildOutputDataArray($customer, '\Magento\Customer\Api\Data\CustomerInterface');
+        $mergedCustomerData->addData($customerData);
+        $mergedCustomerData->setData('name', $this->getName($customer));
+        return $mergedCustomerData;
+    }
+}
diff --git a/app/code/Magento/Customer/Model/Address.php b/app/code/Magento/Customer/Model/Address.php
index 2e63ddd59e1..9545c1ee834 100644
--- a/app/code/Magento/Customer/Model/Address.php
+++ b/app/code/Magento/Customer/Model/Address.php
@@ -23,6 +23,13 @@
  */
 namespace Magento\Customer\Model;
 
+use Magento\Customer\Model\Data\Address as AddressData;
+use Magento\Customer\Api\Data\AddressInterface;
+use Magento\Customer\Api\AddressMetadataInterface;
+use Magento\Customer\Api\Data\AddressDataBuilder;
+use Magento\Customer\Api\Data\RegionInterface;
+use Magento\Customer\Model\Data\RegionBuilder;
+
 /**
  * Customer address model
  *
@@ -43,6 +50,26 @@ class Address extends \Magento\Customer\Model\Address\AbstractAddress
      */
     protected $_customerFactory;
 
+    /**
+     * @var \Magento\Customer\Service\V1\AddressMetadataServiceInterface
+     */
+    protected $_addressMetadataService;
+
+    /**
+     * @var AddressDataBuilder
+     */
+    protected $_addressBuilder;
+
+    /**
+     * @var RegionBuilder
+     */
+    protected $_regionBuilder;
+
+    /**
+     * @var \Magento\Framework\Reflection\DataObjectProcessor
+     */
+    protected $dataProcessor;
+
     /**
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
@@ -52,6 +79,10 @@ class Address extends \Magento\Customer\Model\Address\AbstractAddress
      * @param \Magento\Directory\Model\RegionFactory $regionFactory
      * @param \Magento\Directory\Model\CountryFactory $countryFactory
      * @param CustomerFactory $customerFactory
+     * @param \Magento\Customer\Service\V1\AddressMetadataServiceInterface $addressMetadataService
+     * @param AddressDataBuilder $addressBuilder
+     * @param RegionBuilder $regionBuilder
+     * @param \Magento\Framework\Reflection\DataObjectProcessor $dataProcessor
      * @param \Magento\Framework\Model\Resource\AbstractResource $resource
      * @param \Magento\Framework\Data\Collection\Db $resourceCollection
      * @param array $data
@@ -65,11 +96,19 @@ class Address extends \Magento\Customer\Model\Address\AbstractAddress
         \Magento\Directory\Model\RegionFactory $regionFactory,
         \Magento\Directory\Model\CountryFactory $countryFactory,
         CustomerFactory $customerFactory,
+        \Magento\Customer\Service\V1\AddressMetadataServiceInterface $addressMetadataService,
+        AddressDataBuilder $addressBuilder,
+        RegionBuilder $regionBuilder,
+        \Magento\Framework\Reflection\DataObjectProcessor $dataProcessor,
         \Magento\Framework\Model\Resource\AbstractResource $resource = null,
         \Magento\Framework\Data\Collection\Db $resourceCollection = null,
         array $data = array()
     ) {
+        $this->dataProcessor = $dataProcessor;
         $this->_customerFactory = $customerFactory;
+        $this->_addressMetadataService = $addressMetadataService;
+        $this->_addressBuilder = $addressBuilder;
+        $this->_regionBuilder = $regionBuilder;
         parent::__construct(
             $context,
             $registry,
@@ -92,6 +131,82 @@ class Address extends \Magento\Customer\Model\Address\AbstractAddress
         $this->_init('Magento\Customer\Model\Resource\Address');
     }
 
+    /**
+     * Update Model with the data from Data Interface
+     *
+     * @param \Magento\Customer\Api\Data\AddressInterface $address
+     * @return $this
+     * @deprecated Use Api/RepositoryInterface for the operations in the Data Interfaces. Don't rely on Address Model
+     */
+    public function updateData(\Magento\Customer\Api\Data\AddressInterface $address)
+    {
+        // Set all attributes
+        $attributes = $this->dataProcessor
+            ->buildOutputDataArray($address, '\Magento\Customer\Api\Data\AddressInterface');
+
+        foreach ($attributes as $attributeCode => $attributeData) {
+            if (AddressInterface::REGION === $attributeCode) {
+                $this->setRegion($address->getRegion()->getRegion());
+                $this->setRegionCode($address->getRegion()->getRegionCode());
+                $this->setRegionId($address->getRegion()->getRegionId());
+            } else {
+                $this->setDataUsingMethod($attributeCode, $attributeData);
+            }
+        }
+        // Need to use attribute set or future updates can cause data loss
+        if (!$this->getAttributeSetId()) {
+            $this->setAttributeSetId(AddressMetadataInterface::ATTRIBUTE_SET_ID_ADDRESS);
+        }
+        return $this;
+    }
+
+    /**
+     * Retrieve Data Model with the Address data
+     *
+     * @return \Magento\Customer\Api\Data\AddressInterface
+     * @deprecated Use Api/Data/AddressInterface as a result of service operations. Don't rely on the model to provide
+     * the instance of Api/Data/AddressInterface
+     */
+    public function getDataModel()
+    {
+        $addressId = $this->getId();
+
+        $attributes = $this->_addressMetadataService->getAllAttributesMetadata();
+        $addressData = array();
+        foreach ($attributes as $attribute) {
+            $code = $attribute->getAttributeCode();
+            if (!is_null($this->getData($code))) {
+                $addressData[$code] = $this->getData($code);
+            }
+        }
+
+        /** @var \Magento\Customer\Api\Data\RegionInterface $region */
+        $region = $this->_regionBuilder
+            ->populateWithArray(
+                array(
+                    RegionInterface::REGION => $this->getRegion(),
+                    RegionInterface::REGION_ID => $this->getRegionId(),
+                    RegionInterface::REGION_CODE => $this->getRegionCode()
+                )
+            )
+            ->create();
+
+        $addressData[AddressData::REGION] = $region;
+
+        $this->_addressBuilder->populateWithArray($addressData);
+        if ($addressId) {
+            $this->_addressBuilder->setId($addressId);
+        }
+
+        if ($this->getCustomerId() || $this->getParentId()) {
+            $customerId = $this->getCustomerId() ?: $this->getParentId();
+            $this->_addressBuilder->setCustomerId($customerId);
+        }
+
+        $addressDataObject = $this->_addressBuilder->create();
+        return $addressDataObject;
+    }
+
     /**
      * Retrieve address customer identifier
      *
diff --git a/app/code/Magento/Customer/Model/Address/Converter.php b/app/code/Magento/Customer/Model/Address/Converter.php
index cc93635e25e..ccb8965ded5 100644
--- a/app/code/Magento/Customer/Model/Address/Converter.php
+++ b/app/code/Magento/Customer/Model/Address/Converter.php
@@ -32,6 +32,7 @@ use Magento\Customer\Model\Address as AddressModel;
 use Magento\Customer\Model\Address\AbstractAddress;
 use Magento\Customer\Service\V1\Data\Region;
 use Magento\Customer\Service\V1\Data\AddressConverter;
+use Magento\Customer\Api\AddressMetadataInterface;
 
 /**
  * Customer Address Model converter.
@@ -115,7 +116,7 @@ class Converter
         $addressModel->setIsDefaultShipping($address->isDefaultShipping());
         // Need to use attribute set or future updates can cause data loss
         if (!$addressModel->getAttributeSetId()) {
-            $addressModel->setAttributeSetId(AddressMetadataServiceInterface::ATTRIBUTE_SET_ID_ADDRESS);
+            $addressModel->setAttributeSetId(AddressMetadataInterface::ATTRIBUTE_SET_ID_ADDRESS);
         }
     }
 
diff --git a/app/code/Magento/Customer/Model/AddressRegistry.php b/app/code/Magento/Customer/Model/AddressRegistry.php
index 99bf42b04c3..220902b85cf 100644
--- a/app/code/Magento/Customer/Model/AddressRegistry.php
+++ b/app/code/Magento/Customer/Model/AddressRegistry.php
@@ -81,4 +81,16 @@ class AddressRegistry
     {
         unset($this->registry[$addressId]);
     }
+
+    /**
+     * Replace existing Address Model with a new one
+     *
+     * @param Address $address
+     * @return $this
+     */
+    public function push(Address $address)
+    {
+        $this->registry[$address->getId()] = $address;
+        return $this;
+    }
 }
diff --git a/app/code/Magento/Customer/Model/Attribute/Data/Postcode.php b/app/code/Magento/Customer/Model/Attribute/Data/Postcode.php
index 562a61cc494..43ab7e8b497 100644
--- a/app/code/Magento/Customer/Model/Attribute/Data/Postcode.php
+++ b/app/code/Magento/Customer/Model/Attribute/Data/Postcode.php
@@ -23,57 +23,115 @@
  */
 namespace Magento\Customer\Model\Attribute\Data;
 
+use Magento\Eav\Model\AttributeDataFactory;
+use Magento\Framework\App\RequestInterface;
+use Magento\Framework\Locale\ResolverInterface;
+use Magento\Framework\Logger;
+use Magento\Framework\Stdlib\DateTime\TimezoneInterface as MagentoTimezone;
+use Magento\Directory\Helper\Data as DirectoryHelper;
+
 /**
  * Customer Address Postal/Zip Code Attribute Data Model
  * This Data Model Has to Be Set Up in additional EAV attribute table
- *
- * @author      Magento Core Team <core@magentocommerce.com>
  */
-class Postcode extends \Magento\Eav\Model\Attribute\Data\Text
+class Postcode extends \Magento\Eav\Model\Attribute\Data\AbstractData
 {
+    /**
+     * @var \Magento\Directory\Helper\Data
+     */
+    protected $directoryHelper;
+
+    /**
+     * @param MagentoTimezone $localeDate
+     * @param Logger $logger
+     * @param ResolverInterface $localeResolver
+     * @param DirectoryHelper $directoryHelper
+     */
+    public function __construct(
+        MagentoTimezone $localeDate,
+        Logger $logger,
+        ResolverInterface $localeResolver,
+        DirectoryHelper $directoryHelper
+    ) {
+        $this->directoryHelper = $directoryHelper;
+        parent::__construct($localeDate, $logger, $localeResolver);
+    }
+
     /**
      * Validate postal/zip code
      * Return true and skip validation if country zip code is optional
      *
      * @param array|string $value
-     * @return boolean|array
+     * @return array|bool
+     */
+    public function validateValue($value)
+    {
+        $attribute = $this->getAttribute();
+        $label = __($attribute->getStoreLabel());
+
+        $countryId = $this->getExtractedData('country_id');
+        if ($this->directoryHelper->isZipCodeOptional($countryId)) {
+            return true;
+        }
+
+        $errors = [];
+        if (empty($value) && $value !== '0') {
+            $errors[] = __('"%1" is a required value.', $label);
+        }
+        if (count($errors) == 0) {
+            return true;
+        }
+        return $errors;
+    }
+
+    /**
+     * Extract data from request and return value
+     *
+     * @param RequestInterface $request
+     * @return array|string
      */
+    public function extractValue(RequestInterface $request)
+    {
+        $value = $this->_getRequestValue($request);
+        return $this->_applyInputFilter($value);
+    }
+
     /**
-     * Directory data
+     * Export attribute value to entity model
      *
-     * @var \Magento\Directory\Helper\Data
+     * @param array|string $value
+     * @return $this
      */
-    protected $_directoryData = null;
+    public function compactValue($value)
+    {
+        if ($value !== false) {
+            $this->getEntity()->setDataUsingMethod($this->getAttribute()->getAttributeCode(), $value);
+        }
+        return $this;
+    }
 
     /**
-     * @param \Magento\Framework\Stdlib\DateTime\TimezoneInterface $localeDate
-     * @param \Magento\Framework\Logger $logger
-     * @param \Magento\Framework\Locale\ResolverInterface $localeResolver
-     * @param \Magento\Framework\Stdlib\String $stringHelper
-     * @param \Magento\Directory\Helper\Data $directoryData
+     * Restore attribute value from SESSION to entity model
+     *
+     * @param array|string $value
+     * @return $this
      */
-    public function __construct(
-        \Magento\Framework\Stdlib\DateTime\TimezoneInterface $localeDate,
-        \Magento\Framework\Logger $logger,
-        \Magento\Framework\Locale\ResolverInterface $localeResolver,
-        \Magento\Framework\Stdlib\String $stringHelper,
-        \Magento\Directory\Helper\Data $directoryData
-    ) {
-        $this->_directoryData = $directoryData;
-        parent::__construct($localeDate, $logger, $localeResolver, $stringHelper);
+    public function restoreValue($value)
+    {
+        return $this->compactValue($value);
     }
 
     /**
-     * @param string $value
-     * @return true|string[]
+     * Return formated attribute value from entity model
+     *
+     * @param string $format
+     * @return string|array
      */
-    public function validateValue($value)
+    public function outputValue($format = AttributeDataFactory::OUTPUT_FORMAT_TEXT)
     {
-        $countryId = $this->getExtractedData('country_id');
-        $optionalZip = $this->_directoryData->getCountriesWithOptionalZip();
-        if (!in_array($countryId, $optionalZip)) {
-            return parent::validateValue($value);
-        }
-        return true;
+        $value = $this->getEntity()
+            ->getData($this->getAttribute()->getAttributeCode());
+        $value = $this->_applyOutputFilter($value);
+        return $value;
     }
 }
diff --git a/app/code/Magento/Customer/Model/Converter.php b/app/code/Magento/Customer/Model/Converter.php
index b9ba7ae2803..4b0f981b510 100644
--- a/app/code/Magento/Customer/Model/Converter.php
+++ b/app/code/Magento/Customer/Model/Converter.php
@@ -27,7 +27,7 @@ use Magento\Customer\Service\V1\CustomerMetadataServiceInterface;
 use Magento\Framework\Exception\NoSuchEntityException;
 use Magento\Customer\Service\V1\Data\Customer as CustomerDataObject;
 use Magento\Customer\Service\V1\Data\CustomerBuilder as CustomerDataObjectBuilder;
-use Magento\Framework\Service\ExtensibleDataObjectConverter;
+use Magento\Framework\Api\ExtensibleDataObjectConverter;
 use Magento\Framework\StoreManagerInterface;
 
 /**
diff --git a/app/code/Magento/Customer/Model/Customer.php b/app/code/Magento/Customer/Model/Customer.php
index 83b77cd509d..8f15964efdd 100644
--- a/app/code/Magento/Customer/Model/Customer.php
+++ b/app/code/Magento/Customer/Model/Customer.php
@@ -26,8 +26,9 @@ namespace Magento\Customer\Model;
 use Magento\Customer\Model\Config\Share;
 use Magento\Customer\Model\Resource\Address\CollectionFactory;
 use Magento\Customer\Model\Resource\Customer as ResourceCustomer;
-use Magento\Customer\Service\V1\Data\CustomerBuilder;
-use Magento\Customer\Service\V1\Data\Customer as CustomerData;
+use Magento\Customer\Api\Data\CustomerDataBuilder;
+use Magento\Customer\Model\Data\Customer as CustomerData;
+use Magento\Framework\Reflection\DataObjectProcessor;
 
 /**
  * Customer model
@@ -46,7 +47,7 @@ use Magento\Customer\Service\V1\Data\Customer as CustomerData;
  * @method string getPasswordHash()
  * @method string getConfirmation()
  */
-class Customer extends \Magento\Framework\Model\AbstractModel
+class Customer extends \Magento\Framework\Model\AbstractExtensibleModel
 {
     /**
      * Configuration paths for email templates and identities
@@ -205,13 +206,19 @@ class Customer extends \Magento\Framework\Model\AbstractModel
     protected $dateTime;
 
     /**
-     * @var CustomerBuilder
+     * @var CustomerDataBuilder
      */
     protected $_customerDataBuilder;
 
+    /**
+     * @var DataObjectProcessor
+     */
+    protected $dataObjectProcessor;
+
     /**
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
+     * @param \Magento\Framework\Api\MetadataServiceInterface $metadataService
      * @param \Magento\Customer\Helper\Data $customerData
      * @param \Magento\Framework\StoreManagerInterface $storeManager
      * @param \Magento\Eav\Model\Config $config
@@ -225,13 +232,15 @@ class Customer extends \Magento\Framework\Model\AbstractModel
      * @param AttributeFactory $attributeFactory
      * @param \Magento\Framework\Encryption\EncryptorInterface $encryptor
      * @param \Magento\Framework\Stdlib\DateTime $dateTime
+     * @param CustomerDataBuilder $customerDataBuilder
+     * @param DataObjectProcessor $dataObjectProcessor
      * @param \Magento\Framework\Data\Collection\Db $resourceCollection
-     * @param CustomerBuilder $customerDataBuilder
      * @param array $data
      */
     public function __construct(
         \Magento\Framework\Model\Context $context,
         \Magento\Framework\Registry $registry,
+        \Magento\Framework\Api\MetadataServiceInterface $metadataService,
         \Magento\Customer\Helper\Data $customerData,
         \Magento\Framework\StoreManagerInterface $storeManager,
         \Magento\Eav\Model\Config $config,
@@ -245,7 +254,8 @@ class Customer extends \Magento\Framework\Model\AbstractModel
         AttributeFactory $attributeFactory,
         \Magento\Framework\Encryption\EncryptorInterface $encryptor,
         \Magento\Framework\Stdlib\DateTime $dateTime,
-        CustomerBuilder $customerDataBuilder,
+        CustomerDataBuilder $customerDataBuilder,
+        DataObjectProcessor $dataObjectProcessor,
         \Magento\Framework\Data\Collection\Db $resourceCollection = null,
         array $data = array()
     ) {
@@ -262,7 +272,8 @@ class Customer extends \Magento\Framework\Model\AbstractModel
         $this->_encryptor = $encryptor;
         $this->dateTime = $dateTime;
         $this->_customerDataBuilder = $customerDataBuilder;
-        parent::__construct($context, $registry, $resource, $resourceCollection, $data);
+        $this->dataObjectProcessor = $dataObjectProcessor;
+        parent::__construct($context, $registry, $metadataService, $resource, $resourceCollection, $data);
     }
 
     /**
@@ -275,6 +286,61 @@ class Customer extends \Magento\Framework\Model\AbstractModel
         $this->_init('Magento\Customer\Model\Resource\Customer');
     }
 
+    /**
+     * Retrieve customer model with customer data
+     *
+     * @return \Magento\Customer\Api\Data\CustomerInterface
+     */
+    public function getDataModel()
+    {
+        $customerData = $this->getData();
+        $addressesData = [];
+        /** @var \Magento\Customer\Model\Address $address */
+        foreach ($this->getAddresses() as $address) {
+            $addressesData[] = $address->getDataModel();
+        }
+        return $this->_customerDataBuilder
+            ->populateWithArray($customerData)
+            ->setAddresses($addressesData)
+            ->setId($this->getId())
+            ->create();
+    }
+
+    /**
+     * Update customer data
+     *
+     * @param \Magento\Customer\Api\Data\CustomerInterface $customer
+     * @return $this
+     */
+    public function updateData($customer)
+    {
+        $customerDataAttributes = $this->dataObjectProcessor->buildOutputDataArray(
+            $customer,
+            '\Magento\Customer\Api\Data\CustomerInterface'
+        );
+
+        foreach ($customerDataAttributes as $attributeCode => $attributeData) {
+            if ($attributeCode == 'password') {
+                continue;
+            }
+            $this->setDataUsingMethod($attributeCode, $attributeData);
+        }
+
+        $customerId = $customer->getId();
+        if ($customerId) {
+            $this->setId($customerId);
+        }
+
+        // Need to use attribute set or future updates can cause data loss
+        if (!$this->getAttributeSetId()) {
+            $this->setAttributeSetId(
+                \Magento\Customer\Service\V1\CustomerMetadataServiceInterface::ATTRIBUTE_SET_ID_CUSTOMER
+            );
+        }
+
+        return $this;
+    }
+
     /**
      * Retrieve customer sharing configuration model
      *
@@ -292,6 +358,7 @@ class Customer extends \Magento\Framework\Model\AbstractModel
      * @param  string $password
      * @return bool
      * @throws \Magento\Framework\Model\Exception
+     * @deprecated Use \Magento\Customer\Model\Api\AccountManagement::authenticate
      */
     public function authenticate($login, $password)
     {
@@ -726,6 +793,7 @@ class Customer extends \Magento\Framework\Model\AbstractModel
      * Check if accounts confirmation is required in config
      *
      * @return bool
+     * @deprecated Maybe this needs to be moved to helper
      */
     public function isConfirmationRequired()
     {
@@ -823,6 +891,7 @@ class Customer extends \Magento\Framework\Model\AbstractModel
      * Send email to when password is resetting
      *
      * @return $this
+     * @deprecated
      */
     public function sendPasswordResetNotificationEmail()
     {
@@ -1148,7 +1217,7 @@ class Customer extends \Magento\Framework\Model\AbstractModel
      *
      * @return bool
      */
-    public function canSkipConfirmation()
+    protected function canSkipConfirmation()
     {
         if (!$this->getId()) {
             return false;
@@ -1248,6 +1317,7 @@ class Customer extends \Magento\Framework\Model\AbstractModel
      * Check if current reset password link token is expired
      *
      * @return boolean
+     * @deprecated
      */
     public function isResetPasswordLinkTokenExpired()
     {
diff --git a/app/code/Magento/Customer/Model/CustomerExtractor.php b/app/code/Magento/Customer/Model/CustomerExtractor.php
index f4f700e188b..a4e8c77e101 100644
--- a/app/code/Magento/Customer/Model/CustomerExtractor.php
+++ b/app/code/Magento/Customer/Model/CustomerExtractor.php
@@ -80,10 +80,6 @@ class CustomerExtractor
         $isGroupIdEmpty = true;
         $customerData = array();
         foreach ($allowedAttributes as $attribute) {
-            // confirmation in request param is the repeated password, not a confirmation code.
-            if ($attribute === 'confirmation') {
-                continue;
-            }
             $attributeCode = $attribute->getAttributeCode();
             if ($attributeCode == 'group_id') {
                 $isGroupIdEmpty = false;
diff --git a/app/code/Magento/Customer/Model/CustomerRegistry.php b/app/code/Magento/Customer/Model/CustomerRegistry.php
index 9b16df2d09b..e49f9d56a23 100644
--- a/app/code/Magento/Customer/Model/CustomerRegistry.php
+++ b/app/code/Magento/Customer/Model/CustomerRegistry.php
@@ -25,6 +25,8 @@
 namespace Magento\Customer\Model;
 
 use Magento\Customer\Model\CustomerFactory;
+use Magento\Customer\Model\Data\CustomerSecure;
+use Magento\Customer\Model\Data\CustomerSecureFactory;
 use Magento\Framework\Exception\NoSuchEntityException;
 use Magento\Framework\StoreManagerInterface;
 
@@ -33,11 +35,18 @@ use Magento\Framework\StoreManagerInterface;
  */
 class CustomerRegistry
 {
+    const REGISTRY_SEPARATOR = ':';
+
     /**
      * @var CustomerFactory
      */
     private $customerFactory;
 
+    /**
+     * @var CustomerSecureFactory
+     */
+    private $customerSecureFactory;
+
     /**
      * @var array
      */
@@ -48,7 +57,10 @@ class CustomerRegistry
      */
     private $customerRegistryByEmail = [];
 
-    const REGISTRY_SEPARATOR = ':';
+    /**
+     * @var array
+     */
+    private $customerSecureRegistryById = [];
 
     /**
      * @var \Magento\Framework\StoreManagerInterface
@@ -59,11 +71,16 @@ class CustomerRegistry
      * Constructor
      *
      * @param CustomerFactory $customerFactory
+     * @param CustomerSecureFactory $customerSecureFactory
      * @param StoreManagerInterface $storeManager
      */
-    public function __construct(CustomerFactory $customerFactory, StoreManagerInterface $storeManager)
-    {
+    public function __construct(
+        CustomerFactory $customerFactory,
+        CustomerSecureFactory $customerSecureFactory,
+        StoreManagerInterface $storeManager
+    ) {
         $this->customerFactory = $customerFactory;
+        $this->customerSecureFactory = $customerSecureFactory;
         $this->storeManager = $storeManager;
     }
 
@@ -136,6 +153,31 @@ class CustomerRegistry
         }
     }
 
+    /**
+     * Retrieve CustomerSecure Model from registry given an id
+     *
+     * @param int $customerId
+     * @return CustomerSecure
+     * @throws NoSuchEntityException
+     */
+    public function retrieveSecureData($customerId)
+    {
+        if (isset($this->customerSecureRegistryById[$customerId])) {
+            return $this->customerSecureRegistryById[$customerId];
+        }
+        /** @var Customer $customer */
+        $customer = $this->retrieve($customerId);
+        /** @var $customerSecure CustomerSecure*/
+        $customerSecure = $this->customerSecureFactory->create();
+        $customerSecure->setPasswordHash($customer->getPasswordHash());
+        $customerSecure->setRpToken($customer->getRpToken());
+        $customerSecure->setRpTokenCreatedAt($customer->getRpTokenCreatedAt());
+        $customerSecure->setDeleteable($customer->isDeleteable());
+        $this->customerSecureRegistryById[$customer->getId()] = $customerSecure;
+
+        return $customerSecure;
+    }
+
     /**
      * Remove instance of the Customer Model from registry given an id
      *
@@ -150,6 +192,8 @@ class CustomerRegistry
             $emailKey = $this->getEmailKey($customer->getEmail(), $customer->getWebsiteId());
             unset($this->customerRegistryByEmail[$emailKey]);
             unset($this->customerRegistryById[$customerId]);
+            unset($this->customerSecureRegistryById[$customerId]);
+
         }
     }
 
@@ -171,6 +215,7 @@ class CustomerRegistry
             $customer = $this->customerRegistryByEmail[$emailKey];
             unset($this->customerRegistryByEmail[$emailKey]);
             unset($this->customerRegistryById[$customer->getId()]);
+            unset($this->customerSecureRegistryById[$customer->getId()]);
         }
     }
 
@@ -185,4 +230,18 @@ class CustomerRegistry
     {
         return $customerEmail . self::REGISTRY_SEPARATOR . $websiteId;
     }
+
+    /**
+     * Replace existing customer model with a new one.
+     *
+     * @param Customer $customer
+     * @return $this
+     */
+    public function push(Customer $customer)
+    {
+        $this->customerRegistryById[$customer->getId()] = $customer;
+        $emailKey = $this->getEmailKey($customer->getEmail(), $customer->getWebsiteId());
+        $this->customerRegistryByEmail[$emailKey] = $customer;
+        return $this;
+    }
 }
diff --git a/app/code/Magento/Customer/Model/Data/Address.php b/app/code/Magento/Customer/Model/Data/Address.php
new file mode 100644
index 00000000000..e9f5ebbe54b
--- /dev/null
+++ b/app/code/Magento/Customer/Model/Data/Address.php
@@ -0,0 +1,190 @@
+<?php
+/**
+ * Data Model implementing the Address interface
+ *
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+namespace Magento\Customer\Model\Data;
+
+class Address extends \Magento\Framework\Api\AbstractExtensibleObject implements
+    \Magento\Customer\Api\Data\AddressInterface
+{
+    /**
+     * Get id
+     *
+     * @return int|null
+     */
+    public function getId()
+    {
+        return $this->_get(self::ID);
+    }
+
+    /**
+     * Get region
+     *
+     * @return \Magento\Customer\Service\V1\Data\Region|null
+     */
+    public function getRegion()
+    {
+        return $this->_get(self::REGION);
+    }
+
+    /**
+     * Get country id
+     *
+     * @return string|null
+     */
+    public function getCountryId()
+    {
+        return $this->_get(self::COUNTRY_ID);
+    }
+
+    /**
+     * Get street
+     *
+     * @return string[]|null
+     */
+    public function getStreet()
+    {
+        return $this->_get(self::STREET);
+    }
+
+    /**
+     * Get company
+     *
+     * @return string|null
+     */
+    public function getCompany()
+    {
+        return $this->_get(self::COMPANY);
+    }
+
+    /**
+     * Get telephone number
+     *
+     * @return string|null
+     */
+    public function getTelephone()
+    {
+        return $this->_get(self::TELEPHONE);
+    }
+
+    /**
+     * Get fax number
+     *
+     * @return string|null
+     */
+    public function getFax()
+    {
+        return $this->_get(self::FAX);
+    }
+
+    /**
+     * Get postcode
+     *
+     * @return string|null
+     */
+    public function getPostcode()
+    {
+        return $this->_get(self::POSTCODE);
+    }
+
+    /**
+     * Get city name
+     *
+     * @return string|null
+     */
+    public function getCity()
+    {
+        return $this->_get(self::CITY);
+    }
+
+    /**
+     * Get first name
+     *
+     * @return string|null
+     */
+    public function getFirstname()
+    {
+        return $this->_get(self::FIRSTNAME);
+    }
+
+    /**
+     * Get last name
+     *
+     * @return string|null
+     */
+    public function getLastname()
+    {
+        return $this->_get(self::LASTNAME);
+    }
+
+    /**
+     * Get middle name
+     *
+     * @return string|null
+     */
+    public function getMiddlename()
+    {
+        return $this->_get(self::MIDDLENAME);
+    }
+
+    /**
+     * Get prefix
+     *
+     * @return string|null
+     */
+    public function getPrefix()
+    {
+        return $this->_get(self::PREFIX);
+    }
+
+    /**
+     * Get suffix
+     *
+     * @return string|null
+     */
+    public function getSuffix()
+    {
+        return $this->_get(self::SUFFIX);
+    }
+
+    /**
+     * Get Vat id
+     *
+     * @return string|null
+     */
+    public function getVatId()
+    {
+        return $this->_get(self::VAT_ID);
+    }
+
+    /**
+     * Get customer id
+     *
+     * @return string|null
+     */
+    public function getCustomerId()
+    {
+        return $this->_get(self::CUSTOMER_ID);
+    }
+}
diff --git a/app/code/Magento/Customer/Model/Data/AttributeMetadata.php b/app/code/Magento/Customer/Model/Data/AttributeMetadata.php
new file mode 100644
index 00000000000..98435943c04
--- /dev/null
+++ b/app/code/Magento/Customer/Model/Data/AttributeMetadata.php
@@ -0,0 +1,168 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Customer\Model\Data;
+
+/**
+ * Customer attribute metadata class.
+ */
+class AttributeMetadata extends \Magento\Framework\Api\AbstractExtensibleObject implements
+    \Magento\Customer\Api\Data\AttributeMetadataInterface
+{
+    /**
+     * {@inheritdoc}
+     */
+    public function getAttributeCode()
+    {
+        return $this->_get(self::ATTRIBUTE_CODE);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getFrontendInput()
+    {
+        return $this->_get(self::FRONTEND_INPUT);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getInputFilter()
+    {
+        return $this->_get(self::INPUT_FILTER);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getStoreLabel()
+    {
+        return $this->_get(self::STORE_LABEL);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getValidationRules()
+    {
+        return $this->_get(self::VALIDATION_RULES);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getMultilineCount()
+    {
+        return $this->_get(self::MULTILINE_COUNT);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function isVisible()
+    {
+        return $this->_get(self::VISIBLE);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function isRequired()
+    {
+        return $this->_get(self::REQUIRED);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getDataModel()
+    {
+        return $this->_get(self::DATA_MODEL);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getOptions()
+    {
+        return $this->_get(self::OPTIONS);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getFrontendClass()
+    {
+        return $this->_get(self::FRONTEND_CLASS);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function isUserDefined()
+    {
+        return $this->_get(self::USER_DEFINED);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getSortOrder()
+    {
+        return $this->_get(self::SORT_ORDER);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getFrontendLabel()
+    {
+        return $this->_get(self::FRONTEND_LABEL);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getNote()
+    {
+        return $this->_get(self::NOTE);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function isSystem()
+    {
+        return $this->_get(self::SYSTEM);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getBackendType()
+    {
+        return $this->_get(self::BACKEND_TYPE);
+    }
+}
diff --git a/app/code/Magento/Customer/Model/Data/Customer.php b/app/code/Magento/Customer/Model/Data/Customer.php
new file mode 100644
index 00000000000..1d04a601d22
--- /dev/null
+++ b/app/code/Magento/Customer/Model/Data/Customer.php
@@ -0,0 +1,219 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Customer\Model\Data;
+
+
+class Customer extends \Magento\Framework\Api\AbstractExtensibleObject implements
+    \Magento\Customer\Api\Data\CustomerInterface
+{
+    /**
+     * @return string|null
+     */
+    public function getDefaultBilling()
+    {
+        return $this->_get(self::DEFAULT_BILLING);
+    }
+
+    /**
+     * Get default shipping address id
+     *
+     * @return string|null
+     */
+    public function getDefaultShipping()
+    {
+        return $this->_get(self::DEFAULT_SHIPPING);
+    }
+
+    /**
+     * Get confirmation
+     *
+     * @return string|null
+     */
+    public function getConfirmation()
+    {
+        return $this->_get(self::CONFIRMATION);
+    }
+
+    /**
+     * Get created at time
+     *
+     * @return string|null
+     */
+    public function getCreatedAt()
+    {
+        return $this->_get(self::CREATED_AT);
+    }
+
+    /**
+     * Get created in area
+     *
+     * @return string|null
+     */
+    public function getCreatedIn()
+    {
+        return $this->_get(self::CREATED_IN);
+    }
+
+    /**
+     * Get date of birth
+     *
+     * @return string|null
+     */
+    public function getDob()
+    {
+        return $this->_get(self::DOB);
+    }
+
+    /**
+     * Get email address
+     *
+     * @return string
+     */
+    public function getEmail()
+    {
+        return $this->_get(self::EMAIL);
+    }
+
+    /**
+     * Get first name
+     *
+     * @return string
+     */
+    public function getFirstname()
+    {
+        return $this->_get(self::FIRSTNAME);
+    }
+
+    /**
+     * Get gender
+     *
+     * @return string|null
+     */
+    public function getGender()
+    {
+        return $this->_get(self::GENDER);
+    }
+
+    /**
+     * Get group id
+     *
+     * @return string|null
+     */
+    public function getGroupId()
+    {
+        return $this->_get(self::GROUP_ID);
+    }
+
+    /**
+     * Get customer id
+     *
+     * @return int|null
+     */
+    public function getId()
+    {
+        return $this->_get(self::ID);
+    }
+
+    /**
+     * Get last name
+     *
+     * @return string
+     */
+    public function getLastname()
+    {
+        return $this->_get(self::LASTNAME);
+    }
+
+    /**
+     * Get middle name
+     *
+     * @return string|null
+     */
+    public function getMiddlename()
+    {
+        return $this->_get(self::MIDDLENAME);
+    }
+
+    /**
+     * Get prefix
+     *
+     * @return string|null
+     */
+    public function getPrefix()
+    {
+        return $this->_get(self::PREFIX);
+    }
+
+    /**
+     * Get store id
+     *
+     * @return int|null
+     */
+    public function getStoreId()
+    {
+        return $this->_get(self::STORE_ID);
+    }
+
+    /**
+     * Get suffix
+     *
+     * @return string|null
+     */
+    public function getSuffix()
+    {
+        return $this->_get(self::SUFFIX);
+    }
+
+    /**
+     * Get tax Vat.
+     *
+     * @return string|null
+     */
+    public function getTaxvat()
+    {
+        return $this->_get(self::TAXVAT);
+    }
+
+    /**
+     * Get website id
+     *
+     * @return int|null
+     */
+    public function getWebsiteId()
+    {
+        return $this->_get(self::WEBSITE_ID);
+    }
+
+    /**
+     * Get addresses
+     *
+     * @return \Magento\Customer\Service\V1\Data\Address[]
+     */
+    public function getAddresses()
+    {
+        $addresses = $this->_get(self::KEY_ADDRESSES);
+        return $addresses ?: [];
+    }
+}
diff --git a/app/code/Magento/Customer/Model/Data/CustomerBuilder.php b/app/code/Magento/Customer/Model/Data/CustomerBuilder.php
new file mode 100644
index 00000000000..763a05b8288
--- /dev/null
+++ b/app/code/Magento/Customer/Model/Data/CustomerBuilder.php
@@ -0,0 +1,251 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Customer\Model\Data;
+
+use Magento\Framework\Api\AbstractExtensibleObject as ExtensibleObject;
+use Magento\Framework\Api\ExtensibleObjectBuilder;
+use Magento\Framework\Api\AttributeValueBuilder;
+use Magento\Customer\Service\V1\CustomerMetadataServiceInterface;
+
+/**
+ * Builder for the Customer Service Data Object
+ *
+ * @method Customer create()
+ * @method Customer mergeDataObjectWithArray(ExtensibleObject $dataObject, array $data)
+ * @method Customer mergeDataObjects(ExtensibleObject $firstDataObject, ExtensibleObject $secondDataObject)
+ */
+class CustomerBuilder extends ExtensibleObjectBuilder
+{
+    /**
+     * @param \Magento\Framework\Api\ObjectFactory $objectFactory
+     * @param AttributeValueBuilder $valueBuilder
+     * @param CustomerMetadataServiceInterface $metadataService
+     */
+    public function __construct(
+        \Magento\Framework\Api\ObjectFactory $objectFactory,
+        AttributeValueBuilder $valueBuilder,
+        CustomerMetadataServiceInterface $metadataService
+    ) {
+        parent::__construct($objectFactory, $valueBuilder, $metadataService);
+    }
+
+    /**
+     * Sets the default billing
+     *
+     * @param string $defaultBilling
+     * @return $this
+     */
+    public function setDefaultBilling($defaultBilling)
+    {
+        return $this->_set(Customer::DEFAULT_BILLING, $defaultBilling);
+    }
+
+    /**
+     * Sets the default shipping
+     *
+     * @param string $defaultShipping
+     * @return $this
+     */
+    public function setDefaultShipping($defaultShipping)
+    {
+        return $this->_set(Customer::DEFAULT_SHIPPING, $defaultShipping);
+    }
+
+    /**
+     * Set confirmation
+     *
+     * @param string $confirmation
+     * @return $this
+     */
+    public function setConfirmation($confirmation)
+    {
+        return $this->_set(Customer::CONFIRMATION, $confirmation);
+    }
+
+    /**
+     * Set created time
+     *
+     * @param string $createdAt
+     * @return $this
+     */
+    public function setCreatedAt($createdAt)
+    {
+        return $this->_set(Customer::CREATED_AT, $createdAt);
+    }
+
+    /**
+     * Set created area
+     *
+     * @param string $createdIn
+     * @return $this
+     */
+    public function setCreatedIn($createdIn)
+    {
+        return $this->_set(Customer::CREATED_IN, $createdIn);
+    }
+
+    /**
+     * Set date of birth
+     *
+     * @param string $dob
+     * @return $this
+     */
+    public function setDob($dob)
+    {
+        return $this->_set(Customer::DOB, $dob);
+    }
+
+    /**
+     * Set email address
+     *
+     * @param string $email
+     * @return $this
+     */
+    public function setEmail($email)
+    {
+        return $this->_set(Customer::EMAIL, $email);
+    }
+
+    /**
+     * Set first name
+     *
+     * @param string $firstname
+     * @return $this
+     */
+    public function setFirstname($firstname)
+    {
+        return $this->_set(Customer::FIRSTNAME, $firstname);
+    }
+
+    /**
+     * Set gender
+     *
+     * @param string $gender
+     * @return $this
+     */
+    public function setGender($gender)
+    {
+        return $this->_set(Customer::GENDER, $gender);
+    }
+
+    /**
+     * Set group id
+     *
+     * @param string $groupId
+     * @return $this
+     */
+    public function setGroupId($groupId)
+    {
+        return $this->_set(Customer::GROUP_ID, $groupId);
+    }
+
+    /**
+     * Set customer id
+     *
+     * @param int $id
+     * @return $this
+     */
+    public function setId($id)
+    {
+        return $this->_set(Customer::ID, $id);
+    }
+
+    /**
+     * Set last name
+     *
+     * @param string $lastname
+     * @return $this
+     */
+    public function setLastname($lastname)
+    {
+        return $this->_set(Customer::LASTNAME, $lastname);
+    }
+
+    /**
+     * Set middle name
+     *
+     * @param string $middlename
+     * @return $this
+     */
+    public function setMiddlename($middlename)
+    {
+        return $this->_set(Customer::MIDDLENAME, $middlename);
+    }
+
+    /**
+     * Set prefix
+     *
+     * @param string $prefix
+     * @return $this
+     */
+    public function setPrefix($prefix)
+    {
+        return $this->_set(Customer::PREFIX, $prefix);
+    }
+
+    /**
+     * Set store id
+     *
+     * @param int $storeId
+     * @return $this
+     */
+    public function setStoreId($storeId)
+    {
+        return $this->_set(Customer::STORE_ID, $storeId);
+    }
+
+    /**
+     * Set suffix
+     *
+     * @param string $suffix
+     * @return $this
+     */
+    public function setSuffix($suffix)
+    {
+        return $this->_set(Customer::SUFFIX, $suffix);
+    }
+
+    /**
+     * Set tax Vat
+     *
+     * @param string $taxvat
+     * @return $this
+     */
+    public function setTaxvat($taxvat)
+    {
+        return $this->_set(Customer::TAXVAT, $taxvat);
+    }
+
+    /**
+     * Set website id
+     *
+     * @param int $websiteId
+     * @return $this
+     */
+    public function setWebsiteId($websiteId)
+    {
+        return $this->_set(Customer::WEBSITE_ID, $websiteId);
+    }
+}
diff --git a/app/code/Magento/Customer/Model/Data/CustomerSecure.php b/app/code/Magento/Customer/Model/Data/CustomerSecure.php
new file mode 100644
index 00000000000..3edb09e9597
--- /dev/null
+++ b/app/code/Magento/Customer/Model/Data/CustomerSecure.php
@@ -0,0 +1,41 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Customer\Model\Data;
+
+/**
+ * Class containing secure customer data that cannot be exposed as part of \Magento\Customer\Api\Data\CustomerInterface
+ *
+ * @method string getRpToken()
+ * @method string getRpTokenCreatedAt()
+ * @method string getPasswordHash()
+ * @method string getDeleteable()
+ * @method setRpToken(string $rpToken)
+ * @method setRpTokenCreatedAt(string $rpTokenCreatedAt)
+ * @method setPasswordHash(string $hashedPassword)
+ * @method setDeleteable(bool $deleteable)
+ */
+class CustomerSecure extends \Magento\Framework\Object
+{
+}
diff --git a/app/code/Magento/Install/Block/Admin.php b/app/code/Magento/Customer/Model/Data/Group.php
similarity index 59%
rename from app/code/Magento/Install/Block/Admin.php
rename to app/code/Magento/Customer/Model/Data/Group.php
index 674fbaef19e..0b52e2a1cfc 100644
--- a/app/code/Magento/Install/Block/Admin.php
+++ b/app/code/Magento/Customer/Model/Data/Group.php
@@ -22,38 +22,51 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
+namespace Magento\Customer\Model\Data;
+
 /**
- * Administrator account install block
+ * Customer Group data model.
  */
-namespace Magento\Install\Block;
-
-class Admin extends \Magento\Install\Block\AbstractBlock
+class Group extends \Magento\Framework\Api\AbstractExtensibleObject implements
+    \Magento\Customer\Api\Data\GroupInterface
 {
     /**
-     * @var string
+     * Get ID
+     *
+     * @return int
      */
-    protected $_template = 'create_admin.phtml';
+    public function getId()
+    {
+        return $this->_get(self::ID);
+    }
 
     /**
+     * Get code
+     *
      * @return string
      */
-    public function getPostUrl()
+    public function getCode()
+    {
+        return $this->_get(self::CODE);
+    }
+
+    /**
+     * Get tax class ID
+     *
+     * @return int
+     */
+    public function getTaxClassId()
     {
-        return $this->getUrl('*/*/administratorPost');
+        return $this->_get(self::TAX_CLASS_ID);
     }
 
     /**
-     * @return \Magento\Framework\Object
+     * Get tax class name
+     *
+     * @return string
      */
-    public function getFormData()
+    public function getTaxClassName()
     {
-        $data = $this->getData('form_data');
-        if (null === $data) {
-            $data = $this->_session->getAdminData(true);
-            $data = is_array($data) ? $data : array();
-            $data = new \Magento\Framework\Object($data);
-            $this->setData('form_data', $data);
-        }
-        return $data;
+        return $this->_get(self::TAX_CLASS_NAME);
     }
 }
diff --git a/app/code/Magento/Install/Model/Installer/Data.php b/app/code/Magento/Customer/Model/Data/Option.php
similarity index 66%
rename from app/code/Magento/Install/Model/Installer/Data.php
rename to app/code/Magento/Customer/Model/Data/Option.php
index 8c1fc2f8997..b8056e661ba 100644
--- a/app/code/Magento/Install/Model/Installer/Data.php
+++ b/app/code/Magento/Customer/Model/Data/Option.php
@@ -1,5 +1,7 @@
 <?php
 /**
+ * Eav attribute option
+ *
  * Magento
  *
  * NOTICE OF LICENSE
@@ -22,40 +24,35 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
+namespace Magento\Customer\Model\Data;
 
 /**
- * Installer data model
+ * Class Option
  */
-namespace Magento\Install\Model\Installer;
-
-class Data extends \Magento\Framework\Object
+class Option extends \Magento\Framework\Api\AbstractExtensibleObject implements
+    \Magento\Customer\Api\Data\OptionInterface
 {
     /**
-     * Errors array
-     *
-     * @var array
+     * {@inheritdoc}
      */
-    protected $_errors = array();
+    public function getLabel()
+    {
+        return $this->_get(self::LABEL);
+    }
 
     /**
-     * Add error
-     *
-     * @param string $error
-     * @return $this
+     * {@inheritdoc}
      */
-    public function addError($error)
+    public function getValue()
     {
-        $this->_errors[] = $error;
-        return $this;
+        return $this->_get(self::VALUE);
     }
 
     /**
-     * Get all errors
-     *
-     * @return array
+     * {@inheritdoc}
      */
-    public function getErrors()
+    public function getOptions()
     {
-        return $this->_errors;
+        return $this->_get(self::OPTIONS);
     }
 }
diff --git a/app/code/Magento/Customer/Model/Data/Region.php b/app/code/Magento/Customer/Model/Data/Region.php
new file mode 100644
index 00000000000..99c158447b5
--- /dev/null
+++ b/app/code/Magento/Customer/Model/Data/Region.php
@@ -0,0 +1,61 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+namespace Magento\Customer\Model\Data;
+
+/**
+ * Data Model implementing Address Region interface
+ */
+class Region extends \Magento\Framework\Api\AbstractExtensibleObject implements
+    \Magento\Customer\Api\Data\RegionInterface
+{
+    /**
+     * Get region code
+     *
+     * @return string
+     */
+    public function getRegionCode()
+    {
+        return $this->_get(self::REGION_CODE);
+    }
+
+    /**
+     * Get region
+     *
+     * @return string
+     */
+    public function getRegion()
+    {
+        return $this->_get(self::REGION);
+    }
+
+    /**
+     * Get region id
+     *
+     * @return int
+     */
+    public function getRegionId()
+    {
+        return $this->_get(self::REGION_ID);
+    }
+}
diff --git a/app/code/Magento/Customer/Model/Data/ValidationResults.php b/app/code/Magento/Customer/Model/Data/ValidationResults.php
new file mode 100644
index 00000000000..5a47070006c
--- /dev/null
+++ b/app/code/Magento/Customer/Model/Data/ValidationResults.php
@@ -0,0 +1,49 @@
+<?php
+/**
+ *
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Customer\Model\Data;
+
+/**
+ * Validation results data model.
+ */
+class ValidationResults extends \Magento\Framework\Api\AbstractExtensibleObject implements
+    \Magento\Customer\Api\Data\ValidationResultsInterface
+{
+    /**
+     * {@inheritdoc}
+     */
+    public function isValid()
+    {
+        return $this->_get(self::VALID);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getMessages()
+    {
+        return $this->_get(self::MESSAGES);
+    }
+}
diff --git a/app/code/Magento/Checkout/Controller/Onepage/GetAdditional.php b/app/code/Magento/Customer/Model/Data/ValidationRule.php
similarity index 72%
rename from app/code/Magento/Checkout/Controller/Onepage/GetAdditional.php
rename to app/code/Magento/Customer/Model/Data/ValidationRule.php
index 1a4ab6a3f3a..6f81297fa37 100644
--- a/app/code/Magento/Checkout/Controller/Onepage/GetAdditional.php
+++ b/app/code/Magento/Customer/Model/Data/ValidationRule.php
@@ -1,6 +1,5 @@
 <?php
 /**
- *
  * Magento
  *
  * NOTICE OF LICENSE
@@ -22,23 +21,24 @@
  * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
-namespace Magento\Checkout\Controller\Onepage;
+namespace Magento\Customer\Model\Data;
 
-class GetAdditional extends \Magento\Checkout\Controller\Onepage
+class ValidationRule extends \Magento\Framework\Api\AbstractExtensibleObject implements
+    \Magento\Customer\Api\Data\ValidationRuleInterface
 {
     /**
-     * @return string
+     * {@inheritdoc}
      */
-    protected function _getAdditionalHtml()
+    public function getName()
     {
-        return $this->_getHtmlByHandle('checkout_onepage_additional');
+        return $this->_get(self::NAME);
     }
 
     /**
-     * @return void
+     * {@inheritdoc}
      */
-    public function execute()
+    public function getValue()
     {
-        $this->getResponse()->setBody($this->_getAdditionalHtml());
+        return $this->_get(self::VALUE);
     }
 }
diff --git a/app/code/Magento/Customer/Model/Group.php b/app/code/Magento/Customer/Model/Group.php
index 7c0211c1369..5fac89cabb8 100644
--- a/app/code/Magento/Customer/Model/Group.php
+++ b/app/code/Magento/Customer/Model/Group.php
@@ -23,6 +23,8 @@
  */
 namespace Magento\Customer\Model;
 
+use Magento\Customer\Api\Data\GroupDataBuilder;
+
 /**
  * Customer group model
  *
@@ -31,8 +33,9 @@ namespace Magento\Customer\Model;
  * @method string getCustomerGroupCode()
  * @method \Magento\Customer\Model\Group setCustomerGroupCode(string $value)
  * @method \Magento\Customer\Model\Group setTaxClassId(int $value)
+ * @method Group setTaxClassName(string $value)
  */
-class Group extends \Magento\Framework\Model\AbstractModel
+class Group extends \Magento\Framework\Model\AbstractExtensibleModel
 {
     const NOT_LOGGED_IN_ID = 0;
 
@@ -59,21 +62,35 @@ class Group extends \Magento\Framework\Model\AbstractModel
     protected $_eventObject = 'object';
 
     /**
-     * @var array
+     * @var \Magento\Store\Model\StoresConfig
      */
-    protected static $_taxClassIds = array();
+    protected $_storesConfig;
 
     /**
-     * @var \Magento\Store\Model\StoresConfig
+     * @var GroupDataBuilder
      */
-    protected $_storesConfig;
+    protected $groupBuilder;
+
+    /**
+     * @var \Magento\Framework\Reflection\DataObjectProcessor
+     */
+    protected $dataObjectProcessor;
+
+    /**
+     * @var \Magento\Tax\Model\ClassModelFactory
+     */
+    protected $classModelFactory;
 
     /**
      * Constructor
      *
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
+     * @param \Magento\Framework\Api\MetadataServiceInterface $metadataService
      * @param \Magento\Store\Model\StoresConfig $storesConfig
+     * @param GroupDataBuilder $groupBuilder
+     * @param \Magento\Framework\Reflection\DataObjectProcessor $dataProcessor
+     * @param \Magento\Tax\Model\ClassModelFactory $classModelFactory
      * @param \Magento\Framework\Model\Resource\AbstractResource $resource
      * @param \Magento\Framework\Data\Collection\Db $resourceCollection
      * @param array $data
@@ -81,13 +98,20 @@ class Group extends \Magento\Framework\Model\AbstractModel
     public function __construct(
         \Magento\Framework\Model\Context $context,
         \Magento\Framework\Registry $registry,
+        \Magento\Framework\Api\MetadataServiceInterface $metadataService,
         \Magento\Store\Model\StoresConfig $storesConfig,
+        GroupDataBuilder $groupBuilder,
+        \Magento\Framework\Reflection\DataObjectProcessor $dataObjectProcessor,
+        \Magento\Tax\Model\ClassModelFactory $classModelFactory,
         \Magento\Framework\Model\Resource\AbstractResource $resource = null,
         \Magento\Framework\Data\Collection\Db $resourceCollection = null,
         array $data = array()
     ) {
         $this->_storesConfig = $storesConfig;
-        parent::__construct($context, $registry, $resource, $resourceCollection, $data);
+        $this->dataObjectProcessor = $dataObjectProcessor;
+        $this->groupBuilder = $groupBuilder;
+        $this->classModelFactory = $classModelFactory;
+        parent::__construct($context, $registry, $metadataService, $resource, $resourceCollection, $data);
     }
 
     /**
@@ -120,21 +144,21 @@ class Group extends \Magento\Framework\Model\AbstractModel
     }
 
     /**
-     * Get the tax class id for the specified group or this group if the groupId is null
+     * Get tax class name
      *
-     * @param int|null $groupId The id of the group whose tax class id is being sought
-     * @return int
+     * @return string
      */
-    public function getTaxClassId($groupId = null)
+    public function getTaxClassName()
     {
-        if (!is_null($groupId)) {
-            if (empty(self::$_taxClassIds[$groupId])) {
-                $this->load($groupId);
-                self::$_taxClassIds[$groupId] = $this->getData('tax_class_id');
-            }
-            $this->setData('tax_class_id', self::$_taxClassIds[$groupId]);
+        $taxClassName = $this->getData('tax_class_name');
+        if ($taxClassName) {
+            return $taxClassName;
         }
-        return $this->getData('tax_class_id');
+        $classModel = $this->classModelFactory->create();
+        $classModel->load($this->getTaxClassId());
+        $taxClassName = $classModel->getClassName();
+        $this->setData('tax_class_name', $taxClassName);
+        return $taxClassName;
     }
 
     /**
diff --git a/app/code/Magento/Customer/Model/GroupManagement.php b/app/code/Magento/Customer/Model/GroupManagement.php
new file mode 100644
index 00000000000..5d71142cb38
--- /dev/null
+++ b/app/code/Magento/Customer/Model/GroupManagement.php
@@ -0,0 +1,113 @@
+<?php
+/**
+ *
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Customer\Model;
+
+use Magento\Framework\App\Config\ScopeConfigInterface;
+use Magento\Framework\Exception\NoSuchEntityException;
+use Magento\Framework\StoreManagerInterface;
+use Magento\Customer\Api\GroupRepositoryInterface;
+use Magento\Customer\Model\GroupFactory;
+
+class GroupManagement implements \Magento\Customer\Api\GroupManagementInterface
+{
+    const XML_PATH_DEFAULT_ID = 'customer/create_account/default_group';
+
+    /**
+     * @var StoreManagerInterface
+     */
+    protected $storeManager;
+
+    /**
+     * @var ScopeConfigInterface
+     */
+    protected $scopeConfig;
+
+    /**
+     * @var GroupFactory
+     */
+    protected $groupFactory;
+
+    /**
+     * @var GroupRepositoryInterface
+     */
+    protected $groupRepository;
+
+    /**
+     * @param StoreManagerInterface $storeManager
+     * @param ScopeConfigInterface $scopeConfig
+     * @param GroupFactory $groupFactory
+     * @param GroupRepositoryInterface $groupRepository
+     */
+    public function __construct(
+        StoreManagerInterface $storeManager,
+        ScopeConfigInterface $scopeConfig,
+        GroupFactory $groupFactory,
+        GroupRepositoryInterface $groupRepository
+    ) {
+        $this->storeManager = $storeManager;
+        $this->scopeConfig = $scopeConfig;
+        $this->groupFactory = $groupFactory;
+        $this->groupRepository = $groupRepository;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function isReadonly($groupId)
+    {
+        /** @var \Magento\Customer\Model\Group $group */
+        $group = $this->groupFactory->create();
+        $group->load($groupId);
+        if (is_null($group->getId())) {
+            throw NoSuchEntityException::singleField('groupId', $groupId);
+        }
+        return $groupId > 0 && !$group->usesAsDefault();
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getDefaultGroup($storeId = null)
+    {
+        if (is_null($storeId)) {
+            $storeId = $this->storeManager->getStore()->getCode();
+        }
+        try {
+            $groupId = $this->scopeConfig->getValue(
+                self::XML_PATH_DEFAULT_ID,
+                \Magento\Store\Model\ScopeInterface::SCOPE_STORE,
+                $storeId
+            );
+        } catch (\Magento\Framework\App\InitException $e) {
+            throw NoSuchEntityException::singleField('storeId', $storeId);
+        }
+        try {
+            return $this->groupRepository->get($groupId);
+        } catch (NoSuchEntityException $e) {
+            throw NoSuchEntityException::doubleField('groupId', $groupId, 'storeId', $storeId);
+        }
+    }
+}
diff --git a/app/code/Magento/Install/Controller/Adminhtml/Survey.php b/app/code/Magento/Customer/Model/Metadata/AddressCachedMetadata.php
similarity index 70%
rename from app/code/Magento/Install/Controller/Adminhtml/Survey.php
rename to app/code/Magento/Customer/Model/Metadata/AddressCachedMetadata.php
index 5358b053e9d..054e4a458f3 100644
--- a/app/code/Magento/Install/Controller/Adminhtml/Survey.php
+++ b/app/code/Magento/Customer/Model/Metadata/AddressCachedMetadata.php
@@ -21,21 +21,23 @@
  * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
-namespace Magento\Install\Controller\Adminhtml;
+
+namespace Magento\Customer\Model\Metadata;
+
+use Magento\Customer\Api\AddressMetadataInterface;
 
 /**
- * Adminhtml Survey Action
+ * Cached customer address attribute metadata
  */
-class Survey extends \Magento\Backend\App\Action
+class AddressCachedMetadata extends CachedMetadata implements AddressMetadataInterface
 {
-
     /**
-     * Check if user has enough privileges
+     * Initialize dependencies.
      *
-     * @return bool
+     * @param AddressMetadata $metadata
      */
-    protected function _isAllowed()
+    public function __construct(AddressMetadata $metadata)
     {
-        return $this->_authorization->isAllowed(null);
+        $this->metadata = $metadata;
     }
 }
diff --git a/app/code/Magento/Customer/Model/Metadata/AddressMetadata.php b/app/code/Magento/Customer/Model/Metadata/AddressMetadata.php
new file mode 100644
index 00000000000..5bd05fbff38
--- /dev/null
+++ b/app/code/Magento/Customer/Model/Metadata/AddressMetadata.php
@@ -0,0 +1,168 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Customer\Model\Metadata;
+
+use Magento\Customer\Service\V1\Data\Eav\AttributeMetadataConverter;
+use Magento\Customer\Service\V1\Data\Eav\AttributeMetadataDataProvider;
+use Magento\Eav\Model\Entity\Attribute\AbstractAttribute;
+use Magento\Framework\Exception\NoSuchEntityException;
+use Magento\Framework\Api\Config\MetadataConfig;
+use Magento\Framework\Api\SimpleDataObjectConverter;
+use Magento\Customer\Api\AddressMetadataInterface;
+
+/**
+ * Service to fetch customer address related custom attributes
+ */
+class AddressMetadata implements AddressMetadataInterface
+{
+    /**
+     * @var array
+     */
+    private $addressDataObjectMethods;
+
+    /**
+     * @var MetadataConfig
+     */
+    private $metadataConfig;
+
+    /**
+     * @var AttributeMetadataConverter
+     */
+    private $attributeMetadataConverter;
+
+    /**
+     * @var AttributeMetadataDataProvider
+     */
+    private $attributeMetadataDataProvider;
+
+    /**
+     * @param MetadataConfig $metadataConfig
+     * @param AttributeMetadataConverter $attributeMetadataConverter
+     * @param AttributeMetadataDataProvider $attributeMetadataDataProvider
+     */
+    public function __construct(
+        MetadataConfig $metadataConfig,
+        AttributeMetadataConverter $attributeMetadataConverter,
+        AttributeMetadataDataProvider $attributeMetadataDataProvider
+    ) {
+        $this->metadataConfig = $metadataConfig;
+        $this->attributeMetadataConverter = $attributeMetadataConverter;
+        $this->attributeMetadataDataProvider = $attributeMetadataDataProvider;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getAttributes($formCode)
+    {
+        $attributes = [];
+        $attributesFormCollection = $this->attributeMetadataDataProvider->loadAttributesCollection(
+            AddressMetadataInterface::ENTITY_TYPE_ADDRESS,
+            $formCode
+        );
+        foreach ($attributesFormCollection as $attribute) {
+            $attributes[$attribute->getAttributeCode()] = $this->attributeMetadataConverter
+                ->createMetadataAttribute($attribute);
+        }
+        if (empty($attributes)) {
+            throw NoSuchEntityException::singleField('formCode', $formCode);
+        }
+        return $attributes;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getAttributeMetadata($attributeCode)
+    {
+        /** @var AbstractAttribute $attribute */
+        $attribute = $this->attributeMetadataDataProvider
+            ->getAttribute(AddressMetadataInterface::ENTITY_TYPE_ADDRESS, $attributeCode);
+        if ($attribute && ($attributeCode === 'id' || !is_null($attribute->getId()))) {
+            $attributeMetadata = $this->attributeMetadataConverter->createMetadataAttribute($attribute);
+            return $attributeMetadata;
+        } else {
+            throw new NoSuchEntityException(
+                NoSuchEntityException::MESSAGE_DOUBLE_FIELDS,
+                [
+                    'fieldName' => 'entityType',
+                    'fieldValue' => AddressMetadataInterface::ENTITY_TYPE_ADDRESS,
+                    'field2Name' => 'attributeCode',
+                    'field2Value' => $attributeCode,
+                ]
+            );
+        }
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getAllAttributesMetadata()
+    {
+        /** @var AbstractAttribute[] $attribute */
+        $attributeCodes = $this->attributeMetadataDataProvider->getAllAttributeCodes(
+            AddressMetadataInterface::ENTITY_TYPE_ADDRESS,
+            AddressMetadataInterface::ATTRIBUTE_SET_ID_ADDRESS
+        );
+
+        $allAttributesMetadata = [];
+
+        foreach ($attributeCodes as $attributeCode) {
+            try {
+                $allAttributesMetadata[] = $this->getAttributeMetadata($attributeCode);
+            } catch (NoSuchEntityException $e) {
+                //If no such entity, skip
+            }
+        }
+
+        return $allAttributesMetadata;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getCustomAttributesMetadata($dataObjectClassName = AddressMetadataInterface::DATA_INTERFACE_NAME)
+    {
+        $customAttributes = [];
+        if (!$this->addressDataObjectMethods) {
+            $dataObjectMethods = array_flip(get_class_methods($dataObjectClassName));
+            $baseClassDataObjectMethods = array_flip(
+                get_class_methods('Magento\Framework\Api\AbstractExtensibleObject')
+            );
+            $this->addressDataObjectMethods = array_diff_key($dataObjectMethods, $baseClassDataObjectMethods);
+        }
+        foreach ($this->getAllAttributesMetadata() as $attributeMetadata) {
+            $attributeCode = $attributeMetadata->getAttributeCode();
+            $camelCaseKey = SimpleDataObjectConverter::snakeCaseToUpperCamelCase($attributeCode);
+            $isDataObjectMethod = isset($this->addressDataObjectMethods['get' . $camelCaseKey])
+                || isset($this->addressDataObjectMethods['is' . $camelCaseKey]);
+
+            if (!$isDataObjectMethod && !$attributeMetadata->isSystem()) {
+                $customAttributes[] = $attributeMetadata;
+            }
+        }
+        return array_merge($customAttributes, $this->metadataConfig->getCustomAttributesMetadata($dataObjectClassName));
+    }
+}
diff --git a/app/code/Magento/Customer/Model/Metadata/CachedMetadata.php b/app/code/Magento/Customer/Model/Metadata/CachedMetadata.php
new file mode 100644
index 00000000000..c440e58cac4
--- /dev/null
+++ b/app/code/Magento/Customer/Model/Metadata/CachedMetadata.php
@@ -0,0 +1,128 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Customer\Model\Metadata;
+
+use \Magento\Customer\Api\MetadataInterface;
+
+/**
+ * Cached attribute metadata service
+ */
+class CachedMetadata implements MetadataInterface
+{
+    const CACHE_SEPARATOR = ';';
+
+    /**
+     * @var MetadataInterface
+     */
+    protected $metadata;
+
+    /**
+     * @var array
+     */
+    protected $attributeMetadataCache = [];
+
+    /**
+     * @var array
+     */
+    protected $attributesCache = [];
+
+    /**
+     * @var \Magento\Customer\Service\V1\Data\Eav\AttributeMetadata[]
+     */
+    protected $allAttributeMetadataCache = null;
+
+    /**
+     * @var \Magento\Customer\Service\V1\Data\Eav\AttributeMetadata[]
+     */
+    protected $customAttributesMetadataCache = null;
+
+    /**
+     * Initialize dependencies.
+     *
+     * @param MetadataInterface $metadata
+     */
+    public function __construct(MetadataInterface $metadata)
+    {
+        $this->metadata = $metadata;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getAttributes($formCode)
+    {
+        $key = $formCode;
+        if (isset($this->attributesCache[$key])) {
+            return $this->attributesCache[$key];
+        }
+
+        $value = $this->metadata->getAttributes($formCode);
+        $this->attributesCache[$key] = $value;
+
+        return $value;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getAttributeMetadata($attributeCode)
+    {
+        $key = $attributeCode;
+        if (isset($this->attributeMetadataCache[$key])) {
+            return $this->attributeMetadataCache[$key];
+        }
+
+        $value = $this->metadata->getAttributeMetadata($attributeCode);
+        $this->attributeMetadataCache[$key] = $value;
+
+        return $value;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getAllAttributesMetadata()
+    {
+        if (!is_null($this->allAttributeMetadataCache)) {
+            return $this->allAttributeMetadataCache;
+        }
+
+        $this->allAttributeMetadataCache = $this->metadata->getAllAttributesMetadata();
+        return $this->allAttributeMetadataCache;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getCustomAttributesMetadata($dataObjectClassName = null)
+    {
+        if (!is_null($this->customAttributesMetadataCache)) {
+            return $this->customAttributesMetadataCache;
+        }
+
+        $this->customAttributesMetadataCache = $this->metadata->getCustomAttributesMetadata();
+        return $this->customAttributesMetadataCache;
+    }
+}
diff --git a/app/code/Magento/Rss/Controller/Adminhtml/Authenticate.php b/app/code/Magento/Customer/Model/Metadata/CustomerCachedMetadata.php
similarity index 70%
rename from app/code/Magento/Rss/Controller/Adminhtml/Authenticate.php
rename to app/code/Magento/Customer/Model/Metadata/CustomerCachedMetadata.php
index 04ed7976f14..fda75a2fdf1 100644
--- a/app/code/Magento/Rss/Controller/Adminhtml/Authenticate.php
+++ b/app/code/Magento/Customer/Model/Metadata/CustomerCachedMetadata.php
@@ -21,21 +21,23 @@
  * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
-namespace Magento\Rss\Controller\Adminhtml;
+
+namespace Magento\Customer\Model\Metadata;
+
+use Magento\Customer\Api\CustomerMetadataInterface;
 
 /**
- * RSS Controller with HTTP Basic authentication
+ * Cached customer attribute metadata service
  */
-use Magento\Backend\App\Action;
-
-class Authenticate extends \Magento\Backend\App\Action
+class CustomerCachedMetadata extends CachedMetadata implements CustomerMetadataInterface
 {
     /**
-     * @param Action\Context $context
+     * Initialize dependencies.
+     *
+     * @param CustomerMetadata $metadata
      */
-    public function __construct(Action\Context $context)
+    public function __construct(CustomerMetadata $metadata)
     {
-        parent::__construct($context);
-        $this->_objectManager->get('Magento\Backend\Model\UrlInterface')->turnOffSecretKey();
+        $this->metadata = $metadata;
     }
 }
diff --git a/app/code/Magento/Customer/Model/Metadata/CustomerMetadata.php b/app/code/Magento/Customer/Model/Metadata/CustomerMetadata.php
new file mode 100644
index 00000000000..10de2400e54
--- /dev/null
+++ b/app/code/Magento/Customer/Model/Metadata/CustomerMetadata.php
@@ -0,0 +1,171 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Customer\Model\Metadata;
+
+use Magento\Customer\Service\V1\Data\Eav\AttributeMetadataConverter;
+use Magento\Customer\Service\V1\Data\Eav\AttributeMetadataDataProvider;
+use Magento\Eav\Model\Entity\Attribute\AbstractAttribute;
+use Magento\Framework\Exception\NoSuchEntityException;
+use Magento\Framework\Api\Config\MetadataConfig;
+use Magento\Framework\Api\SimpleDataObjectConverter;
+use Magento\Customer\Api\CustomerMetadataInterface;
+
+/**
+ * Service to fetch customer related custom attributes
+ */
+class CustomerMetadata implements CustomerMetadataInterface
+{
+    /**
+     * @var array
+     */
+    private $customerDataObjectMethods;
+
+    /**
+     * @var MetadataConfig
+     */
+    private $metadataConfig;
+
+    /**
+     * @var AttributeMetadataConverter
+     */
+    private $attributeMetadataConverter;
+
+    /**
+     * @var AttributeMetadataDataProvider
+     */
+    private $attributeMetadataDataProvider;
+
+    /**
+     * @param MetadataConfig $metadataConfig
+     * @param AttributeMetadataConverter $attributeMetadataConverter
+     * @param AttributeMetadataDataProvider $attributeMetadataDataProvider
+     */
+    public function __construct(
+        MetadataConfig $metadataConfig,
+        AttributeMetadataConverter $attributeMetadataConverter,
+        AttributeMetadataDataProvider $attributeMetadataDataProvider
+    ) {
+        $this->metadataConfig = $metadataConfig;
+        $this->attributeMetadataConverter = $attributeMetadataConverter;
+        $this->attributeMetadataDataProvider = $attributeMetadataDataProvider;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getAttributes($formCode)
+    {
+        $attributes = [];
+        $attributesFormCollection = $this->attributeMetadataDataProvider->loadAttributesCollection(
+            self::ENTITY_TYPE_CUSTOMER,
+            $formCode
+        );
+        foreach ($attributesFormCollection as $attribute) {
+            /** @var $attribute \Magento\Customer\Model\Attribute */
+            $attributes[$attribute->getAttributeCode()] = $this->attributeMetadataConverter
+                ->createMetadataAttribute($attribute);
+        }
+        if (empty($attributes)) {
+            throw NoSuchEntityException::singleField('formCode', $formCode);
+        }
+        return $attributes;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getAttributeMetadata($attributeCode)
+    {
+        /** @var AbstractAttribute $attribute */
+        $attribute = $this->attributeMetadataDataProvider->getAttribute(self::ENTITY_TYPE_CUSTOMER, $attributeCode);
+        if ($attribute && ($attributeCode === 'id' || !is_null($attribute->getId()))) {
+            $attributeMetadata = $this->attributeMetadataConverter->createMetadataAttribute($attribute);
+            return $attributeMetadata;
+        } else {
+            throw new NoSuchEntityException(
+                NoSuchEntityException::MESSAGE_DOUBLE_FIELDS,
+                [
+                    'fieldName' => 'entityType',
+                    'fieldValue' => self::ENTITY_TYPE_CUSTOMER,
+                    'field2Name' => 'attributeCode',
+                    'field2Value' => $attributeCode,
+                ]
+            );
+        }
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getAllAttributesMetadata()
+    {
+        /** @var AbstractAttribute[] $attribute */
+        $attributeCodes = $this->attributeMetadataDataProvider->getAllAttributeCodes(
+            self::ENTITY_TYPE_CUSTOMER,
+            self::ATTRIBUTE_SET_ID_CUSTOMER
+        );
+
+        $attributesMetadata = [];
+
+        foreach ($attributeCodes as $attributeCode) {
+            try {
+                $attributesMetadata[] = $this->getAttributeMetadata($attributeCode);
+            } catch (NoSuchEntityException $e) {
+                //If no such entity, skip
+            }
+        }
+
+        return $attributesMetadata;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getCustomAttributesMetadata($dataObjectClassName = self::DATA_INTERFACE_NAME)
+    {
+        $customAttributes = [];
+        if (!$this->customerDataObjectMethods) {
+            $dataObjectMethods = array_flip(get_class_methods($dataObjectClassName));
+            $baseClassDataObjectMethods = array_flip(
+                get_class_methods('Magento\Framework\Api\AbstractExtensibleObject')
+            );
+            $this->customerDataObjectMethods = array_diff_key($dataObjectMethods, $baseClassDataObjectMethods);
+        }
+        foreach ($this->getAllAttributesMetadata() as $attributeMetadata) {
+            $attributeCode = $attributeMetadata->getAttributeCode();
+            $camelCaseKey = SimpleDataObjectConverter::snakeCaseToUpperCamelCase($attributeCode);
+            $isDataObjectMethod = isset($this->customerDataObjectMethods['get' . $camelCaseKey])
+                || isset($this->customerDataObjectMethods['is' . $camelCaseKey]);
+
+            /** Even though disable_auto_group_change is system attribute, it should be available to the clients */
+            if (!$isDataObjectMethod
+                && (!$attributeMetadata->isSystem() || $attributeCode == 'disable_auto_group_change')
+            ) {
+                $customAttributes[] = $attributeMetadata;
+            }
+        }
+        return array_merge($customAttributes, $this->metadataConfig->getCustomAttributesMetadata($dataObjectClassName));
+    }
+}
diff --git a/app/code/Magento/Customer/Model/Metadata/ElementFactory.php b/app/code/Magento/Customer/Model/Metadata/ElementFactory.php
index 2e8c931e137..c7da03b3bce 100644
--- a/app/code/Magento/Customer/Model/Metadata/ElementFactory.php
+++ b/app/code/Magento/Customer/Model/Metadata/ElementFactory.php
@@ -85,7 +85,7 @@ class ElementFactory
         );
         /** TODO fix when Validation is implemented MAGETWO-17341 */
         if ($dataModelClass == 'Magento\Customer\Model\Attribute\Data\Postcode') {
-            $dataModelClass = 'Magento\Customer\Model\Metadata\Form\Text';
+            $dataModelClass = 'Magento\Customer\Model\Metadata\Form\Postcode';
         }
         if (!empty($dataModelClass)) {
             $dataModel = $this->_objectManager->create($dataModelClass, $params);
diff --git a/app/code/Magento/Customer/Model/Metadata/Form.php b/app/code/Magento/Customer/Model/Metadata/Form.php
index 4c659ab1754..172868a6491 100644
--- a/app/code/Magento/Customer/Model/Metadata/Form.php
+++ b/app/code/Magento/Customer/Model/Metadata/Form.php
@@ -164,7 +164,7 @@ class Form
         if (!isset($this->_attributes)) {
             if ($this->_entityType === CustomerMetadataServiceInterface::ENTITY_TYPE_CUSTOMER) {
                 $this->_attributes = $this->_customerMetadataService->getAttributes($this->_formCode);
-            } else if ($this->_entityType === AddressMetadataServiceInterface::ENTITY_TYPE_ADDRESS) {
+            } else if ($this->_entityType === \Magento\Customer\Api\AddressMetadataInterface::ENTITY_TYPE_ADDRESS) {
                 $this->_attributes = $this->_addressMetadataService->getAttributes($this->_formCode);
             } else {
                 throw new \LogicException('Undefined entity type: ' . $this->_entityType);
diff --git a/app/code/Magento/Customer/Model/Metadata/Form/AbstractData.php b/app/code/Magento/Customer/Model/Metadata/Form/AbstractData.php
index 15f5fababbb..1e012c507be 100644
--- a/app/code/Magento/Customer/Model/Metadata/Form/AbstractData.php
+++ b/app/code/Magento/Customer/Model/Metadata/Form/AbstractData.php
@@ -25,7 +25,7 @@
  */
 namespace Magento\Customer\Model\Metadata\Form;
 
-use Magento\Framework\Service\ArrayObjectSearch;
+use Magento\Framework\Api\ArrayObjectSearch;
 
 abstract class AbstractData
 {
diff --git a/app/code/Magento/Customer/Model/Metadata/Form/Date.php b/app/code/Magento/Customer/Model/Metadata/Form/Date.php
index 1a6580ccafd..9e8f48b055d 100644
--- a/app/code/Magento/Customer/Model/Metadata/Form/Date.php
+++ b/app/code/Magento/Customer/Model/Metadata/Form/Date.php
@@ -25,7 +25,7 @@
  */
 namespace Magento\Customer\Model\Metadata\Form;
 
-use Magento\Framework\Service\ArrayObjectSearch;
+use Magento\Framework\Api\ArrayObjectSearch;
 
 class Date extends AbstractData
 {
diff --git a/app/code/Magento/Customer/Model/Metadata/Form/File.php b/app/code/Magento/Customer/Model/Metadata/Form/File.php
index a1de7918903..b15552869ba 100644
--- a/app/code/Magento/Customer/Model/Metadata/Form/File.php
+++ b/app/code/Magento/Customer/Model/Metadata/Form/File.php
@@ -28,7 +28,7 @@ namespace Magento\Customer\Model\Metadata\Form;
 use Magento\Framework\File\UploaderFactory;
 use Magento\Framework\Filesystem;
 use Magento\Framework\App\Filesystem\DirectoryList;
-use Magento\Framework\Service\ArrayObjectSearch;
+use Magento\Framework\Api\ArrayObjectSearch;
 
 class File extends AbstractData
 {
diff --git a/app/code/Magento/Customer/Model/Metadata/Form/Image.php b/app/code/Magento/Customer/Model/Metadata/Form/Image.php
index 9f3b97397c1..e0eb3b07091 100644
--- a/app/code/Magento/Customer/Model/Metadata/Form/Image.php
+++ b/app/code/Magento/Customer/Model/Metadata/Form/Image.php
@@ -25,7 +25,7 @@
  */
 namespace Magento\Customer\Model\Metadata\Form;
 
-use Magento\Framework\Service\ArrayObjectSearch;
+use Magento\Framework\Api\ArrayObjectSearch;
 
 class Image extends File
 {
diff --git a/app/code/Magento/Customer/Model/Metadata/Form/Postcode.php b/app/code/Magento/Customer/Model/Metadata/Form/Postcode.php
new file mode 100644
index 00000000000..c56910cfccd
--- /dev/null
+++ b/app/code/Magento/Customer/Model/Metadata/Form/Postcode.php
@@ -0,0 +1,133 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+namespace Magento\Customer\Model\Metadata\Form;
+
+use Magento\Customer\Model\Metadata\ElementFactory;
+use Magento\Customer\Service\V1\Data\Eav\AttributeMetadata;
+use Magento\Directory\Helper\Data as DirectoryHelper;
+use Magento\Framework\Locale\ResolverInterface;
+use Magento\Framework\Logger;
+use Magento\Framework\Stdlib\DateTime\TimezoneInterface as MagentoTimezone;
+
+/**
+ * Customer Address Postal/Zip Code Attribute Data Model
+ */
+class Postcode extends AbstractData
+{
+    /**
+     * @var DirectoryHelper
+     */
+    protected $directoryHelper;
+
+    /**
+     * @param MagentoTimezone $localeDate
+     * @param Logger $logger
+     * @param AttributeMetadata $attribute
+     * @param ResolverInterface $localeResolver
+     * @param string $value
+     * @param string $entityTypeCode
+     * @param bool $isAjax
+     * @param DirectoryHelper $directoryHelper
+     */
+    public function __construct(
+        MagentoTimezone $localeDate,
+        Logger $logger,
+        AttributeMetadata $attribute,
+        ResolverInterface $localeResolver,
+        $value,
+        $entityTypeCode,
+        $isAjax,
+        DirectoryHelper $directoryHelper
+    ) {
+        $this->directoryHelper = $directoryHelper;
+        parent::__construct(
+            $localeDate,
+            $logger,
+            $attribute,
+            $localeResolver,
+            $value,
+            $entityTypeCode,
+            $isAjax
+        );
+    }
+
+    /**
+     * Validate postal/zip code
+     * Return true and skip validation if country zip code is optional
+     *
+     * @param array|null|string $value
+     * @return array|bool
+     */
+    public function validateValue($value)
+    {
+        $attribute = $this->getAttribute();
+        $label = __($attribute->getStoreLabel());
+
+        $countryId = $this->getExtractedData('country_id');
+        if ($this->directoryHelper->isZipCodeOptional($countryId)) {
+            return true;
+        }
+
+        $errors = [];
+        if (empty($value) && $value !== '0') {
+            $errors[] = __('"%1" is a required value.', $label);
+        }
+        if (count($errors) == 0) {
+            return true;
+        }
+        return $errors;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function extractValue(\Magento\Framework\App\RequestInterface $request)
+    {
+        return $this->_applyInputFilter($this->_getRequestValue($request));
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function compactValue($value)
+    {
+        return $value;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function restoreValue($value)
+    {
+        return $this->compactValue($value);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function outputValue($format = ElementFactory::OUTPUT_FORMAT_TEXT)
+    {
+        return $this->_applyOutputFilter($this->_value);
+    }
+}
diff --git a/app/code/Magento/Customer/Model/Metadata/Form/Text.php b/app/code/Magento/Customer/Model/Metadata/Form/Text.php
index d6accf1e5bf..e11cfb9fd0a 100644
--- a/app/code/Magento/Customer/Model/Metadata/Form/Text.php
+++ b/app/code/Magento/Customer/Model/Metadata/Form/Text.php
@@ -25,7 +25,7 @@
  */
 namespace Magento\Customer\Model\Metadata\Form;
 
-use Magento\Framework\Service\ArrayObjectSearch;
+use Magento\Framework\Api\ArrayObjectSearch;
 
 class Text extends AbstractData
 {
diff --git a/app/code/Magento/Customer/Model/Resource/AddressRepository.php b/app/code/Magento/Customer/Model/Resource/AddressRepository.php
new file mode 100644
index 00000000000..6d3fbec6018
--- /dev/null
+++ b/app/code/Magento/Customer/Model/Resource/AddressRepository.php
@@ -0,0 +1,303 @@
+<?php
+/**
+ * Customer address entity resource model
+ *
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+namespace Magento\Customer\Model\Resource;
+
+use Magento\Framework\Exception\InputException;
+use Magento\Framework\Api\Search\FilterGroup;
+use Magento\Framework\Api\SearchCriteria;
+use Magento\Framework\Api\SortOrder;
+use Magento\Customer\Model\Address as CustomerAddressModel;
+use Magento\Customer\Model\Resource\Address\Collection;
+
+class AddressRepository implements \Magento\Customer\Api\AddressRepositoryInterface
+{
+    /**
+     * Directory data
+     *
+     * @var \Magento\Directory\Helper\Data
+     */
+    protected $directoryData;
+
+    /**
+     * @var \Magento\Customer\Model\AddressFactory
+     */
+    protected $addressFactory;
+
+    /**
+     * @var \Magento\Customer\Model\AddressRegistry
+     */
+    protected $addressRegistry;
+
+    /**
+     * @var \Magento\Customer\Model\CustomerRegistry
+     */
+    protected $customerRegistry;
+
+    /**
+     * @var \Magento\Customer\Model\Resource\Address
+     */
+    protected $addressResourceModel;
+
+    /**
+     * @var \Magento\Customer\Api\Data\AddressSearchResultsDataBuilder
+     */
+    protected $addressSearchResultsBuilder;
+
+    /**
+     * @var \Magento\Customer\Model\Resource\Address\CollectionFactory
+     */
+    protected $addressCollectionFactory;
+
+    /**
+     * @param \Magento\Customer\Model\AddressFactory $addressFactory
+     * @param \Magento\Customer\Model\AddressRegistry $addressRegistry
+     * @param \Magento\Customer\Model\CustomerRegistry $customerRegistry
+     * @param \Magento\Customer\Model\Resource\Address $addressResourceModel
+     * @param \Magento\Directory\Helper\Data $directoryData
+     * @param \Magento\Customer\Api\Data\AddressSearchResultsDataBuilder $addressSearchResultsBuilder
+     * @param \Magento\Customer\Model\Resource\Address\CollectionFactory $addressCollectionFactory
+     */
+    public function __construct(
+        \Magento\Customer\Model\AddressFactory $addressFactory,
+        \Magento\Customer\Model\AddressRegistry $addressRegistry,
+        \Magento\Customer\Model\CustomerRegistry $customerRegistry,
+        \Magento\Customer\Model\Resource\Address $addressResourceModel,
+        \Magento\Directory\Helper\Data $directoryData,
+        \Magento\Customer\Api\Data\AddressSearchResultsDataBuilder $addressSearchResultsBuilder,
+        \Magento\Customer\Model\Resource\Address\CollectionFactory $addressCollectionFactory
+    ) {
+        $this->addressFactory = $addressFactory;
+        $this->addressRegistry = $addressRegistry;
+        $this->customerRegistry = $customerRegistry;
+        $this->addressResource = $addressResourceModel;
+        $this->directoryData = $directoryData;
+        $this->addressSearchResultsBuilder = $addressSearchResultsBuilder;
+        $this->addressCollectionFactory = $addressCollectionFactory;
+    }
+
+    /**
+     * Save customer address.
+     *
+     * @param \Magento\Customer\Api\Data\AddressInterface $address
+     * @return \Magento\Customer\Api\Data\AddressInterface
+     * @throws \Magento\Framework\Exception\LocalizedException
+     */
+    public function save(\Magento\Customer\Api\Data\AddressInterface $address)
+    {
+        $addressModel = null;
+        $customerModel = $this->customerRegistry->retrieve($address->getCustomerId());
+        if ($address->getId()) {
+            $addressModel = $this->addressRegistry->retrieve($address->getId());
+        }
+
+        if (is_null($addressModel)) {
+            $addressModel = $this->addressFactory->create();
+            $addressModel->updateData($address);
+            $addressModel->setCustomer($customerModel);
+        } else {
+            $addressModel->updateData($address);
+        }
+
+        $inputException = $this->_validate($addressModel);
+        if ($inputException->wasErrorAdded()) {
+            throw $inputException;
+        }
+        $this->addressResource->save($addressModel);
+        $this->addressRegistry->push($addressModel);
+        $customerModel->getAddressesCollection()->clear();
+
+        return $addressModel->getDataModel();
+    }
+
+    /**
+     * Retrieve customer address.
+     *
+     * @param int $addressId
+     * @return \Magento\Customer\Api\Data\AddressInterface
+     * @throws \Magento\Framework\Exception\LocalizedException
+     */
+    public function get($addressId)
+    {
+        $address = $this->addressRegistry->retrieve($addressId);
+        return $address->getDataModel();
+    }
+
+    /**
+     * Retrieve customers addresses matching the specified criteria.
+     *
+     * @param \Magento\Framework\Api\SearchCriteriaInterface $searchCriteria
+     * @return \Magento\Customer\Api\Data\AddressSearchResultsInterface
+     * @throws \Magento\Framework\Exception\LocalizedException
+     */
+    public function getList(\Magento\Framework\Api\SearchCriteriaInterface $searchCriteria)
+    {
+        $this->addressSearchResultsBuilder->setSearchCriteria($searchCriteria);
+
+        /** @var Collection $collection */
+        $collection = $this->addressCollectionFactory->create();
+        // Add filters from root filter group to the collection
+        foreach ($searchCriteria->getFilterGroups() as $group) {
+            $this->addFilterGroupToCollection($group, $collection);
+        }
+        $this->addressSearchResultsBuilder->setTotalCount($collection->getSize());
+        $sortOrders = $searchCriteria->getSortOrders();
+        /** @var SortOrder $sortOrder */
+        if ($sortOrders) {
+            foreach ($searchCriteria->getSortOrders() as $sortOrder) {
+                $field = $sortOrder->getField();
+                $collection->addOrder(
+                    $field,
+                    ($sortOrder->getDirection() == SearchCriteriaInterface::SORT_ASC) ? 'ASC' : 'DESC'
+                );
+            }
+        }
+        $collection->setCurPage($searchCriteria->getCurrentPage());
+        $collection->setPageSize($searchCriteria->getPageSize());
+
+        /** @var \Magento\Customer\Api\Data\AddressInterface[] $addresses */
+        $addresses = [];
+        $addressIds = $collection->getAllIds();
+        foreach ($addressIds as $addressId) {
+            $addresses[] = $this->get($addressId);
+        }
+        $this->addressSearchResultsBuilder->setItems($addresses);
+        return $this->addressSearchResultsBuilder->create();
+    }
+
+    /**
+     * Helper function that adds a FilterGroup to the collection.
+     *
+     * @param FilterGroup $filterGroup
+     * @param Collection $collection
+     * @return void
+     * @throws \Magento\Framework\Exception\InputException
+     */
+    protected function addFilterGroupToCollection(FilterGroup $filterGroup, Collection $collection)
+    {
+        $fields = [];
+        $conditions = [];
+        foreach ($filterGroup->getFilters() as $filter) {
+            $condition = $filter->getConditionType() ? $filter->getConditionType() : 'eq';
+            $fields[] = ['attribute' => $filter->getField(), $condition => $filter->getValue()];
+            $conditions[] = [$condition => $filter->getValue()];
+        }
+        if ($fields) {
+            $collection->addFieldToFilter($fields, $conditions);
+        }
+    }
+
+    /**
+     * Delete customer address.
+     *
+     * @param \Magento\Customer\Api\Data\AddressInterface $address
+     * @return bool true on success
+     * @throws \Magento\Framework\Exception\LocalizedException
+     */
+    public function delete(\Magento\Customer\Api\Data\AddressInterface $address)
+    {
+        $address = $this->addressRegistry->retrieve($address->getId());
+        $customerModel = $this->customerRegistry->retrieve($address->getCustomerId());
+        $customerModel->getAddressesCollection()->clear();
+        $this->addressResource->delete($address);
+        $this->addressRegistry->remove($address->getId());
+        return true;
+    }
+
+    /**
+     * Delete customer address by ID.
+     *
+     * @param int $addressId
+     * @return bool true on success
+     * @throws \Magento\Framework\Exception\NoSuchEntityException
+     * @throws \Magento\Framework\Exception\LocalizedException
+     */
+    public function deleteById($addressId)
+    {
+        $address = $this->addressRegistry->retrieve($addressId);
+        $customerModel = $this->customerRegistry->retrieve($address->getCustomerId());
+        $customerModel->getAddressesCollection()->clear();
+        $this->addressResource->delete($address);
+        $this->addressRegistry->remove($addressId);
+        return true;
+    }
+
+    /**
+     * Validate Customer Addresses attribute values.
+     *
+     * @param CustomerAddressModel $customerAddressModel the model to validate
+     * @return InputException
+     *
+     * @SuppressWarnings(PHPMD.NPathComplexity)
+     * @SuppressWarnings(PHPMD.CyclomaticComplexity)
+     */
+    private function _validate(CustomerAddressModel $customerAddressModel)
+    {
+        $exception = new InputException();
+        if ($customerAddressModel->getShouldIgnoreValidation()) {
+            return $exception;
+        }
+
+        if (!\Zend_Validate::is($customerAddressModel->getFirstname(), 'NotEmpty')) {
+            $exception->addError(InputException::REQUIRED_FIELD, ['fieldName' => 'firstname']);
+        }
+
+        if (!\Zend_Validate::is($customerAddressModel->getLastname(), 'NotEmpty')) {
+            $exception->addError(InputException::REQUIRED_FIELD, ['fieldName' => 'lastname']);
+        }
+
+        if (!\Zend_Validate::is($customerAddressModel->getStreet(1), 'NotEmpty')) {
+            $exception->addError(InputException::REQUIRED_FIELD, ['fieldName' => 'street']);
+        }
+
+        if (!\Zend_Validate::is($customerAddressModel->getCity(), 'NotEmpty')) {
+            $exception->addError(InputException::REQUIRED_FIELD, ['fieldName' => 'city']);
+        }
+
+        if (!\Zend_Validate::is($customerAddressModel->getTelephone(), 'NotEmpty')) {
+            $exception->addError(InputException::REQUIRED_FIELD, ['fieldName' => 'telephone']);
+        }
+
+        $havingOptionalZip = $this->directoryData->getCountriesWithOptionalZip();
+        if (!in_array($customerAddressModel->getCountryId(), $havingOptionalZip)
+            && !\Zend_Validate::is($customerAddressModel->getPostcode(), 'NotEmpty')
+        ) {
+            $exception->addError(InputException::REQUIRED_FIELD, ['fieldName' => 'postcode']);
+        }
+
+        if (!\Zend_Validate::is($customerAddressModel->getCountryId(), 'NotEmpty')) {
+            $exception->addError(InputException::REQUIRED_FIELD, ['fieldName' => 'countryId']);
+        }
+
+        if ($customerAddressModel->getCountryModel()->getRegionCollection()->getSize()
+            && !\Zend_Validate::is($customerAddressModel->getRegionId(), 'NotEmpty')
+            && $this->directoryData->isRegionRequired($customerAddressModel->getCountryId())
+        ) {
+            $exception->addError(InputException::REQUIRED_FIELD, ['fieldName' => 'regionId']);
+        }
+
+        return $exception;
+    }
+}
diff --git a/app/code/Magento/Customer/Model/Resource/Customer/Grid/ServiceCollection.php b/app/code/Magento/Customer/Model/Resource/Customer/Grid/ServiceCollection.php
index 3388889e4ad..d1e8266fe42 100644
--- a/app/code/Magento/Customer/Model/Resource/Customer/Grid/ServiceCollection.php
+++ b/app/code/Magento/Customer/Model/Resource/Customer/Grid/ServiceCollection.php
@@ -24,12 +24,12 @@
 namespace Magento\Customer\Model\Resource\Customer\Grid;
 
 use Magento\Core\Model\EntityFactory;
-use Magento\Framework\Service\AbstractServiceCollection;
+use Magento\Framework\Api\AbstractServiceCollection;
 use Magento\Customer\Service\V1\CustomerAccountServiceInterface;
 use Magento\Customer\Service\V1\Data\CustomerDetails;
-use Magento\Framework\Service\V1\Data\FilterBuilder;
-use Magento\Framework\Service\V1\Data\SearchCriteriaBuilder;
-use Magento\Framework\Service\V1\Data\SortOrderBuilder;
+use Magento\Framework\Api\FilterBuilder;
+use Magento\Framework\Api\SearchCriteriaBuilder;
+use Magento\Framework\Api\SortOrderBuilder;
 
 /**
  * Customer Grid Collection backed by Services
diff --git a/app/code/Magento/Customer/Model/Resource/CustomerRepository.php b/app/code/Magento/Customer/Model/Resource/CustomerRepository.php
new file mode 100644
index 00000000000..f6af8b15aeb
--- /dev/null
+++ b/app/code/Magento/Customer/Model/Resource/CustomerRepository.php
@@ -0,0 +1,372 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Customer\Model\Resource;
+
+use Magento\Customer\Model\Address as CustomerAddressModel;
+use Magento\Customer\Model\Data\CustomerSecure;
+use Magento\Framework\Exception\InputException;
+use Magento\Framework\Exception\NoSuchEntityException;
+use Magento\Framework\Api\SearchCriteriaInterface;
+
+/**
+ * Customer repository.
+ */
+class CustomerRepository implements \Magento\Customer\Api\CustomerRepositoryInterface
+{
+    /**
+     * @var \Magento\Framework\Reflection\DataObjectProcessor
+     */
+    protected $dataProcessor;
+
+    /**
+     * @var \Magento\Customer\Model\CustomerFactory
+     */
+    protected $customerFactory;
+
+    /**
+     * @var \Magento\Customer\Model\Data\CustomerSecureFactory
+     */
+    protected $customerSecureFactory;
+
+    /**
+     * @var \Magento\Customer\Model\CustomerRegistry
+     */
+    protected $customerRegistry;
+
+    /**
+     * @var \Magento\Customer\Model\Resource\AddressRepository
+     */
+    protected $addressRepository;
+
+    /**
+     * @var \Magento\Customer\Model\Resource\Customer
+     */
+    protected $customerResourceModel;
+
+    /**
+     * @var \Magento\Customer\Api\CustomerMetadataInterface
+     */
+    protected $customerMetadata;
+
+    /**
+     * @var \Magento\Customer\Api\Data\AddressDataBuilder
+     */
+    protected $addressBuilder;
+
+    /**
+     * @var \Magento\Customer\Api\Data\CustomerDataBuilder
+     */
+    protected $customerBuilder;
+
+    /**
+     * @var \Magento\Customer\Api\Data\CustomerSearchResultsDataBuilder
+     */
+    protected $searchResultsBuilder;
+
+    /**
+     * @var \Magento\Framework\Event\ManagerInterface
+     */
+    protected $eventManager;
+
+    /**
+     * @var \Magento\Framework\StoreManagerInterface
+     */
+    protected $storeManager;
+
+    /**
+     * @param \Magento\Framework\Reflection\DataObjectProcessor $dataProcessor
+     * @param \Magento\Customer\Model\CustomerFactory $customerFactory
+     * @param \Magento\Customer\Model\Data\CustomerSecureFactory $customerSecureFactory
+     * @param \Magento\Customer\Model\CustomerRegistry $customerRegistry
+     * @param \Magento\Customer\Model\Resource\AddressRepository $addressRepository
+     * @param \Magento\Customer\Model\Resource\Customer $customerResourceModel
+     * @param \Magento\Customer\Api\CustomerMetadataInterface $customerMetadata
+     * @param \Magento\Customer\Api\Data\AddressDataBuilder $addressBuilder
+     * @param \Magento\Customer\Api\Data\CustomerDataBuilder $customerBuilder
+     * @param \Magento\Customer\Api\Data\CustomerSearchResultsDataBuilder $searchResultsDataBuilder
+     * @param \Magento\Framework\Event\ManagerInterface $eventManager
+     * @param \Magento\Framework\StoreManagerInterface $storeManager
+     */
+    public function __construct(
+        \Magento\Framework\Reflection\DataObjectProcessor $dataProcessor,
+        \Magento\Customer\Model\CustomerFactory $customerFactory,
+        \Magento\Customer\Model\Data\CustomerSecureFactory $customerSecureFactory,
+        \Magento\Customer\Model\CustomerRegistry $customerRegistry,
+        \Magento\Customer\Model\Resource\AddressRepository $addressRepository,
+        \Magento\Customer\Model\Resource\Customer $customerResourceModel,
+        \Magento\Customer\Api\CustomerMetadataInterface $customerMetadata,
+        \Magento\Customer\Api\Data\AddressDataBuilder $addressBuilder,
+        \Magento\Customer\Api\Data\CustomerDataBuilder $customerBuilder,
+        \Magento\Customer\Api\Data\CustomerSearchResultsDataBuilder $searchResultsDataBuilder,
+        \Magento\Framework\Event\ManagerInterface $eventManager,
+        \Magento\Framework\StoreManagerInterface $storeManager
+    ) {
+        $this->dataProcessor = $dataProcessor;
+        $this->customerFactory = $customerFactory;
+        $this->customerSecureFactory = $customerSecureFactory;
+        $this->customerRegistry = $customerRegistry;
+        $this->addressRepository = $addressRepository;
+        $this->customerResourceModel = $customerResourceModel;
+        $this->customerMetadata = $customerMetadata;
+        $this->addressBuilder = $addressBuilder;
+        $this->customerBuilder = $customerBuilder;
+        $this->searchResultsBuilder = $searchResultsDataBuilder;
+        $this->eventManager = $eventManager;
+        $this->storeManager = $storeManager;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function save(\Magento\Customer\Api\Data\CustomerInterface $customer, $passwordHash = null)
+    {
+        $isNewCustomer = $customer->getId() ? false : true;
+        $this->validate($customer);
+        $customerModel = $this->customerFactory->create(
+            [
+                'data' => $this->dataProcessor->buildOutputDataArray(
+                    $customer,
+                    'Magento\Customer\Api\Data\CustomerInterface'
+                )
+            ]
+        );
+        $storeId = $customerModel->getStoreId();
+        if ($storeId === null) {
+            $customerModel->setStoreId($this->storeManager->getStore()->getId());
+        }
+        $customerModel->getGroupId();
+        $customerModel->setId($customer->getId());
+        /** Prevent addresses being processed by resource model */
+        $customerModel->unsAddresses();
+        // Need to use attribute set or future updates can cause data loss
+        if (!$customerModel->getAttributeSetId()) {
+            $customerModel->setAttributeSetId(
+                \Magento\Customer\Service\V1\CustomerMetadataServiceInterface::ATTRIBUTE_SET_ID_CUSTOMER
+            );
+        }
+        // Populate model with secure data
+        if ($customer->getId()) {
+            /*
+             * TODO: Check \Magento\Customer\Model\Resource\Customer::changeResetPasswordLinkToken setAttribute
+             * and make sure its consistent
+             */
+            $customerSecure = $this->customerRegistry->retrieveSecureData($customer->getId());
+            $customerModel->setRpToken($customerSecure->getRpToken());
+            $customerModel->setRpTokenCreatedAt($customerSecure->getRpTokenCreatedAt());
+            $customerModel->setPasswordHash($customerSecure->getPasswordHash());
+        } else {
+            if ($passwordHash) {
+                $customerModel->setPasswordHash($passwordHash);
+            }
+        }
+        $this->customerResourceModel->save($customerModel);
+        $this->customerRegistry->push($customerModel);
+        $customerId = $customerModel->getId();
+        foreach ($customer->getAddresses() as $address) {
+            $address = $this->addressBuilder->populate($address)->setCustomerId($customerId)->create();
+            $this->addressRepository->save($address);
+        }
+        $savedCustomer = $this->get($customer->getEmail(), $customer->getWebsiteId());
+        $this->eventManager->dispatch(
+            'customer_save_after_data_object',
+            ['customer_data_object' => $savedCustomer, 'orig_customer_data_object' => $customer]
+        );
+        return $savedCustomer;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function get($email, $websiteId = null)
+    {
+        $customerModel = $this->customerRegistry->retrieveByEmail($email, $websiteId);
+        return $customerModel->getDataModel();
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getById($customerId, $websiteId = null)
+    {
+        $customerModel = $this->customerRegistry->retrieve($customerId, $websiteId);
+        return $customerModel->getDataModel();
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getList(SearchCriteriaInterface $searchCriteria)
+    {
+        $this->searchResultsBuilder->setSearchCriteria($searchCriteria);
+        /** @var \Magento\Customer\Model\Resource\Customer\Collection $collection */
+        $collection = $this->customerFactory->create()->getCollection();
+        // This is needed to make sure all the attributes are properly loaded
+        foreach ($this->customerMetadata->getAllAttributesMetadata() as $metadata) {
+            $collection->addAttributeToSelect($metadata->getAttributeCode());
+        }
+        // Needed to enable filtering on name as a whole
+        $collection->addNameToSelect();
+        // Needed to enable filtering based on billing address attributes
+        $collection->joinAttribute('billing_postcode', 'customer_address/postcode', 'default_billing', null, 'left')
+            ->joinAttribute('billing_city', 'customer_address/city', 'default_billing', null, 'left')
+            ->joinAttribute('billing_telephone', 'customer_address/telephone', 'default_billing', null, 'left')
+            ->joinAttribute('billing_region', 'customer_address/region', 'default_billing', null, 'left')
+            ->joinAttribute('billing_country_id', 'customer_address/country_id', 'default_billing', null, 'left')
+            ->joinAttribute('company', 'customer_address/company', 'default_billing', null, 'left');
+        //Add filters from root filter group to the collection
+        foreach ($searchCriteria->getFilterGroups() as $group) {
+            $this->addFilterGroupToCollection($group, $collection);
+        }
+        $this->searchResultsBuilder->setTotalCount($collection->getSize());
+        $sortOrders = $searchCriteria->getSortOrders();
+        if ($sortOrders) {
+            foreach ($searchCriteria->getSortOrders() as $sortOrder) {
+                $collection->addOrder(
+                    $sortOrder->getField(),
+                    ($sortOrder->getDirection() == SearchCriteriaInterface::SORT_ASC) ? 'ASC' : 'DESC'
+                );
+            }
+        }
+        $collection->setCurPage($searchCriteria->getCurrentPage());
+        $collection->setPageSize($searchCriteria->getPageSize());
+        $customers = [];
+        /** @var \Magento\Customer\Model\Customer $customerModel */
+        foreach ($collection as $customerModel) {
+            $customers[] = $customerModel->getDataModel();
+        }
+        $this->searchResultsBuilder->setItems($customers);
+        return $this->searchResultsBuilder->create();
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function delete(\Magento\Customer\Api\Data\CustomerInterface $customer)
+    {
+        return $this->deleteById($customer->getId());
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function deleteById($customerId)
+    {
+        $customerModel = $this->customerRegistry->retrieve($customerId);
+        $customerModel->delete();
+        $this->customerRegistry->remove($customerId);
+        return true;
+    }
+
+    /**
+     * Validate customer attribute values.
+     *
+     * @param \Magento\Customer\Api\Data\CustomerInterface $customer
+     * @throws InputException
+     * @return void
+     * @SuppressWarnings(PHPMD.CyclomaticComplexity)
+     * @SuppressWarnings(PHPMD.NPathComplexity)
+     */
+    private function validate(\Magento\Customer\Api\Data\CustomerInterface $customer)
+    {
+        $exception = new InputException();
+        if (!\Zend_Validate::is(trim($customer->getFirstname()), 'NotEmpty')) {
+            $exception->addError(InputException::REQUIRED_FIELD, ['fieldName' => 'firstname']);
+        }
+
+        if (!\Zend_Validate::is(trim($customer->getLastname()), 'NotEmpty')) {
+            $exception->addError(InputException::REQUIRED_FIELD, ['fieldName' => 'lastname']);
+        }
+
+        $isEmailAddress = \Zend_Validate::is(
+            $customer->getEmail(),
+            'EmailAddress',
+            ['allow' => ['allow'=> \Zend_Validate_Hostname::ALLOW_ALL, 'tld' => false]]
+        );
+
+        if (!$isEmailAddress) {
+            $exception->addError(
+                InputException::INVALID_FIELD_VALUE,
+                ['fieldName' => 'email', 'value' => $customer->getEmail()]
+            );
+        }
+
+        $dob = $this->getAttributeMetadata('dob');
+        if (!is_null($dob) && $dob->isRequired() && '' == trim($customer->getDob())) {
+            $exception->addError(InputException::REQUIRED_FIELD, ['fieldName' => 'dob']);
+        }
+
+        $taxvat = $this->getAttributeMetadata('taxvat');
+        if (!is_null($taxvat) && $taxvat->isRequired() && '' == trim($customer->getTaxvat())) {
+            $exception->addError(InputException::REQUIRED_FIELD, ['fieldName' => 'taxvat']);
+        }
+
+        $gender = $this->getAttributeMetadata('gender');
+        if (!is_null($gender) && $gender->isRequired() && '' == trim($customer->getGender())) {
+            $exception->addError(InputException::REQUIRED_FIELD, ['fieldName' => 'gender']);
+        }
+
+        if ($exception->wasErrorAdded()) {
+            throw $exception;
+        }
+    }
+
+    /**
+     * Get attribute metadata.
+     *
+     * @param string $attributeCode
+     * @return \Magento\Customer\Api\Data\AttributeMetadataInterface|null
+     */
+    private function getAttributeMetadata($attributeCode)
+    {
+        try {
+            return $this->customerMetadata->getAttributeMetadata($attributeCode);
+        } catch (NoSuchEntityException $e) {
+            return null;
+        }
+    }
+
+    /**
+     * Helper function that adds a FilterGroup to the collection.
+     *
+     * @param \Magento\Framework\Api\Search\FilterGroup $filterGroup
+     * @param \Magento\Customer\Model\Resource\Customer\Collection $collection
+     * @return void
+     * @throws \Magento\Framework\Exception\InputException
+     */
+    protected function addFilterGroupToCollection(
+        \Magento\Framework\Api\Search\FilterGroup $filterGroup,
+        \Magento\Customer\Model\Resource\Customer\Collection $collection
+    ) {
+        $fields = [];
+        $conditions = [];
+        foreach ($filterGroup->getFilters() as $filter) {
+            $condition = $filter->getConditionType() ? $filter->getConditionType() : 'eq';
+            $fields[] = array('attribute' => $filter->getField(), $condition => $filter->getValue());
+        }
+        if ($fields) {
+            $collection->addFieldToFilter($fields, $conditions);
+        }
+    }
+}
diff --git a/app/code/Magento/Customer/Model/Resource/Group.php b/app/code/Magento/Customer/Model/Resource/Group.php
index 6ae36a22640..5ab50532807 100644
--- a/app/code/Magento/Customer/Model/Resource/Group.php
+++ b/app/code/Magento/Customer/Model/Resource/Group.php
@@ -123,4 +123,17 @@ class Group extends \Magento\Framework\Model\Resource\Db\AbstractDb
     {
         return $this->_customersFactory->create();
     }
+
+    /**
+     * Prepare data before save
+     *
+     * @param \Magento\Framework\Model\AbstractModel $group
+     * @return $this
+     */
+    protected function _beforeSave(\Magento\Framework\Model\AbstractModel $group)
+    {
+        /** @var \Magento\Customer\Model\Group $group */
+        $group->setCode(substr($group->getCode(), 0, $group::GROUP_CODE_MAX_LENGTH));
+        return parent::_beforeSave($group);
+    }
 }
diff --git a/app/code/Magento/Customer/Model/Resource/Group/Grid/ServiceCollection.php b/app/code/Magento/Customer/Model/Resource/Group/Grid/ServiceCollection.php
index 7b169e24378..9a574780a80 100644
--- a/app/code/Magento/Customer/Model/Resource/Group/Grid/ServiceCollection.php
+++ b/app/code/Magento/Customer/Model/Resource/Group/Grid/ServiceCollection.php
@@ -24,12 +24,12 @@
 namespace Magento\Customer\Model\Resource\Group\Grid;
 
 use Magento\Core\Model\EntityFactory;
-use Magento\Framework\Service\AbstractServiceCollection;
+use Magento\Framework\Api\AbstractServiceCollection;
 use Magento\Customer\Service\V1\CustomerGroupServiceInterface;
 use Magento\Customer\Service\V1\Data\CustomerGroup;
-use Magento\Framework\Service\V1\Data\FilterBuilder;
-use Magento\Framework\Service\V1\Data\SearchCriteriaBuilder;
-use Magento\Framework\Service\V1\Data\SortOrderBuilder;
+use Magento\Framework\Api\FilterBuilder;
+use Magento\Framework\Api\SearchCriteriaBuilder;
+use Magento\Framework\Api\SortOrderBuilder;
 
 /**
  * Customer group collection backed by services
@@ -76,7 +76,7 @@ class ServiceCollection extends AbstractServiceCollection
             $groups = $searchResults->getItems();
             foreach ($groups as $group) {
                 $groupItem = new \Magento\Framework\Object();
-                $groupItem->addData(\Magento\Framework\Service\SimpleDataObjectConverter::toFlatArray($group));
+                $groupItem->addData(\Magento\Framework\Api\SimpleDataObjectConverter::toFlatArray($group));
                 $this->_addItem($groupItem);
             }
             $this->_setIsLoaded();
diff --git a/app/code/Magento/Customer/Model/Resource/GroupRepository.php b/app/code/Magento/Customer/Model/Resource/GroupRepository.php
new file mode 100644
index 00000000000..69bf9a8943d
--- /dev/null
+++ b/app/code/Magento/Customer/Model/Resource/GroupRepository.php
@@ -0,0 +1,332 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Customer\Model\Resource;
+
+use Magento\Customer\Api\Data\GroupInterface;
+use Magento\Customer\Model\Resource\Group\Collection;
+use Magento\Framework\Api\SearchCriteriaInterface;
+use Magento\Framework\Exception\InputException;
+use Magento\Framework\Exception\State\InvalidTransitionException;
+use Magento\Framework\Api\Search\FilterGroup;
+use Magento\Tax\Service\V1\Data\TaxClass;
+use Magento\Tax\Service\V1\TaxClassServiceInterface;
+
+/**
+ * Customer group CRUD class
+ */
+class GroupRepository implements \Magento\Customer\Api\GroupRepositoryInterface
+{
+
+    /**
+     * The default tax class id if no tax class id is specified
+     */
+    const DEFAULT_TAX_CLASS_ID = 3;
+
+    /**
+     * @var \Magento\Customer\Model\GroupRegistry
+     */
+    protected $groupRegistry;
+
+    /**
+     * @var \Magento\Customer\Model\GroupFactory
+     */
+    protected $groupFactory;
+
+    /**
+     * @var \Magento\Customer\Api\Data\GroupDataBuilder
+     */
+    protected $groupBuilder;
+
+    /**
+     * @var \Magento\Customer\Model\Resource\Group
+     */
+    protected $groupResourceModel;
+
+    /**
+     * @var \Magento\Framework\Reflection\DataObjectProcessor
+     */
+    protected $dataObjectProcessor;
+
+    /**
+     * @var \Magento\Customer\Api\Data\GroupSearchResultsDataBuilder
+     */
+    protected $searchResultsBuilder;
+
+    /**
+     * @var TaxClassServiceInterface
+     */
+    private $taxClassService;
+
+    /**
+     * @param \Magento\Customer\Model\GroupRegistry $groupRegistry
+     * @param \Magento\Customer\Model\GroupFactory $groupFactory
+     * @param \Magento\Customer\Api\Data\GroupDataBuilder $groupBuilder
+     * @param \Magento\Customer\Model\Resource\Group $groupResourceModel
+     * @param \Magento\Framework\Reflection\DataObjectProcessor $dataObjectProcessor
+     * @param \Magento\Customer\Api\Data\GroupSearchResultsDataBuilder $searchResultsBuilder
+     * @param TaxClassServiceInterface $taxClassServiceInterface
+     */
+    public function __construct(
+        \Magento\Customer\Model\GroupRegistry $groupRegistry,
+        \Magento\Customer\Model\GroupFactory $groupFactory,
+        \Magento\Customer\Api\Data\GroupDataBuilder $groupBuilder,
+        \Magento\Customer\Model\Resource\Group $groupResourceModel,
+        \Magento\Framework\Reflection\DataObjectProcessor $dataObjectProcessor,
+        \Magento\Customer\Api\Data\GroupSearchResultsDataBuilder $searchResultsBuilder,
+        TaxClassServiceInterface $taxClassServiceInterface
+    ) {
+        $this->groupRegistry = $groupRegistry;
+        $this->groupFactory = $groupFactory;
+        $this->groupBuilder = $groupBuilder;
+        $this->groupResourceModel = $groupResourceModel;
+        $this->dataObjectProcessor = $dataObjectProcessor;
+        $this->searchResultsBuilder = $searchResultsBuilder;
+        $this->taxClassService = $taxClassServiceInterface;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function save(\Magento\Customer\Api\Data\GroupInterface $group)
+    {
+        $this->_validate($group);
+
+        /** @var \Magento\Customer\Model\Group $groupModel */
+        $groupModel = null;
+        if ($group->getId()) {
+            $this->_verifyTaxClassModel($group->getTaxClassId(), $group);
+            $groupModel = $this->groupRegistry->retrieve($group->getId());
+            $groupDataAttributes = $this->dataObjectProcessor->buildOutputDataArray(
+                $group,
+                '\Magento\Customer\Api\Data\GroupInterface'
+            );
+            foreach ($groupDataAttributes as $attributeCode => $attributeData) {
+                $groupModel->setDataUsingMethod($attributeCode, $attributeData);
+            }
+        } else {
+            $groupModel = $this->groupFactory->create();
+            $groupModel->setCode($group->getCode());
+
+            $taxClassId = $group->getTaxClassId() ? : self::DEFAULT_TAX_CLASS_ID;
+            $this->_verifyTaxClassModel($taxClassId, $group);
+            $groupModel->setTaxClassId($taxClassId);
+        }
+
+        try {
+            $this->groupResourceModel->save($groupModel);
+        } catch (\Magento\Framework\Model\Exception $e) {
+            /**
+             * Would like a better way to determine this error condition but
+             *  difficult to do without imposing more database calls
+             */
+            if ($e->getMessage() === __('Customer Group already exists.')) {
+                throw new InvalidTransitionException('Customer Group already exists.');
+            }
+            throw $e;
+        }
+
+        $this->groupRegistry->remove($groupModel->getId());
+
+        $this->groupBuilder->setId($groupModel->getId());
+        $this->groupBuilder->setCode($groupModel->getCode());
+        $this->groupBuilder->setTaxClassId($groupModel->getTaxClassId());
+        $this->groupBuilder->setTaxClassName($groupModel->getTaxClassName());
+        return $this->groupBuilder->create();
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function get($id)
+    {
+        $groupModel = $this->groupRegistry->retrieve($id);
+        return $this->groupBuilder->setId($groupModel->getId())
+            ->setCode($groupModel->getCode())
+            ->setTaxClassId($groupModel->getTaxClassId())
+            ->setTaxClassName($groupModel->getTaxClassName())
+            ->create();
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getList(SearchCriteriaInterface $searchCriteria)
+    {
+        $this->searchResultsBuilder->setSearchCriteria($searchCriteria);
+
+        /** @var \Magento\Customer\Model\Resource\Group\Collection $collection */
+        $collection = $this->groupFactory->create()->getCollection();
+
+        //Add filters from root filter group to the collection
+        /** @var FilterGroup $group */
+        foreach ($searchCriteria->getFilterGroups() as $group) {
+            $this->addFilterGroupToCollection($group, $collection);
+        }
+        $this->searchResultsBuilder->setTotalCount($collection->getSize());
+        $sortOrders = $searchCriteria->getSortOrders();
+        /** @var \Magento\Framework\Api\SortOrder $sortOrder */
+        if ($sortOrders) {
+            foreach ($searchCriteria->getSortOrders() as $sortOrder) {
+                $field = $this->translateField($sortOrder->getField());
+                $collection->addOrder(
+                    $field,
+                    ($sortOrder->getDirection() == SearchCriteriaInterface::SORT_ASC) ? 'ASC' : 'DESC'
+                );
+            }
+        }
+        $collection->setCurPage($searchCriteria->getCurrentPage());
+        $collection->setPageSize($searchCriteria->getPageSize());
+
+        /** @var \Magento\Customer\Api\Data\GroupInterface[] $groups */
+        $groups = array();
+        /** @var \Magento\Customer\Model\Group $group */
+        foreach ($collection as $group) {
+            $this->groupBuilder->setId($group->getId());
+            $this->groupBuilder->setCode($group->getCode());
+            $this->groupBuilder->setTaxClassId($group->getTaxClassId());
+            $this->groupBuilder->setTaxClassName($group->getTaxClassName());
+            $groups[] = $this->groupBuilder->create();
+        }
+        return $this->searchResultsBuilder->setItems($groups)->create();
+    }
+
+    /**
+     * Helper function that adds a FilterGroup to the collection.
+     *
+     * @param FilterGroup $filterGroup
+     * @param Collection $collection
+     * @return void
+     * @throws \Magento\Framework\Exception\InputException
+     */
+    protected function addFilterGroupToCollection(FilterGroup $filterGroup, Collection $collection)
+    {
+        $fields = [];
+        $conditions = [];
+        foreach ($filterGroup->getFilters() as $filter) {
+            $condition = $filter->getConditionType() ? $filter->getConditionType() : 'eq';
+            $fields[] = $this->translateField($filter->getField());
+            $conditions[] = [$condition => $filter->getValue()];
+        }
+        if ($fields) {
+            $collection->addFieldToFilter($fields, $conditions);
+        }
+    }
+
+    /**
+     * Translates a field name to a DB column name for use in collection queries.
+     *
+     * @param string $field a field name that should be translated to a DB column name.
+     * @return string
+     */
+    protected function translateField($field)
+    {
+        switch ($field) {
+            case GroupInterface::CODE:
+                return 'customer_group_code';
+            case GroupInterface::ID:
+                return 'customer_group_id';
+            default:
+                return $field;
+        }
+    }
+
+    /**
+     * Delete customer group.
+     *
+     * @param GroupInterface $group
+     * @return bool true on success
+     * @throws \Magento\Framework\Exception\StateException If customer group cannot be deleted
+     * @throws \Magento\Framework\Exception\LocalizedException
+     */
+    public function delete(GroupInterface $group)
+    {
+        return $this->deleteById($group->getId());
+    }
+
+    /**
+     * Delete customer group by ID.
+     *
+     * @param int $id
+     * @return bool true on success
+     * @throws \Magento\Framework\Exception\NoSuchEntityException
+     * @throws \Magento\Framework\Exception\StateException If customer group cannot be deleted
+     * @throws \Magento\Framework\Exception\LocalizedException
+     */
+    public function deleteById($id)
+    {
+        $groupModel = $this->groupRegistry->retrieve($id);
+
+        if ($id <= 0 || $groupModel->usesAsDefault()) {
+            throw new \Magento\Framework\Exception\StateException('Cannot delete group.');
+        }
+
+        $groupModel->delete();
+        $this->groupRegistry->remove($id);
+        return true;
+    }
+
+    /**
+     * Validate group values.
+     *
+     * @param \Magento\Customer\Api\Data\GroupInterface $group
+     * @throws InputException
+     * @return void
+     *
+     * @SuppressWarnings(PHPMD.NPathComplexity)
+     * @SuppressWarnings(PHPMD.CyclomaticComplexity)
+     */
+    private function _validate($group)
+    {
+        $exception = new InputException();
+        if (!\Zend_Validate::is($group->getCode(), 'NotEmpty')) {
+            $exception->addError(InputException::REQUIRED_FIELD, ['fieldName' => 'code']);
+        }
+
+        if ($exception->wasErrorAdded()) {
+            throw $exception;
+        }
+    }
+
+    /**
+     * Verifies that the tax class model exists and is a customer tax class type.
+     *
+     * @param int $taxClassId The id of the tax class model to check
+     * @param \Magento\Customer\Api\Data\GroupInterface $group The original group parameters
+     * @return void
+     * @throws InputException Thrown if the tax class model is invalid
+     */
+    protected function _verifyTaxClassModel($taxClassId, $group)
+    {
+        try {
+            /* @var TaxClass $taxClassData */
+            $taxClassData = $this->taxClassService->getTaxClass($taxClassId);
+        } catch (\Magento\Framework\Exception\NoSuchEntityException $e) {
+            throw InputException::invalidFieldValue('taxClassId', $group->getTaxClassId());
+        }
+        if ($taxClassData->getClassType() !== TaxClassServiceInterface::TYPE_CUSTOMER) {
+            throw InputException::invalidFieldValue('taxClassId', $group->getTaxClassId());
+        }
+    }
+}
diff --git a/app/code/Magento/Customer/Model/Resource/Setup.php b/app/code/Magento/Customer/Model/Resource/Setup.php
index 14b2bb6b7f7..6c9af4dac68 100644
--- a/app/code/Magento/Customer/Model/Resource/Setup.php
+++ b/app/code/Magento/Customer/Model/Resource/Setup.php
@@ -437,7 +437,8 @@ class Setup extends \Magento\Eav\Model\Entity\Setup
                         'sort_order' => 110,
                         'validate_rules' => 'a:0:{}',
                         'data' => 'Magento\Customer\Model\Attribute\Data\Postcode',
-                        'position' => 110
+                        'position' => 110,
+                        'required' => false,
                     ),
                     'telephone' => array(
                         'type' => 'varchar',
diff --git a/app/code/Magento/Customer/Model/Resource/Visitor.php b/app/code/Magento/Customer/Model/Resource/Visitor.php
index 260bb66c547..8648c137900 100644
--- a/app/code/Magento/Customer/Model/Resource/Visitor.php
+++ b/app/code/Magento/Customer/Model/Resource/Visitor.php
@@ -30,6 +30,31 @@ namespace Magento\Customer\Model\Resource;
  */
 class Visitor extends \Magento\Framework\Model\Resource\Db\AbstractDb
 {
+    /**
+     * @var \Magento\Framework\Stdlib\DateTime\DateTime
+     */
+    protected $date;
+
+    /**
+     * @var \Magento\Framework\Stdlib\DateTime
+     */
+    protected $dateTime;
+
+    /**
+     * @param \Magento\Framework\App\Resource $resource
+     * @param \Magento\Framework\Stdlib\DateTime\DateTime $date
+     * @param \Magento\Framework\Stdlib\DateTime $dateTime
+     */
+    public function __construct(
+        \Magento\Framework\App\Resource $resource,
+        \Magento\Framework\Stdlib\DateTime\DateTime $date,
+        \Magento\Framework\Stdlib\DateTime $dateTime
+    ) {
+        $this->date = $date;
+        $this->dateTime = $dateTime;
+        parent::__construct($resource);
+    }
+
     /**
      * Define main table
      *
@@ -50,6 +75,40 @@ class Visitor extends \Magento\Framework\Model\Resource\Db\AbstractDb
     {
         return array(
             'session_id' => $visitor->getSessionId(),
+            'last_visit_at' => $visitor->getLastVisitAt()
         );
     }
+
+    /**
+     * Clean visitor's outdated records
+     *
+     * @param \Magento\Customer\Model\Visitor $object
+     * @return $this
+     */
+    public function clean(\Magento\Customer\Model\Visitor $object)
+    {
+        $cleanTime = $object->getCleanTime();
+        $readAdapter = $this->_getReadAdapter();
+        $writeAdapter = $this->_getWriteAdapter();
+        $timeLimit = $this->dateTime->formatDate($this->date->gmtTimestamp() - $cleanTime);
+        while (true) {
+            $select = $readAdapter->select()->from(
+                array('visitor_table' => $this->getTable('customer_visitor')),
+                array('visitor_id' => 'visitor_table.visitor_id')
+            )->where(
+                'visitor_table.last_visit_at < ?',
+                $timeLimit
+            )->limit(
+                100
+            );
+            $visitorIds = $readAdapter->fetchCol($select);
+            if (!$visitorIds) {
+                break;
+            }
+            $condition = array('visitor_id IN (?)' => $visitorIds);
+            $writeAdapter->delete($this->getTable('customer_visitor'), $condition);
+        }
+
+        return $this;
+    }
 }
diff --git a/app/code/Magento/Customer/Model/Visitor.php b/app/code/Magento/Customer/Model/Visitor.php
index 242cdd822e7..37e1dee5f69 100644
--- a/app/code/Magento/Customer/Model/Visitor.php
+++ b/app/code/Magento/Customer/Model/Visitor.php
@@ -61,6 +61,18 @@ class Visitor extends \Magento\Framework\Model\AbstractModel
      */
     protected $ignores;
 
+    /**
+     * Core store config
+     *
+     * @var \Magento\Framework\App\Config\ScopeConfigInterface
+     */
+    protected $scopeConfig;
+
+    /**
+     * @var \Magento\Framework\Stdlib\DateTime
+     */
+    protected $dateTime;
+
     /**
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
@@ -68,26 +80,34 @@ class Visitor extends \Magento\Framework\Model\AbstractModel
      * @param \Magento\Framework\HTTP\Header $httpHeader
      * @param \Magento\Framework\Model\Resource\AbstractResource $resource
      * @param \Magento\Framework\Data\Collection\Db $resourceCollection
+     * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
+     * @param \Magento\Framework\Stdlib\DateTime $dateTime
      * @param array $ignoredUserAgents
      * @param array $ignores
      * @param array $data
+     *
+     * @SuppressWarnings(PHPMD.ExcessiveParameterList)
      */
     public function __construct(
         \Magento\Framework\Model\Context $context,
         \Magento\Framework\Registry $registry,
         \Magento\Framework\Session\SessionManagerInterface $session,
         \Magento\Framework\HTTP\Header $httpHeader,
+        \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
+        \Magento\Framework\Stdlib\DateTime $dateTime,
         \Magento\Framework\Model\Resource\AbstractResource $resource = null,
         \Magento\Framework\Data\Collection\Db $resourceCollection = null,
         array $ignoredUserAgents = array(),
         array $ignores = array(),
-        $data = array()
+        array $data = array()
     ) {
         $this->session = $session;
         $this->httpHeader = $httpHeader;
         $this->ignoredUserAgents = $ignoredUserAgents;
         parent::__construct($context, $registry, $resource, $resourceCollection, $data);
         $this->ignores = $ignores;
+        $this->scopeConfig = $scopeConfig;
+        $this->dateTime = $dateTime;
     }
 
     /**
@@ -136,6 +156,7 @@ class Visitor extends \Magento\Framework\Model\AbstractModel
         }
         if (!$this->getId()) {
             $this->setSessionId($this->session->getSessionId());
+            $this->setLastVisitAt($this->dateTime->now());
             $this->save();
             $this->_eventManager->dispatch('visitor_init', array('visitor' => $this));
             $this->session->setVisitorData($this->getData());
@@ -251,4 +272,29 @@ class Visitor extends \Magento\Framework\Model\AbstractModel
         }
         return $this;
     }
+
+
+    /**
+     * Return clean time in seconds for visitor's outdated records
+     *
+     * @return string
+     */
+    public function getCleanTime()
+    {
+        return $this->scopeConfig->getValue(
+            \Magento\Framework\Session\Config::XML_PATH_COOKIE_LIFETIME,
+            \Magento\Store\Model\ScopeInterface::SCOPE_STORE
+        ) + 86400;
+    }
+
+    /**
+     * Clean visitor's outdated records
+     *
+     * @return $this
+     */
+    public function clean()
+    {
+        $this->getResource()->clean($this);
+        return $this;
+    }
 }
diff --git a/app/code/Magento/Customer/Service/V1/AddressMetadataService.php b/app/code/Magento/Customer/Service/V1/AddressMetadataService.php
index c1b8b470530..53e956fe7aa 100644
--- a/app/code/Magento/Customer/Service/V1/AddressMetadataService.php
+++ b/app/code/Magento/Customer/Service/V1/AddressMetadataService.php
@@ -28,8 +28,9 @@ use Magento\Customer\Service\V1\Data\Eav\AttributeMetadataConverter;
 use Magento\Customer\Service\V1\Data\Eav\AttributeMetadataDataProvider;
 use Magento\Eav\Model\Entity\Attribute\AbstractAttribute;
 use Magento\Framework\Exception\NoSuchEntityException;
-use Magento\Framework\Service\Config\MetadataConfig;
-use Magento\Framework\Service\SimpleDataObjectConverter;
+use Magento\Framework\Api\Config\MetadataConfig;
+use Magento\Framework\Api\SimpleDataObjectConverter;
+use Magento\Customer\Api\AddressMetadataInterface;
 
 /**
  * Service to fetch customer address related custom attributes
@@ -78,7 +79,7 @@ class AddressMetadataService implements AddressMetadataServiceInterface
     {
         $attributes = [];
         $attributesFormCollection = $this->attributeMetadataDataProvider->loadAttributesCollection(
-            self::ENTITY_TYPE_ADDRESS,
+            AddressMetadataInterface::ENTITY_TYPE_ADDRESS,
             $formCode
         );
         foreach ($attributesFormCollection as $attribute) {
@@ -97,7 +98,10 @@ class AddressMetadataService implements AddressMetadataServiceInterface
     public function getAttributeMetadata($attributeCode)
     {
         /** @var AbstractAttribute $attribute */
-        $attribute = $this->attributeMetadataDataProvider->getAttribute(self::ENTITY_TYPE_ADDRESS, $attributeCode);
+        $attribute = $this->attributeMetadataDataProvider->getAttribute(
+            AddressMetadataInterface::ENTITY_TYPE_ADDRESS,
+            $attributeCode
+        );
         if ($attribute && ($attributeCode === 'id' || !is_null($attribute->getId()))) {
             $attributeMetadata = $this->attributeMetadataConverter->createMetadataAttribute($attribute);
             return $attributeMetadata;
@@ -106,7 +110,7 @@ class AddressMetadataService implements AddressMetadataServiceInterface
                 NoSuchEntityException::MESSAGE_DOUBLE_FIELDS,
                 [
                     'fieldName' => 'entityType',
-                    'fieldValue' => self::ENTITY_TYPE_ADDRESS,
+                    'fieldValue' => AddressMetadataInterface::ENTITY_TYPE_ADDRESS,
                     'field2Name' => 'attributeCode',
                     'field2Value' => $attributeCode,
                 ]
@@ -121,33 +125,33 @@ class AddressMetadataService implements AddressMetadataServiceInterface
     {
         /** @var AbstractAttribute[] $attribute */
         $attributeCodes = $this->attributeMetadataDataProvider->getAllAttributeCodes(
-            self::ENTITY_TYPE_ADDRESS,
-            self::ATTRIBUTE_SET_ID_ADDRESS
+            AddressMetadataInterface::ENTITY_TYPE_ADDRESS,
+            AddressMetadataInterface::ATTRIBUTE_SET_ID_ADDRESS
         );
 
-        $attributesMetadata = [];
+        $allAttributesMetadata = [];
 
         foreach ($attributeCodes as $attributeCode) {
             try {
-                $attributesMetadata[] = $this->getAttributeMetadata($attributeCode);
+                $allAttributesMetadata[] = $this->getAttributeMetadata($attributeCode);
             } catch (NoSuchEntityException $e) {
                 //If no such entity, skip
             }
         }
 
-        return $attributesMetadata;
+        return $allAttributesMetadata;
     }
 
     /**
      * {@inheritdoc}
      */
-    public function getCustomAttributesMetadata($dataObjectClassName = self::DATA_OBJECT_CLASS_NAME)
+    public function getCustomAttributesMetadata($dataObjectClassName = AddressMetadataInterface::DATA_INTERFACE_NAME)
     {
         $customAttributes = [];
         if (!$this->addressDataObjectMethods) {
             $dataObjectMethods = array_flip(get_class_methods($dataObjectClassName));
             $baseClassDataObjectMethods = array_flip(
-                get_class_methods('Magento\Framework\Service\Data\AbstractExtensibleObject')
+                get_class_methods('Magento\Framework\Api\AbstractExtensibleObject')
             );
             $this->addressDataObjectMethods = array_diff_key($dataObjectMethods, $baseClassDataObjectMethods);
         }
diff --git a/app/code/Magento/Customer/Service/V1/CustomerAccountService.php b/app/code/Magento/Customer/Service/V1/CustomerAccountService.php
index 1fd4eb9f235..f2858a8103b 100644
--- a/app/code/Magento/Customer/Service/V1/CustomerAccountService.php
+++ b/app/code/Magento/Customer/Service/V1/CustomerAccountService.php
@@ -47,9 +47,9 @@ use Magento\Framework\Exception\StateException;
 use Magento\Framework\Logger;
 use Magento\Framework\Mail\Exception as MailException;
 use Magento\Framework\Math\Random;
-use Magento\Framework\Service\V1\Data\Search\FilterGroup;
-use Magento\Framework\Service\V1\Data\SearchCriteria;
-use Magento\Framework\Service\V1\Data\SortOrder;
+use Magento\Framework\Api\Search\FilterGroup;
+use Magento\Framework\Api\SearchCriteria;
+use Magento\Framework\Api\SortOrder;
 use Magento\Framework\UrlInterface;
 use Magento\Framework\StoreManagerInterface;
 use Magento\Framework\Stdlib\String as StringHelper;
@@ -382,13 +382,16 @@ class CustomerAccountService implements CustomerAccountServiceInterface
         $password = null,
         $redirectUrl = ''
     ) {
-        if ($password) {
-            $this->checkPasswordStrength($password);
-        } else {
+        if (empty($password)) {
             $password = $this->mathRandom->getRandomString(self::MIN_PASSWORD_LENGTH);
+        } else {
+            $this->checkPasswordStrength($password);
         }
-        $hash = $this->getPasswordHash($password);
-        return $this->createCustomerWithPasswordHash($customerDetails, $hash, $redirectUrl);
+        return $this->createCustomerWithPasswordHash(
+            $customerDetails,
+            $this->getPasswordHash($password),
+            $redirectUrl
+        );
     }
 
     /**
@@ -662,8 +665,8 @@ class CustomerAccountService implements CustomerAccountServiceInterface
         $length = $this->stringHelper->strlen($password);
         if ($length < self::MIN_PASSWORD_LENGTH) {
             throw new InputException(
-                'The password must have at least %min_length characters.',
-                ['min_length' => self::MIN_PASSWORD_LENGTH]
+                'The password must have at least %1 characters.',
+                [self::MIN_PASSWORD_LENGTH]
             );
         }
         if ($this->stringHelper->strlen(trim($password)) != $length) {
@@ -685,7 +688,7 @@ class CustomerAccountService implements CustomerAccountServiceInterface
     public function validateCustomerData(Data\Customer $customer, array $attributes = [])
     {
         $customerErrors = $this->validator->validateData(
-            \Magento\Framework\Service\ExtensibleDataObjectConverter::toFlatArray($customer),
+            \Magento\Framework\Api\ExtensibleDataObjectConverter::toFlatArray($customer),
             $attributes,
             'customer'
         );
diff --git a/app/code/Magento/Customer/Service/V1/CustomerAccountServiceInterface.php b/app/code/Magento/Customer/Service/V1/CustomerAccountServiceInterface.php
index 4f6b7791413..805442f8fb2 100644
--- a/app/code/Magento/Customer/Service/V1/CustomerAccountServiceInterface.php
+++ b/app/code/Magento/Customer/Service/V1/CustomerAccountServiceInterface.php
@@ -124,11 +124,11 @@ interface CustomerAccountServiceInterface
     /**
      * Retrieve customers which match a specified criteria
      *
-     * @param \Magento\Framework\Service\V1\Data\SearchCriteria $searchCriteria
+     * @param \Magento\Framework\Api\SearchCriteria $searchCriteria
      * @throws \Magento\Framework\Exception\InputException if there is a problem with the input
      * @return \Magento\Customer\Service\V1\Data\SearchResults containing Data\CustomerDetails
      */
-    public function searchCustomers(\Magento\Framework\Service\V1\Data\SearchCriteria $searchCriteria);
+    public function searchCustomers(\Magento\Framework\Api\SearchCriteria $searchCriteria);
 
     /**
      * Login a customer account using username and password
diff --git a/app/code/Magento/Customer/Service/V1/CustomerAddressService.php b/app/code/Magento/Customer/Service/V1/CustomerAddressService.php
index 1c3d8145492..57cc9c5425b 100644
--- a/app/code/Magento/Customer/Service/V1/CustomerAddressService.php
+++ b/app/code/Magento/Customer/Service/V1/CustomerAddressService.php
@@ -26,7 +26,6 @@ namespace Magento\Customer\Service\V1;
 use Magento\Customer\Model\Address as CustomerAddressModel;
 use Magento\Customer\Model\Address\Converter as AddressConverter;
 use Magento\Customer\Model\CustomerRegistry;
-use Magento\Framework\Exception\NoSuchEntityException;
 use Magento\Framework\Exception\InputException;
 
 /**
diff --git a/app/code/Magento/Customer/Service/V1/CustomerGroupService.php b/app/code/Magento/Customer/Service/V1/CustomerGroupService.php
index d3d73a01734..0c52479ccff 100644
--- a/app/code/Magento/Customer/Service/V1/CustomerGroupService.php
+++ b/app/code/Magento/Customer/Service/V1/CustomerGroupService.php
@@ -30,15 +30,15 @@ use Magento\Customer\Model\GroupFactory;
 use Magento\Customer\Model\GroupRegistry;
 use Magento\Customer\Model\Resource\Group\Collection;
 use Magento\Customer\Service\V1\Data\CustomerGroup;
-use Magento\Framework\Service\V1\Data\Search\FilterGroup;
+use Magento\Framework\Api\Search\FilterGroup;
 use Magento\Framework\Exception\InputException;
 use Magento\Framework\Exception\NoSuchEntityException;
 use Magento\Framework\Exception\StateException;
 use Magento\Framework\Exception\State\InvalidTransitionException;
-use Magento\Framework\Service\V1\Data\SearchCriteria;
+use Magento\Framework\Api\SearchCriteria;
 use Magento\Tax\Service\V1\Data\TaxClass;
 use Magento\Tax\Service\V1\TaxClassServiceInterface;
-use Magento\Framework\Service\V1\Data\SortOrder;
+use Magento\Framework\Api\SortOrder;
 
 /**
  * Customer service is responsible for customer business workflow encapsulation
diff --git a/app/code/Magento/Customer/Service/V1/CustomerGroupServiceInterface.php b/app/code/Magento/Customer/Service/V1/CustomerGroupServiceInterface.php
index 636c9878107..76d6ecbbb77 100644
--- a/app/code/Magento/Customer/Service/V1/CustomerGroupServiceInterface.php
+++ b/app/code/Magento/Customer/Service/V1/CustomerGroupServiceInterface.php
@@ -52,11 +52,11 @@ interface CustomerGroupServiceInterface
     /**
      * Search groups
      *
-     * @param \Magento\Framework\Service\V1\Data\SearchCriteria $searchCriteria
+     * @param \Magento\Framework\Api\SearchCriteria $searchCriteria
      * @throws \Magento\Framework\Exception\InputException If there is a problem with the input
      * @return \Magento\Customer\Service\V1\Data\CustomerGroupSearchResults containing Data\CustomerGroup objects
      */
-    public function searchGroups(\Magento\Framework\Service\V1\Data\SearchCriteria $searchCriteria);
+    public function searchGroups(\Magento\Framework\Api\SearchCriteria $searchCriteria);
 
     /**
      * Get a customer group by group ID.
diff --git a/app/code/Magento/Customer/Service/V1/CustomerMetadataService.php b/app/code/Magento/Customer/Service/V1/CustomerMetadataService.php
index fad3a7af130..b0e490471cb 100644
--- a/app/code/Magento/Customer/Service/V1/CustomerMetadataService.php
+++ b/app/code/Magento/Customer/Service/V1/CustomerMetadataService.php
@@ -28,8 +28,8 @@ use Magento\Customer\Service\V1\Data\Eav\AttributeMetadataConverter;
 use Magento\Customer\Service\V1\Data\Eav\AttributeMetadataDataProvider;
 use Magento\Eav\Model\Entity\Attribute\AbstractAttribute;
 use Magento\Framework\Exception\NoSuchEntityException;
-use Magento\Framework\Service\Config\MetadataConfig;
-use Magento\Framework\Service\SimpleDataObjectConverter;
+use Magento\Framework\Api\Config\MetadataConfig;
+use Magento\Framework\Api\SimpleDataObjectConverter;
 
 /**
  * Service to fetch customer related custom attributes
@@ -148,7 +148,7 @@ class CustomerMetadataService implements CustomerMetadataServiceInterface
         if (!$this->customerDataObjectMethods) {
             $dataObjectMethods = array_flip(get_class_methods($dataObjectClassName));
             $baseClassDataObjectMethods = array_flip(
-                get_class_methods('Magento\Framework\Service\Data\AbstractExtensibleObject')
+                get_class_methods('Magento\Framework\Api\AbstractExtensibleObject')
             );
             $this->customerDataObjectMethods = array_diff_key($dataObjectMethods, $baseClassDataObjectMethods);
         }
diff --git a/app/code/Magento/Customer/Service/V1/CustomerMetadataServiceInterface.php b/app/code/Magento/Customer/Service/V1/CustomerMetadataServiceInterface.php
index ba5df7a303a..4a23ac9eed1 100644
--- a/app/code/Magento/Customer/Service/V1/CustomerMetadataServiceInterface.php
+++ b/app/code/Magento/Customer/Service/V1/CustomerMetadataServiceInterface.php
@@ -32,5 +32,5 @@ interface CustomerMetadataServiceInterface extends MetadataServiceInterface
 
     const ENTITY_TYPE_CUSTOMER = 'customer';
 
-    const DATA_OBJECT_CLASS_NAME = 'Magento\Customer\Service\V1\Data\Customer';
+    const DATA_OBJECT_CLASS_NAME = 'Magento\Customer\Api\Data\CustomerInterface';
 }
diff --git a/app/code/Magento/Customer/Service/V1/Data/Address.php b/app/code/Magento/Customer/Service/V1/Data/Address.php
index 6bf7bb2d96f..b42bfaaef11 100644
--- a/app/code/Magento/Customer/Service/V1/Data/Address.php
+++ b/app/code/Magento/Customer/Service/V1/Data/Address.php
@@ -25,7 +25,7 @@
  */
 namespace Magento\Customer\Service\V1\Data;
 
-class Address extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+class Address extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     // FIXME: This constant relates to a quote address object, not this Data Object
     const ADDRESS_TYPE_BILLING = 'billing';
diff --git a/app/code/Magento/Customer/Service/V1/Data/AddressBuilder.php b/app/code/Magento/Customer/Service/V1/Data/AddressBuilder.php
index b700d06ef91..5c47d7ea441 100644
--- a/app/code/Magento/Customer/Service/V1/Data/AddressBuilder.php
+++ b/app/code/Magento/Customer/Service/V1/Data/AddressBuilder.php
@@ -25,9 +25,9 @@
 namespace Magento\Customer\Service\V1\Data;
 
 use Magento\Customer\Service\V1\AddressMetadataServiceInterface;
-use Magento\Framework\Service\Data\AbstractExtensibleObject as ExtensibleObject;
-use Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder;
-use Magento\Framework\Service\Data\AttributeValueBuilder;
+use Magento\Framework\Api\AbstractExtensibleObject as ExtensibleObject;
+use Magento\Framework\Api\ExtensibleObjectBuilder;
+use Magento\Framework\Api\AttributeValueBuilder;
 
 /**
  * Builder for the Address Service Data Object
@@ -36,7 +36,7 @@ use Magento\Framework\Service\Data\AttributeValueBuilder;
  * @method Address mergeDataObjectWithArray(ExtensibleObject $dataObject, array $data)
  * @method Address mergeDataObjects(ExtensibleObject $firstDataObject, ExtensibleObject $secondDataObject)
  */
-class AddressBuilder extends AbstractExtensibleObjectBuilder
+class AddressBuilder extends ExtensibleObjectBuilder
 {
     /**
      * Region builder
@@ -46,20 +46,20 @@ class AddressBuilder extends AbstractExtensibleObjectBuilder
     protected $_regionBuilder;
 
     /**
-     * @param \Magento\Framework\Service\Data\ObjectFactory $objectFactory
+     * @param \Magento\Framework\Api\ObjectFactory $objectFactory
      * @param AttributeValueBuilder $valueBuilder
      * @param AddressMetadataServiceInterface $metadataService
      * @param RegionBuilder $regionBuilder
      */
     public function __construct(
-        \Magento\Framework\Service\Data\ObjectFactory $objectFactory,
+        \Magento\Framework\Api\ObjectFactory $objectFactory,
         AttributeValueBuilder $valueBuilder,
         AddressMetadataServiceInterface $metadataService,
         RegionBuilder $regionBuilder
     ) {
         parent::__construct($objectFactory, $valueBuilder, $metadataService);
         $this->_regionBuilder = $regionBuilder;
-        $this->_data[Address::KEY_REGION] = $regionBuilder->create();
+        $this->data[Address::KEY_REGION] = $regionBuilder->create();
     }
 
     /**
diff --git a/app/code/Magento/Customer/Service/V1/Data/AddressConverter.php b/app/code/Magento/Customer/Service/V1/Data/AddressConverter.php
index 9809422a376..58afde2cd23 100644
--- a/app/code/Magento/Customer/Service/V1/Data/AddressConverter.php
+++ b/app/code/Magento/Customer/Service/V1/Data/AddressConverter.php
@@ -23,7 +23,7 @@
  */
 namespace Magento\Customer\Service\V1\Data;
 
-use Magento\Framework\Service\ExtensibleDataObjectConverter;
+use Magento\Framework\Api\ExtensibleDataObjectConverter;
 
 /**
  * Class AddressConverter converts Address Service Data Object to an array
diff --git a/app/code/Magento/Customer/Service/V1/Data/Customer.php b/app/code/Magento/Customer/Service/V1/Data/Customer.php
index 1289abfab4f..bf6c68d7b51 100644
--- a/app/code/Magento/Customer/Service/V1/Data/Customer.php
+++ b/app/code/Magento/Customer/Service/V1/Data/Customer.php
@@ -26,7 +26,7 @@ namespace Magento\Customer\Service\V1\Data;
 /**
  * Class Customer
  */
-class Customer extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+class Customer extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     /**#@+
      * Constants defined for keys of array, makes typos less likely
diff --git a/app/code/Magento/Customer/Service/V1/Data/CustomerBuilder.php b/app/code/Magento/Customer/Service/V1/Data/CustomerBuilder.php
index 9e43a63ddad..9940cee0230 100644
--- a/app/code/Magento/Customer/Service/V1/Data/CustomerBuilder.php
+++ b/app/code/Magento/Customer/Service/V1/Data/CustomerBuilder.php
@@ -24,9 +24,9 @@
 
 namespace Magento\Customer\Service\V1\Data;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObject as ExtensibleObject;
-use Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder;
-use Magento\Framework\Service\Data\AttributeValueBuilder;
+use Magento\Framework\Api\AbstractExtensibleObject as ExtensibleObject;
+use Magento\Framework\Api\ExtensibleObjectBuilder;
+use Magento\Framework\Api\AttributeValueBuilder;
 use Magento\Customer\Service\V1\CustomerMetadataServiceInterface;
 
 /**
@@ -36,15 +36,15 @@ use Magento\Customer\Service\V1\CustomerMetadataServiceInterface;
  * @method Customer mergeDataObjectWithArray(ExtensibleObject $dataObject, array $data)
  * @method Customer mergeDataObjects(ExtensibleObject $firstDataObject, ExtensibleObject $secondDataObject)
  */
-class CustomerBuilder extends AbstractExtensibleObjectBuilder
+class CustomerBuilder extends ExtensibleObjectBuilder
 {
     /**
-     * @param \Magento\Framework\Service\Data\ObjectFactory $objectFactory
+     * @param \Magento\Framework\Api\ObjectFactory $objectFactory
      * @param AttributeValueBuilder $valueBuilder
      * @param CustomerMetadataServiceInterface $metadataService
      */
     public function __construct(
-        \Magento\Framework\Service\Data\ObjectFactory $objectFactory,
+        \Magento\Framework\Api\ObjectFactory $objectFactory,
         AttributeValueBuilder $valueBuilder,
         CustomerMetadataServiceInterface $metadataService
     ) {
diff --git a/app/code/Magento/Customer/Service/V1/Data/CustomerDetails.php b/app/code/Magento/Customer/Service/V1/Data/CustomerDetails.php
index d0dffa9f8b7..09255ff5e53 100644
--- a/app/code/Magento/Customer/Service/V1/Data/CustomerDetails.php
+++ b/app/code/Magento/Customer/Service/V1/Data/CustomerDetails.php
@@ -26,7 +26,7 @@ namespace Magento\Customer\Service\V1\Data;
 /**
  * Class CustomerDetails
  */
-class CustomerDetails extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+class CustomerDetails extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     const KEY_CUSTOMER = 'customer';
 
diff --git a/app/code/Magento/Customer/Service/V1/Data/CustomerDetailsBuilder.php b/app/code/Magento/Customer/Service/V1/Data/CustomerDetailsBuilder.php
index fa0197373d4..0db5a295091 100644
--- a/app/code/Magento/Customer/Service/V1/Data/CustomerDetailsBuilder.php
+++ b/app/code/Magento/Customer/Service/V1/Data/CustomerDetailsBuilder.php
@@ -25,14 +25,14 @@
  */
 namespace Magento\Customer\Service\V1\Data;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder;
-use Magento\Framework\Service\Data\AttributeValueBuilder;
-use Magento\Framework\Service\Data\MetadataServiceInterface;
+use Magento\Framework\Api\ExtensibleObjectBuilder;
+use Magento\Framework\Api\AttributeValueBuilder;
+use Magento\Framework\Api\MetadataServiceInterface;
 
 /**
  * Class CustomerDetailsBuilder
  */
-class CustomerDetailsBuilder extends AbstractExtensibleObjectBuilder
+class CustomerDetailsBuilder extends ExtensibleObjectBuilder
 {
     /**
      * Customer builder
@@ -49,14 +49,14 @@ class CustomerDetailsBuilder extends AbstractExtensibleObjectBuilder
     protected $_addressBuilder;
 
     /**
-     * @param \Magento\Framework\Service\Data\ObjectFactory $objectFactory
+     * @param \Magento\Framework\Api\ObjectFactory $objectFactory
      * @param AttributeValueBuilder $valueBuilder
      * @param MetadataServiceInterface $metadataService
      * @param CustomerBuilder $customerBuilder
      * @param AddressBuilder $addressBuilder
      */
     public function __construct(
-        \Magento\Framework\Service\Data\ObjectFactory $objectFactory,
+        \Magento\Framework\Api\ObjectFactory $objectFactory,
         AttributeValueBuilder $valueBuilder,
         MetadataServiceInterface $metadataService,
         \Magento\Customer\Service\V1\Data\CustomerBuilder $customerBuilder,
@@ -121,11 +121,11 @@ class CustomerDetailsBuilder extends AbstractExtensibleObjectBuilder
      */
     public function create()
     {
-        if (!isset($this->_data[CustomerDetails::KEY_CUSTOMER])) {
-            $this->_data[CustomerDetails::KEY_CUSTOMER] = $this->_customerBuilder->create();
+        if (!isset($this->data[CustomerDetails::KEY_CUSTOMER])) {
+            $this->data[CustomerDetails::KEY_CUSTOMER] = $this->_customerBuilder->create();
         }
-        if (!isset($this->_data[CustomerDetails::KEY_ADDRESSES])) {
-            $this->_data[CustomerDetails::KEY_ADDRESSES] = null;
+        if (!isset($this->data[CustomerDetails::KEY_ADDRESSES])) {
+            $this->data[CustomerDetails::KEY_ADDRESSES] = null;
         }
         return parent::create();
     }
diff --git a/app/code/Magento/Customer/Service/V1/Data/CustomerGroup.php b/app/code/Magento/Customer/Service/V1/Data/CustomerGroup.php
index 1b919ad736e..4e3dc6d120c 100644
--- a/app/code/Magento/Customer/Service/V1/Data/CustomerGroup.php
+++ b/app/code/Magento/Customer/Service/V1/Data/CustomerGroup.php
@@ -27,7 +27,7 @@ namespace Magento\Customer\Service\V1\Data;
 /**
  * CustomerGroup Service Data Object
  */
-class CustomerGroup extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+class CustomerGroup extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     /**#@+
      * Constants for Data Object keys
diff --git a/app/code/Magento/Customer/Service/V1/Data/CustomerGroupBuilder.php b/app/code/Magento/Customer/Service/V1/Data/CustomerGroupBuilder.php
index bfaf95f50e9..cec5547d5be 100644
--- a/app/code/Magento/Customer/Service/V1/Data/CustomerGroupBuilder.php
+++ b/app/code/Magento/Customer/Service/V1/Data/CustomerGroupBuilder.php
@@ -29,7 +29,7 @@ namespace Magento\Customer\Service\V1\Data;
  *
  * @method CustomerGroup create()
  */
-class CustomerGroupBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder
+class CustomerGroupBuilder extends \Magento\Framework\Api\ExtensibleObjectBuilder
 {
     /**
      * Set id
diff --git a/app/code/Magento/Customer/Service/V1/Data/CustomerGroupSearchResults.php b/app/code/Magento/Customer/Service/V1/Data/CustomerGroupSearchResults.php
index 4e2c8f70d06..aa1952e3bc1 100644
--- a/app/code/Magento/Customer/Service/V1/Data/CustomerGroupSearchResults.php
+++ b/app/code/Magento/Customer/Service/V1/Data/CustomerGroupSearchResults.php
@@ -27,7 +27,7 @@ namespace Magento\Customer\Service\V1\Data;
 /**
  * SearchResults Service Data Object used for the search service requests
  */
-class CustomerGroupSearchResults extends \Magento\Framework\Service\V1\Data\SearchResults
+class CustomerGroupSearchResults extends \Magento\Framework\Api\SearchResults
 {
     /**
      * Get items
diff --git a/app/code/Magento/Customer/Service/V1/Data/CustomerGroupSearchResultsBuilder.php b/app/code/Magento/Customer/Service/V1/Data/CustomerGroupSearchResultsBuilder.php
index a7cc9ad6026..7234903af3d 100644
--- a/app/code/Magento/Customer/Service/V1/Data/CustomerGroupSearchResultsBuilder.php
+++ b/app/code/Magento/Customer/Service/V1/Data/CustomerGroupSearchResultsBuilder.php
@@ -24,11 +24,11 @@
 
 namespace Magento\Customer\Service\V1\Data;
 
-use Magento\Framework\Service\Data\ObjectFactory;
-use Magento\Framework\Service\V1\Data\SearchCriteriaBuilder;
-use Magento\Framework\Service\V1\Data\AbstractSearchResultsBuilder;
-use Magento\Framework\Service\Data\AttributeValueBuilder;
-use Magento\Framework\Service\Data\MetadataServiceInterface;
+use Magento\Framework\Api\ObjectFactory;
+use Magento\Framework\Api\SearchCriteriaBuilder;
+use Magento\Framework\Api\AbstractSearchResultsBuilder;
+use Magento\Framework\Api\AttributeValueBuilder;
+use Magento\Framework\Api\MetadataServiceInterface;
 
 /**
  * Builder for the SearchResults Service Data Object
diff --git a/app/code/Magento/Customer/Service/V1/Data/CustomerValidationResults.php b/app/code/Magento/Customer/Service/V1/Data/CustomerValidationResults.php
index 938b1074f6b..9e69d32783d 100644
--- a/app/code/Magento/Customer/Service/V1/Data/CustomerValidationResults.php
+++ b/app/code/Magento/Customer/Service/V1/Data/CustomerValidationResults.php
@@ -26,7 +26,7 @@ namespace Magento\Customer\Service\V1\Data;
 /**
  * CustomerAccountService Data Object used for validateCustomerData api
  */
-class CustomerValidationResults extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+class CustomerValidationResults extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     /**#@+
      * Constants used as keys into $_data
diff --git a/app/code/Magento/Customer/Service/V1/Data/CustomerValidationResultsBuilder.php b/app/code/Magento/Customer/Service/V1/Data/CustomerValidationResultsBuilder.php
index f512fb7eb9f..89637ae75fe 100644
--- a/app/code/Magento/Customer/Service/V1/Data/CustomerValidationResultsBuilder.php
+++ b/app/code/Magento/Customer/Service/V1/Data/CustomerValidationResultsBuilder.php
@@ -26,7 +26,7 @@ namespace Magento\Customer\Service\V1\Data;
 /**
  *  Builder for CustomerValidationResults
  */
-class CustomerValidationResultsBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder
+class CustomerValidationResultsBuilder extends \Magento\Framework\Api\ExtensibleObjectBuilder
 {
     /**
      * Set if customer data is valid
diff --git a/app/code/Magento/Customer/Service/V1/Data/Eav/AttributeMetadata.php b/app/code/Magento/Customer/Service/V1/Data/Eav/AttributeMetadata.php
index 95b47942ac8..2f677d7836f 100644
--- a/app/code/Magento/Customer/Service/V1/Data/Eav/AttributeMetadata.php
+++ b/app/code/Magento/Customer/Service/V1/Data/Eav/AttributeMetadata.php
@@ -23,8 +23,8 @@
  */
 namespace Magento\Customer\Service\V1\Data\Eav;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObject;
-use Magento\Framework\Service\Data\MetadataObjectInterface;
+use Magento\Framework\Api\AbstractExtensibleObject;
+use Magento\Framework\Api\MetadataObjectInterface;
 
 /**
  * Class AttributeMetadata
diff --git a/app/code/Magento/Customer/Service/V1/Data/Eav/AttributeMetadataBuilder.php b/app/code/Magento/Customer/Service/V1/Data/Eav/AttributeMetadataBuilder.php
index 62efb65e620..afeddb6b0b7 100644
--- a/app/code/Magento/Customer/Service/V1/Data/Eav/AttributeMetadataBuilder.php
+++ b/app/code/Magento/Customer/Service/V1/Data/Eav/AttributeMetadataBuilder.php
@@ -23,15 +23,15 @@
  */
 namespace Magento\Customer\Service\V1\Data\Eav;
 
-use Magento\Framework\Service\Data\AttributeMetadataBuilderInterface;
-use Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder;
-use Magento\Framework\Service\Data\AttributeValueBuilder;
-use Magento\Framework\Service\Data\MetadataServiceInterface;
+use Magento\Framework\Api\AttributeMetadataBuilderInterface;
+use Magento\Framework\Api\ExtensibleObjectBuilder;
+use Magento\Framework\Api\AttributeValueBuilder;
+use Magento\Framework\Api\MetadataServiceInterface;
 
 /**
  * Class AttributeMetadataBuilder
  */
-class AttributeMetadataBuilder extends AbstractExtensibleObjectBuilder implements AttributeMetadataBuilderInterface
+class AttributeMetadataBuilder extends ExtensibleObjectBuilder implements AttributeMetadataBuilderInterface
 {
     /**
      * Option builder
@@ -48,14 +48,14 @@ class AttributeMetadataBuilder extends AbstractExtensibleObjectBuilder implement
     protected $_validationRuleBuilder;
 
     /**
-     * @param \Magento\Framework\Service\Data\ObjectFactory $objectFactory
+     * @param \Magento\Framework\Api\ObjectFactory $objectFactory
      * @param AttributeValueBuilder $valueBuilder
      * @param MetadataServiceInterface $metadataService
      * @param OptionBuilder $optionBuilder
      * @param ValidationRuleBuilder $validationRuleBuilder
      */
     public function __construct(
-        \Magento\Framework\Service\Data\ObjectFactory $objectFactory,
+        \Magento\Framework\Api\ObjectFactory $objectFactory,
         AttributeValueBuilder $valueBuilder,
         MetadataServiceInterface $metadataService,
         \Magento\Customer\Service\V1\Data\Eav\OptionBuilder $optionBuilder,
@@ -64,8 +64,8 @@ class AttributeMetadataBuilder extends AbstractExtensibleObjectBuilder implement
         parent::__construct($objectFactory, $valueBuilder, $metadataService);
         $this->_optionBuilder = $optionBuilder;
         $this->_validationRuleBuilder = $validationRuleBuilder;
-        $this->_data[AttributeMetadata::OPTIONS] = array();
-        $this->_data[AttributeMetadata::VALIDATION_RULES] = array();
+        $this->data[AttributeMetadata::OPTIONS] = array();
+        $this->data[AttributeMetadata::VALIDATION_RULES] = array();
     }
 
     /**
diff --git a/app/code/Magento/Customer/Service/V1/Data/Eav/Option.php b/app/code/Magento/Customer/Service/V1/Data/Eav/Option.php
index ad03c669030..ec170deff52 100644
--- a/app/code/Magento/Customer/Service/V1/Data/Eav/Option.php
+++ b/app/code/Magento/Customer/Service/V1/Data/Eav/Option.php
@@ -27,8 +27,10 @@ namespace Magento\Customer\Service\V1\Data\Eav;
 
 /**
  * Class Option
+ *
+ * @deprecated
  */
-class Option extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+class Option extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     /**
      * Constants used as keys into $_data
diff --git a/app/code/Magento/Customer/Service/V1/Data/Eav/OptionBuilder.php b/app/code/Magento/Customer/Service/V1/Data/Eav/OptionBuilder.php
index 79e07a52407..7f6723904f2 100644
--- a/app/code/Magento/Customer/Service/V1/Data/Eav/OptionBuilder.php
+++ b/app/code/Magento/Customer/Service/V1/Data/Eav/OptionBuilder.php
@@ -26,7 +26,7 @@ namespace Magento\Customer\Service\V1\Data\Eav;
 /**
  * Class OptionBuilder
  */
-class OptionBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder
+class OptionBuilder extends \Magento\Framework\Api\ExtensibleObjectBuilder
 {
     /**
      * Set option label
diff --git a/app/code/Magento/Customer/Service/V1/Data/Eav/ValidationRule.php b/app/code/Magento/Customer/Service/V1/Data/Eav/ValidationRule.php
index 4c382aa2562..cca30b729cd 100644
--- a/app/code/Magento/Customer/Service/V1/Data/Eav/ValidationRule.php
+++ b/app/code/Magento/Customer/Service/V1/Data/Eav/ValidationRule.php
@@ -23,7 +23,12 @@
  */
 namespace Magento\Customer\Service\V1\Data\Eav;
 
-class ValidationRule extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+/**
+ * Validation rule class
+ *
+ * @deprecated
+ */
+class ValidationRule extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     /**
      * Constants used as keys into $_data
diff --git a/app/code/Magento/Customer/Service/V1/Data/Eav/ValidationRuleBuilder.php b/app/code/Magento/Customer/Service/V1/Data/Eav/ValidationRuleBuilder.php
index eb4daae768d..bf2c758c3b0 100644
--- a/app/code/Magento/Customer/Service/V1/Data/Eav/ValidationRuleBuilder.php
+++ b/app/code/Magento/Customer/Service/V1/Data/Eav/ValidationRuleBuilder.php
@@ -23,7 +23,7 @@
  */
 namespace Magento\Customer\Service\V1\Data\Eav;
 
-class ValidationRuleBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder
+class ValidationRuleBuilder extends \Magento\Framework\Api\ExtensibleObjectBuilder
 {
     /**
      * Set validation rule name
diff --git a/app/code/Magento/Customer/Service/V1/Data/Region.php b/app/code/Magento/Customer/Service/V1/Data/Region.php
index 8cfb7dbe445..b185140518d 100644
--- a/app/code/Magento/Customer/Service/V1/Data/Region.php
+++ b/app/code/Magento/Customer/Service/V1/Data/Region.php
@@ -26,7 +26,7 @@ namespace Magento\Customer\Service\V1\Data;
 /**
  * Data Object for Address Region
  */
-class Region extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+class Region extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     /**#@+
      * Array keys
diff --git a/app/code/Magento/Customer/Service/V1/Data/RegionBuilder.php b/app/code/Magento/Customer/Service/V1/Data/RegionBuilder.php
index 2316134f11a..7825cbf6f97 100644
--- a/app/code/Magento/Customer/Service/V1/Data/RegionBuilder.php
+++ b/app/code/Magento/Customer/Service/V1/Data/RegionBuilder.php
@@ -28,7 +28,7 @@ namespace Magento\Customer\Service\V1\Data;
  *
  * @method Region create()
  */
-class RegionBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder
+class RegionBuilder extends \Magento\Framework\Api\ExtensibleObjectBuilder
 {
     /**
      * Set region code
@@ -38,7 +38,7 @@ class RegionBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleOb
      */
     public function setRegionCode($regionCode)
     {
-        $this->_data[Region::KEY_REGION_CODE] = $regionCode;
+        $this->data[Region::KEY_REGION_CODE] = $regionCode;
         return $this;
     }
 
@@ -50,7 +50,7 @@ class RegionBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleOb
      */
     public function setRegion($regionName)
     {
-        $this->_data[Region::KEY_REGION] = $regionName;
+        $this->data[Region::KEY_REGION] = $regionName;
         return $this;
     }
 
@@ -62,7 +62,7 @@ class RegionBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleOb
      */
     public function setRegionId($regionId)
     {
-        $this->_data[Region::KEY_REGION_ID] = $regionId;
+        $this->data[Region::KEY_REGION_ID] = $regionId;
         return $this;
     }
 }
diff --git a/app/code/Magento/Customer/Service/V1/Data/SearchResults.php b/app/code/Magento/Customer/Service/V1/Data/SearchResults.php
index b4c6f1005b0..188e926b4ab 100644
--- a/app/code/Magento/Customer/Service/V1/Data/SearchResults.php
+++ b/app/code/Magento/Customer/Service/V1/Data/SearchResults.php
@@ -27,7 +27,7 @@ namespace Magento\Customer\Service\V1\Data;
 /**
  * SearchResults Service Data Object used for the search service requests
  */
-class SearchResults extends \Magento\Framework\Service\V1\Data\SearchResults
+class SearchResults extends \Magento\Framework\Api\SearchResults
 {
     /**
      * Get items
diff --git a/app/code/Magento/Customer/Service/V1/Data/SearchResultsBuilder.php b/app/code/Magento/Customer/Service/V1/Data/SearchResultsBuilder.php
index 8ed3c1aa56f..e93bd781654 100644
--- a/app/code/Magento/Customer/Service/V1/Data/SearchResultsBuilder.php
+++ b/app/code/Magento/Customer/Service/V1/Data/SearchResultsBuilder.php
@@ -24,11 +24,11 @@
 
 namespace Magento\Customer\Service\V1\Data;
 
-use Magento\Framework\Service\Data\AttributeValueBuilder;
-use Magento\Framework\Service\Data\MetadataServiceInterface;
-use Magento\Framework\Service\Data\ObjectFactory;
-use Magento\Framework\Service\V1\Data\SearchCriteriaBuilder;
-use Magento\Framework\Service\V1\Data\AbstractSearchResultsBuilder;
+use Magento\Framework\Api\AttributeValueBuilder;
+use Magento\Framework\Api\MetadataServiceInterface;
+use Magento\Framework\Api\ObjectFactory;
+use Magento\Framework\Api\SearchCriteriaBuilder;
+use Magento\Framework\Api\AbstractSearchResultsBuilder;
 
 /**
  * Builder for the SearchResults Service Data Object
diff --git a/app/code/Magento/Customer/Service/V1/MetadataServiceInterface.php b/app/code/Magento/Customer/Service/V1/MetadataServiceInterface.php
index 4b9cb31c0e1..6ca1ad08594 100644
--- a/app/code/Magento/Customer/Service/V1/MetadataServiceInterface.php
+++ b/app/code/Magento/Customer/Service/V1/MetadataServiceInterface.php
@@ -24,7 +24,7 @@
 
 namespace Magento\Customer\Service\V1;
 
-use Magento\Framework\Service\Data\MetadataServiceInterface as EavMetadataServiceInterface;
+use Magento\Framework\Api\MetadataServiceInterface as EavMetadataServiceInterface;
 
 /**
  * Interface providing APIs to fetch custom attributes metadata
diff --git a/app/code/Magento/Customer/composer.json b/app/code/Magento/Customer/composer.json
index b79356d0f08..070aa360137 100644
--- a/app/code/Magento/Customer/composer.json
+++ b/app/code/Magento/Customer/composer.json
@@ -3,27 +3,27 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-eav": "0.1.0-alpha102",
-        "magento/module-directory": "0.1.0-alpha102",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-catalog": "0.1.0-alpha102",
-        "magento/module-newsletter": "0.1.0-alpha102",
-        "magento/module-sales": "0.1.0-alpha102",
-        "magento/module-checkout": "0.1.0-alpha102",
-        "magento/module-wishlist": "0.1.0-alpha102",
-        "magento/module-theme": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/module-review": "0.1.0-alpha102",
-        "magento/module-tax": "0.1.0-alpha102",
-        "magento/module-page-cache": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
-        "magento/module-authorization": "0.1.0-alpha102",
-        "magento/module-integration": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-eav": "0.1.0-alpha103",
+        "magento/module-directory": "0.1.0-alpha103",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-catalog": "0.1.0-alpha103",
+        "magento/module-newsletter": "0.1.0-alpha103",
+        "magento/module-sales": "0.1.0-alpha103",
+        "magento/module-checkout": "0.1.0-alpha103",
+        "magento/module-wishlist": "0.1.0-alpha103",
+        "magento/module-theme": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/module-review": "0.1.0-alpha103",
+        "magento/module-tax": "0.1.0-alpha103",
+        "magento/module-page-cache": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
+        "magento/module-authorization": "0.1.0-alpha103",
+        "magento/module-integration": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Customer/data/customer_setup/data-upgrade-1.6.2.0.1-1.6.2.0.2.php b/app/code/Magento/Customer/data/customer_setup/data-upgrade-1.6.2.0.1-1.6.2.0.2.php
index 9adc1c23287..39ac36804a9 100644
--- a/app/code/Magento/Customer/data/customer_setup/data-upgrade-1.6.2.0.1-1.6.2.0.2.php
+++ b/app/code/Magento/Customer/data/customer_setup/data-upgrade-1.6.2.0.1-1.6.2.0.2.php
@@ -23,7 +23,6 @@
  */
 
 /** @var $this \Magento\Customer\Model\Resource\Setup */
-/** @var $installer \Magento\Framework\Module\Setup\Migration */
 $installer = $this->createMigrationSetup();
 $installer->startSetup();
 
diff --git a/app/code/Magento/Backend/etc/install/di.xml b/app/code/Magento/Customer/etc/crontab.xml
similarity index 80%
rename from app/code/Magento/Backend/etc/install/di.xml
rename to app/code/Magento/Customer/etc/crontab.xml
index fbfccae1431..cc2d20ceb2f 100644
--- a/app/code/Magento/Backend/etc/install/di.xml
+++ b/app/code/Magento/Customer/etc/crontab.xml
@@ -23,6 +23,10 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../lib/internal/Magento/Framework/ObjectManager/etc/config.xsd">
-    <preference for="Magento\Backend\App\ConfigInterface" type="Magento\Backend\App\Config" />
+<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../Cron/etc/crontab.xsd">
+    <group id="default">
+        <job name="visitor_clean" instance="Magento\Customer\Model\Visitor" method="clean">
+            <schedule>0 0 * * *</schedule>
+        </job>
+    </group>
 </config>
diff --git a/app/code/Magento/Customer/etc/di.xml b/app/code/Magento/Customer/etc/di.xml
index f811eba8aff..e8e2e10559f 100644
--- a/app/code/Magento/Customer/etc/di.xml
+++ b/app/code/Magento/Customer/etc/di.xml
@@ -24,16 +24,48 @@
  */
 -->
 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/ObjectManager/etc/config.xsd">
+    <preference for="Magento\Customer\Api\AddressRepositoryInterface"
+                type="Magento\Customer\Model\Resource\AddressRepository" />
+    <preference for="Magento\Customer\Api\CustomerRepositoryInterface"
+                type="Magento\Customer\Model\Resource\CustomerRepository" />
+    <preference for="Magento\Customer\Api\GroupManagementInterface"
+                type="Magento\Customer\Model\GroupManagement" />
+    <preference for="Magento\Customer\Api\GroupRepositoryInterface"
+                type="Magento\Customer\Model\Resource\GroupRepository" />
+    <preference for="Magento\Customer\Api\Data\CustomerInterface" type="Magento\Customer\Model\Data\Customer" />
+    <preference for="Magento\Customer\Api\Data\AddressInterface" type="Magento\Customer\Model\Data\Address" />
+    <preference for="Magento\Customer\Api\Data\RegionInterface" type="Magento\Customer\Model\Data\Region" />
+    <preference for="Magento\Customer\Api\Data\AttributeMetadataInterface"
+                type="Magento\Customer\Model\Data\AttributeMetadata" />
+    <preference for="Magento\Customer\Api\Data\GroupInterface" type="Magento\Customer\Model\Data\Group" />
+    <preference for="Magento\Customer\Api\Data\OptionInterface" type="Magento\Customer\Model\Data\Option" />
+    <preference for="Magento\Customer\Api\Data\ValidationRuleInterface"
+                type="Magento\Customer\Model\Data\ValidationRule" />
+    <preference for="Magento\Customer\Api\Data\ValidationResultsInterface"
+                type="Magento\Customer\Model\Data\ValidationResults" />
+    <preference for="Magento\Customer\Api\Data\GroupSearchResultsInterface"
+                type="Magento\Framework\Api\SearchResults" />
+    <preference for="Magento\Customer\Api\Data\CustomerSearchResultsInterface"
+                type="Magento\Framework\Api\SearchResults" />
+    <preference for="Magento\Customer\Api\Data\AddressSearchResultsInterface"
+                type="Magento\Framework\Api\SearchResults" />
     <preference for="Magento\Customer\Service\V1\CustomerAddressServiceInterface"
                 type="Magento\Customer\Service\V1\CustomerAddressService" />
     <preference for="Magento\Customer\Service\V1\CustomerGroupServiceInterface"
                 type="Magento\Customer\Service\V1\CustomerGroupService" />
     <preference for="Magento\Customer\Service\V1\CustomerAccountServiceInterface"
                 type="Magento\Customer\Service\V1\CustomerAccountService" />
+    <preference for="Magento\Customer\Api\AccountManagementInterface"
+                type="Magento\Customer\Model\AccountManagement" />
+
     <preference for="Magento\Customer\Service\V1\CustomerMetadataServiceInterface"
                 type="Magento\Customer\Service\V1\CustomerMetadataServiceCached" />
+    <preference for="Magento\Customer\Api\CustomerMetadataInterface"
+                type="Magento\Customer\Model\Metadata\CustomerCachedMetadata" />
     <preference for="Magento\Customer\Service\V1\AddressMetadataServiceInterface"
                 type="Magento\Customer\Service\V1\AddressMetadataServiceCached" />
+    <preference for="Magento\Customer\Api\AddressMetadataInterface"
+                type="Magento\Customer\Model\Metadata\AddressCachedMetadata" />
     <type name="Magento\Customer\Model\Session">
         <arguments>
             <argument name="configShare" xsi:type="object">Magento\Customer\Model\Config\Share\Proxy</argument>
@@ -49,6 +81,16 @@
             </argument>
         </arguments>
     </type>
+    <type name="Magento\Customer\Api\Data\CustomerDataBuilder" shared="false">
+        <arguments>
+            <argument name="metadataService" xsi:type="object">\Magento\Customer\Api\CustomerMetadataInterface</argument>
+        </arguments>
+    </type>
+    <type name="Magento\Customer\Api\Data\AddressDataBuilder" shared="false">
+        <arguments>
+            <argument name="metadataService" xsi:type="object">\Magento\Customer\Api\AddressMetadataInterface</argument>
+        </arguments>
+    </type>
     <type name="Magento\Customer\Helper\Address">
         <arguments>
             <argument name="addressConfig" xsi:type="object">Magento\Customer\Model\Address\Config\Proxy</argument>
@@ -64,8 +106,10 @@
             <argument name="customerData" xsi:type="object">Magento\Customer\Helper\Data\Proxy</argument>
         </arguments>
     </type>
+    <type name="Magento\Customer\Model\Data\GroupBuilder" shared="false" />
     <type name="Magento\Customer\Service\V1\Data\CustomerGroupBuilder" shared="false" />
     <type name="Magento\Customer\Service\V1\Data\Eav\AttributeMetadataBuilder" shared="false" />
+    <type name="Magento\Customer\Api\Data\OptionDataBuilder" shared="false" />
     <type name="Magento\Customer\Service\V1\Data\Eav\OptionBuilder" shared="false" />
     <type name="Magento\Customer\Service\V1\Data\CustomerBuilder" shared="false" />
     <type name="Magento\Customer\Service\V1\Data\AddressBuilder" shared="false" />
@@ -84,7 +128,7 @@
             <argument name="url" xsi:type="object">Magento\Framework\Url</argument>
         </arguments>
     </type>
-    <virtualType name="Magento\Customer\Service\Config\CustomerMetadataConfig" type="Magento\Framework\Service\Config\MetadataConfig">
+    <virtualType name="Magento\Customer\Service\Config\CustomerMetadataConfig" type="Magento\Framework\Api\Config\MetadataConfig">
         <arguments>
             <argument name="attributeMetadataBuilder" xsi:type="object">Magento\Customer\Service\V1\Data\Eav\AttributeMetadataBuilder</argument>
         </arguments>
@@ -94,7 +138,7 @@
             <argument name="metadataConfig" xsi:type="object">Magento\Customer\Service\Config\CustomerMetadataConfig</argument>
         </arguments>
     </type>
-    <virtualType name="Magento\Customer\Service\Config\AddressMetadataConfig" type="Magento\Framework\Service\Config\MetadataConfig">
+    <virtualType name="Magento\Customer\Service\Config\AddressMetadataConfig" type="Magento\Framework\Api\Config\MetadataConfig">
         <arguments>
             <argument name="attributeMetadataBuilder" xsi:type="object">Magento\Customer\Service\V1\Data\Eav\AttributeMetadataBuilder</argument>
         </arguments>
diff --git a/app/code/Magento/Customer/etc/webapi.xml b/app/code/Magento/Customer/etc/webapi.xml
index 854d147619a..12677d5bcad 100644
--- a/app/code/Magento/Customer/etc/webapi.xml
+++ b/app/code/Magento/Customer/etc/webapi.xml
@@ -27,61 +27,55 @@
         xsi:noNamespaceSchemaLocation="../../../../../app/code/Magento/Webapi/etc/webapi.xsd">
     <!-- Customer Group Service-->
     <route url="/V1/customerGroups/:id" method="GET">
-        <service class="Magento\Customer\Service\V1\CustomerGroupServiceInterface" method="getGroup"/>
-        <resources>
-            <resource ref="Magento_Customer::group"/>
-        </resources>
-    </route>
-    <route url="/V1/customerGroups" method="GET">
-        <service class="Magento\Customer\Service\V1\CustomerGroupServiceInterface" method="getGroups"/>
+        <service class="Magento\Customer\Api\GroupRepositoryInterface" method="get"/>
         <resources>
             <resource ref="Magento_Customer::group"/>
         </resources>
     </route>
     <route url="/V1/customerGroups/default/:storeId" method="GET">
-        <service class="Magento\Customer\Service\V1\CustomerGroupServiceInterface" method="getDefaultGroup"/>
+        <service class="Magento\Customer\Api\GroupManagementInterface" method="getDefaultGroup"/>
         <resources>
             <resource ref="Magento_Customer::group"/>
         </resources>
     </route>
     <route url="/V1/customerGroups/default" method="GET">
-        <service class="Magento\Customer\Service\V1\CustomerGroupServiceInterface" method="getDefaultGroup"/>
+        <service class="Magento\Customer\Api\GroupManagementInterface" method="getDefaultGroup"/>
         <resources>
             <resource ref="Magento_Customer::group"/>
         </resources>
     </route>
     <route url="/V1/customerGroups/:id/permissions" method="GET">
-        <service class="Magento\Customer\Service\V1\CustomerGroupServiceInterface" method="canDelete"/>
+        <service class="Magento\Customer\Api\GroupManagementInterface" method="isReadonly"/>
         <resources>
             <resource ref="Magento_Customer::group"/>
         </resources>
     </route>
     <route url="/V1/customerGroups/search" method="POST">
-        <service class="Magento\Customer\Service\V1\CustomerGroupServiceInterface" method="searchGroups"/>
+        <service class="Magento\Customer\Api\GroupRepositoryInterface" method="getList"/>
         <resources>
             <resource ref="Magento_Customer::group"/>
         </resources>
     </route>
     <route url="/V1/customerGroups/search" method="GET">
-        <service class="Magento\Customer\Service\V1\CustomerGroupServiceInterface" method="searchGroups"/>
+        <service class="Magento\Customer\Api\GroupRepositoryInterface" method="getList"/>
         <resources>
             <resource ref="Magento_Customer::group"/>
         </resources>
     </route>
     <route url="/V1/customerGroups" method="POST">
-        <service class="Magento\Customer\Service\V1\CustomerGroupServiceInterface" method="createGroup"/>
+        <service class="Magento\Customer\Api\GroupRepositoryInterface" method="save"/>
         <resources>
             <resource ref="Magento_Customer::group"/>
         </resources>
     </route>
     <route url="/V1/customerGroups/:id" method="PUT">
-        <service class="Magento\Customer\Service\V1\CustomerGroupServiceInterface" method="updateGroup"/>
+        <service class="Magento\Customer\Api\GroupRepositoryInterface" method="save"/>
         <resources>
             <resource ref="Magento_Customer::group"/>
         </resources>
     </route>
     <route url="/V1/customerGroups/:id" method="DELETE">
-        <service class="Magento\Customer\Service\V1\CustomerGroupServiceInterface" method="deleteGroup"/>
+        <service class="Magento\Customer\Api\GroupRepositoryInterface" method="deleteById"/>
         <resources>
             <resource ref="Magento_Customer::group"/>
         </resources>
diff --git a/app/code/Magento/Customer/sql/customer_setup/install-1.6.0.0.php b/app/code/Magento/Customer/sql/customer_setup/install-1.6.0.0.php
index 041ddc08a6b..5e0067035f7 100644
--- a/app/code/Magento/Customer/sql/customer_setup/install-1.6.0.0.php
+++ b/app/code/Magento/Customer/sql/customer_setup/install-1.6.0.0.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* @var $installer \Magento\Customer\Model\Resource\Setup */
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 $installer->startSetup();
 
@@ -1175,6 +1175,12 @@ $table = $installer->getConnection()->newTable(
     64,
     array('nullable' => true, 'default' => null),
     'Session ID'
+)->addColumn(
+    'last_visit_at',
+    \Magento\Framework\DB\Ddl\Table::TYPE_TIMESTAMP,
+    null,
+    array('nullable' => false),
+    'Last Visit Time'
 )->setComment(
     'Visitor Table'
 );
diff --git a/app/code/Magento/Customer/sql/customer_setup/upgrade-1.6.2.0-1.6.2.0.1.php b/app/code/Magento/Customer/sql/customer_setup/upgrade-1.6.2.0-1.6.2.0.1.php
index f83cb4c1d5d..5ad77fbde0b 100644
--- a/app/code/Magento/Customer/sql/customer_setup/upgrade-1.6.2.0-1.6.2.0.1.php
+++ b/app/code/Magento/Customer/sql/customer_setup/upgrade-1.6.2.0-1.6.2.0.1.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/** @var $installer \Magento\Customer\Model\Resource\Setup */
+/** @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 $installer->getConnection()->addColumn(
diff --git a/app/code/Magento/Customer/sql/customer_setup/upgrade-1.6.2.0.4-1.6.2.0.5.php b/app/code/Magento/Customer/sql/customer_setup/upgrade-1.6.2.0.4-1.6.2.0.5.php
index e915d786193..f677719ddde 100644
--- a/app/code/Magento/Customer/sql/customer_setup/upgrade-1.6.2.0.4-1.6.2.0.5.php
+++ b/app/code/Magento/Customer/sql/customer_setup/upgrade-1.6.2.0.4-1.6.2.0.5.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/** @var $installer \Magento\Customer\Model\Resource\Setup */
+/** @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 $connection = $installer->getConnection();
 
diff --git a/app/code/Magento/Customer/view/adminhtml/templates/tab/addresses.phtml b/app/code/Magento/Customer/view/adminhtml/templates/tab/addresses.phtml
index 8213511229a..704dbc9ad3e 100644
--- a/app/code/Magento/Customer/view/adminhtml/templates/tab/addresses.phtml
+++ b/app/code/Magento/Customer/view/adminhtml/templates/tab/addresses.phtml
@@ -163,14 +163,7 @@
                 /** @var \Magento\Customer\Service\V1\Data\Address $_address */
                 foreach ($addressCollection as $_address): ?>
                     <div class="address-item-edit-content" id="form_address_item_<?php echo $_address->getId() ?>" data-item="<?php echo $_address->getId() ?>" style="display:none" data-mage-init='{"observableInputs": {"name": "address_item_<?php echo $_address->getId() ?>"}}'>
-                        <?php
-                        $this->initForm()->getForm()
-                            ->addValues(\Magento\Customer\Service\V1\Data\AddressConverter::toFlatArray($_address))
-                            ->setHtmlIdPrefix("_item{$_address->getId()}")
-                            ->setFieldNameSuffix('address['.$_address->getId().']');
-                        $this->addValuesToNamePrefixElement($_address->getPrefix())
-                            ->addValuesToNameSuffixElement($_address->getSuffix());
-                        ?>
+                        <?php $this->initAddressForm($_address); ?>
                         <?php echo $this->getForm()->getHtml() ?>
                         <input type="hidden" name="address[<?php echo $_address->getId() ?>][_deleted]" id="deleted_address_item_<?php echo $_address->getId() ?>" />
                     </div>
diff --git a/app/code/Magento/Customer/view/frontend/layout/customer_account_create.xml b/app/code/Magento/Customer/view/frontend/layout/customer_account_create.xml
index 8e361bb4fea..34252035010 100644
--- a/app/code/Magento/Customer/view/frontend/layout/customer_account_create.xml
+++ b/app/code/Magento/Customer/view/frontend/layout/customer_account_create.xml
@@ -30,7 +30,7 @@
         </referenceBlock>
         <referenceContainer name="content">
             <block class="Magento\Customer\Block\Form\Register" name="customer_form_register" template="form/register.phtml" cacheable="false">
-                <container name="form.additional.info" label="invisible" as="form_additional_info"/>
+                <container name="form.additional.info" as="form_additional_info"/>
                 <container name="customer.form.register.fields.before" as="form_fields_before" label="Form Fields Before" htmlTag="div" htmlClass="customer-form-before"/>
             </block>
             <block class="Magento\Core\Block\RequireCookie" name="require-cookie" template="Magento_Core::require_cookie.phtml">
diff --git a/app/code/Magento/Customer/view/frontend/layout/customer_account_forgotpassword.xml b/app/code/Magento/Customer/view/frontend/layout/customer_account_forgotpassword.xml
index 242afb23960..a03a4d7b0ce 100644
--- a/app/code/Magento/Customer/view/frontend/layout/customer_account_forgotpassword.xml
+++ b/app/code/Magento/Customer/view/frontend/layout/customer_account_forgotpassword.xml
@@ -35,7 +35,7 @@
         </referenceBlock>
         <referenceContainer name="content">
             <block class="Magento\Customer\Block\Account\Forgotpassword" name="forgotPassword" template="form/forgotpassword.phtml">
-                <container name="form.additional.info" label="invisible" as="form_additional_info"/>
+                <container name="form.additional.info" as="form_additional_info"/>
             </block>
         </referenceContainer>
     </body>
diff --git a/app/code/Magento/Customer/view/frontend/layout/customer_account_login.xml b/app/code/Magento/Customer/view/frontend/layout/customer_account_login.xml
index 7332bd8e83e..91dde979883 100644
--- a/app/code/Magento/Customer/view/frontend/layout/customer_account_login.xml
+++ b/app/code/Magento/Customer/view/frontend/layout/customer_account_login.xml
@@ -29,7 +29,7 @@
             <!-- customer.form.login.extra -->
             <container name="customer.login.container" label="Customer Login Container" htmlTag="div" htmlClass="login container">
                 <block class="Magento\Customer\Block\Form\Login" name="customer_form_login" template="form/login.phtml" cacheable="false">
-                    <container name="form.additional.info" label="invisible" as="form_additional_info"/>
+                    <container name="form.additional.info" as="form_additional_info"/>
                 </block>
                 <block class="Magento\Customer\Block\Form\Login" name="customer.new" template="newcustomer.phtml" cacheable="false"/>
             </container>
diff --git a/app/code/Magento/Customer/view/frontend/templates/address/edit.phtml b/app/code/Magento/Customer/view/frontend/templates/address/edit.phtml
index ef1923e4fa5..22aec2ea063 100644
--- a/app/code/Magento/Customer/view/frontend/templates/address/edit.phtml
+++ b/app/code/Magento/Customer/view/frontend/templates/address/edit.phtml
@@ -66,6 +66,9 @@
                     <?php $_streetValidationClass = trim(str_replace('required-entry', '', $_streetValidationClass)); ?>
                     <?php for ($_i = 1, $_n = $this->helper('Magento\Customer\Helper\Address')->getStreetLines(); $_i < $_n; $_i++): ?>
                         <div class="field additional">
+                            <label class="label" for="street_<?php echo $_i+1 ?>">
+                                <span><?php echo __('Street Address %1', $_i+1) ?></span>
+                            </label>
                             <div class="control">
                                 <input type="text" name="street[]" value="<?php echo $this->escapeHtml($this->getStreetLine($_i+1)) ?>" title="<?php echo __('Street Address %1', $_i+1) ?>" id="street_<?php echo $_i+1 ?>" class="input-text <?php echo $_streetValidationClass ?>">
                             </div>
diff --git a/app/code/Magento/Customer/view/frontend/templates/form/edit.phtml b/app/code/Magento/Customer/view/frontend/templates/form/edit.phtml
index 2eccf9173c3..f18760001e9 100644
--- a/app/code/Magento/Customer/view/frontend/templates/form/edit.phtml
+++ b/app/code/Magento/Customer/view/frontend/templates/form/edit.phtml
@@ -68,9 +68,9 @@
             </div>
         </div>
         <div class="field confirm password required">
-            <label class="label" for="confirmation"><span><?php echo __('Confirm New Password') ?></span></label>
+            <label class="label" for="password-confirmation"><span><?php echo __('Confirm New Password') ?></span></label>
             <div class="control">
-                <input type="password" class="input-text" name="confirmation" id="confirmation">
+                <input type="password" class="input-text" name="password_confirmation" id="password-confirmation">
             </div>
         </div>
     </fieldset>
@@ -92,7 +92,7 @@
         $('#change-password').mage('setPassword', {
             'currentPasswordId': '#current-password',
             'passwordId': '#password',
-            'confirmationId': '#confirmation',
+            'confirmationId': '#password-confirmation',
             'passwordContainer': 'fieldset.fieldset.password',
             'showOnDefault': <?php echo $this->getChangePassword() ? 'true' : 'false' ?>
         });
diff --git a/app/code/Magento/Customer/view/frontend/templates/form/register.phtml b/app/code/Magento/Customer/view/frontend/templates/form/register.phtml
index e7ef71d0d75..8349a968159 100644
--- a/app/code/Magento/Customer/view/frontend/templates/form/register.phtml
+++ b/app/code/Magento/Customer/view/frontend/templates/form/register.phtml
@@ -94,7 +94,10 @@
                     <div class="nested">
                         <?php $_streetValidationClass = trim(str_replace('required-entry', '', $_streetValidationClass)); ?>
                         <?php for ($_i = 2, $_n = $this->helper('Magento\Customer\Helper\Address')->getStreetLines(); $_i <= $_n; $_i++): ?>
-                            <div class="field additional no-label">
+                            <div class="field additional">
+                                <label class="label" for="street_<?php echo $_i ?>">
+                                    <span><?php echo __('Address') ?></span>
+                                </label>
                                 <div class="control">
                                     <input type="text" name="street[]" value="<?php echo $this->escapeHtml($this->getFormData()->getStreet($_i - 1)) ?>" title="<?php echo __('Street Address %1', $_i) ?>" id="street_<?php echo $_i ?>" class="input-text <?php echo $_streetValidationClass ?>">
                                 </div>
@@ -156,9 +159,9 @@
             </div>
         </div>
         <div class="field confirmation required">
-            <label for="confirmation" class="label"><span><?php echo __('Confirm Password') ?></span></label>
+            <label for="password-confirmation" class="label"><span><?php echo __('Confirm Password') ?></span></label>
             <div class="control">
-                <input type="password" name="confirmation" title="<?php echo __('Confirm Password') ?>" id="confirmation" class="input-text" data-validate="{required:true, equalTo:'#password'}">
+                <input type="password" name="password_confirmation" title="<?php echo __('Confirm Password') ?>" id="password-confirmation" class="input-text" data-validate="{required:true, equalTo:'#password'}">
             </div>
         </div>
         <?php echo $this->getChildHtml('form_additional_info'); ?>
diff --git a/app/code/Magento/Customer/view/frontend/templates/form/resetforgottenpassword.phtml b/app/code/Magento/Customer/view/frontend/templates/form/resetforgottenpassword.phtml
index 07d43f9c4af..a291833dd36 100644
--- a/app/code/Magento/Customer/view/frontend/templates/form/resetforgottenpassword.phtml
+++ b/app/code/Magento/Customer/view/frontend/templates/form/resetforgottenpassword.phtml
@@ -37,9 +37,9 @@
             </div>
         </div>
         <div class="field confirmation required">
-            <label class="label" for="confirmation"><span><?php echo __('Confirm New Password'); ?></span></label>
+            <label class="label" for="password-confirmation"><span><?php echo __('Confirm New Password'); ?></span></label>
             <div class="control">
-                <input type="password" class="input-text" name="confirmation" id="confirmation" data-validate="{required:true,equalTo:'#password'}">
+                <input type="password" class="input-text" name="password_confirmation" id="password-confirmation" data-validate="{required:true,equalTo:'#password'}">
             </div>
         </div>
     </fieldset>
diff --git a/app/code/Magento/CustomerImportExport/composer.json b/app/code/Magento/CustomerImportExport/composer.json
index 4ed72ac9b8b..dcf167156e5 100644
--- a/app/code/Magento/CustomerImportExport/composer.json
+++ b/app/code/Magento/CustomerImportExport/composer.json
@@ -3,17 +3,17 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-customer": "0.1.0-alpha102",
-        "magento/module-eav": "0.1.0-alpha102",
-        "magento/module-import-export": "0.1.0-alpha102",
-        "magento/module-directory": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-customer": "0.1.0-alpha103",
+        "magento/module-eav": "0.1.0-alpha103",
+        "magento/module-import-export": "0.1.0-alpha103",
+        "magento/module-directory": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/DesignEditor/composer.json b/app/code/Magento/DesignEditor/composer.json
index 8183ac314b0..e08dbfe35a4 100644
--- a/app/code/Magento/DesignEditor/composer.json
+++ b/app/code/Magento/DesignEditor/composer.json
@@ -3,16 +3,16 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-theme": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-eav": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-theme": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-eav": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/DesignEditor/sql/designeditor_setup/install-1.0.0.1.php b/app/code/Magento/DesignEditor/sql/designeditor_setup/install-1.0.0.1.php
index 699bb5f0dfc..817feea2236 100644
--- a/app/code/Magento/DesignEditor/sql/designeditor_setup/install-1.0.0.1.php
+++ b/app/code/Magento/DesignEditor/sql/designeditor_setup/install-1.0.0.1.php
@@ -22,7 +22,7 @@
  * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* @var $installer \Magento\Framework\Module\Setup */
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 $installer->startSetup();
diff --git a/app/code/Magento/DesignEditor/sql/designeditor_setup/upgrade-1.0.0.1-1.0.0.2.php b/app/code/Magento/DesignEditor/sql/designeditor_setup/upgrade-1.0.0.1-1.0.0.2.php
index e2a42bbdfa0..8b0aa24a683 100644
--- a/app/code/Magento/DesignEditor/sql/designeditor_setup/upgrade-1.0.0.1-1.0.0.2.php
+++ b/app/code/Magento/DesignEditor/sql/designeditor_setup/upgrade-1.0.0.1-1.0.0.2.php
@@ -22,7 +22,7 @@
  * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* @var $installer \Magento\Framework\Module\Setup */
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 $installer->startSetup();
diff --git a/app/code/Magento/DesignEditor/sql/designeditor_setup/upgrade-1.0.0.2-1.0.0.3.php b/app/code/Magento/DesignEditor/sql/designeditor_setup/upgrade-1.0.0.2-1.0.0.3.php
index ffe662a66cd..9d356e7ec12 100644
--- a/app/code/Magento/DesignEditor/sql/designeditor_setup/upgrade-1.0.0.2-1.0.0.3.php
+++ b/app/code/Magento/DesignEditor/sql/designeditor_setup/upgrade-1.0.0.2-1.0.0.3.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* @var $installer \Magento\Framework\Module\Setup */
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 $installer->startSetup();
diff --git a/app/code/Magento/DesignEditor/view/adminhtml/web/css/styles.css b/app/code/Magento/DesignEditor/view/adminhtml/web/css/styles.css
index ac0b45c53b3..a71a31cc0d2 100644
--- a/app/code/Magento/DesignEditor/view/adminhtml/web/css/styles.css
+++ b/app/code/Magento/DesignEditor/view/adminhtml/web/css/styles.css
@@ -89,7 +89,6 @@
 
 .theme input[type=text]:focus {
     border-color: rgba(82, 168, 236, 0.8);
-    outline: 0;
     -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
     -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
     box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
@@ -974,7 +973,6 @@
 
 .eq-ie8 .vde-tab-data .action-download {
     filter: none;
-    outline: none;
 }
 
 .eq-ie8 .vde-tab-data .action-download:focus:before {
@@ -1392,10 +1390,6 @@
     padding: 20px 0 20px 20px;
 }
 
-.custom-code textarea:focus {
-    outline: none;
-}
-
 @-moz-document url-prefix() {
     .custom-code textarea {
         padding-bottom: 3px;
diff --git a/app/code/Magento/Dhl/composer.json b/app/code/Magento/Dhl/composer.json
index 38c788bfcc1..b1c92467670 100644
--- a/app/code/Magento/Dhl/composer.json
+++ b/app/code/Magento/Dhl/composer.json
@@ -3,21 +3,21 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-shipping": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/module-directory": "0.1.0-alpha102",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-sales": "0.1.0-alpha102",
-        "magento/module-checkout": "0.1.0-alpha102",
-        "magento/module-catalog": "0.1.0-alpha102",
-        "magento/module-catalog-inventory": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-shipping": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/module-directory": "0.1.0-alpha103",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-sales": "0.1.0-alpha103",
+        "magento/module-checkout": "0.1.0-alpha103",
+        "magento/module-catalog": "0.1.0-alpha103",
+        "magento/module-catalog-inventory": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "lib-libxml": "*",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Dhl/data/dhl_setup/data-install-2.0.0.0.php b/app/code/Magento/Dhl/data/dhl_setup/data-install-2.0.0.0.php
index 81a98db6a3a..4de4e3648ed 100644
--- a/app/code/Magento/Dhl/data/dhl_setup/data-install-2.0.0.0.php
+++ b/app/code/Magento/Dhl/data/dhl_setup/data-install-2.0.0.0.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/** @var \Magento\Dhl\Model\Resource\Setup $this */
+/** @var $this \Magento\Dhl\Model\Resource\Setup */
 $days = $this->getLocaleLists()->getTranslationList('days');
 
 $days = array_keys($days['format']['wide']);
diff --git a/app/code/Magento/Directory/Model/PriceCurrency.php b/app/code/Magento/Directory/Model/PriceCurrency.php
index 92004eca78f..06cf2de6e63 100644
--- a/app/code/Magento/Directory/Model/PriceCurrency.php
+++ b/app/code/Magento/Directory/Model/PriceCurrency.php
@@ -123,7 +123,7 @@ class PriceCurrency implements \Magento\Framework\Pricing\PriceCurrencyInterface
      * @param Currency|string|null $currency
      * @return Currency
      */
-    protected function getCurrency($store = null, $currency = null)
+    public function getCurrency($store = null, $currency = null)
     {
         if ($currency instanceof Currency) {
             $currentCurrency = $currency;
@@ -141,7 +141,7 @@ class PriceCurrency implements \Magento\Framework\Pricing\PriceCurrencyInterface
      * Get store model
      *
      * @param null|string|bool|int|\\Magento\Store\Model\Store $store
-     * @return \\Magento\Store\Model\Store
+     * @return \Magento\Store\Model\Store
      */
     protected function getStore($store = null)
     {
diff --git a/app/code/Magento/Directory/composer.json b/app/code/Magento/Directory/composer.json
index eb97b0d4378..fc660b3e373 100644
--- a/app/code/Magento/Directory/composer.json
+++ b/app/code/Magento/Directory/composer.json
@@ -3,15 +3,15 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "lib-libxml": "*",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Directory/data/directory_setup/data-install-1.6.0.0.php b/app/code/Magento/Directory/data/directory_setup/data-install-1.6.0.0.php
index 9d1789594a4..ce28feee08d 100644
--- a/app/code/Magento/Directory/data/directory_setup/data-install-1.6.0.0.php
+++ b/app/code/Magento/Directory/data/directory_setup/data-install-1.6.0.0.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* @var $installer \Magento\Framework\Module\Setup */
+/* @var $installer \Magento\Directory\Model\Resource\Setup */
 $installer = $this;
 
 /**
diff --git a/app/code/Magento/Directory/data/directory_setup/data-upgrade-1.6.0.0-1.6.0.1.php b/app/code/Magento/Directory/data/directory_setup/data-upgrade-1.6.0.0-1.6.0.1.php
index 505917999a0..718c00fe121 100644
--- a/app/code/Magento/Directory/data/directory_setup/data-upgrade-1.6.0.0-1.6.0.1.php
+++ b/app/code/Magento/Directory/data/directory_setup/data-upgrade-1.6.0.0-1.6.0.1.php
@@ -23,7 +23,7 @@
  */
 
 /**
- * @var \Magento\Directory\Model\Resource\Setup $installer
+ * @var $installer \Magento\Directory\Model\Resource\Setup
  */
 $installer = $this;
 
diff --git a/app/code/Magento/Directory/data/directory_setup/data-upgrade-1.6.0.1-1.6.0.2.php b/app/code/Magento/Directory/data/directory_setup/data-upgrade-1.6.0.1-1.6.0.2.php
index 33c2664f0f1..99ce38b3eb8 100644
--- a/app/code/Magento/Directory/data/directory_setup/data-upgrade-1.6.0.1-1.6.0.2.php
+++ b/app/code/Magento/Directory/data/directory_setup/data-upgrade-1.6.0.1-1.6.0.2.php
@@ -23,7 +23,7 @@
  */
 
 /**
- * @var \Magento\Directory\Model\Resource\Setup $installer
+ * @var $installer \Magento\Directory\Model\Resource\Setup
  */
 $installer = $this;
 
diff --git a/app/code/Magento/Directory/sql/directory_setup/install-1.6.0.0.php b/app/code/Magento/Directory/sql/directory_setup/install-1.6.0.0.php
index 8bea0d12dc4..52e9f69d4e0 100644
--- a/app/code/Magento/Directory/sql/directory_setup/install-1.6.0.0.php
+++ b/app/code/Magento/Directory/sql/directory_setup/install-1.6.0.0.php
@@ -22,8 +22,8 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
-/* @var $installer \Magento\Framework\Module\Setup */
 
 $installer->startSetup();
 
diff --git a/app/code/Magento/Downloadable/Service/V1/Data/FileContent.php b/app/code/Magento/Downloadable/Service/V1/Data/FileContent.php
index 76c476b4317..181eaa0f8fb 100644
--- a/app/code/Magento/Downloadable/Service/V1/Data/FileContent.php
+++ b/app/code/Magento/Downloadable/Service/V1/Data/FileContent.php
@@ -23,7 +23,7 @@
  */
 namespace Magento\Downloadable\Service\V1\Data;
 
-use \Magento\Framework\Service\Data\AbstractExtensibleObject;
+use \Magento\Framework\Api\AbstractExtensibleObject;
 
 /**
  * @codeCoverageIgnore
diff --git a/app/code/Magento/Downloadable/Service/V1/Data/FileContentBuilder.php b/app/code/Magento/Downloadable/Service/V1/Data/FileContentBuilder.php
index acd58b238a3..d108976ef70 100644
--- a/app/code/Magento/Downloadable/Service/V1/Data/FileContentBuilder.php
+++ b/app/code/Magento/Downloadable/Service/V1/Data/FileContentBuilder.php
@@ -23,12 +23,12 @@
  */
 namespace Magento\Downloadable\Service\V1\Data;
 
-use \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder;
+use \Magento\Framework\Api\ExtensibleObjectBuilder;
 
 /**
  * @codeCoverageIgnore
  */
-class FileContentBuilder extends AbstractExtensibleObjectBuilder
+class FileContentBuilder extends ExtensibleObjectBuilder
 {
     /**
      * Set data (base64 encoded content)
diff --git a/app/code/Magento/Downloadable/Service/V1/DownloadableLink/Data/DownloadableLinkContent.php b/app/code/Magento/Downloadable/Service/V1/DownloadableLink/Data/DownloadableLinkContent.php
index 6666500ff8d..4f71071fbd3 100644
--- a/app/code/Magento/Downloadable/Service/V1/DownloadableLink/Data/DownloadableLinkContent.php
+++ b/app/code/Magento/Downloadable/Service/V1/DownloadableLink/Data/DownloadableLinkContent.php
@@ -24,7 +24,7 @@
  */
 namespace Magento\Downloadable\Service\V1\DownloadableLink\Data;
 
-use \Magento\Framework\Service\Data\AbstractExtensibleObject;
+use \Magento\Framework\Api\AbstractExtensibleObject;
 
 /**
  * @codeCoverageIgnore
diff --git a/app/code/Magento/Downloadable/Service/V1/DownloadableLink/Data/DownloadableLinkContentBuilder.php b/app/code/Magento/Downloadable/Service/V1/DownloadableLink/Data/DownloadableLinkContentBuilder.php
index 962ff574ad7..770ee947528 100644
--- a/app/code/Magento/Downloadable/Service/V1/DownloadableLink/Data/DownloadableLinkContentBuilder.php
+++ b/app/code/Magento/Downloadable/Service/V1/DownloadableLink/Data/DownloadableLinkContentBuilder.php
@@ -25,13 +25,13 @@
  */
 namespace Magento\Downloadable\Service\V1\DownloadableLink\Data;
 
-use \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder;
+use \Magento\Framework\Api\ExtensibleObjectBuilder;
 use \Magento\Downloadable\Service\V1\Data\FileContent;
 
 /**
  * @codeCoverageIgnore
  */
-class DownloadableLinkContentBuilder extends AbstractExtensibleObjectBuilder
+class DownloadableLinkContentBuilder extends ExtensibleObjectBuilder
 {
     /**
      * Set link title
diff --git a/app/code/Magento/Downloadable/Service/V1/DownloadableLink/Data/DownloadableLinkInfo.php b/app/code/Magento/Downloadable/Service/V1/DownloadableLink/Data/DownloadableLinkInfo.php
index be2c759925b..0a55cefee8d 100644
--- a/app/code/Magento/Downloadable/Service/V1/DownloadableLink/Data/DownloadableLinkInfo.php
+++ b/app/code/Magento/Downloadable/Service/V1/DownloadableLink/Data/DownloadableLinkInfo.php
@@ -24,7 +24,7 @@
  */
 namespace Magento\Downloadable\Service\V1\DownloadableLink\Data;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObject;
+use Magento\Framework\Api\AbstractExtensibleObject;
 
 /**
  * @codeCoverageIgnore
diff --git a/app/code/Magento/Downloadable/Service/V1/DownloadableLink/Data/DownloadableLinkInfoBuilder.php b/app/code/Magento/Downloadable/Service/V1/DownloadableLink/Data/DownloadableLinkInfoBuilder.php
index cbaf88cc99b..5eaf0c88654 100644
--- a/app/code/Magento/Downloadable/Service/V1/DownloadableLink/Data/DownloadableLinkInfoBuilder.php
+++ b/app/code/Magento/Downloadable/Service/V1/DownloadableLink/Data/DownloadableLinkInfoBuilder.php
@@ -25,12 +25,12 @@
  */
 namespace Magento\Downloadable\Service\V1\DownloadableLink\Data;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder;
+use Magento\Framework\Api\ExtensibleObjectBuilder;
 
 /**
  * @codeCoverageIgnore
  */
-class DownloadableLinkInfoBuilder extends AbstractExtensibleObjectBuilder
+class DownloadableLinkInfoBuilder extends ExtensibleObjectBuilder
 {
     /**
      * @param int|null $value
diff --git a/app/code/Magento/Downloadable/Service/V1/DownloadableLink/Data/DownloadableResourceInfo.php b/app/code/Magento/Downloadable/Service/V1/DownloadableLink/Data/DownloadableResourceInfo.php
index ee9bd8a51b8..5cb088192dc 100644
--- a/app/code/Magento/Downloadable/Service/V1/DownloadableLink/Data/DownloadableResourceInfo.php
+++ b/app/code/Magento/Downloadable/Service/V1/DownloadableLink/Data/DownloadableResourceInfo.php
@@ -24,7 +24,7 @@
  */
 namespace Magento\Downloadable\Service\V1\DownloadableLink\Data;
 
-use \Magento\Framework\Service\Data\AbstractExtensibleObject;
+use \Magento\Framework\Api\AbstractExtensibleObject;
 
 /**
  * @codeCoverageIgnore
diff --git a/app/code/Magento/Downloadable/Service/V1/DownloadableLink/Data/DownloadableResourceInfoBuilder.php b/app/code/Magento/Downloadable/Service/V1/DownloadableLink/Data/DownloadableResourceInfoBuilder.php
index 8f05fd07ab6..27dee953cb9 100644
--- a/app/code/Magento/Downloadable/Service/V1/DownloadableLink/Data/DownloadableResourceInfoBuilder.php
+++ b/app/code/Magento/Downloadable/Service/V1/DownloadableLink/Data/DownloadableResourceInfoBuilder.php
@@ -25,9 +25,9 @@
  */
 namespace Magento\Downloadable\Service\V1\DownloadableLink\Data;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder;
+use Magento\Framework\Api\ExtensibleObjectBuilder;
 
-class DownloadableResourceInfoBuilder extends AbstractExtensibleObjectBuilder
+class DownloadableResourceInfoBuilder extends ExtensibleObjectBuilder
 {
     /**
      * Set file path
diff --git a/app/code/Magento/Downloadable/Service/V1/DownloadableLink/Data/DownloadableSampleInfo.php b/app/code/Magento/Downloadable/Service/V1/DownloadableLink/Data/DownloadableSampleInfo.php
index 4d11ed20dc6..ec750a37836 100644
--- a/app/code/Magento/Downloadable/Service/V1/DownloadableLink/Data/DownloadableSampleInfo.php
+++ b/app/code/Magento/Downloadable/Service/V1/DownloadableLink/Data/DownloadableSampleInfo.php
@@ -24,7 +24,7 @@
  */
 namespace Magento\Downloadable\Service\V1\DownloadableLink\Data;
 
-use \Magento\Framework\Service\Data\AbstractExtensibleObject;
+use \Magento\Framework\Api\AbstractExtensibleObject;
 
 /**
  * @codeCoverageIgnore
diff --git a/app/code/Magento/Downloadable/Service/V1/DownloadableLink/Data/DownloadableSampleInfoBuilder.php b/app/code/Magento/Downloadable/Service/V1/DownloadableLink/Data/DownloadableSampleInfoBuilder.php
index 7cf783b03b5..04d68fde08a 100644
--- a/app/code/Magento/Downloadable/Service/V1/DownloadableLink/Data/DownloadableSampleInfoBuilder.php
+++ b/app/code/Magento/Downloadable/Service/V1/DownloadableLink/Data/DownloadableSampleInfoBuilder.php
@@ -25,12 +25,12 @@
  */
 namespace Magento\Downloadable\Service\V1\DownloadableLink\Data;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder;
+use Magento\Framework\Api\ExtensibleObjectBuilder;
 
 /**
  * @codeCoverageIgnore
  */
-class DownloadableSampleInfoBuilder extends AbstractExtensibleObjectBuilder
+class DownloadableSampleInfoBuilder extends ExtensibleObjectBuilder
 {
     /**
      * @param string $value
diff --git a/app/code/Magento/Downloadable/Service/V1/DownloadableSample/Data/DownloadableSampleContent.php b/app/code/Magento/Downloadable/Service/V1/DownloadableSample/Data/DownloadableSampleContent.php
index 1717f463a09..0e3d5eb7476 100644
--- a/app/code/Magento/Downloadable/Service/V1/DownloadableSample/Data/DownloadableSampleContent.php
+++ b/app/code/Magento/Downloadable/Service/V1/DownloadableSample/Data/DownloadableSampleContent.php
@@ -24,7 +24,7 @@
  */
 namespace Magento\Downloadable\Service\V1\DownloadableSample\Data;
 
-use \Magento\Framework\Service\Data\AbstractExtensibleObject;
+use \Magento\Framework\Api\AbstractExtensibleObject;
 
 /**
  * @codeCoverageIgnore
diff --git a/app/code/Magento/Downloadable/Service/V1/DownloadableSample/Data/DownloadableSampleContentBuilder.php b/app/code/Magento/Downloadable/Service/V1/DownloadableSample/Data/DownloadableSampleContentBuilder.php
index 6812db4ff35..8e49fdc3151 100644
--- a/app/code/Magento/Downloadable/Service/V1/DownloadableSample/Data/DownloadableSampleContentBuilder.php
+++ b/app/code/Magento/Downloadable/Service/V1/DownloadableSample/Data/DownloadableSampleContentBuilder.php
@@ -25,13 +25,13 @@
  */
 namespace Magento\Downloadable\Service\V1\DownloadableSample\Data;
 
-use \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder;
+use \Magento\Framework\Api\ExtensibleObjectBuilder;
 use \Magento\Downloadable\Service\V1\Data\FileContent;
 
 /**
  * @codeCoverageIgnore
  */
-class DownloadableSampleContentBuilder extends AbstractExtensibleObjectBuilder
+class DownloadableSampleContentBuilder extends ExtensibleObjectBuilder
 {
     /**
      * Set link title
diff --git a/app/code/Magento/Downloadable/composer.json b/app/code/Magento/Downloadable/composer.json
index cf0b3c8a8e2..54b051f3ba5 100644
--- a/app/code/Magento/Downloadable/composer.json
+++ b/app/code/Magento/Downloadable/composer.json
@@ -3,26 +3,26 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-catalog": "0.1.0-alpha102",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-customer": "0.1.0-alpha102",
-        "magento/module-tax": "0.1.0-alpha102",
-        "magento/module-theme": "0.1.0-alpha102",
-        "magento/module-eav": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/module-sales": "0.1.0-alpha102",
-        "magento/module-checkout": "0.1.0-alpha102",
-        "magento/module-directory": "0.1.0-alpha102",
-        "magento/module-wishlist": "0.1.0-alpha102",
-        "magento/module-gift-message": "0.1.0-alpha102",
-        "magento/module-catalog-inventory": "0.1.0-alpha102",
-        "magento/module-msrp": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-catalog": "0.1.0-alpha103",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-customer": "0.1.0-alpha103",
+        "magento/module-tax": "0.1.0-alpha103",
+        "magento/module-theme": "0.1.0-alpha103",
+        "magento/module-eav": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/module-sales": "0.1.0-alpha103",
+        "magento/module-checkout": "0.1.0-alpha103",
+        "magento/module-directory": "0.1.0-alpha103",
+        "magento/module-wishlist": "0.1.0-alpha103",
+        "magento/module-gift-message": "0.1.0-alpha103",
+        "magento/module-catalog-inventory": "0.1.0-alpha103",
+        "magento/module-msrp": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Downloadable/data/downloadable_setup/data-install-1.6.0.0.php b/app/code/Magento/Downloadable/data/downloadable_setup/data-install-1.6.0.0.php
index d0711c43941..5d21fb7c468 100644
--- a/app/code/Magento/Downloadable/data/downloadable_setup/data-install-1.6.0.0.php
+++ b/app/code/Magento/Downloadable/data/downloadable_setup/data-install-1.6.0.0.php
@@ -21,7 +21,8 @@
  * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
-/** @var $installer \Magento\Downloadable\Model\Resource\Setup */
+
+/** @var $installer \Magento\Catalog\Model\Resource\Setup */
 $installer = $this;
 /**
  * Add attributes to the eav/attribute table
diff --git a/app/code/Magento/Downloadable/data/downloadable_setup/data-upgrade-1.6.0.0.2-1.6.0.0.3.php b/app/code/Magento/Downloadable/data/downloadable_setup/data-upgrade-1.6.0.0.2-1.6.0.0.3.php
index 4f2847531a3..64727ffcc28 100644
--- a/app/code/Magento/Downloadable/data/downloadable_setup/data-upgrade-1.6.0.0.2-1.6.0.0.3.php
+++ b/app/code/Magento/Downloadable/data/downloadable_setup/data-upgrade-1.6.0.0.2-1.6.0.0.3.php
@@ -22,6 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
+/* @var $this \Magento\Catalog\Model\Resource\Setup */
 $applyTo = array_merge(
     explode(',', $this->getAttribute(\Magento\Catalog\Model\Product::ENTITY, 'weight', 'apply_to')),
     array(\Magento\Downloadable\Model\Product\Type::TYPE_DOWNLOADABLE)
diff --git a/app/code/Magento/Downloadable/sql/downloadable_setup/install-1.6.0.0.php b/app/code/Magento/Downloadable/sql/downloadable_setup/install-1.6.0.0.php
index d798125fcca..8f222735004 100644
--- a/app/code/Magento/Downloadable/sql/downloadable_setup/install-1.6.0.0.php
+++ b/app/code/Magento/Downloadable/sql/downloadable_setup/install-1.6.0.0.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/** @var $installer \Magento\Catalog\Model\Resource\Setup */
+/** @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 $installer->startSetup();
diff --git a/app/code/Magento/Downloadable/sql/downloadable_setup/upgrade-1.6.0.0.1-1.6.0.0.2.php b/app/code/Magento/Downloadable/sql/downloadable_setup/upgrade-1.6.0.0.1-1.6.0.0.2.php
index ba34b27644e..aad2a65a723 100644
--- a/app/code/Magento/Downloadable/sql/downloadable_setup/upgrade-1.6.0.0.1-1.6.0.0.2.php
+++ b/app/code/Magento/Downloadable/sql/downloadable_setup/upgrade-1.6.0.0.1-1.6.0.0.2.php
@@ -22,9 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-
-/** @var $this \Magento\Catalog\Model\Resource\Setup */
-/** @var $connection \Magento\Framework\DB\Adapter\Pdo\Mysql */
+/** @var $this \Magento\Setup\Module\SetupModule */
 $connection = $this->getConnection();
 $connection->changeTableEngine(
     $this->getTable('catalog_product_index_price_downlod_tmp'),
diff --git a/app/code/Magento/Downloadable/view/frontend/templates/catalog/product/links.phtml b/app/code/Magento/Downloadable/view/frontend/templates/catalog/product/links.phtml
index f2991c53f49..5c2c84aa164 100644
--- a/app/code/Magento/Downloadable/view/frontend/templates/catalog/product/links.phtml
+++ b/app/code/Magento/Downloadable/view/frontend/templates/catalog/product/links.phtml
@@ -27,6 +27,7 @@
 <?php if ($this->getProduct()->isSaleable() && $this->hasLinks()):?>
     <?php $_links = $this->getLinks(); ?>
     <?php $_isRequired = $this->getLinkSelectionRequired(); ?>
+    <legend class="legend links-title"><span><?php echo $this->getLinksTitle() ?></span></legend><br>
     <div class="field downloads<?php if ($_isRequired) echo ' required' ?>">
         <label class="label"><span><?php echo $this->getLinksTitle() ?></span></label>
         <div class="control" id="downloadable-links-list"
diff --git a/app/code/Magento/Downloadable/view/frontend/templates/catalog/product/type.phtml b/app/code/Magento/Downloadable/view/frontend/templates/catalog/product/type.phtml
index 3115ec90858..3ae16df7104 100644
--- a/app/code/Magento/Downloadable/view/frontend/templates/catalog/product/type.phtml
+++ b/app/code/Magento/Downloadable/view/frontend/templates/catalog/product/type.phtml
@@ -31,12 +31,12 @@
 <?php $_product = $this->getProduct() ?>
 
 <?php if($_product->getIsSalable()): ?>
-    <p class="stock available" title="<?php echo __('Availability') ?>">
+    <div class="stock available" title="<?php echo __('Availability') ?>">
         <span><?php echo __('In stock') ?></span>
-    </p>
+    </div>
 <?php else: ?>
-    <p class="stock unavailable" title="<?php echo __('Availability') ?>">
+    <div class="stock unavailable" title="<?php echo __('Availability') ?>">
         <span><?php echo __('Out of stock') ?></span>
-    </p>
+    </div>
 <?php endif; ?>
 <?php echo $this->getChildHtml() ?>
\ No newline at end of file
diff --git a/app/code/Magento/Eav/composer.json b/app/code/Magento/Eav/composer.json
index 9a831497ce6..6c6d37ad2dc 100644
--- a/app/code/Magento/Eav/composer.json
+++ b/app/code/Magento/Eav/composer.json
@@ -3,15 +3,15 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/module-catalog": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/module-catalog": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Eav/data/eav_setup/data-upgrade-1.6.0.0-1.6.0.1.php b/app/code/Magento/Eav/data/eav_setup/data-upgrade-1.6.0.0-1.6.0.1.php
index a37ea199aa1..9e8f15bff0e 100644
--- a/app/code/Magento/Eav/data/eav_setup/data-upgrade-1.6.0.0-1.6.0.1.php
+++ b/app/code/Magento/Eav/data/eav_setup/data-upgrade-1.6.0.0-1.6.0.1.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/** @var $installer \Magento\Framework\Module\Setup\Migration */
+/** @var $this \Magento\Eav\Model\Entity\Setup  */
 $installer = $this->createMigrationSetup();
 $installer->startSetup();
 
diff --git a/app/code/Magento/Eav/data/eav_setup/data-upgrade-1.6.0.1-1.6.0.2.php b/app/code/Magento/Eav/data/eav_setup/data-upgrade-1.6.0.1-1.6.0.2.php
index cd8318b2526..6826ccc6bc4 100644
--- a/app/code/Magento/Eav/data/eav_setup/data-upgrade-1.6.0.1-1.6.0.2.php
+++ b/app/code/Magento/Eav/data/eav_setup/data-upgrade-1.6.0.1-1.6.0.2.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/** @var $installer \Magento\Framework\Module\Setup\Migration */
+/** @var $installer \Magento\Eav\Model\Entity\Setup */
 $installer = $this;
 $installer->startSetup();
 /** @var $groups \Magento\Eav\Model\Resource\Entity\Attribute\Group\Collection*/
diff --git a/app/code/Magento/Eav/sql/eav_setup/install-1.6.0.0.php b/app/code/Magento/Eav/sql/eav_setup/install-1.6.0.0.php
index 481dd5f0f34..9b52fde232e 100644
--- a/app/code/Magento/Eav/sql/eav_setup/install-1.6.0.0.php
+++ b/app/code/Magento/Eav/sql/eav_setup/install-1.6.0.0.php
@@ -22,8 +22,8 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
-/* @var $installer \Magento\Eav\Model\Entity\Setup */
 
 $installer->startSetup();
 
diff --git a/app/code/Magento/Eav/sql/eav_setup/upgrade-1.6.0.1-1.6.0.2.php b/app/code/Magento/Eav/sql/eav_setup/upgrade-1.6.0.1-1.6.0.2.php
index b9fa3c87aea..d91b25d35a5 100644
--- a/app/code/Magento/Eav/sql/eav_setup/upgrade-1.6.0.1-1.6.0.2.php
+++ b/app/code/Magento/Eav/sql/eav_setup/upgrade-1.6.0.1-1.6.0.2.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/** @var $installer  \Magento\Eav\Model\Entity\Setup*/
+/** @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 $installer->startSetup();
diff --git a/app/code/Magento/Email/composer.json b/app/code/Magento/Email/composer.json
index ba538dd16ef..da9af92b589 100644
--- a/app/code/Magento/Email/composer.json
+++ b/app/code/Magento/Email/composer.json
@@ -3,15 +3,15 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-cms": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-cms": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Email/sql/email_setup/install-1.0.0.0.php b/app/code/Magento/Email/sql/email_setup/install-1.0.0.0.php
index 154307923ee..054fa0e743d 100644
--- a/app/code/Magento/Email/sql/email_setup/install-1.0.0.0.php
+++ b/app/code/Magento/Email/sql/email_setup/install-1.0.0.0.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* @var $installer \Magento\Framework\Module\Setup */
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 /**
diff --git a/app/code/Magento/Fedex/composer.json b/app/code/Magento/Fedex/composer.json
index 360d368ae32..7564c40fe84 100644
--- a/app/code/Magento/Fedex/composer.json
+++ b/app/code/Magento/Fedex/composer.json
@@ -3,19 +3,19 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-shipping": "0.1.0-alpha102",
-        "magento/module-directory": "0.1.0-alpha102",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-catalog": "0.1.0-alpha102",
-        "magento/module-sales": "0.1.0-alpha102",
-        "magento/module-catalog-inventory": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-shipping": "0.1.0-alpha103",
+        "magento/module-directory": "0.1.0-alpha103",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-catalog": "0.1.0-alpha103",
+        "magento/module-sales": "0.1.0-alpha103",
+        "magento/module-catalog-inventory": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "lib-libxml": "*",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Fedex/data/fedex_setup/data-install-2.0.0.0.php b/app/code/Magento/Fedex/data/fedex_setup/data-install-2.0.0.0.php
index 4bb66d3c52b..dd32110c799 100644
--- a/app/code/Magento/Fedex/data/fedex_setup/data-install-2.0.0.0.php
+++ b/app/code/Magento/Fedex/data/fedex_setup/data-install-2.0.0.0.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/** @var \Magento\Framework\Module\Setup $this */
+/** @var $this \Magento\Framework\Module\Setup */
 $codes = array(
     'method' => array(
         'EUROPEFIRSTINTERNATIONALPRIORITY' => 'EUROPE_FIRST_INTERNATIONAL_PRIORITY',
diff --git a/app/code/Magento/GiftMessage/Block/Message/Inline.php b/app/code/Magento/GiftMessage/Block/Message/Inline.php
index 0c463214397..95491d42a9c 100644
--- a/app/code/Magento/GiftMessage/Block/Message/Inline.php
+++ b/app/code/Magento/GiftMessage/Block/Message/Inline.php
@@ -268,16 +268,6 @@ class Inline extends \Magento\Framework\View\Element\Template
         return $this->getData('items');
     }
 
-    /**
-     * Retrieve additional url
-     *
-     * @return string
-     */
-    public function getAdditionalUrl()
-    {
-        return $this->getUrl('*/*/getAdditional');
-    }
-
     /**
      * Check if gift messages for separate items are allowed
      *
diff --git a/app/code/Magento/GiftMessage/Service/V1/Data/Message.php b/app/code/Magento/GiftMessage/Service/V1/Data/Message.php
index e351e8df156..d1f63b31cad 100644
--- a/app/code/Magento/GiftMessage/Service/V1/Data/Message.php
+++ b/app/code/Magento/GiftMessage/Service/V1/Data/Message.php
@@ -28,7 +28,7 @@ namespace Magento\GiftMessage\Service\V1\Data;
  *
  * @codeCoverageIgnore
  */
-class Message extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+class Message extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     /**
      * Gift message ID.
diff --git a/app/code/Magento/GiftMessage/composer.json b/app/code/Magento/GiftMessage/composer.json
index d656097e3ad..9c69e019f8e 100644
--- a/app/code/Magento/GiftMessage/composer.json
+++ b/app/code/Magento/GiftMessage/composer.json
@@ -3,20 +3,20 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-catalog": "0.1.0-alpha102",
-        "magento/module-checkout": "0.1.0-alpha102",
-        "magento/module-multishipping": "0.1.0-alpha102",
-        "magento/module-sales": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-customer": "0.1.0-alpha102",
-        "magento/module-eav": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-catalog": "0.1.0-alpha103",
+        "magento/module-checkout": "0.1.0-alpha103",
+        "magento/module-multishipping": "0.1.0-alpha103",
+        "magento/module-sales": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-customer": "0.1.0-alpha103",
+        "magento/module-eav": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/GiftMessage/data/giftmessage_setup/data-upgrade-1.6.0.0-1.6.0.1.php b/app/code/Magento/GiftMessage/data/giftmessage_setup/data-upgrade-1.6.0.0-1.6.0.1.php
index af507d7f6b7..ce85c95ddf6 100644
--- a/app/code/Magento/GiftMessage/data/giftmessage_setup/data-upgrade-1.6.0.0-1.6.0.1.php
+++ b/app/code/Magento/GiftMessage/data/giftmessage_setup/data-upgrade-1.6.0.0-1.6.0.1.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/** @var $this \Magento\Catalog\Model\Resource\Setup */
+/** @var $this \Magento\GiftMessage\Model\Resource\Setup */
 
 $groupName = 'Autosettings';
 $entityTypeId = $this->getEntityTypeId(\Magento\Catalog\Model\Product::ENTITY);
diff --git a/app/code/Magento/GiftMessage/sql/giftmessage_setup/install-1.6.0.0.php b/app/code/Magento/GiftMessage/sql/giftmessage_setup/install-1.6.0.0.php
index 250c7bba506..b2f0ea17758 100644
--- a/app/code/Magento/GiftMessage/sql/giftmessage_setup/install-1.6.0.0.php
+++ b/app/code/Magento/GiftMessage/sql/giftmessage_setup/install-1.6.0.0.php
@@ -23,7 +23,7 @@
  */
 
 
-/** @var $installer \Magento\GiftMessage\Model\Resource\Setup */
+/** @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 $installer->startSetup();
 
diff --git a/app/code/Magento/GiftMessage/view/frontend/templates/inline.phtml b/app/code/Magento/GiftMessage/view/frontend/templates/inline.phtml
index 2bbaa2ba473..1255dd8d5a1 100644
--- a/app/code/Magento/GiftMessage/view/frontend/templates/inline.phtml
+++ b/app/code/Magento/GiftMessage/view/frontend/templates/inline.phtml
@@ -23,16 +23,6 @@
  */
 ?>
 <?php $_giftMessage = false; ?>
-<?php if(!$this->getDontDisplayContainer()): ?>
-<script type="text/javascript">
-require(['jquery', "mage/mage"], function(jQuery){
-
-    jQuery('#checkoutSteps').mage('extraOptions', {additionalUrl: '<?php echo $this->getAdditionalUrl(); ?>'});
-
-});
-</script>
-<?php endif ?>
-
 <?php switch ($this->getCheckoutType()): ?>
 <?php case 'onepage_checkout': ?>
     <fieldset class="fieldset gift-message">
diff --git a/app/code/Magento/GoogleAdwords/composer.json b/app/code/Magento/GoogleAdwords/composer.json
index 750f469cb8b..113d5f4ce54 100644
--- a/app/code/Magento/GoogleAdwords/composer.json
+++ b/app/code/Magento/GoogleAdwords/composer.json
@@ -3,13 +3,13 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-sales": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-sales": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/GoogleAnalytics/composer.json b/app/code/Magento/GoogleAnalytics/composer.json
index 1602b53b1f1..508dbb98670 100644
--- a/app/code/Magento/GoogleAnalytics/composer.json
+++ b/app/code/Magento/GoogleAnalytics/composer.json
@@ -3,13 +3,13 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-sales": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-sales": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/GoogleOptimizer/composer.json b/app/code/Magento/GoogleOptimizer/composer.json
index 0f597bfd453..3ec25dde8df 100644
--- a/app/code/Magento/GoogleOptimizer/composer.json
+++ b/app/code/Magento/GoogleOptimizer/composer.json
@@ -3,16 +3,16 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-google-analytics": "0.1.0-alpha102",
-        "magento/module-catalog": "0.1.0-alpha102",
-        "magento/module-cms": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-google-analytics": "0.1.0-alpha103",
+        "magento/module-catalog": "0.1.0-alpha103",
+        "magento/module-cms": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/GoogleOptimizer/sql/googleoptimizer_setup/install-2.0.0.0.php b/app/code/Magento/GoogleOptimizer/sql/googleoptimizer_setup/install-2.0.0.0.php
index cec2e5a5bc6..d0e6450144e 100644
--- a/app/code/Magento/GoogleOptimizer/sql/googleoptimizer_setup/install-2.0.0.0.php
+++ b/app/code/Magento/GoogleOptimizer/sql/googleoptimizer_setup/install-2.0.0.0.php
@@ -23,8 +23,9 @@
  * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
+
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
-/* @var $installer \Magento\Framework\Module\Setup */
 
 $installer->startSetup();
 
diff --git a/app/code/Magento/GoogleShopping/composer.json b/app/code/Magento/GoogleShopping/composer.json
index 5412013c680..e79b3cb149f 100644
--- a/app/code/Magento/GoogleShopping/composer.json
+++ b/app/code/Magento/GoogleShopping/composer.json
@@ -3,19 +3,19 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/module-catalog": "0.1.0-alpha102",
-        "magento/module-customer": "0.1.0-alpha102",
-        "magento/module-directory": "0.1.0-alpha102",
-        "magento/module-eav": "0.1.0-alpha102",
-        "magento/module-tax": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/module-catalog": "0.1.0-alpha103",
+        "magento/module-customer": "0.1.0-alpha103",
+        "magento/module-directory": "0.1.0-alpha103",
+        "magento/module-eav": "0.1.0-alpha103",
+        "magento/module-tax": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/GoogleShopping/sql/googleshopping_setup/install-1.6.0.0.php b/app/code/Magento/GoogleShopping/sql/googleshopping_setup/install-1.6.0.0.php
index e011fd54efd..cc6a65aaa59 100644
--- a/app/code/Magento/GoogleShopping/sql/googleshopping_setup/install-1.6.0.0.php
+++ b/app/code/Magento/GoogleShopping/sql/googleshopping_setup/install-1.6.0.0.php
@@ -27,7 +27,8 @@
  *
  * @author      Magento Core Team <core@magentocommerce.com>
  */
-/** @var $installer \Magento\Framework\Module\Setup */
+
+/** @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 $installer->startSetup();
diff --git a/app/code/Magento/GoogleShopping/sql/googleshopping_setup/upgrade-1.6.0.0-1.6.0.0.1.php b/app/code/Magento/GoogleShopping/sql/googleshopping_setup/upgrade-1.6.0.0-1.6.0.0.1.php
index e0365e870ae..61d13c411f4 100644
--- a/app/code/Magento/GoogleShopping/sql/googleshopping_setup/upgrade-1.6.0.0-1.6.0.0.1.php
+++ b/app/code/Magento/GoogleShopping/sql/googleshopping_setup/upgrade-1.6.0.0-1.6.0.0.1.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/** @var $installer \Magento\Framework\Module\Setup */
+/** @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 $installer->getConnection()->addColumn(
diff --git a/app/code/Magento/GoogleShopping/view/adminhtml/layout/adminhtml_googleshopping_types_block.xml b/app/code/Magento/GoogleShopping/view/adminhtml/layout/adminhtml_googleshopping_types_block.xml
index b2cb89290a6..35a2b590bd5 100644
--- a/app/code/Magento/GoogleShopping/view/adminhtml/layout/adminhtml_googleshopping_types_block.xml
+++ b/app/code/Magento/GoogleShopping/view/adminhtml/layout/adminhtml_googleshopping_types_block.xml
@@ -33,7 +33,7 @@
                     <argument name="save_parameters_in_session" xsi:type="string">1</argument>
                     <argument name="use_ajax" xsi:type="string">1</argument>
                     <argument name="grid_url" xsi:type="url" path="*/*/grid">
-                        <param name="_current">1</param>
+                        <param name="_current">0</param>
                     </argument>
                 </arguments>
                 <block class="Magento\Backend\Block\Widget\Grid\ColumnSet" as="grid.columnSet" name="googleshopping.types.grid.columnSet">
diff --git a/app/code/Magento/GroupedImportExport/composer.json b/app/code/Magento/GroupedImportExport/composer.json
index bffb6804480..525bf0c37c3 100644
--- a/app/code/Magento/GroupedImportExport/composer.json
+++ b/app/code/Magento/GroupedImportExport/composer.json
@@ -3,16 +3,16 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-catalog": "0.1.0-alpha102",
-        "magento/module-import-export": "0.1.0-alpha102",
-        "magento/module-catalog-import-export": "0.1.0-alpha102",
-        "magento/module-grouped-product": "0.1.0-alpha102",
-        "magento/module-eav": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-catalog": "0.1.0-alpha103",
+        "magento/module-import-export": "0.1.0-alpha103",
+        "magento/module-catalog-import-export": "0.1.0-alpha103",
+        "magento/module-grouped-product": "0.1.0-alpha103",
+        "magento/module-eav": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/GroupedProduct/Service/V1/Product/Link/Data/ProductLink/ProductEntity/Converter.php b/app/code/Magento/GroupedProduct/Service/V1/Product/Link/Data/ProductLink/ProductEntity/Converter.php
index 52eb56a2c90..6a0aee66184 100644
--- a/app/code/Magento/GroupedProduct/Service/V1/Product/Link/Data/ProductLink/ProductEntity/Converter.php
+++ b/app/code/Magento/GroupedProduct/Service/V1/Product/Link/Data/ProductLink/ProductEntity/Converter.php
@@ -25,7 +25,7 @@
 namespace Magento\GroupedProduct\Service\V1\Product\Link\Data\ProductLink\ProductEntity;
 
 use \Magento\Catalog\Service\V1\Product\Link\Data\ProductLink;
-use \Magento\Framework\Service\Data\AttributeValue;
+use \Magento\Framework\Api\AttributeValue;
 use \Magento\Catalog\Service\V1\Product\Link\Data\ProductLink\ProductEntity\ConverterInterface;
 
 class Converter implements ConverterInterface
diff --git a/app/code/Magento/GroupedProduct/composer.json b/app/code/Magento/GroupedProduct/composer.json
index 572384ad0c9..a371019206b 100644
--- a/app/code/Magento/GroupedProduct/composer.json
+++ b/app/code/Magento/GroupedProduct/composer.json
@@ -3,21 +3,21 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-catalog": "0.1.0-alpha102",
-        "magento/module-catalog-inventory": "0.1.0-alpha102",
-        "magento/module-sales": "0.1.0-alpha102",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-checkout": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/module-eav": "0.1.0-alpha102",
-        "magento/module-customer": "0.1.0-alpha102",
-        "magento/module-msrp": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-catalog": "0.1.0-alpha103",
+        "magento/module-catalog-inventory": "0.1.0-alpha103",
+        "magento/module-sales": "0.1.0-alpha103",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-checkout": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/module-eav": "0.1.0-alpha103",
+        "magento/module-customer": "0.1.0-alpha103",
+        "magento/module-msrp": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/GroupedProduct/view/frontend/templates/product/view/type/default.phtml b/app/code/Magento/GroupedProduct/view/frontend/templates/product/view/type/default.phtml
index 2f77cc2020b..70ab6db3dac 100644
--- a/app/code/Magento/GroupedProduct/view/frontend/templates/product/view/type/default.phtml
+++ b/app/code/Magento/GroupedProduct/view/frontend/templates/product/view/type/default.phtml
@@ -29,12 +29,12 @@
 <?php $_hasAssociatedProducts = count($_associatedProducts) > 0; ?>
 <?php if ($this->displayProductStockStatus()): ?>
     <?php if ($_product->isAvailable() && $_hasAssociatedProducts): ?>
-        <p class="stock available" title="<?php echo __('Availability') ?>">
+        <div class="stock available" title="<?php echo __('Availability') ?>">
             <span><?php echo __('In stock') ?></span>
-        </p>
+        </div>
     <?php else: ?>
-        <p class="stock unavailable" title="<?php echo __('Availability') ?>">
+        <div class="stock unavailable" title="<?php echo __('Availability') ?>">
             <span><?php echo __('Out of stock') ?></span>
-        </p>
+        </div>
     <?php endif; ?>
 <?php endif; ?>
diff --git a/app/code/Magento/GroupedProduct/view/frontend/templates/product/view/type/grouped.phtml b/app/code/Magento/GroupedProduct/view/frontend/templates/product/view/type/grouped.phtml
index f43d36539dc..31083ae9a75 100644
--- a/app/code/Magento/GroupedProduct/view/frontend/templates/product/view/type/grouped.phtml
+++ b/app/code/Magento/GroupedProduct/view/frontend/templates/product/view/type/grouped.phtml
@@ -59,7 +59,7 @@
                      <?php endif; ?>
                 </td>
                 <?php if ($_product->isSaleable()): ?>
-                <td data-th="<?php echo $this->escapeHtml(__('Qty')); ?>"  class="col qty">
+                <td data-th="<?php echo $this->escapeHtml(__('Qty')); ?>" class="col qty">
                 <?php if ($_item->isSaleable()) : ?>
                     <div class="control qty">
                         <input type="number" name="super_group[<?php echo $_item->getId() ?>]"
@@ -71,9 +71,9 @@
                                data-validate-message-box="#validate-message-box"/>
                     </div>
                 <?php else: ?>
-                    <p class="stock unavailable" title="<?php echo __('Availability') ?>">
+                    <div class="stock unavailable" title="<?php echo __('Availability') ?>">
                         <span><?php echo __('Out of stock') ?></span>
-                    </p>
+                    </div>
                 <?php endif; ?>
                 </td>
                 <?php endif; ?>
diff --git a/app/code/Magento/ImportExport/composer.json b/app/code/Magento/ImportExport/composer.json
index 29409c1ade1..74afea4be23 100644
--- a/app/code/Magento/ImportExport/composer.json
+++ b/app/code/Magento/ImportExport/composer.json
@@ -3,17 +3,17 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/module-eav": "0.1.0-alpha102",
-        "magento/module-indexer": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/module-eav": "0.1.0-alpha103",
+        "magento/module-indexer": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "ext-ctype": "*",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/ImportExport/sql/importexport_setup/install-1.6.0.0.php b/app/code/Magento/ImportExport/sql/importexport_setup/install-1.6.0.0.php
index eeb0fdda1d6..df26f1492fe 100644
--- a/app/code/Magento/ImportExport/sql/importexport_setup/install-1.6.0.0.php
+++ b/app/code/Magento/ImportExport/sql/importexport_setup/install-1.6.0.0.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/** @var $installer \Magento\Framework\Module\Setup */
+/** @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 $installer->startSetup();
 
diff --git a/app/code/Magento/ImportExport/sql/importexport_setup/upgrade-1.6.0.1-1.6.0.2.php b/app/code/Magento/ImportExport/sql/importexport_setup/upgrade-1.6.0.1-1.6.0.2.php
index e03f7dfeed8..6373179ad59 100644
--- a/app/code/Magento/ImportExport/sql/importexport_setup/upgrade-1.6.0.1-1.6.0.2.php
+++ b/app/code/Magento/ImportExport/sql/importexport_setup/upgrade-1.6.0.1-1.6.0.2.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/** @var $installer \Magento\Framework\Module\Setup */
+/** @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 $installer->getConnection()->modifyColumn(
diff --git a/app/code/Magento/ImportExport/sql/importexport_setup/upgrade-1.6.0.2-1.6.0.3.php b/app/code/Magento/ImportExport/sql/importexport_setup/upgrade-1.6.0.2-1.6.0.3.php
index 5aad8e09b45..699887aa1e1 100644
--- a/app/code/Magento/ImportExport/sql/importexport_setup/upgrade-1.6.0.2-1.6.0.3.php
+++ b/app/code/Magento/ImportExport/sql/importexport_setup/upgrade-1.6.0.2-1.6.0.3.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/** @var $installer \Magento\Framework\Module\Setup */
+/** @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 $installer->getConnection()->addColumn(
diff --git a/app/code/Magento/ImportExport/sql/importexport_setup/upgrade-1.6.0.3-1.6.0.4.php b/app/code/Magento/ImportExport/sql/importexport_setup/upgrade-1.6.0.3-1.6.0.4.php
index 3244a1e68ea..217c24ef02d 100644
--- a/app/code/Magento/ImportExport/sql/importexport_setup/upgrade-1.6.0.3-1.6.0.4.php
+++ b/app/code/Magento/ImportExport/sql/importexport_setup/upgrade-1.6.0.3-1.6.0.4.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/** @var $installer \Magento\Framework\Module\Setup */
+/** @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 $installer->getConnection()->dropColumn($installer->getTable('importexport_importdata'), 'entity_subtype');
diff --git a/app/code/Magento/Indexer/composer.json b/app/code/Magento/Indexer/composer.json
index e8570cbba88..4d5f4a80fd5 100644
--- a/app/code/Magento/Indexer/composer.json
+++ b/app/code/Magento/Indexer/composer.json
@@ -3,13 +3,13 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/module-page-cache": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/module-page-cache": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Indexer/sql/indexer_setup/install-1.0.0.0.php b/app/code/Magento/Indexer/sql/indexer_setup/install-1.0.0.0.php
index 661e333f20e..7d3127568f8 100644
--- a/app/code/Magento/Indexer/sql/indexer_setup/install-1.0.0.0.php
+++ b/app/code/Magento/Indexer/sql/indexer_setup/install-1.0.0.0.php
@@ -22,8 +22,8 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
-/* @var $installer \Magento\Framework\Module\Setup */
 
 $installer->startSetup();
 
diff --git a/app/code/Magento/Install/App/Console.php b/app/code/Magento/Install/App/Console.php
deleted file mode 100644
index 18073a55788..00000000000
--- a/app/code/Magento/Install/App/Console.php
+++ /dev/null
@@ -1,173 +0,0 @@
-<?php
-/**
- * Console application
- *
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-namespace Magento\Install\App;
-
-use Magento\Framework\App\Console\Response;
-use Magento\Framework\App\Bootstrap;
-use Magento\Framework\App\Filesystem\DirectoryList;
-
-class Console implements \Magento\Framework\AppInterface
-{
-    /**
-     * @var  \Magento\Install\Model\Installer\ConsoleFactory
-     */
-    protected $_installerFactory;
-
-    /** @var array */
-    protected $_arguments;
-
-    /** @var \Magento\Install\App\Output */
-    protected $_output;
-
-    /**
-     * @var \Magento\Framework\App\ObjectManager\ConfigLoader
-     */
-    protected $_loader;
-
-    /**
-     * @var \Magento\Framework\App\State
-     */
-    protected $_state;
-
-    /**
-     * @var \Magento\Framework\ObjectManager
-     */
-    protected $_objectManager;
-
-    /**
-     * @var \Magento\Framework\Filesystem\Directory\Read
-     */
-    protected $rootDirectory;
-
-    /**
-     * @var \Magento\Framework\App\Console\Response
-     */
-    protected $_response;
-
-    /**
-     * @param \Magento\Install\Model\Installer\ConsoleFactory $installerFactory
-     * @param \Magento\Install\App\Output $output
-     * @param \Magento\Framework\App\State $state
-     * @param \Magento\Framework\App\ObjectManager\ConfigLoader $loader
-     * @param \Magento\Framework\ObjectManager $objectManager
-     * @param \Magento\Framework\Filesystem $filesystem
-     * @param Response $response
-     * @param array $arguments
-     */
-    public function __construct(
-        \Magento\Install\Model\Installer\ConsoleFactory $installerFactory,
-        \Magento\Install\App\Output $output,
-        \Magento\Framework\App\State $state,
-        \Magento\Framework\App\ObjectManager\ConfigLoader $loader,
-        \Magento\Framework\ObjectManager $objectManager,
-        \Magento\Framework\Filesystem $filesystem,
-        Response $response,
-        array $arguments = array()
-    ) {
-        $this->rootDirectory = $filesystem->getDirectoryRead(DirectoryList::ROOT);
-        $this->_loader = $loader;
-        $this->_state = $state;
-        $this->_installerFactory = $installerFactory;
-        $this->_arguments = $arguments;
-        $this->_output = $output;
-        $this->_response = $response;
-        $this->_objectManager = $objectManager;
-    }
-
-    /**
-     * Install application
-     *
-     * @param \Magento\Install\Model\Installer\Console $installer
-     * @return void
-     */
-    protected function _handleInstall(\Magento\Install\Model\Installer\Console $installer)
-    {
-        if (isset(
-            $this->_arguments['config']
-        ) && $this->rootDirectory->isExist(
-            $this->rootDirectory->getRelativePath($this->_arguments['config'])
-        )
-        ) {
-            $config = (array)include $this->_arguments['config'];
-            $this->_arguments = array_merge((array)$config, $this->_arguments);
-        }
-
-        $result = $installer->install($this->_arguments);
-
-        if (!$installer->hasErrors()) {
-            $msg = 'Installed successfully' . ($result ? ' (encryption key "' . $result . '")' : '');
-            $this->_output->success($msg . PHP_EOL);
-        } else {
-            $this->_output->error(implode(PHP_EOL, $installer->getErrors()) . PHP_EOL);
-        }
-    }
-
-    /**
-     * Run application
-     *
-     * @return \Magento\Framework\App\ResponseInterface
-     */
-    public function launch()
-    {
-        $areaCode = 'install';
-        $this->_state->setAreaCode($areaCode);
-        $this->_objectManager->configure($this->_loader->load($areaCode));
-
-        /** @var \Magento\Install\Model\Installer\Console $installer */
-        $installer = $this->_installerFactory->create(array('installArgs' => $this->_arguments));
-
-        if (isset($this->_arguments['show_locales'])) {
-            $this->_output->readableOutput($this->_output->prepareArray($installer->getAvailableLocales()));
-        } elseif (isset($this->_arguments['show_currencies'])) {
-            $this->_output->readableOutput($this->_output->prepareArray($installer->getAvailableCurrencies()));
-        } elseif (isset($this->_arguments['show_timezones'])) {
-            $this->_output->readableOutput($this->_output->prepareArray($installer->getAvailableTimezones()));
-        } elseif (isset($this->_arguments['show_install_options'])) {
-            $this->_output->readableOutput(PHP_EOL . 'Required parameters:');
-            $this->_output->readableOutput($this->_output->alignArrayKeys($installer->getRequiredParams()));
-            $this->_output->readableOutput(PHP_EOL . 'Optional parameters:');
-            $this->_output->readableOutput($this->_output->alignArrayKeys($installer->getOptionalParams()));
-            $this->_output->readableOutput(
-                PHP_EOL .
-                'Flag values are considered positive if set to 1, y, true or yes.' .
-                'Any other value is considered as negative.' .
-                PHP_EOL
-            );
-        } else {
-            $this->_handleInstall($installer);
-        }
-        $this->_response->setCode(0);
-        return $this->_response;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function catchException(Bootstrap $bootstrap, \Exception $exception)
-    {
-        return false;
-    }
-}
diff --git a/app/code/Magento/Install/App/Output.php b/app/code/Magento/Install/App/Output.php
deleted file mode 100644
index e9ec242644e..00000000000
--- a/app/code/Magento/Install/App/Output.php
+++ /dev/null
@@ -1,115 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license   http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-namespace Magento\Install\App;
-
-class Output
-{
-    /**
-     * Make array keys aligned to the longest
-     *
-     * @param array $data
-     * @return array
-     */
-    public function alignArrayKeys(array $data)
-    {
-        $formattedData = array();
-        $length = max(array_map('strlen', array_keys($data)));
-        foreach ($data as $key => $value) {
-            $formattedData[str_pad($key, $length, ' ', STR_PAD_RIGHT)] = $value;
-        }
-        return $formattedData;
-    }
-
-    /**
-     * Process an array to $key => $value format
-     * and adapt keys to pretty output
-     *
-     * @param array $rawData
-     * @return array
-     */
-    public function prepareArray(array $rawData)
-    {
-        $keyValData = array();
-
-        // transform data to key => value format
-        foreach ($rawData as $item) {
-            $keyValData[$item['value']] = $item['label'];
-        }
-
-        return $this->alignArrayKeys($keyValData);
-    }
-
-    /**
-     * Make output human readable
-     *
-     * @param mixed $var
-     * @return void
-     */
-    public function readableOutput($var)
-    {
-        switch (true) {
-            case is_array($var):
-                $eol = '';
-                foreach ($var as $key => $value) {
-                    if (is_array($value) || !is_scalar($value)) {
-                        echo $eol . $key . ' => ' . var_export($value, true);
-                    } else {
-                        echo $eol . $key . ' -- ' . $value;
-                    }
-                    $eol = PHP_EOL;
-                }
-                echo PHP_EOL;
-                break;
-            case is_scalar($var):
-                echo $var . PHP_EOL;
-                break;
-            default:
-                var_export($var);
-        }
-    }
-
-    /**
-     * Display message
-     *
-     * @param string $message
-     * @return void
-     */
-    public function success($message)
-    {
-        echo $message;
-    }
-
-    /**
-     * Display error
-     *
-     * @param string $message
-     * @return void
-     * @SuppressWarnings(PHPMD.ExitExpression)
-     */
-    public function error($message)
-    {
-        echo $message;
-        exit(1);
-    }
-}
diff --git a/app/code/Magento/Install/Block/AbstractBlock.php b/app/code/Magento/Install/Block/AbstractBlock.php
deleted file mode 100644
index 5accaf287b2..00000000000
--- a/app/code/Magento/Install/Block/AbstractBlock.php
+++ /dev/null
@@ -1,105 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-
-/**
- * Abstract installation block
- *
- * @author      Magento Core Team <core@magentocommerce.com>
- */
-namespace Magento\Install\Block;
-
-abstract class AbstractBlock extends \Magento\Framework\View\Element\Template
-{
-    /**
-     * Installer model
-     *
-     * @var \Magento\Install\Model\Installer
-     */
-    protected $_installer;
-
-    /**
-     * Wizard model
-     *
-     * @var \Magento\Install\Model\Wizard
-     */
-    protected $_installWizard;
-
-    /**
-     * Install session
-     *
-     * @var \Magento\Framework\Session\Generic
-     */
-    protected $_session;
-
-    /**
-     * @param \Magento\Framework\View\Element\Template\Context $context
-     * @param \Magento\Install\Model\Installer $installer
-     * @param \Magento\Install\Model\Wizard $installWizard
-     * @param \Magento\Framework\Session\Generic $session
-     * @param array $data
-     */
-    public function __construct(
-        \Magento\Framework\View\Element\Template\Context $context,
-        \Magento\Install\Model\Installer $installer,
-        \Magento\Install\Model\Wizard $installWizard,
-        \Magento\Framework\Session\Generic $session,
-        array $data = array()
-    ) {
-        parent::__construct($context, $data);
-        $this->_installer = $installer;
-        $this->_installWizard = $installWizard;
-        $this->_session = $session;
-        $this->_isScopePrivate = true;
-    }
-
-    /**
-     * Retrieve installer model
-     *
-     * @return \Magento\Install\Model\Installer
-     */
-    public function getInstaller()
-    {
-        return $this->_installer;
-    }
-
-    /**
-     * Retrieve wizard model
-     *
-     * @return \Magento\Install\Model\Wizard
-     */
-    public function getWizard()
-    {
-        return $this->_installWizard;
-    }
-
-    /**
-     * Retrieve current installation step
-     *
-     * @return \Magento\Framework\Object
-     */
-    public function getCurrentStep()
-    {
-        return $this->getWizard()->getStepByRequest($this->getRequest());
-    }
-}
diff --git a/app/code/Magento/Install/Block/Config.php b/app/code/Magento/Install/Block/Config.php
deleted file mode 100644
index 35339f79010..00000000000
--- a/app/code/Magento/Install/Block/Config.php
+++ /dev/null
@@ -1,140 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-
-/**
- * Config installation block
- *
- * @author      Magento Core Team <core@magentocommerce.com>
- */
-namespace Magento\Install\Block;
-
-class Config extends \Magento\Install\Block\AbstractBlock
-{
-    /**
-     * @var string
-     */
-    protected $_template = 'config.phtml';
-
-    /**
-     * Install installer config
-     *
-     * @var \Magento\Install\Model\Installer\Config
-     */
-    protected $_installerConfig = null;
-
-    /**
-     * @param \Magento\Framework\View\Element\Template\Context $context
-     * @param \Magento\Install\Model\Installer $installer
-     * @param \Magento\Install\Model\Wizard $installWizard
-     * @param \Magento\Framework\Session\Generic $session
-     * @param \Magento\Install\Model\Installer\Config $installerConfig
-     * @param array $data
-     */
-    public function __construct(
-        \Magento\Framework\View\Element\Template\Context $context,
-        \Magento\Install\Model\Installer $installer,
-        \Magento\Install\Model\Wizard $installWizard,
-        \Magento\Framework\Session\Generic $session,
-        \Magento\Install\Model\Installer\Config $installerConfig,
-        array $data = array()
-    ) {
-        parent::__construct($context, $installer, $installWizard, $session, $data);
-        $this->_installerConfig = $installerConfig;
-    }
-
-    /**
-     * Retrieve form data post url
-     *
-     * @return string
-     */
-    public function getPostUrl()
-    {
-        return $this->getUrl('*/*/configPost');
-    }
-
-    /**
-     * Retrieve configuration form data object
-     *
-     * @return \Magento\Framework\Object
-     */
-    public function getFormData()
-    {
-        $data = $this->getData('form_data');
-        if (is_null($data)) {
-            $data = $this->_session->getConfigData(true);
-            if (empty($data)) {
-                $data = $this->_installerConfig->getFormData();
-            } else {
-                $data = new \Magento\Framework\Object($data);
-            }
-            $this->setFormData($data);
-        }
-        return $data;
-    }
-
-    /**
-     * @return bool
-     */
-    public function getSkipUrlValidation()
-    {
-        return $this->_session->getSkipUrlValidation();
-    }
-
-    /**
-     * @return bool
-     */
-    public function getSkipBaseUrlValidation()
-    {
-        return $this->_session->getSkipBaseUrlValidation();
-    }
-
-    /**
-     * @return array
-     */
-    public function getSessionSaveOptions()
-    {
-        return array('files' => __('File System'), 'db' => __('Database'));
-    }
-
-    /**
-     * @return string
-     */
-    public function getSessionSaveSelect()
-    {
-        $html = $this->getLayout()->createBlock(
-            'Magento\Framework\View\Element\Html\Select'
-        )->setName(
-            'config[session_save]'
-        )->setId(
-            'session_save'
-        )->setTitle(
-            __('Save Session Files In')
-        )->setClass(
-            'required-entry'
-        )->setOptions(
-            $this->getSessionSaveOptions()
-        )->getHtml();
-        return $html;
-    }
-}
diff --git a/app/code/Magento/Install/Block/Db/Main.php b/app/code/Magento/Install/Block/Db/Main.php
deleted file mode 100644
index d9f403257b9..00000000000
--- a/app/code/Magento/Install/Block/Db/Main.php
+++ /dev/null
@@ -1,144 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-
-/**
- * Database config installation block
- */
-namespace Magento\Install\Block\Db;
-
-class Main extends \Magento\Framework\View\Element\Template
-{
-    /**
-     * Array of Database blocks keyed by name
-     *
-     * @var array
-     */
-    protected $_databases = array();
-
-    /**
-     * Install installer config
-     *
-     * @var \Magento\Install\Model\Installer\Config
-     */
-    protected $_installerConfig = null;
-
-    /**
-     * Install installer config
-     *
-     * @var \Magento\Framework\Session\Generic
-     */
-    protected $_session;
-
-    /**
-     * @param \Magento\Framework\View\Element\Template\Context $context
-     * @param \Magento\Install\Model\Installer\Config $installerConfig
-     * @param \Magento\Framework\Session\Generic $session
-     * @param array $data
-     */
-    public function __construct(
-        \Magento\Framework\View\Element\Template\Context $context,
-        \Magento\Install\Model\Installer\Config $installerConfig,
-        \Magento\Framework\Session\Generic $session,
-        array $data = array()
-    ) {
-        parent::__construct($context, $data);
-        $this->_installerConfig = $installerConfig;
-        $this->_session = $session;
-    }
-
-    /**
-     * Adding customized database block template for database model type
-     *
-     * @param  string $type database type
-     * @param  string $block database block type
-     * @param  string $template
-     * @return $this
-     */
-    public function addDatabaseBlock($type, $block, $template)
-    {
-        $this->_databases[$type] = array('block' => $block, 'template' => $template, 'instance' => null);
-
-        return $this;
-    }
-
-    /**
-     * Retrieve database block by type
-     *
-     * @param  string $type database model type
-     * @return bool|\Magento\Framework\View\Element\Template
-     */
-    public function getDatabaseBlock($type)
-    {
-        $block = false;
-        if (isset($this->_databases[$type])) {
-            if ($this->_databases[$type]['instance']) {
-                $block = $this->_databases[$type]['instance'];
-            } else {
-                $block = $this->getLayout()->createBlock(
-                    $this->_databases[$type]['block']
-                )->setTemplate(
-                    $this->_databases[$type]['template']
-                )->setIdPrefix(
-                    $type
-                );
-                $this->_databases[$type]['instance'] = $block;
-            }
-        }
-        return $block;
-    }
-
-    /**
-     * Retrieve database blocks
-     *
-     * @return array
-     */
-    public function getDatabaseBlocks()
-    {
-        $databases = array();
-        foreach (array_keys($this->_databases) as $type) {
-            $databases[] = $this->getDatabaseBlock($type);
-        }
-        return $databases;
-    }
-
-    /**
-     * Retrieve configuration form data object
-     *
-     * @return \Magento\Framework\Object
-     */
-    public function getFormData()
-    {
-        $data = $this->getData('form_data');
-        if (is_null($data)) {
-            $data = $this->_session->getConfigData(true);
-            if (empty($data)) {
-                $data = $this->_installerConfig->getFormData();
-            } else {
-                $data = new \Magento\Framework\Object($data);
-            }
-            $this->setFormData($data);
-        }
-        return $data;
-    }
-}
diff --git a/app/code/Magento/Install/Block/Db/Type.php b/app/code/Magento/Install/Block/Db/Type.php
deleted file mode 100644
index 49155cfe027..00000000000
--- a/app/code/Magento/Install/Block/Db/Type.php
+++ /dev/null
@@ -1,101 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-
-/**
- * Common database config installation block
- *
- * @author      Magento Core Team <core@magentocommerce.com>
- */
-namespace Magento\Install\Block\Db;
-
-class Type extends \Magento\Framework\View\Element\Template
-{
-    /**
-     * Db title
-     *
-     * @var string
-     */
-    protected $_title;
-
-    /**
-     * Install installer config
-     *
-     * @var \Magento\Install\Model\Installer\Config
-     */
-    protected $_installerConfig = null;
-
-    /**
-     * Install installer config
-     *
-     * @var \Magento\Framework\Session\Generic
-     */
-    protected $_session;
-
-    /**
-     * @param \Magento\Framework\View\Element\Template\Context $context
-     * @param \Magento\Install\Model\Installer\Config $installerConfig
-     * @param \Magento\Framework\Session\Generic $session
-     * @param array $data
-     */
-    public function __construct(
-        \Magento\Framework\View\Element\Template\Context $context,
-        \Magento\Install\Model\Installer\Config $installerConfig,
-        \Magento\Framework\Session\Generic $session,
-        array $data = array()
-    ) {
-        parent::__construct($context, $data);
-        $this->_installerConfig = $installerConfig;
-        $this->_session = $session;
-    }
-
-    /**
-     * Return Db title
-     *
-     * @return string
-     */
-    public function getTitle()
-    {
-        return $this->_title;
-    }
-
-    /**
-     * Retrieve configuration form data object
-     *
-     * @return \Magento\Framework\Object
-     */
-    public function getFormData()
-    {
-        $data = $this->getData('form_data');
-        if (is_null($data)) {
-            $data = $this->_session->getConfigData(true);
-            if (empty($data)) {
-                $data = $this->_installerConfig->getFormData();
-            } else {
-                $data = new \Magento\Framework\Object($data);
-            }
-            $this->setFormData($data);
-        }
-        return $data;
-    }
-}
diff --git a/app/code/Magento/Install/Block/Download.php b/app/code/Magento/Install/Block/Download.php
deleted file mode 100644
index 45b259d6740..00000000000
--- a/app/code/Magento/Install/Block/Download.php
+++ /dev/null
@@ -1,97 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-
-/**
- * Download Magento core modules and updates choice (online, offline)
- *
- * @author      Magento Core Team <core@magentocommerce.com>
- */
-namespace Magento\Install\Block;
-
-use Magento\Framework\App\Filesystem\DirectoryList;
-
-class Download extends \Magento\Install\Block\AbstractBlock
-{
-    /**
-     * @var string
-     */
-    protected $_template = 'download.phtml';
-
-    /**
-     * @var \Magento\Framework\Module\Dir\Reader
-     */
-    protected $_moduleReader;
-
-    /**
-     * @param \Magento\Framework\View\Element\Template\Context $context
-     * @param \Magento\Install\Model\Installer $installer
-     * @param \Magento\Install\Model\Wizard $installWizard
-     * @param \Magento\Framework\Session\Generic $session
-     * @param \Magento\Framework\Module\Dir\Reader $moduleReader
-     * @param array $data
-     */
-    public function __construct(
-        \Magento\Framework\View\Element\Template\Context $context,
-        \Magento\Install\Model\Installer $installer,
-        \Magento\Install\Model\Wizard $installWizard,
-        \Magento\Framework\Session\Generic $session,
-        \Magento\Framework\Module\Dir\Reader $moduleReader,
-        array $data = array()
-    ) {
-        parent::__construct($context, $installer, $installWizard, $session, $data);
-        $this->_moduleReader = $moduleReader;
-    }
-
-    /**
-     * Retrieve locale data post url
-     *
-     * @return string
-     */
-    public function getPostUrl()
-    {
-        return $this->getUrl('*/*/downloadPost');
-    }
-
-    /**
-     * @return string
-     */
-    public function getNextUrl()
-    {
-        return $this->_installWizard->getStepByName('download')->getNextUrl();
-    }
-
-    /**
-     * @return bool
-     */
-    public function hasLocalCopy()
-    {
-        $path = $this->_moduleReader->getModuleDir('etc', 'Magento_Adminhtml');
-        $directory = $this->_filesystem->getDirectoryRead(DirectoryList::MODULES);
-
-        if ($path && $directory->isDirectory($directory->getRelativePath($path))) {
-            return true;
-        }
-        return false;
-    }
-}
diff --git a/app/code/Magento/Install/Block/End.php b/app/code/Magento/Install/Block/End.php
deleted file mode 100644
index 75d895086e9..00000000000
--- a/app/code/Magento/Install/Block/End.php
+++ /dev/null
@@ -1,97 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-
-/**
- * Installation ending block
- */
-namespace Magento\Install\Block;
-
-class End extends \Magento\Install\Block\AbstractBlock
-{
-    /**
-     * @var string
-     */
-    protected $_template = 'end.phtml';
-
-    /**
-     * @var \Magento\Install\Model\Survey
-     */
-    protected $_survey;
-
-    /**
-     * Cryptographic key
-     *
-     * @var string
-     */
-    protected $_cryptKey;
-
-    /**
-     * @param \Magento\Framework\View\Element\Template\Context $context
-     * @param \Magento\Install\Model\Installer $installer
-     * @param \Magento\Install\Model\Wizard $installWizard
-     * @param \Magento\Framework\Session\Generic $session
-     * @param \Magento\Install\Model\Survey $survey
-     * @param string $cryptKey
-     * @param array $data
-     */
-    public function __construct(
-        \Magento\Framework\View\Element\Template\Context $context,
-        \Magento\Install\Model\Installer $installer,
-        \Magento\Install\Model\Wizard $installWizard,
-        \Magento\Framework\Session\Generic $session,
-        \Magento\Install\Model\Survey $survey,
-        $cryptKey,
-        array $data = array()
-    ) {
-        $this->_cryptKey = $cryptKey;
-        parent::__construct($context, $installer, $installWizard, $session, $data);
-        $this->_survey = $survey;
-    }
-
-    /**
-     * @return string
-     */
-    public function getEncryptionKey()
-    {
-        $key = $this->getData('encryption_key');
-        if (is_null($key)) {
-            $key = $this->_cryptKey;
-            $this->setData('encryption_key', $key);
-        }
-        return $key;
-    }
-
-    /**
-     * Return url for iframe source
-     *
-     * @return string|null
-     */
-    public function getIframeSourceUrl()
-    {
-        if (!$this->_survey->isSurveyUrlValid() || $this->_installer->getHideIframe()) {
-            return null;
-        }
-        return $this->_survey->getSurveyUrl();
-    }
-}
diff --git a/app/code/Magento/Install/Block/Locale.php b/app/code/Magento/Install/Block/Locale.php
deleted file mode 100644
index 73bd692b079..00000000000
--- a/app/code/Magento/Install/Block/Locale.php
+++ /dev/null
@@ -1,267 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-
-/**
- * Install localization block
- *
- * @author     Magento Core Team <core@magentocommerce.com>
- */
-namespace Magento\Install\Block;
-
-class Locale extends \Magento\Install\Block\AbstractBlock
-{
-    /**
-     * Template file
-     *
-     * @var string
-     */
-    protected $_template = 'locale.phtml';
-
-    /**
-     * Locale code
-     *
-     * @var string
-     */
-    protected $_localeCode;
-
-    /**
-     * @var \Magento\Framework\Locale\CurrencyInterface
-     */
-    protected $_localeCurrency;
-
-    /**
-     * @var \Magento\Framework\Locale\ListsInterface
-     */
-    protected $_localeLists;
-
-    /**
-     * @var \Magento\Framework\Locale\ResolverInterface
-     */
-    protected $_localeResolver;
-
-    /**
-     * @param \Magento\Framework\View\Element\Template\Context $context
-     * @param \Magento\Install\Model\Installer $installer
-     * @param \Magento\Install\Model\Wizard $installWizard
-     * @param \Magento\Framework\Session\Generic $session
-     * @param \Magento\Framework\Locale\CurrencyInterface $localeCurrency
-     * @param \Magento\Framework\Locale\ListsInterface $localeLists
-     * @param \Magento\Framework\Locale\ResolverInterface $localeResolver
-     * @param array $data
-     */
-    public function __construct(
-        \Magento\Framework\View\Element\Template\Context $context,
-        \Magento\Install\Model\Installer $installer,
-        \Magento\Install\Model\Wizard $installWizard,
-        \Magento\Framework\Session\Generic $session,
-        \Magento\Framework\Locale\CurrencyInterface $localeCurrency,
-        \Magento\Framework\Locale\ListsInterface $localeLists,
-        \Magento\Framework\Locale\ResolverInterface $localeResolver,
-        array $data = array()
-    ) {
-        $this->_localeLists = $localeLists;
-        parent::__construct($context, $installer, $installWizard, $session, $data);
-        $this->_localeCurrency = $localeCurrency;
-        $this->_localeResolver = $localeResolver;
-    }
-
-    /**
-     * Set locale code
-     *
-     * @param string $localeCode
-     * @return $this
-     */
-    public function setLocaleCode($localeCode)
-    {
-        $this->_localeCode = $localeCode;
-        return $this;
-    }
-
-    /**
-     * Retrieve locale code
-     *
-     * @return string
-     */
-    public function getLocaleCode()
-    {
-        return $this->_localeCode;
-    }
-
-    /**
-     * Retrieve locale object
-     *
-     * @return \Magento\Framework\LocaleInterface
-     */
-    public function getLocale()
-    {
-        $locale = $this->getData('locale');
-        if (null === $locale) {
-            $locale = $this->_localeResolver->setLocaleCode($this->getLocaleCode())->getLocale();
-            $this->setData('locale', $locale);
-        }
-        return $locale;
-    }
-
-    /**
-     * Retrieve locale data post url
-     *
-     * @return string
-     */
-    public function getPostUrl()
-    {
-        return $this->getCurrentStep()->getNextUrl();
-    }
-
-    /**
-     * Retrieve locale change url
-     *
-     * @return string
-     */
-    public function getChangeUrl()
-    {
-        return $this->getUrl('*/*/localeChange');
-    }
-
-    /**
-     * Retrieve locale dropdown HTML
-     *
-     * @return string
-     */
-    public function getLocaleSelect()
-    {
-        $html = $this->getLayout()->createBlock(
-            'Magento\Framework\View\Element\Html\Select'
-        )->setName(
-            'config[locale]'
-        )->setId(
-            'locale'
-        )->setTitle(
-            __('Locale')
-        )->setClass(
-            'required-entry'
-        )->setValue(
-            $this->getLocale()->__toString()
-        )->setOptions(
-            $this->_localeLists->getTranslatedOptionLocales()
-        )->getHtml();
-        return $html;
-    }
-
-    /**
-     * Retrieve timezone dropdown HTML
-     *
-     * @return string
-     */
-    public function getTimezoneSelect()
-    {
-        $html = $this->getLayout()->createBlock(
-            'Magento\Framework\View\Element\Html\Select'
-        )->setName(
-            'config[timezone]'
-        )->setId(
-            'timezone'
-        )->setTitle(
-            __('Time Zone')
-        )->setClass(
-            'required-entry'
-        )->setValue(
-            $this->getTimezone()
-        )->setOptions(
-            $this->_localeLists->getOptionTimezones()
-        )->getHtml();
-        return $html;
-    }
-
-    /**
-     * Retrieve timezone
-     *
-     * @return string
-     */
-    public function getTimezone()
-    {
-        $timezone = $this->_session
-            ->getTimezone() ? $this
-            ->_session
-            ->getTimezone() : $this
-            ->_localeDate
-            ->getDefaultTimezone();
-        if ($timezone == \Magento\Framework\Stdlib\DateTime\TimezoneInterface::DEFAULT_TIMEZONE) {
-            $timezone = 'America/Los_Angeles';
-        }
-        return $timezone;
-    }
-
-    /**
-     * Retrieve currency dropdown html
-     *
-     * @return string
-     */
-    public function getCurrencySelect()
-    {
-        $html = $this->getLayout()->createBlock(
-            'Magento\Framework\View\Element\Html\Select'
-        )->setName(
-            'config[currency]'
-        )->setId(
-            'currency'
-        )->setTitle(
-            __('Default Currency')
-        )->setClass(
-            'required-entry'
-        )->setValue(
-            $this->getCurrency()
-        )->setOptions(
-            $this->_localeLists->getOptionCurrencies()
-        )->getHtml();
-        return $html;
-    }
-
-    /**
-     * Retrieve currency
-     *
-     * @return string
-     */
-    public function getCurrency()
-    {
-        return $this->_session
-            ->getCurrency() ? $this
-            ->_session
-            ->getCurrency() : $this
-            ->_localeCurrency
-            ->getDefaultCurrency();
-    }
-
-    /**
-     * @return \Magento\Framework\Object
-     */
-    public function getFormData()
-    {
-        $data = $this->getData('form_data');
-        if (null === $data) {
-            $data = new \Magento\Framework\Object();
-            $this->setData('form_data', $data);
-        }
-        return $data;
-    }
-}
diff --git a/app/code/Magento/Install/Block/State.php b/app/code/Magento/Install/Block/State.php
deleted file mode 100644
index bf261cec852..00000000000
--- a/app/code/Magento/Install/Block/State.php
+++ /dev/null
@@ -1,83 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-namespace Magento\Install\Block;
-
-/**
- * Install state block
- */
-class State extends \Magento\Framework\View\Element\Template
-{
-    /**
-     * @var string
-     */
-    protected $_template = 'state.phtml';
-
-    /**
-     * Install Wizard
-     *
-     * @var \Magento\Install\Model\Wizard
-     */
-    protected $_wizard;
-
-    /**
-     * @param \Magento\Framework\View\Element\Template\Context $context
-     * @param \Magento\Install\Model\Wizard $wizard
-     * @param array $data
-     */
-    public function __construct(
-        \Magento\Framework\View\Element\Template\Context $context,
-        \Magento\Install\Model\Wizard $wizard,
-        array $data = array()
-    ) {
-        parent::__construct($context, $data);
-        $this->_isScopePrivate = true;
-        $this->assign('steps', $wizard->getSteps());
-    }
-
-    /**
-     * Get previous downloader steps
-     *
-     * @return array
-     */
-    public function getDownloaderSteps()
-    {
-        if ($this->isDownloaderInstall()) {
-            $steps = array(__('Welcome'), __('Validation'), __('Magento Connect Manager Deployment'));
-            return $steps;
-        } else {
-            return array();
-        }
-    }
-
-    /**
-     * Checks for Magento Connect Manager installation method
-     *
-     * @return bool
-     */
-    public function isDownloaderInstall()
-    {
-        $session = $this->_request->getCookie('magento_downloader_session', false);
-        return $session ? true : false;
-    }
-}
diff --git a/app/code/Magento/Install/Controller/Adminhtml/Survey/Index.php b/app/code/Magento/Install/Controller/Adminhtml/Survey/Index.php
deleted file mode 100644
index 69fb6a58c2b..00000000000
--- a/app/code/Magento/Install/Controller/Adminhtml/Survey/Index.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-/**
- *
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-namespace Magento\Install\Controller\Adminhtml\Survey;
-
-class Index extends \Magento\Install\Controller\Adminhtml\Survey
-{
-    /**
-     * Index Action
-     *
-     * @return void
-     */
-    public function execute()
-    {
-        if ($this->getRequest()->getParam('isAjax', false)) {
-            $this->_objectManager->get('Magento\Install\Model\Survey')->saveSurveyViewed(true);
-        }
-        $this->getResponse()->representJson(\Zend_Json::encode(array('survey_decision_saved' => 1)));
-    }
-}
diff --git a/app/code/Magento/Install/Model/Config.php b/app/code/Magento/Install/Model/Config.php
deleted file mode 100644
index edde8e3bdaf..00000000000
--- a/app/code/Magento/Install/Model/Config.php
+++ /dev/null
@@ -1,134 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-
-/**
- * Install config
- *
- * @author      Magento Core Team <core@magentocommerce.com>
- */
-namespace Magento\Install\Model;
-
-class Config
-{
-    /**
-     * Config data model
-     *
-     * @var  \Magento\Install\Model\Config\Data
-     */
-    protected $_dataStorage;
-
-    /**
-     * Filesystem
-     *
-     * @var \Magento\Framework\Filesystem
-     */
-    protected $filesystem;
-
-    /**
-     * Constructor
-     *
-     * @param Config\Data $dataStorage
-     * @param \Magento\Framework\Filesystem $filesystem
-     */
-    public function __construct(\Magento\Install\Model\Config\Data $dataStorage, \Magento\Framework\Filesystem $filesystem)
-    {
-        $this->_dataStorage = $dataStorage;
-        $this->filesystem = $filesystem;
-    }
-
-    /**
-     * Get array of wizard steps
-     *
-     * Array($index => \Magento\Framework\Object)
-     *
-     * @return array
-     */
-    public function getWizardSteps()
-    {
-        $data = $this->_dataStorage->get();
-        $steps = array();
-        foreach ($data['steps'] as $step) {
-            $stepObject = new \Magento\Framework\Object($step);
-            $steps[] = $stepObject;
-        }
-        return $steps;
-    }
-
-    /**
-     * Retrieve writable path for checking
-     *
-     * Array(
-     *      ['writeable'] => array(
-     *          [$index] => array(
-     *              ['path']
-     *              ['recursive']
-     *          )
-     *      )
-     * )
-     *
-     * @deprecated since 1.7.1.0
-     *
-     * @return array
-     */
-    public function getPathForCheck()
-    {
-        $data = $this->_dataStorage->get();
-        $res = array();
-
-        $items = isset(
-            $data['filesystem_prerequisites']
-        ) && isset(
-            $data['filesystem_prerequisites']['writables']
-        ) ? $data['filesystem_prerequisites']['writables'] : array();
-
-        foreach ($items as $item) {
-            $res['writeable'][] = $item;
-        }
-
-        return $res;
-    }
-
-    /**
-     * Retrieve writable full paths for checking
-     *
-     * @return array
-     */
-    public function getWritableFullPathsForCheck()
-    {
-        $data = $this->_dataStorage->get();
-        $paths = array();
-        $items = isset(
-            $data['filesystem_prerequisites']
-        ) && isset(
-            $data['filesystem_prerequisites']['writables']
-        ) ? $data['filesystem_prerequisites']['writables'] : array();
-        foreach ($items as $nodeKey => $item) {
-            $value = $item;
-            $value['path'] = $this->filesystem->getDirectoryWrite($nodeKey)->getAbsolutePath();
-            $paths[$nodeKey] = $value;
-        }
-
-        return $paths;
-    }
-}
diff --git a/app/code/Magento/Install/Model/Config/Converter.php b/app/code/Magento/Install/Model/Config/Converter.php
deleted file mode 100644
index 952091f4d30..00000000000
--- a/app/code/Magento/Install/Model/Config/Converter.php
+++ /dev/null
@@ -1,79 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license   http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-namespace Magento\Install\Model\Config;
-
-class Converter implements \Magento\Framework\Config\ConverterInterface
-{
-    /**
-     * {@inheritdoc}
-     * @SuppressWarnings(PHPMD.NPathComplexity)
-     * @SuppressWarnings(PHPMD.CyclomaticComplexity)
-     */
-    public function convert($source)
-    {
-        $xpath = new \DOMXPath($source);
-
-        $result = array(
-            'steps' => array(),
-            'filesystem_prerequisites' => array('writables' => array(), 'notWritables' => array())
-        );
-
-        /** @var $step DOMNode */
-        foreach ($xpath->query('/install_wizard/steps/step') as $step) {
-            $stepAttributes = $step->attributes;
-            $id = $stepAttributes->getNamedItem('id')->nodeValue;
-            $result['steps'][$id]['name'] = $id;
-
-            $controller = $stepAttributes->getNamedItem('controller')->nodeValue;
-            $result['steps'][$id]['controller'] = $controller;
-
-            $action = $stepAttributes->getNamedItem('action')->nodeValue;
-            $result['steps'][$id]['action'] = $action;
-
-            /** @var $child DOMNode */
-            foreach ($step->childNodes as $child) {
-                if ($child->nodeName == 'label') {
-                    $result['steps'][$id]['code'] = $child->nodeValue;
-                }
-            }
-        }
-
-        /** @var $step DOMNode */
-        foreach ($xpath->query('/install_wizard/filesystem_prerequisites/directory') as $directory) {
-            $directoryAttributes = $directory->attributes;
-            $alias = $directoryAttributes->getNamedItem('alias')->nodeValue;
-            $existence = $directoryAttributes->getNamedItem('existence')->nodeValue == 'true' ? '1' : '0';
-            $recursive = $directoryAttributes->getNamedItem('recursive')->nodeValue == 'true' ? '1' : '0';
-            if ($directoryAttributes->getNamedItem('writable')->nodeValue == 'true') {
-                $result['filesystem_prerequisites']['writables'][$alias]['existence'] = $existence;
-                $result['filesystem_prerequisites']['writables'][$alias]['recursive'] = $recursive;
-            } else {
-                $result['filesystem_prerequisites']['notwritables'][$alias]['existence'] = $existence;
-                $result['filesystem_prerequisites']['notwritables'][$alias]['recursive'] = $recursive;
-            }
-        }
-
-        return $result;
-    }
-}
diff --git a/app/code/Magento/Install/Model/Config/Reader.php b/app/code/Magento/Install/Model/Config/Reader.php
deleted file mode 100644
index 666d55d2b26..00000000000
--- a/app/code/Magento/Install/Model/Config/Reader.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-namespace Magento\Install\Model\Config;
-
-class Reader extends \Magento\Framework\Config\Reader\Filesystem
-{
-    /**
-     * List of identifier attributes for merging
-     *
-     * @var array
-     */
-    protected $_idAttributes = array(
-        '/install_wizard/steps/step' => 'id',
-        '/install_wizard/filesystem_prerequisites/directory' => 'alias'
-    );
-}
diff --git a/app/code/Magento/Install/Model/Config/SchemaLocator.php b/app/code/Magento/Install/Model/Config/SchemaLocator.php
deleted file mode 100644
index d8070df1a5b..00000000000
--- a/app/code/Magento/Install/Model/Config/SchemaLocator.php
+++ /dev/null
@@ -1,72 +0,0 @@
-<?php
-/**
- * Locator for install_wizard XSD schemas.
- *
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-namespace Magento\Install\Model\Config;
-
-class SchemaLocator implements \Magento\Framework\Config\SchemaLocatorInterface
-{
-    /**
-     * Path to corresponding XSD file with validation rules for merged config
-     *
-     * @var string
-     */
-    protected $_schema = null;
-
-    /**
-     * Path to corresponding XSD file with validation rules for separate config files
-     *
-     * @var string
-     */
-    protected $_perFileSchema = null;
-
-    /**
-     * @param \Magento\Framework\Module\Dir\Reader $moduleReader
-     */
-    public function __construct(\Magento\Framework\Module\Dir\Reader $moduleReader)
-    {
-        $this->_schema = $moduleReader->getModuleDir('etc', 'Magento_Install') . '/install_wizard.xsd';
-        $this->_perFileSchema = $moduleReader->getModuleDir('etc', 'Magento_Install') . '/install_wizard_file.xsd';
-    }
-
-    /**
-     * Get path to merged config schema
-     *
-     * @return string|null
-     */
-    public function getSchema()
-    {
-        return $this->_schema;
-    }
-
-    /**
-     * Get path to per file validation schema
-     *
-     * @return string|null
-     */
-    public function getPerFileSchema()
-    {
-        return $this->_perFileSchema;
-    }
-}
diff --git a/app/code/Magento/Install/Model/Installer.php b/app/code/Magento/Install/Model/Installer.php
deleted file mode 100644
index c65795f30da..00000000000
--- a/app/code/Magento/Install/Model/Installer.php
+++ /dev/null
@@ -1,573 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-namespace Magento\Install\Model;
-
-/**
- * Installer model
- */
-class Installer extends \Magento\Framework\Object
-{
-    /**
-     * Installer data model used to store data between installation steps
-     *
-     * @var \Magento\Framework\Object
-     */
-    protected $_dataModel;
-
-    /**
-     * DB updated model
-     *
-     * @var \Magento\Framework\Module\Updater
-     */
-    protected $_dbUpdater;
-
-    /**
-     * Application chache model
-     *
-     * @var \Magento\Framework\App\CacheInterface
-     */
-    protected $_cache;
-
-    /**
-     * Application config model
-     *
-     * @var \Magento\Framework\App\Config\ReinitableConfigInterface
-     */
-    protected $_config;
-
-    /**
-     * @var \Magento\Framework\App\Cache\StateInterface
-     */
-    protected $_cacheState;
-
-    /**
-     * @var \Magento\Framework\App\Cache\TypeListInterface
-     */
-    protected $_cacheTypeList;
-
-    /**
-     * @var \Magento\Install\Model\Setup
-     */
-    protected $_installSetup;
-
-    /**
-     * Install installer pear
-     *
-     * @var \Magento\Install\Model\Installer\Pear
-     */
-    protected $_installerPear;
-
-    /**
-     * Install installer filesystem
-     *
-     * @var \Magento\Install\Model\Installer\Filesystem
-     */
-    protected $_filesystem;
-
-    /**
-     * Area list
-     *
-     * @var \Magento\Framework\App\AreaList
-     */
-    protected $_areaList;
-
-    /**
-     * Application
-     *
-     * @var \Magento\Framework\App\State
-     */
-    protected $_appState;
-
-    /**
-     * Store Manager
-     *
-     * @var \Magento\Framework\StoreManagerInterface
-     */
-    protected $_storeManager;
-
-    /**
-     * User user
-     *
-     * @var \Magento\User\Model\UserFactory
-     */
-    protected $_userModelFactory;
-
-    /**
-     * Installer DB model
-     *
-     * @var \Magento\Install\Model\Installer\Db
-     */
-    protected $_installerDb;
-
-    /**
-     * Installer DB model
-     *
-     * @var \Magento\Install\Model\Installer\Config
-     */
-    protected $_installerConfig;
-
-    /**
-     * Install session
-     *
-     * @var \Magento\Framework\Session\Generic
-     */
-    protected $_session;
-
-    /**
-     * @var \Magento\Framework\App\Resource
-     */
-    protected $_resource;
-
-    /**
-     * @var \Magento\Framework\Encryption\EncryptorInterface
-     */
-    protected $_encryptor;
-
-    /**
-     * @var \Magento\Framework\Math\Random
-     */
-    protected $mathRandom;
-
-    /**
-     * Configuration arguments
-     *
-     * @var \Magento\Framework\App\Arguments
-     */
-    protected $_arguments;
-
-    /**
-     * @var \Magento\Framework\Module\ModuleListInterface
-     */
-    protected $moduleList;
-
-    /**
-     * @var \Magento\Framework\Module\DependencyManagerInterface
-     */
-    protected $dependencyManager;
-
-    /**
-     * @var \Magento\Framework\Message\ManagerInterface
-     */
-    protected $messageManager;
-
-    /**
-     * @var \Magento\Framework\Stdlib\DateTime\TimezoneInterface
-     */
-    protected $_localeDate;
-
-    /**
-     * @var \Magento\Framework\Locale\ResolverInterface
-     */
-    protected $_localeResolver;
-
-    /**
-     * @param \Magento\Framework\App\Config\ReinitableConfigInterface $config
-     * @param \Magento\Framework\Module\Updater $dbUpdater
-     * @param \Magento\Framework\App\CacheInterface $cache
-     * @param \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList
-     * @param \Magento\Framework\App\Cache\StateInterface $cacheState
-     * @param \Magento\Install\Model\Setup $installSetup
-     * @param \Magento\Framework\App\Arguments $arguments
-     * @param \Magento\Framework\App\AreaList $areaList
-     * @param \Magento\Framework\App\State $appState
-     * @param \Magento\Framework\StoreManagerInterface $storeManager
-     * @param \Magento\User\Model\UserFactory $userModelFactory
-     * @param Installer\Filesystem $filesystem
-     * @param Installer\Pear $installerPear
-     * @param Installer\Db $installerDb
-     * @param Installer\Config $installerConfig
-     * @param \Magento\Framework\Session\Generic $session
-     * @param \Magento\Framework\Encryption\EncryptorInterface $encryptor
-     * @param \Magento\Framework\Math\Random $mathRandom
-     * @param \Magento\Framework\App\Resource $resource
-     * @param \Magento\Framework\Module\ModuleListInterface $moduleList
-     * @param \Magento\Framework\Module\DependencyManagerInterface $dependencyManager
-     * @param \Magento\Framework\Message\ManagerInterface $messageManager
-     * @param \Magento\Framework\Stdlib\DateTime\TimezoneInterface $localeDate
-     * @param \Magento\Framework\Locale\ResolverInterface $localeResolver
-     * @param array $data
-     */
-    public function __construct(
-        \Magento\Framework\App\Config\ReinitableConfigInterface $config,
-        \Magento\Framework\Module\Updater $dbUpdater,
-        \Magento\Framework\App\CacheInterface $cache,
-        \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
-        \Magento\Framework\App\Cache\StateInterface $cacheState,
-        \Magento\Install\Model\Setup $installSetup,
-        \Magento\Framework\App\Arguments $arguments,
-        \Magento\Framework\App\AreaList $areaList,
-        \Magento\Framework\App\State $appState,
-        \Magento\Framework\StoreManagerInterface $storeManager,
-        \Magento\User\Model\UserFactory $userModelFactory,
-        \Magento\Install\Model\Installer\Filesystem $filesystem,
-        \Magento\Install\Model\Installer\Pear $installerPear,
-        \Magento\Install\Model\Installer\Db $installerDb,
-        \Magento\Install\Model\Installer\Config $installerConfig,
-        \Magento\Framework\Session\Generic $session,
-        \Magento\Framework\Encryption\EncryptorInterface $encryptor,
-        \Magento\Framework\Math\Random $mathRandom,
-        \Magento\Framework\App\Resource $resource,
-        \Magento\Framework\Module\ModuleListInterface $moduleList,
-        \Magento\Framework\Module\DependencyManagerInterface $dependencyManager,
-        \Magento\Framework\Message\ManagerInterface $messageManager,
-        \Magento\Framework\Stdlib\DateTime\TimezoneInterface $localeDate,
-        \Magento\Framework\Locale\ResolverInterface $localeResolver,
-        array $data = array()
-    ) {
-        $this->_dbUpdater = $dbUpdater;
-        $this->_config = $config;
-        $this->_cache = $cache;
-        $this->_cacheState = $cacheState;
-        $this->_cacheTypeList = $cacheTypeList;
-        $this->_installSetup = $installSetup;
-        $this->_encryptor = $encryptor;
-        $this->mathRandom = $mathRandom;
-        $this->_arguments = $arguments;
-        $this->_areaList = $areaList;
-        $this->_appState = $appState;
-        $this->_storeManager = $storeManager;
-        $this->_userModelFactory = $userModelFactory;
-        $this->_filesystem = $filesystem;
-        $this->_installerPear = $installerPear;
-        $this->_installerDb = $installerDb;
-        $this->_installerConfig = $installerConfig;
-        $this->_session = $session;
-        $this->_resource = $resource;
-        $this->moduleList = $moduleList;
-        $this->dependencyManager = $dependencyManager;
-        $this->messageManager = $messageManager;
-        $this->_localeDate = $localeDate;
-        $this->_localeResolver = $localeResolver;
-        parent::__construct($data);
-    }
-
-    /**
-     * Get data model
-     *
-     * @return \Magento\Framework\Object
-     */
-    public function getDataModel()
-    {
-        if (null === $this->_dataModel) {
-            $this->setDataModel($this->_session);
-        }
-        return $this->_dataModel;
-    }
-
-    /**
-     * Set data model to store data between installation steps
-     *
-     * @param \Magento\Framework\Object $model
-     * @return $this
-     */
-    public function setDataModel($model)
-    {
-        $this->_dataModel = $model;
-        return $this;
-    }
-
-    /**
-     * Check packages (pear) downloads
-     *
-     * @return boolean
-     */
-    public function checkDownloads()
-    {
-        try {
-            $this->_installerPear->checkDownloads();
-            $result = true;
-        } catch (\Exception $e) {
-            $result = false;
-        }
-        $this->setDownloadCheckStatus($result);
-        return $result;
-    }
-
-    /**
-     * Check server settings
-     *
-     * @return bool
-     */
-    public function checkServer()
-    {
-        try {
-            $this->checkExtensionsLoaded();
-            $this->_filesystem->install();
-            $result = true;
-        } catch (\Exception $e) {
-            $result = false;
-        }
-        $this->setData('server_check_status', $result);
-        return $result;
-    }
-
-    /**
-     * Retrieve server checking result status
-     *
-     * @return bool
-     */
-    public function getServerCheckStatus()
-    {
-        $status = $this->getData('server_check_status');
-        if (is_null($status)) {
-            $status = $this->checkServer();
-        }
-        return $status;
-    }
-
-    /**
-     * Check all necessary extensions are loaded and available
-     *
-     * @return void
-     * @throws \Exception
-     */
-    protected function checkExtensionsLoaded()
-    {
-        try {
-            foreach ($this->moduleList->getModules() as $moduleData) {
-                $this->dependencyManager->checkModuleDependencies($moduleData);
-            }
-        } catch (\Exception $exception) {
-            $this->messageManager->addError($exception->getMessage());
-            throw new \Exception($exception->getMessage());
-        }
-    }
-
-    /**
-     * Installation config data
-     *
-     * @param   array $data
-     * @return  $this
-     */
-    public function installConfig($data)
-    {
-        $data['db_active'] = true;
-
-        $data = $this->_installerDb->checkDbConnectionData($data);
-
-        $data = $this->_installerConfig->install($data);
-        $this->getDataModel()->setConfigData($data);
-
-        $this->_arguments->reload();
-        $this->_resource->setTablePrefix($data['db_prefix']);
-
-        $this->_config->reinit();
-
-        return $this;
-    }
-
-    /**
-     * Database installation
-     *
-     * @return $this
-     */
-    public function installDb()
-    {
-        $this->_dbUpdater->updateScheme();
-        $data = $this->getDataModel()->getConfigData();
-
-        /**
-         * Saving host information into DB
-         */
-        if (!empty($data['use_rewrites'])) {
-            $this->_installSetup->setConfigData(\Magento\Store\Model\Store::XML_PATH_USE_REWRITES, 1);
-        }
-
-        if (!empty($data['enable_charts'])) {
-            $this->_installSetup->setConfigData(\Magento\Backend\Block\Dashboard::XML_PATH_ENABLE_CHARTS, 1);
-        } else {
-            $this->_installSetup->setConfigData(\Magento\Backend\Block\Dashboard::XML_PATH_ENABLE_CHARTS, 0);
-        }
-
-        if (!empty($data['admin_no_form_key'])) {
-            $this->_installSetup->setConfigData(\Magento\Backend\Model\Url::XML_PATH_USE_SECURE_KEY, 0);
-        }
-
-        $unsecureBaseUrl = $this->_storeManager->getStore()->getBaseUrl('web');
-        if (!empty($data['unsecure_base_url'])) {
-            $unsecureBaseUrl = $data['unsecure_base_url'];
-            $this->_installSetup->setConfigData(
-                \Magento\Store\Model\Store::XML_PATH_UNSECURE_BASE_URL,
-                $unsecureBaseUrl
-            );
-        }
-
-        if (!empty($data['use_secure'])) {
-            $this->_installSetup->setConfigData(\Magento\Store\Model\Store::XML_PATH_SECURE_IN_FRONTEND, 1);
-            $this->_installSetup->setConfigData(
-                \Magento\Store\Model\Store::XML_PATH_SECURE_BASE_URL,
-                $data['secure_base_url']
-            );
-            if (!empty($data['use_secure_admin'])) {
-                $this->_installSetup->setConfigData(\Magento\Store\Model\Store::XML_PATH_SECURE_IN_ADMINHTML, 1);
-            }
-        } elseif (!empty($data['unsecure_base_url'])) {
-            $this->_installSetup->setConfigData(\Magento\Store\Model\Store::XML_PATH_SECURE_BASE_URL, $unsecureBaseUrl);
-        }
-
-        /**
-         * Saving locale information into DB
-         */
-        $locale = $this->getDataModel()->getLocaleData();
-        if (!empty($locale['locale'])) {
-            $this->_installSetup->setConfigData($this->_localeResolver->getDefaultLocalePath(), $locale['locale']);
-        }
-        if (!empty($locale['timezone'])) {
-            $this->_installSetup->setConfigData($this->_localeDate->getDefaultTimezonePath(), $locale['timezone']);
-        }
-        if (!empty($locale['currency'])) {
-            $this->_installSetup->setConfigData(
-                \Magento\Directory\Model\Currency::XML_PATH_CURRENCY_BASE,
-                $locale['currency']
-            );
-            $this->_installSetup->setConfigData(
-                \Magento\Directory\Model\Currency::XML_PATH_CURRENCY_DEFAULT,
-                $locale['currency']
-            );
-            $this->_installSetup->setConfigData(
-                \Magento\Directory\Model\Currency::XML_PATH_CURRENCY_ALLOW,
-                $locale['currency']
-            );
-        }
-
-        if (!empty($data['order_increment_prefix'])) {
-            $this->_setOrderIncrementPrefix($this->_installSetup, $data['order_increment_prefix']);
-        }
-
-        return $this;
-    }
-
-    /**
-     * Set order number prefix
-     *
-     * @param \Magento\Framework\Module\Setup $setupModel
-     * @param string $orderIncrementPrefix
-     * @return void
-     */
-    protected function _setOrderIncrementPrefix(\Magento\Framework\Module\Setup $setupModel, $orderIncrementPrefix)
-    {
-        $select = $setupModel->getConnection()->select()->from(
-            $setupModel->getTable('eav_entity_type'),
-            'entity_type_id'
-        )->where(
-            'entity_type_code=?',
-            'order'
-        );
-        $data = array(
-            'entity_type_id' => $setupModel->getConnection()->fetchOne($select),
-            'store_id' => '1',
-            'increment_prefix' => $orderIncrementPrefix
-        );
-        $setupModel->getConnection()->insert($setupModel->getTable('eav_entity_store'), $data);
-    }
-
-    /**
-     * Create an admin user
-     *
-     * @param array $data
-     * @return void
-     */
-    public function createAdministrator($data)
-    {
-        // \Magento\User\Model\User belongs to adminhtml area
-        $this->_areaList
-            ->getArea(\Magento\Backend\App\Area\FrontNameResolver::AREA_CODE)
-            ->load(\Magento\Framework\App\AreaInterface::PART_CONFIG);
-
-        /** @var $user \Magento\User\Model\User */
-        $user = $this->_userModelFactory->create();
-        $user->loadByUsername($data['username']);
-        // setForceNewPassword(true) - run-time flag to force saving of the entered password
-        $user->addData($data)->setForceNewPassword(true)->setRoleId(1)->save();
-        $this->_refreshConfig();
-    }
-
-    /**
-     * Install encryption key into the application, generate and return a random one, if no value is specified
-     *
-     * @param string $key
-     * @return $this
-     */
-    public function installEncryptionKey($key)
-    {
-        $this->_encryptor->validateKey($key);
-        $this->_installerConfig->replaceTmpEncryptKey($key);
-        $this->_refreshConfig();
-        return $this;
-    }
-
-    /**
-     * Return a validated encryption key, generating a random one, if no value was initially provided
-     *
-     * @param string|null $key
-     * @return string
-     */
-    public function getValidEncryptionKey($key = null)
-    {
-        if (!$key) {
-            $key = md5($this->mathRandom->getRandomString(10));
-        }
-        $this->_encryptor->validateKey($key);
-        return $key;
-    }
-
-    /**
-     * @return $this
-     */
-    public function finish()
-    {
-        $this->_setAppInstalled();
-        $this->_refreshConfig();
-
-        /* Enable all cache types */
-        foreach (array_keys($this->_cacheTypeList->getTypes()) as $cacheTypeCode) {
-            $this->_cacheState->setEnabled($cacheTypeCode, true);
-        }
-        $this->_cacheState->persist();
-        return $this;
-    }
-
-    /**
-     * Store install date and set application into installed state
-     *
-     * @return void
-     */
-    protected function _setAppInstalled()
-    {
-        $dateTime = date('r');
-        $this->_installerConfig->replaceTmpInstallDate($dateTime);
-        $this->_appState->setInstallDate($dateTime);
-    }
-
-    /**
-     * Ensure changes in the configuration, if any, take effect
-     *
-     * @return void
-     */
-    protected function _refreshConfig()
-    {
-        $this->_cache->clean();
-        $this->_config->reinit();
-    }
-}
diff --git a/app/code/Magento/Install/Model/Installer/Config.php b/app/code/Magento/Install/Model/Installer/Config.php
deleted file mode 100644
index 5176dd7b6f6..00000000000
--- a/app/code/Magento/Install/Model/Installer/Config.php
+++ /dev/null
@@ -1,271 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-namespace Magento\Install\Model\Installer;
-
-use Magento\Framework\Filesystem as AppFilesystem;
-use Magento\Framework\App\Filesystem\DirectoryList;
-
-/**
- * Config installer
- */
-class Config
-{
-    const TMP_INSTALL_DATE_VALUE = 'd-d-d-d-d';
-
-    const TMP_ENCRYPT_KEY_VALUE = 'k-k-k-k-k';
-
-    /**
-     * Path to local configuration file
-     *
-     * @var string
-     */
-    protected $_localConfigFile = 'local.xml';
-
-    /**
-     * @var \Magento\Framework\App\RequestInterface
-     */
-    protected $_request;
-
-    /**
-     * @var AppFilesystem
-     */
-    protected $_filesystem;
-
-    /**
-     * @var \Magento\Framework\Filesystem\Directory\ReadInterface
-     */
-    protected $_pubDirectory;
-
-    /**
-     * @var \Magento\Framework\Filesystem\Directory\Write
-     */
-    protected $_configDirectory;
-
-    /**
-     * Store Manager
-     *
-     * @var \Magento\Framework\StoreManagerInterface
-     */
-    protected $_storeManager;
-
-    /**
-     * @var \Magento\Framework\Message\ManagerInterface
-     */
-    protected $messageManager;
-
-    /**
-     * @param \Magento\Framework\App\RequestInterface $request
-     * @param AppFilesystem $filesystem
-     * @param \Magento\Framework\StoreManagerInterface $storeManager
-     * @param \Magento\Framework\Message\ManagerInterface $messageManager
-     */
-    public function __construct(
-        \Magento\Framework\App\RequestInterface $request,
-        AppFilesystem $filesystem,
-        \Magento\Framework\StoreManagerInterface $storeManager,
-        \Magento\Framework\Message\ManagerInterface $messageManager
-    ) {
-        $this->_request = $request;
-        $this->_storeManager = $storeManager;
-        $this->_filesystem = $filesystem;
-        $this->_pubDirectory = $filesystem->getDirectoryRead(DirectoryList::PUB);
-        $this->_configDirectory = $filesystem->getDirectoryWrite(DirectoryList::CONFIG);
-        $this->messageManager = $messageManager;
-    }
-
-    /**
-     * Generate installation data and record them into local.xml using local.xml.template
-     *
-     * @param array $config
-     * @return array
-     */
-    public function install($config)
-    {
-        $defaults = array(
-            'root_dir' => $this->_filesystem->getDirectoryRead(DirectoryList::ROOT)->getAbsolutePath(),
-            'app_dir' => $this->_filesystem->getDirectoryRead(DirectoryList::APP)->getAbsolutePath(),
-            'var_dir' => $this->_filesystem->getDirectoryRead(DirectoryList::VAR_DIR)->getAbsolutePath(),
-            'base_url' => $this->_request->getDistroBaseUrl()
-        );
-        foreach ($defaults as $index => $value) {
-            if (!isset($config[$index])) {
-                $config[$index] = $value;
-            }
-        }
-
-        if (isset($config['unsecure_base_url'])) {
-            $config['unsecure_base_url'] .= substr($config['unsecure_base_url'], -1) != '/' ? '/' : '';
-            if (strpos($config['unsecure_base_url'], 'http') !== 0) {
-                $config['unsecure_base_url'] = 'http://' . $config['unsecure_base_url'];
-            }
-            if (empty($config['skip_base_url_validation'])) {
-                $this->_checkUrl($config['unsecure_base_url']);
-            }
-        }
-        if (isset($config['secure_base_url'])) {
-            $config['secure_base_url'] .= substr($config['secure_base_url'], -1) != '/' ? '/' : '';
-            if (strpos($config['secure_base_url'], 'http') !== 0) {
-                $config['secure_base_url'] = 'https://' . $config['secure_base_url'];
-            }
-
-            if (!empty($config['use_secure']) && empty($config['skip_url_validation'])) {
-                $this->_checkUrl($config['secure_base_url']);
-            }
-        }
-
-        $config['date'] = self::TMP_INSTALL_DATE_VALUE;
-        $config['key'] = self::TMP_ENCRYPT_KEY_VALUE;
-        $config['var_dir'] = $config['root_dir'] . '/var';
-
-        $config['use_script_name'] = isset($config['use_script_name']) ? 'true' : 'false';
-
-        $contents = $this->_configDirectory->readFile('local.xml.template');
-        foreach ($config as $index => $value) {
-            $contents = str_replace('{{' . $index . '}}', '<![CDATA[' . $value . ']]>', $contents);
-        }
-
-        $this->_configDirectory->writeFile($this->_localConfigFile, $contents);
-        $this->_configDirectory->changePermissions($this->_localConfigFile, 0777);
-
-        return $config;
-    }
-
-    /**
-     * @return \Magento\Framework\Object
-     */
-    public function getFormData()
-    {
-        $uri = \Zend_Uri::factory($this->_storeManager->getStore()->getBaseUrl('web'));
-
-        $baseUrl = $uri->getUri();
-        if ($uri->getScheme() !== 'https') {
-            $uri->setPort(null);
-            $baseSecureUrl = str_replace('http://', 'https://', $uri->getUri());
-        } else {
-            $baseSecureUrl = $uri->getUri();
-        }
-
-        $data = new \Magento\Framework\Object();
-        $data->setDbHost(
-            'localhost'
-        )->setDbName(
-            'magento'
-        )->setDbUser(
-            ''
-        )->setDbModel(
-            'mysql4'
-        )->setDbPass(
-            ''
-        )->setSecureBaseUrl(
-            $baseSecureUrl
-        )->setUnsecureBaseUrl(
-            $baseUrl
-        )->setBackendFrontname(
-            'backend'
-        )->setEnableCharts(
-            '1'
-        );
-        return $data;
-    }
-
-    /**
-     * Check validity of a base URL
-     *
-     * @param string $baseUrl
-     * @return void
-     * @throws \Magento\Framework\Model\Exception
-     * @throws \Exception
-     */
-    protected function _checkUrl($baseUrl)
-    {
-        try {
-            $staticFile = $this->_findFirstFileRelativePath('', '/.+\.(html?|js|css|gif|jpe?g|png)$/');
-            $staticUrl = $baseUrl . $this->_filesystem->getUri(DirectoryList::PUB) . '/' . $staticFile;
-            $client = new \Magento\Framework\HTTP\ZendClient($staticUrl);
-            $response = $client->request('GET');
-        } catch (\Exception $e) {
-            $this->messageManager->addError(__('The URL "%1" is not accessible.', $baseUrl));
-            throw $e;
-        }
-        if ($response->getStatus() != 200) {
-            $this->messageManager->addError(__('The URL "%1" is invalid.', $baseUrl));
-            throw new \Magento\Framework\Model\Exception(__('Response from the server is invalid.'));
-        }
-    }
-
-    /**
-     * Find a relative path to a first file located in a directory or its descendants
-     *
-     * @param string $dir Directory to search for a file within
-     * @param string $pattern PCRE pattern a file name has to match
-     * @return string|null
-     */
-    protected function _findFirstFileRelativePath($dir, $pattern = '/.*/')
-    {
-        $childDirs = array();
-        foreach ($this->_pubDirectory->read($dir) as $itemPath) {
-            if ($this->_pubDirectory->isFile($itemPath)) {
-                if (preg_match($pattern, $itemPath)) {
-                    return $itemPath;
-                }
-            } else {
-                $childDirs[$itemPath] = $itemPath;
-            }
-        }
-        foreach ($childDirs as $dirName => $dirPath) {
-            $filePath = $this->_findFirstFileRelativePath($dirPath, $pattern);
-            if ($filePath) {
-                return $filePath;
-            }
-        }
-        return null;
-    }
-
-    /**
-     * @param string $date
-     * @return $this
-     */
-    public function replaceTmpInstallDate($date = 'now')
-    {
-        $stamp = strtotime((string)$date);
-        $localXml = $this->_configDirectory->readFile($this->_localConfigFile);
-        $localXml = str_replace(self::TMP_INSTALL_DATE_VALUE, date('r', $stamp), $localXml);
-        $this->_configDirectory->writeFile($this->_localConfigFile, $localXml);
-
-        return $this;
-    }
-
-    /**
-     * @param string $key
-     * @return $this
-     */
-    public function replaceTmpEncryptKey($key)
-    {
-        $localXml = $this->_configDirectory->readFile($this->_localConfigFile);
-        $localXml = str_replace(self::TMP_ENCRYPT_KEY_VALUE, $key, $localXml);
-        $this->_configDirectory->writeFile($this->_localConfigFile, $localXml);
-
-        return $this;
-    }
-}
diff --git a/app/code/Magento/Install/Model/Installer/Console.php b/app/code/Magento/Install/Model/Installer/Console.php
deleted file mode 100644
index f2f0fdd6ae2..00000000000
--- a/app/code/Magento/Install/Model/Installer/Console.php
+++ /dev/null
@@ -1,480 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-
-/**
- * Magento application console installer
- */
-namespace Magento\Install\Model\Installer;
-
-class Console
-{
-    /**
-     * Available installation options
-     *
-     * @var array
-     */
-    protected $installParameters = [];
-
-    /**
-     * Required parameters with descriptions
-     *
-     * @var array
-     */
-    protected $requiredParameters = [
-        'license_agreement_accepted' => 'Accept licence. See LICENSE*.txt. Flag value.',
-        'locale' => 'Locale to use. Run with --show_locales for full list',
-        'timezone' => 'Time zone to use. Run with --show_timezones for full list',
-        'default_currency' => 'Default currency. Run with --show_currencies for full list',
-        'db_host' => 'IP or name of your DB host',
-        'db_name' => 'Database name',
-        'db_user' => 'Database user name',
-        'url' => 'Instance URL. For example, "http://myinstance.com"',
-        'use_rewrites' => 'Use web server rewrites. Flag value',
-        'use_secure' => 'Use https(ssl) protocol. Flag value',
-        'secure_base_url' => 'Full secure URL if use_secure enabled. For example "https://myinstance.com"',
-        'use_secure_admin' => 'Use secure protocol for backend. Flag value',
-        'admin_lastname' => 'Admin user last name',
-        'admin_firstname' => 'Admin user first name',
-        'admin_email' => 'Admin email',
-        'admin_username' => 'Admin login',
-        'admin_password' => 'Admin password'
-    ];
-
-    /**
-     * Optional parameters with descriptions
-     *
-     * @var array
-     */
-    protected $optionalParameters = [
-        'db_model' => 'DB driver. "mysql4" is default and the only supported now',
-        'db_pass' => 'DB password. Empty by default',
-        'db_prefix' => 'Use prefix for tables of this installation. Empty by default',
-        'skip_url_validation' => 'Skip URL validation on installation. Flag value. Validate by default',
-        'admin_no_form_key' => 'Disable the form key protection on the back-end. Flag value. Enabled by default',
-        'encryption_key' => 'Key to encrypt sensitive data. Auto-generated if empty',
-        'session_save' => 'Where session data will be stored. "files"(default) or "db"',
-        'backend_frontname' => 'Backend URL path. "backend" by default',
-        'enable_charts' => 'Enable charts on backend dashboard. Flag value. Enabled by default',
-        'order_increment_prefix' => 'Order number prefix. Empty by default.',
-        'cleanup_database' => 'Clean up database before installation. Flag value. Disabled by default'
-    ];
-
-    /**
-     * Installer data model to store data between installations steps
-     *
-     * @var \Magento\Install\Model\Installer\Data|\Magento\Framework\Session\Generic
-     */
-    protected $_dataModel;
-
-    /**
-     * Installer model
-     *
-     * @var \Magento\Install\Model\Installer
-     */
-    protected $installer;
-
-    /**
-     * DB updater
-     *
-     * @var \Magento\Framework\Module\Updater
-     */
-    protected $_dbUpdater;
-
-    /**
-     * Install installer data
-     *
-     * @var \Magento\Install\Model\Installer\Data
-     */
-    protected $_installerData = null;
-
-    /**
-     * Locale Lists
-     *
-     * @var \Magento\Framework\Locale\ListsInterface
-     */
-    protected $_localeLists;
-
-    /**
-     * Magento Object Manager
-     *
-     * @var \Magento\Framework\Message\ManagerInterface
-     */
-    protected $messageManager;
-
-    /**
-     * @var \Magento\Install\Model\Installer\Db\Mysql4
-     */
-    protected $db;
-
-    /**
-     * @param \Magento\Install\Model\Installer $installer
-     * @param \Magento\Framework\Module\Updater $dbUpdater
-     * @param \Magento\Install\Model\Installer\Data $installerData
-     * @param \Magento\Framework\Locale\ListsInterface $localeLists
-     * @param \Magento\Install\Model\Installer\Db\Mysql4 $db
-     * @param \Magento\Framework\Message\ManagerInterface $messageManager
-     */
-    public function __construct(
-        \Magento\Install\Model\Installer $installer,
-        \Magento\Framework\Module\Updater $dbUpdater,
-        \Magento\Install\Model\Installer\Data $installerData,
-        \Magento\Framework\Locale\ListsInterface $localeLists,
-        Db\Mysql4 $db,
-        \Magento\Framework\Message\ManagerInterface $messageManager
-    ) {
-        $this->installer = $installer;
-        $this->_dbUpdater = $dbUpdater;
-        $this->_installerData = $installerData;
-        $this->installer->setDataModel($this->_installerData);
-        $this->_localeLists = $localeLists;
-        $this->installParameters = array_keys($this->requiredParameters + $this->optionalParameters);
-        $this->db = $db;
-        $this->messageManager = $messageManager;
-    }
-
-    /**
-     * Retrieve validated installation options
-     *
-     * @param array $options
-     * @return array|bool
-     */
-    protected function _getInstallOptions(array $options)
-    {
-        /**
-         * Check required options
-         */
-        foreach (array_keys($this->requiredParameters) as $optionName) {
-            if (!isset($options[$optionName])) {
-                $this->addError("ERROR: installation parameter '{$optionName}' is required.");
-            }
-        }
-
-        if ($this->hasErrors()) {
-            return false;
-        }
-
-        /**
-         * Validate license agreement acceptance
-         */
-        if (!$this->_getFlagValue($options['license_agreement_accepted'])) {
-            $this->addError(
-                'ERROR: You have to accept Magento license agreement terms and conditions to continue installation.'
-            );
-            return false;
-        }
-
-        $result = [];
-        foreach ($this->installParameters as $optionName) {
-            $result[$optionName] = isset($options[$optionName]) ? $options[$optionName] : '';
-        }
-
-        return $result;
-    }
-
-    /**
-     * Add error
-     *
-     * @param string $error
-     * @return $this
-     */
-    public function addError($error)
-    {
-        $this->_installerData->addError($error);
-        return $this;
-    }
-
-    /**
-     * Check if there were any errors
-     *
-     * @return boolean
-     */
-    public function hasErrors()
-    {
-        return count($this->_installerData->getErrors()) > 0;
-    }
-
-    /**
-     * Get all errors
-     *
-     * @return array
-     */
-    public function getErrors()
-    {
-        return $this->_installerData->getErrors();
-    }
-
-    /**
-     * Return TRUE for 'yes', 1, 'true' (case insensitive) or FALSE otherwise
-     *
-     * @param string $value
-     * @return boolean
-     */
-    protected function _getFlagValue($value)
-    {
-        $res = 1 == $value || preg_match('/^(yes|y|true)$/i', $value);
-        return $res;
-    }
-
-    /**
-     * Install Magento
-     *
-     * @param array $options
-     * @return string|false
-     */
-    public function install(array $options)
-    {
-        try {
-            $options = $this->_getInstallOptions($options);
-            if (!$options) {
-                return false;
-            }
-
-            /**
-             * Skip URL validation, if set
-             */
-            $this->_installerData->setSkipUrlValidation($options['skip_url_validation']);
-            $this->_installerData->setSkipBaseUrlValidation($options['skip_url_validation']);
-
-            /**
-             * Locale settings
-             */
-            $this->_installerData->setLocaleData(
-                [
-                    'locale' => $options['locale'],
-                    'timezone' => $options['timezone'],
-                    'currency' => $options['default_currency']
-                ]
-            );
-
-            /**
-             * Database and web config
-             */
-            $this->_installerData->setConfigData(
-                [
-                    'db_model' => $options['db_model'],
-                    'db_host' => $options['db_host'],
-                    'db_name' => $options['db_name'],
-                    'db_user' => $options['db_user'],
-                    'db_pass' => $options['db_pass'],
-                    'db_prefix' => $options['db_prefix'],
-                    'use_rewrites' => $this->_getFlagValue($options['use_rewrites']),
-                    'use_secure' => $this->_getFlagValue($options['use_secure']),
-                    'unsecure_base_url' => $options['url'],
-                    'secure_base_url' => $options['secure_base_url'],
-                    'use_secure_admin' => $this->_getFlagValue($options['use_secure_admin']),
-                    'session_save' => $this->_checkSessionSave($options['session_save']),
-                    'backend_frontname' => $this->_checkBackendFrontname($options['backend_frontname']),
-                    'admin_no_form_key' => $this->_getFlagValue($options['admin_no_form_key']),
-                    'skip_url_validation' => $this->_getFlagValue($options['skip_url_validation']),
-                    'enable_charts' => $this->_getFlagValue($options['enable_charts']),
-                    'order_increment_prefix' => $options['order_increment_prefix']
-                ]
-            );
-
-            /**
-             * Primary admin user
-             */
-            $this->_installerData->setAdminData(
-                [
-                    'firstname' => $options['admin_firstname'],
-                    'lastname' => $options['admin_lastname'],
-                    'email' => $options['admin_email'],
-                    'username' => $options['admin_username'],
-                    'password' => $options['admin_password']
-                ]
-            );
-
-            $this->checkServer();
-            if ($this->hasErrors()) {
-                return false;
-            }
-
-            /**
-             * Install configuration
-             */
-            $this->installer->installConfig($this->_installerData->getConfigData());
-
-            if (!empty($options['cleanup_database'])) {
-                $this->db->cleanUpDatabase();
-            }
-
-            if ($this->hasErrors()) {
-                return false;
-            }
-
-            /**
-             * Install database
-             */
-            $this->installer->installDb();
-
-            if ($this->hasErrors()) {
-                return false;
-            }
-
-            // apply data updates
-            $this->_dbUpdater->updateData();
-
-            /**
-             * Create primary administrator user & install encryption key
-             */
-            $encryptionKey = !empty($options['encryption_key']) ? $options['encryption_key'] : null;
-            $encryptionKey = $this->installer->getValidEncryptionKey($encryptionKey);
-            $this->installer->createAdministrator($this->_installerData->getAdminData());
-            $this->installer->installEncryptionKey($encryptionKey);
-
-            /**
-             * Installation finish
-             */
-            $this->installer->finish();
-
-            if ($this->hasErrors()) {
-                return false;
-            }
-
-            return $encryptionKey;
-        } catch (\Exception $e) {
-            if ($e instanceof \Magento\Framework\Model\Exception) {
-                $errorMessages = $e->getMessages(\Magento\Framework\Message\MessageInterface::TYPE_ERROR);
-                if (!empty($errorMessages)) {
-                    foreach ($errorMessages as $errorMessage) {
-                        $this->addError($errorMessage);
-                    }
-                } else {
-                    $this->addError($e->getMessage());
-                }
-
-            } else {
-                $this->addError('ERROR: ' . $e->getMessage() . $e->getTraceAsString());
-            }
-            return false;
-        }
-    }
-
-    /**
-     * Retrieve available locale codes
-     *
-     * @return array
-     */
-    public function getAvailableLocales()
-    {
-        return $this->_localeLists->getOptionLocales();
-    }
-
-    /**
-     * Retrieve available currency codes
-     *
-     * @return array
-     */
-    public function getAvailableCurrencies()
-    {
-        return $this->_localeLists->getOptionCurrencies();
-    }
-
-    /**
-     * Retrieve available timezone codes
-     *
-     * @return array
-     */
-    public function getAvailableTimezones()
-    {
-        return $this->_localeLists->getOptionTimezones();
-    }
-
-    /**
-     * Retrieve required installation params
-     *
-     * @return array
-     */
-    public function getRequiredParams()
-    {
-
-        return $this->requiredParameters;
-    }
-
-    /**
-     * Get optional installation parameters
-     * @return array
-     */
-    public function getOptionalParams()
-    {
-        return $this->optionalParameters;
-    }
-
-    /**
-     * Check if server is applicable for Magento
-     * @return $this
-     */
-    public function checkServer()
-    {
-        $result = $this->installer->checkServer();
-        if (!$result) {
-            foreach ($this->messageManager->getMessages()->getItems() as $message) {
-                $this->addError($message->toString());
-            }
-        }
-
-        return $this;
-    }
-
-    /**
-     * Validate session storage value (files or db)
-     * If empty, will return 'files'
-     *
-     * @param string $value
-     * @return string
-     * @throws \Exception
-     */
-    protected function _checkSessionSave($value)
-    {
-        if (empty($value)) {
-            return 'files';
-        }
-        if (!in_array($value, array('files', 'db'), true)) {
-            throw new \Exception('session_save value must be "files" or "db".');
-        }
-        return $value;
-    }
-
-    /**
-     * Validate backend area frontname value.
-     * If empty, "backend" will be returned
-     *
-     * @param string $value
-     * @return string
-     * @throws \Exception
-     */
-    protected function _checkBackendFrontname($value)
-    {
-        if (empty($value)) {
-            return 'backend';
-        }
-        if (!preg_match('/^[a-z]+[a-z0-9_]+$/', $value)) {
-            throw new \Exception(
-                'backend_frontname value must contain only letters (a-z), numbers (0-9)' .
-                ' or underscore(_), first character should be a letter.'
-            );
-        }
-        return $value;
-    }
-}
diff --git a/app/code/Magento/Install/Model/Installer/Db.php b/app/code/Magento/Install/Model/Installer/Db.php
deleted file mode 100644
index a2139e0e533..00000000000
--- a/app/code/Magento/Install/Model/Installer/Db.php
+++ /dev/null
@@ -1,194 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-
-/**
- * DB Installer
- */
-namespace Magento\Install\Model\Installer;
-
-class Db
-{
-    /**
-     * Database resource
-     *
-     * @var \Magento\Install\Model\Installer\Db\AbstractDb
-     */
-    protected $_dbResource;
-
-    /**
-     * @var \Magento\Framework\Logger
-     */
-    protected $_logger;
-
-    /**
-     * Database model factory
-     *
-     * @var \Magento\Install\Model\Installer\Db\Factory
-     */
-    protected $_dbFactory;
-
-    /**
-     * Databases configuration
-     *
-     * @var array
-     */
-    protected $_dbConfig;
-
-    /**
-     * @param \Magento\Framework\Logger $logger
-     * @param \Magento\Install\Model\Installer\Db\Factory $dbFactory
-     * @param array $dbConfig
-     */
-    public function __construct(
-        \Magento\Framework\Logger $logger,
-        \Magento\Install\Model\Installer\Db\Factory $dbFactory,
-        array $dbConfig
-    ) {
-        $this->_logger = $logger;
-        $this->_dbConfig = $dbConfig;
-        $this->_dbFactory = $dbFactory;
-    }
-
-    /**
-     * Check database connection
-     * and return checked connection data
-     *
-     * @param array $data
-     * @return array
-     * @throws \Magento\Framework\Model\Exception
-     */
-    public function checkDbConnectionData($data)
-    {
-        $data = $this->_getCheckedData($data);
-
-        try {
-            /** @var \Magento\Install\Model\Installer\Db\Mysql4 $resource */
-            $resource = $this->_getDbResource();
-            $resource->setConfig($data);
-
-            // check required extensions
-            $absenteeExtensions = array();
-            $extensions = $resource->getRequiredExtensions();
-            foreach ($extensions as $extName) {
-                if (!extension_loaded($extName)) {
-                    $absenteeExtensions[] = $extName;
-                }
-            }
-            if (!empty($absenteeExtensions)) {
-                throw new \Magento\Framework\Model\Exception(
-                    __('PHP Extensions "%1" must be loaded.', implode(',', $absenteeExtensions))
-                );
-            }
-
-            $version = $resource->getVersion();
-            $requiredVersion = isset(
-                $this->_dbConfig['mysql4']['min_version']
-            ) ? $this->_dbConfig['mysql4']['min_version'] : 0;
-
-            // check DB server version
-            if (version_compare($version, $requiredVersion) == -1) {
-                throw new \Magento\Framework\Model\Exception(
-                    __(
-                        'The database server version doesn\'t match system requirements (required: %1, actual: %2).',
-                        $requiredVersion,
-                        $version
-                    )
-                );
-            }
-
-            // check InnoDB support
-            if (!$resource->supportEngine()) {
-                throw new \Magento\Framework\Model\Exception(__('Database server does not support the InnoDB storage engine.'));
-            }
-
-            // TODO: check user roles
-        } catch (\Magento\Framework\Model\Exception $e) {
-            $this->_logger->logException($e);
-            throw new \Magento\Framework\Model\Exception(__($e->getMessage()));
-        } catch (\Exception $e) {
-            $this->_logger->logException($e);
-            throw new \Magento\Framework\Model\Exception(__('Something went wrong while connecting to the database.'));
-        }
-
-        return $data;
-    }
-
-    /**
-     * Check database connection data
-     *
-     * @param  array $data
-     * @return array
-     */
-    protected function _getCheckedData($data)
-    {
-        if (!isset($data['db_name']) || empty($data['db_name'])) {
-            throw new \Magento\Framework\Model\Exception(__('The Database Name field cannot be empty.'));
-        }
-        //make all table prefix to lower letter
-        if ($data['db_prefix'] != '') {
-            $data['db_prefix'] = strtolower($data['db_prefix']);
-        }
-        //check table prefix
-        if ($data['db_prefix'] != '') {
-            if (!preg_match('/^[a-z]+[a-z0-9_]*$/', $data['db_prefix'])) {
-                throw new \Magento\Framework\Model\Exception(
-                    __(
-                        'The table prefix should contain only letters (a-z), numbers (0-9) or underscores (_); the first character should be a letter.'
-                    )
-                );
-            }
-        }
-        //set db type according the db model
-        if (!isset($data['db_type'])) {
-            $data['db_type'] = isset(
-                $this->_dbConfig[(string)$data['db_model']]['type']
-            ) ? $this->_dbConfig[(string)$data['db_model']]['type'] : null;
-        }
-
-        $dbResource = $this->_getDbResource();
-        $data['db_pdo_type'] = $dbResource->getPdoType();
-
-        if (!isset($data['db_init_statements'])) {
-            $data['db_init_statements'] = isset(
-                $this->_dbConfig[(string)$data['db_model']]['initStatements']
-            ) ? $this->_dbConfig[(string)$data['db_model']]['initStatements'] : null;
-        }
-
-        return $data;
-    }
-
-    /**
-     * Retrieve the database resource
-     *
-     * @return \Magento\Install\Model\Installer\Db\AbstractDb
-     * @throws \Magento\Framework\Model\Exception
-     */
-    protected function _getDbResource()
-    {
-        if (!isset($this->_dbResource)) {
-            $this->_dbResource = $this->_dbFactory->get('mysql4');
-        }
-        return $this->_dbResource;
-    }
-}
diff --git a/app/code/Magento/Install/Model/Installer/Db/AbstractDb.php b/app/code/Magento/Install/Model/Installer/Db/AbstractDb.php
deleted file mode 100644
index 918b2ed3415..00000000000
--- a/app/code/Magento/Install/Model/Installer/Db/AbstractDb.php
+++ /dev/null
@@ -1,203 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-
-/**
- * Abstract resource data model
- *
- * @author      Magento Core Team <core@magentocommerce.com>
- */
-namespace Magento\Install\Model\Installer\Db;
-
-abstract class AbstractDb
-{
-    /**
-     * Resource connection adapter factory
-     *
-     * @var \Magento\Framework\Model\Resource\Type\Db\Pdo\MysqlFactory
-     */
-    protected $_adapterFactory;
-
-    /**
-     * List of necessary extensions for DBs
-     *
-     * @var array
-     */
-    protected $_dbExtensions;
-
-    /**
-     *  Adapter instance
-     *
-     * @var \Magento\Framework\DB\Adapter\AdapterInterface
-     */
-    protected $_connection;
-
-    /**
-     *  Connection configuration
-     *
-     * @var array
-     */
-    protected $_connectionData;
-
-    /**
-     *  Connection configuration
-     *
-     * @var array
-     */
-    protected $_configData;
-
-    /**
-     * Configuration arguments
-     *
-     * @var \Magento\Framework\App\Arguments
-     */
-    protected $_arguments;
-
-    /**
-     * @param \Magento\Framework\Model\Resource\Type\Db\Pdo\MysqlFactory $adapterFactory
-     * @param \Magento\Framework\App\Arguments $arguments
-     * @param array $dbExtensions
-     */
-    public function __construct(
-        \Magento\Framework\Model\Resource\Type\Db\Pdo\MysqlFactory $adapterFactory,
-        \Magento\Framework\App\Arguments $arguments,
-        array $dbExtensions = array()
-    ) {
-        $this->_adapterFactory = $adapterFactory;
-        $this->_dbExtensions = $dbExtensions;
-        $this->_arguments = $arguments;
-    }
-
-    /**
-     * Return the name of DB model from config
-     *
-     * @return string
-     */
-    public function getModel()
-    {
-        return $this->_configData['db_model'];
-    }
-
-    /**
-     * Return the DB type from config
-     *
-     * @return string
-     */
-    public function getType()
-    {
-        return $this->_configData['db_type'];
-    }
-
-    /**
-     * Set configuration data
-     *
-     * @param array $config the connection configuration
-     * @return void
-     */
-    public function setConfig($config)
-    {
-        $this->_configData = $config;
-    }
-
-    /**
-     * Retrieve connection data from config
-     *
-     * @return array
-     */
-    public function getConnectionData()
-    {
-        if (!$this->_connectionData) {
-            if ($this->_configData) {
-                $connectionData = array(
-                    'host' => $this->_configData['db_host'],
-                    'username' => $this->_configData['db_user'],
-                    'password' => $this->_configData['db_pass'],
-                    'dbName' => $this->_configData['db_name'],
-                    'pdoType' => $this->getPdoType()
-                );
-            } else {
-                $default = $this->_arguments->getConnection('default');
-                $connectionData = array(
-                    'host' => $default['host'],
-                    'username' => $default['username'],
-                    'password' => $default['password'],
-                    'dbName' => $default['dbName'],
-                    'pdoType' => $this->getPdoType()
-                );
-            }
-            $this->_connectionData = $connectionData;
-        }
-        return $this->_connectionData;
-    }
-
-    /**
-     * Check InnoDB support
-     *
-     * @return bool
-     */
-    public function supportEngine()
-    {
-        return true;
-    }
-
-    /**
-     * Create new connection with custom config
-     *
-     * @return \Magento\Framework\DB\Adapter\AdapterInterface
-     */
-    protected function _getConnection()
-    {
-        if (!isset($this->_connection)) {
-            $connection = $this->_adapterFactory->create($this->getConnectionData())->getConnection();
-            $this->_connection = $connection;
-        }
-        return $this->_connection;
-    }
-
-    /**
-     * Return pdo type
-     *
-     * @return null
-     */
-    public function getPdoType()
-    {
-        return null;
-    }
-
-    /**
-     * Retrieve required PHP extension list for database
-     *
-     * @return array
-     */
-    public function getRequiredExtensions()
-    {
-        return isset($this->_dbExtensions[$this->getModel()]) ? $this->_dbExtensions[$this->getModel()] : array();
-    }
-
-    /**
-     * Clean up database
-     *
-     * @return void
-     */
-    abstract public function cleanUpDatabase();
-}
diff --git a/app/code/Magento/Install/Model/Installer/Db/Mysql4.php b/app/code/Magento/Install/Model/Installer/Db/Mysql4.php
deleted file mode 100644
index f1b25bdbacc..00000000000
--- a/app/code/Magento/Install/Model/Installer/Db/Mysql4.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-
-
-/**
- * Mysql resource data model
- */
-namespace Magento\Install\Model\Installer\Db;
-
-class Mysql4 extends \Magento\Install\Model\Installer\Db\AbstractDb
-{
-    /**
-     * Retrieve DB server version
-     *
-     * @return string (string version number | 'undefined')
-     */
-    public function getVersion()
-    {
-        $version = $this->_getConnection()->fetchOne('SELECT VERSION()');
-        $version = $version ? $version : 'undefined';
-        $match = array();
-        if (preg_match("#^([0-9\.]+)#", $version, $match)) {
-            $version = $match[0];
-        }
-        return $version;
-    }
-
-    /**
-     * Check InnoDB support
-     *
-     * @return bool
-     */
-    public function supportEngine()
-    {
-        $variables = $this->_getConnection()->fetchPairs('SHOW ENGINES');
-        return isset($variables['InnoDB']) && ($variables['InnoDB'] == 'DEFAULT' || $variables['InnoDB'] == 'YES');
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function cleanUpDatabase()
-    {
-        $connectionData = $this->getConnectionData();
-        $connection = $this->_getConnection();
-        $connection->query('DROP DATABASE IF EXISTS ' . $connectionData['dbName']);
-        $connection->query('CREATE DATABASE ' . $connectionData['dbName']);
-    }
-}
diff --git a/app/code/Magento/Install/Model/Installer/Filesystem.php b/app/code/Magento/Install/Model/Installer/Filesystem.php
deleted file mode 100644
index 0a5554f6fdd..00000000000
--- a/app/code/Magento/Install/Model/Installer/Filesystem.php
+++ /dev/null
@@ -1,156 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-namespace Magento\Install\Model\Installer;
-
-use Magento\Framework\App\Filesystem\DirectoryList;
-
-/**
- * Filesystem installer
- */
-class Filesystem
-{
-    /**#@+
-     * @deprecated since 1.7.1.0
-     */
-    const MODE_WRITE = 'write';
-
-    const MODE_READ = 'read';
-
-    /**#@- */
-
-    /**
-     * @var \Magento\Framework\Filesystem
-     */
-    protected $_filesystem;
-
-    /**
-     * Install Config
-     *
-     * @var \Magento\Install\Model\Config
-     */
-    protected $_installConfig;
-
-    /**
-     * Application Root Directory
-     *
-     * @var string
-     */
-    protected $_appRootDir;
-
-    /**
-     * @var \Magento\Framework\Message\ManagerInterface
-     */
-    protected $messageManager;
-
-    /**
-     * @param \Magento\Framework\Filesystem $filesystem
-     * @param \Magento\Install\Model\Config $installConfig
-     * @param \Magento\Framework\Message\ManagerInterface $messageManager
-     */
-    public function __construct(
-        \Magento\Framework\Filesystem $filesystem,
-        \Magento\Install\Model\Config $installConfig,
-        \Magento\Framework\Message\ManagerInterface $messageManager
-    ) {
-        $this->_filesystem = $filesystem;
-        $this->_installConfig = $installConfig;
-        $this->messageManager = $messageManager;
-    }
-
-    /**
-     * Check and prepare file system
-     *
-     * @return $this
-     * @throws \Exception
-     */
-    public function install()
-    {
-        if (!$this->_checkFilesystem()) {
-            throw new \Exception();
-        }
-        return $this;
-    }
-
-    /**
-     * Check file system by config
-     *
-     * @return bool
-     */
-    protected function _checkFilesystem()
-    {
-        $res = true;
-        $config = $this->_installConfig->getWritableFullPathsForCheck();
-
-        if (is_array($config)) {
-            foreach ($config as $item) {
-                $recursive = isset($item['recursive']) ? (bool)$item['recursive'] : false;
-                $existence = isset($item['existence']) ? (bool)$item['existence'] : false;
-                $checkRes = $this->_checkFullPath($item['path'], $recursive, $existence);
-                $res = $res && $checkRes;
-            }
-        }
-        return $res;
-    }
-
-    /**
-     * Check file system full path
-     *
-     * @param  string $fullPath
-     * @param  bool $recursive
-     * @param  bool $existence
-     * @return bool
-     */
-    protected function _checkFullPath($fullPath, $recursive, $existence)
-    {
-        $result = true;
-        $directory = $this->_filesystem->getDirectoryWrite(DirectoryList::ROOT);
-        $path = $directory->getRelativePath($fullPath);
-        if ($recursive && $directory->isDirectory($path)) {
-            $pathsToCheck = $directory->read($path);
-            array_unshift($pathsToCheck, $path);
-        } else {
-            $pathsToCheck = array($path);
-        }
-
-        $skipFileNames = array('.svn', '.htaccess');
-        foreach ($pathsToCheck as $pathToCheck) {
-            if (in_array(basename($pathToCheck), $skipFileNames)) {
-                continue;
-            }
-
-            if ($existence) {
-                $setError = !$directory->isWritable($path);
-            } else {
-                $setError = $directory->isExist($path) && !$directory->isWritable($path);
-            }
-
-            if ($setError) {
-                $this->messageManager->addError(__('Path "%1" must be writable.', $pathToCheck));
-                $result = false;
-            }
-        }
-
-        return $result;
-    }
-}
diff --git a/app/code/Magento/Install/Model/Installer/Pear.php b/app/code/Magento/Install/Model/Installer/Pear.php
deleted file mode 100644
index 099ed6f848e..00000000000
--- a/app/code/Magento/Install/Model/Installer/Pear.php
+++ /dev/null
@@ -1,90 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-namespace Magento\Install\Model\Installer;
-
-/**
- * PEAR Packages Download Manager
- */
-class Pear
-{
-    /**
-     * @var \Magento\Framework\Message\ManagerInterface
-     */
-    protected $messageManager;
-
-    /**
-     * @param \Magento\Framework\Message\ManagerInterface $messageManager
-     */
-    public function __construct(
-        \Magento\Framework\Message\ManagerInterface $messageManager
-    ) {
-        $this->messageManager = $messageManager;
-    }
-
-    /**
-     * @return string[]
-     */
-    public function getPackages()
-    {
-        $packages = array(
-            'pear/PEAR-stable',
-            'connect.magentocommerce.com/core/Magento_Pear_Helpers',
-            'connect.magentocommerce.com/core/Lib_ZF',
-            'connect.magentocommerce.com/core/Lib_Varien',
-            'connect.magentocommerce.com/core/Magento_All',
-            'connect.magentocommerce.com/core/Interface_Frontend_Default',
-            'connect.magentocommerce.com/core/Interface_Adminhtml_Default',
-            'connect.magentocommerce.com/core/Interface_Install_Default'
-        );
-        return $packages;
-    }
-
-    /**
-     * @return bool
-     */
-    public function checkDownloads()
-    {
-        $pear = new \Magento\Framework\Pear();
-        $pkg = new PEAR_PackageFile($pear->getConfig(), false);
-        $result = true;
-        foreach ($this->getPackages() as $package) {
-            $obj = $pkg->fromAnyFile($package, PEAR_VALIDATE_NORMAL);
-            if (PEAR::isError($obj)) {
-                $uinfo = $obj->getUserInfo();
-                if (is_array($uinfo)) {
-                    foreach ($uinfo as $message) {
-                        if (is_array($message)) {
-                            $message = $message['message'];
-                        }
-                        $this->messageManager->addError($message);
-                    }
-                } else {
-                    print_r($obj->getUserInfo());
-                }
-                $result = false;
-            }
-        }
-        return $result;
-    }
-}
diff --git a/app/code/Magento/Install/Model/Setup.php b/app/code/Magento/Install/Model/Setup.php
deleted file mode 100644
index 16df1c20cec..00000000000
--- a/app/code/Magento/Install/Model/Setup.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-namespace Magento\Install\Model;
-
-class Setup extends \Magento\Framework\Module\Setup
-{
-    /**
-     * Save configuration data
-     *
-     * @param string $path
-     * @param string $value
-     * @param int|string $scope
-     * @param int $scopeId
-     * @return $this
-     */
-    public function setConfigData($path, $value, $scope = \Magento\Framework\App\ScopeInterface::SCOPE_DEFAULT, $scopeId = 0)
-    {
-        $table = $this->getTable('core_config_data');
-        // this is a fix for mysql 4.1
-        $this->getConnection()->showTableStatus($table);
-
-        $data = array('scope' => $scope, 'scope_id' => $scopeId, 'path' => $path, 'value' => $value);
-        $this->getConnection()->insertOnDuplicate($table, $data, array('value'));
-        return $this;
-    }
-}
diff --git a/app/code/Magento/Install/Model/Survey.php b/app/code/Magento/Install/Model/Survey.php
deleted file mode 100644
index 1278e3938f4..00000000000
--- a/app/code/Magento/Install/Model/Survey.php
+++ /dev/null
@@ -1,141 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-
-
-/**
- * Installation survey model
- */
-namespace Magento\Install\Model;
-
-class Survey
-{
-    const SURVEY_URL = 'www.magentocommerce.com/instsurvey.html';
-
-    /**
-     * @var string
-     */
-    protected $_flagCode = 'install_survey';
-
-    /**
-     * @var \Magento\Framework\Flag
-     */
-    protected $_flagModel = null;
-
-    /**
-     * @var \Magento\Framework\FlagFactory
-     */
-    protected $_flagFactory;
-
-    /**
-     * @var \Magento\Framework\App\RequestInterface
-     */
-    protected $_request;
-
-    /**
-     * @param \Magento\Framework\FlagFactory $flagFactory
-     * @param \Magento\Framework\App\RequestInterface $request
-     */
-    public function __construct(
-        \Magento\Framework\FlagFactory $flagFactory,
-        \Magento\Framework\App\RequestInterface $request
-    ) {
-        $this->_request = $request;
-        $this->_flagFactory = $flagFactory;
-    }
-
-    /**
-     * Check if survey url valid (exists) or not
-     *
-     * @return bool
-     */
-    public function isSurveyUrlValid()
-    {
-        $curl = new \Magento\Framework\HTTP\Adapter\Curl();
-        $curl->setConfig(array('timeout' => 5))->write(\Zend_Http_Client::GET, $this->getSurveyUrl(), '1.0');
-        $response = $curl->read();
-        $curl->close();
-
-        if (\Zend_Http_Response::extractCode($response) == 200) {
-            return true;
-        }
-        return false;
-    }
-
-    /**
-     * Return survey url
-     *
-     * @return string
-     */
-    public function getSurveyUrl()
-    {
-        $host = $this->_request->isSecure() ? 'https://' : 'http://';
-        return $host . self::SURVEY_URL;
-    }
-
-    /**
-     * Return core flag model
-     *
-     * @return \Magento\Framework\Flag
-     */
-    protected function _getFlagModel()
-    {
-        if ($this->_flagModel === null) {
-            $this->_flagModel = $this->_flagFactory->create(
-                array('data' => array('flag_code' => $this->_flagCode))
-            )->loadSelf();
-        }
-        return $this->_flagModel;
-    }
-
-    /**
-     * Check if survey question was already asked
-     * or survey url was viewed during installation process
-     *
-     * @return boolean
-     */
-    public function isSurveyViewed()
-    {
-        $flagData = $this->_getFlagModel()->getFlagData();
-        if (isset($flagData['survey_viewed']) && $flagData['survey_viewed'] == 1) {
-            return true;
-        }
-        return false;
-    }
-
-    /**
-     * Save survey viewed flag in core flag
-     *
-     * @param boolean $viewed
-     * @return void
-     */
-    public function saveSurveyViewed($viewed)
-    {
-        $flagData = $this->_getFlagModel()->getFlagData();
-        if (is_null($flagData)) {
-            $flagData = array();
-        }
-        $flagData = array_merge($flagData, array('survey_viewed' => (bool)$viewed));
-        $this->_getFlagModel()->setFlagData($flagData)->save();
-    }
-}
diff --git a/app/code/Magento/Install/Model/System/Message/Survey.php b/app/code/Magento/Install/Model/System/Message/Survey.php
deleted file mode 100644
index 3d516ed61c2..00000000000
--- a/app/code/Magento/Install/Model/System/Message/Survey.php
+++ /dev/null
@@ -1,135 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-namespace Magento\Install\Model\System\Message;
-
-class Survey implements \Magento\Framework\Notification\MessageInterface
-{
-    /**
-     * @var \Magento\Backend\Model\Auth\Session
-     */
-    protected $_authSession;
-
-    /**
-     * @var \Magento\Framework\AuthorizationInterface
-     */
-    protected $_authorization;
-
-    /**
-     * @var \Magento\Framework\UrlInterface
-     */
-    protected $_urlBuilder;
-
-    /**
-     * @var \Magento\Install\Model\Survey
-     */
-    protected $_survey;
-
-    /**
-     * @param \Magento\Backend\Model\Auth\Session $authSession
-     * @param \Magento\Framework\AuthorizationInterface $authorization
-     * @param \Magento\Framework\UrlInterface $urlBuilder
-     * @param \Magento\Install\Model\Survey $survey
-     */
-    public function __construct(
-        \Magento\Backend\Model\Auth\Session $authSession,
-        \Magento\Framework\AuthorizationInterface $authorization,
-        \Magento\Framework\UrlInterface $urlBuilder,
-        \Magento\Install\Model\Survey $survey
-    ) {
-        $this->_authorization = $authorization;
-        $this->_authSession = $authSession;
-        $this->_urlBuilder = $urlBuilder;
-        $this->_survey = $survey;
-    }
-
-    /**
-     * Return survey url
-     *
-     * @return string
-     */
-    public function getSurveyUrl()
-    {
-        return $this->_survey->getSurveyUrl();
-    }
-
-    /**
-     * Retrieve unique message identity
-     *
-     * @return string
-     */
-    public function getIdentity()
-    {
-        return md5('survey' . $this->getSurveyUrl());
-    }
-
-    /**
-     * Check whether survey question can show
-     *
-     * @return bool
-     */
-    public function isDisplayed()
-    {
-        if ($this->_authSession->getHideSurveyQuestion() || false == $this->_authorization->isAllowed(
-            null
-        ) || $this->_survey->isSurveyViewed() || false == $this->_survey->isSurveyUrlValid()
-        ) {
-            return false;
-        }
-
-        return true;
-    }
-
-    /**
-     * Retrieve message text
-     *
-     * @return string
-     */
-    public function getText()
-    {
-        $params = array(
-            'actionLink' => array(
-                'event' => 'surveyYes',
-                'eventData' => array(
-                    'surveyUrl' => $this->_survey->getSurveyUrl(),
-                    'surveyAction' => $this->_urlBuilder->getUrl('*/survey/index', array('_current' => true)),
-                    'decision' => 'yes'
-                )
-            )
-        );
-        return __(
-            'We appreciate our merchants\' feedback. Please <a href="#" data-mage-init="%1">take our survey</a> and tell us about features you\'d like to see in Magento.',
-            json_encode($params, JSON_FORCE_OBJECT)
-        );
-    }
-
-    /**
-     * Retrieve message severity
-     *
-     * @return int
-     */
-    public function getSeverity()
-    {
-        return \Magento\Framework\Notification\MessageInterface::SEVERITY_MAJOR;
-    }
-}
diff --git a/app/code/Magento/Install/Model/Uninstaller.php b/app/code/Magento/Install/Model/Uninstaller.php
deleted file mode 100644
index 1b10a831c09..00000000000
--- a/app/code/Magento/Install/Model/Uninstaller.php
+++ /dev/null
@@ -1,161 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright  Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-
-namespace Magento\Install\Model;
-
-use Magento\Framework\Filesystem;
-use Magento\Framework\App\Filesystem\DirectoryList;
-use Magento\Framework\Filesystem\FilesystemException;
-
-/**
- * A model for uninstalling Magento application
- */
-class Uninstaller
-{
-    /**
-     * A service for cleaning up directories
-     *
-     * @var Filesystem
-     */
-    protected $filesystem;
-
-    /**
-     * A service for recreating database
-     *
-     * @var Installer\Db\Mysql4
-     */
-    private $db;
-
-    /**
-     * Logger
-     *
-     * @var \Zend_Log
-     */
-    private $log;
-
-    /**
-     * Constructor
-     *
-     * @param Filesystem $filesystem
-     * @param Installer\Db\Mysql4 $db
-     * @param \Zend_Log $log
-     */
-    public function __construct(
-        Filesystem $filesystem,
-        Installer\Db\Mysql4 $db,
-        \Zend_Log $log
-    ) {
-        $this->filesystem = $filesystem;
-        $this->db = $db;
-        $this->log = $log;
-    }
-
-    /**
-     * Uninstalls the application
-     *
-     * @return void
-     */
-    public function uninstall()
-    {
-        $this->log('Starting uninstall');
-        $this->recreateDatabase();
-        $this->log('File system cleanup:');
-        $this->deleteDirContents(DirectoryList::VAR_DIR);
-        $this->deleteDirContents(DirectoryList::STATIC_VIEW);
-        $this->deleteLocalXml();
-        $this->log('Uninstall complete.');
-    }
-
-    /**
-     * Log output
-     *
-     * @param string $message
-     * @param int $level
-     * @return void
-     */
-    private function log($message, $level = \Zend_Log::INFO)
-    {
-        $this->log->log($message, $level);
-    }
-
-    /**
-     * Deletes the database and creates it again
-     *
-     * @return void
-     */
-    private function recreateDatabase()
-    {
-        $connectionData = $this->db->getConnectionData();
-        if (empty($connectionData['dbName'])) {
-            $this->log('No database connection defined - skipping cleanup');
-        } else {
-            $this->log("Recreating database '{$connectionData['dbName']}'");
-            $this->db->cleanUpDatabase();
-        }
-    }
-
-    /**
-     * Removes contents of a directory
-     *
-     * @param string $type
-     * @return void
-     */
-    private function deleteDirContents($type)
-    {
-        $dir = $this->filesystem->getDirectoryWrite($type);
-        $dirPath = $dir->getAbsolutePath();
-        foreach ($dir->read() as $path) {
-            if (preg_match('/^\./', $path)) {
-                continue;
-            }
-            $this->log("{$dirPath}{$path}");
-            try {
-                $dir->delete($path);
-            } catch (FilesystemException $e) {
-                $this->log($e->getMessage());
-            }
-        }
-    }
-
-    /**
-     * Removes deployment configuration
-     *
-     * @return void
-     */
-    protected function deleteLocalXml()
-    {
-        $configDir = $this->filesystem->getDirectoryWrite(DirectoryList::CONFIG);
-        $localXml = "{$configDir->getAbsolutePath()}local.xml";
-        if (!$configDir->isFile('local.xml')) {
-            $this->log("The file '{$localXml}' doesn't exist - skipping cleanup");
-            return;
-        }
-        try {
-            $this->log($localXml);
-            $configDir->delete('local.xml');
-        } catch (FilesystemException $e) {
-            $this->log($e->getMessage());
-        }
-    }
-}
diff --git a/app/code/Magento/Install/Model/Wizard.php b/app/code/Magento/Install/Model/Wizard.php
deleted file mode 100644
index ee0c4cafbdd..00000000000
--- a/app/code/Magento/Install/Model/Wizard.php
+++ /dev/null
@@ -1,162 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-
-/**
- * Installation wizard model
- */
-namespace Magento\Install\Model;
-
-use Magento\Framework\UrlInterface;
-
-class Wizard
-{
-    /**
-     * Wizard configuration
-     *
-     * @var array
-     */
-    protected $_steps = array();
-
-    /**
-     * Url builder
-     *
-     * @var UrlInterface
-     */
-    protected $_urlBuilder;
-
-    /**
-     * Init install wizard
-     * @param UrlInterface $urlBuilder
-     * @param Config $installConfig
-     */
-    public function __construct(UrlInterface $urlBuilder, Config $installConfig)
-    {
-        $this->_steps = $installConfig->getWizardSteps();
-        $this->_urlBuilder = $urlBuilder;
-        $this->_initSteps();
-    }
-
-    /**
-     * @return void
-     */
-    protected function _initSteps()
-    {
-        foreach (array_keys($this->_steps) as $index) {
-            $this->_steps[$index]->setUrl(
-                $this->_getUrl($this->_steps[$index]->getController(), $this->_steps[$index]->getAction())
-            );
-
-            if (isset($this->_steps[$index + 1])) {
-                $this->_steps[$index]->setNextUrl(
-                    $this->_getUrl($this->_steps[$index + 1]->getController(), $this->_steps[$index + 1]->getAction())
-                );
-                $this->_steps[$index]->setNextUrlPath(
-                    $this->_getUrlPath(
-                        $this->_steps[$index + 1]->getController(),
-                        $this->_steps[$index + 1]->getAction()
-                    )
-                );
-            }
-            if (isset($this->_steps[$index - 1])) {
-                $this->_steps[$index]->setPrevUrl(
-                    $this->_getUrl($this->_steps[$index - 1]->getController(), $this->_steps[$index - 1]->getAction())
-                );
-                $this->_steps[$index]->setPrevUrlPath(
-                    $this->_getUrlPath(
-                        $this->_steps[$index - 1]->getController(),
-                        $this->_steps[$index - 1]->getAction()
-                    )
-                );
-            }
-        }
-    }
-
-    /**
-     * Get wizard step by request
-     *
-     * @param   \Magento\Framework\App\RequestInterface $request
-     * @return  \Magento\Framework\Object|bool
-     */
-    public function getStepByRequest(\Magento\Framework\App\RequestInterface $request)
-    {
-        foreach ($this->_steps as $step) {
-            if ($step->getController() == $request->getControllerName() &&
-                $step->getAction() == $request->getActionName()
-            ) {
-                return $step;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Get wizard step by name
-     *
-     * @param   string $name
-     * @return  \Magento\Framework\Object|bool
-     */
-    public function getStepByName($name)
-    {
-        foreach ($this->_steps as $step) {
-            if ($step->getName() == $name) {
-                return $step;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Get all wizard steps
-     *
-     * @return array
-     */
-    public function getSteps()
-    {
-        return $this->_steps;
-    }
-
-    /**
-     * Get url
-     *
-     * @param string $controller
-     * @param string $action
-     * @return string
-     */
-    protected function _getUrl($controller, $action)
-    {
-        return $this->_urlBuilder->getUrl($this->_getUrlPath($controller, $action));
-    }
-
-    /**
-     * Retrieve Url Path
-     *
-     * @param string $controller
-     * @param string $action
-     * @return string
-     */
-    protected function _getUrlPath($controller, $action)
-    {
-        return 'install/' . $controller . '/' . $action;
-    }
-}
diff --git a/app/code/Magento/Install/composer.json b/app/code/Magento/Install/composer.json
deleted file mode 100644
index 1e7a486d77a..00000000000
--- a/app/code/Magento/Install/composer.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
-    "name": "magento/module-install",
-    "description": "N/A",
-    "require": {
-        "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-directory": "0.1.0-alpha102",
-        "magento/module-user": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/module-theme": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
-        "magento/magento-composer-installer": "*"
-    },
-    "type": "magento2-module",
-    "version": "0.1.0-alpha102",
-    "extra": {
-        "map": [
-            [
-                "*",
-                "Magento/Install"
-            ]
-        ]
-    }
-}
diff --git a/app/code/Magento/Install/etc/di.xml b/app/code/Magento/Install/etc/di.xml
deleted file mode 100644
index d937d383f98..00000000000
--- a/app/code/Magento/Install/etc/di.xml
+++ /dev/null
@@ -1,141 +0,0 @@
-<?xml version="1.0"?>
-<!--
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Academic Free License (AFL 3.0)
- * that is bundled with this package in the file LICENSE_AFL.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/afl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
- */
--->
-<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/ObjectManager/etc/config.xsd">
-    <preference for="Magento\Framework\View\Design\Theme\ListInterface" type="Magento\Core\Model\Theme\Collection" />
-    <preference for="Magento\Framework\Module\ResourceInterface" type="Magento\Install\Model\Resource\Resource" />
-    <virtualType name="Magento\Install\Model\Session\Storage" type="Magento\Framework\Session\Storage">
-        <arguments>
-            <argument name="namespace" xsi:type="string">install</argument>
-        </arguments>
-    </virtualType>
-    <virtualType name="Magento\Install\Model\Session" type="Magento\Framework\Session\Generic">
-        <arguments>
-            <argument name="storage" xsi:type="object">Magento\Install\Model\Session\Storage</argument>
-        </arguments>
-    </virtualType>
-    <type name="Magento\Framework\Notification\MessageList">
-        <arguments>
-            <argument name="messages" xsi:type="array">
-                <item name="survey" xsi:type="string">Magento\Install\Model\System\Message\Survey</item>
-            </argument>
-        </arguments>
-    </type>
-    <type name="Magento\Install\Block\End">
-        <arguments>
-            <argument name="cryptKey" xsi:type="init_parameter">Magento\Framework\Encryption\Encryptor::PARAM_CRYPT_KEY</argument>
-            <argument name="session" xsi:type="object">Magento\Install\Model\Session</argument>
-        </arguments>
-    </type>
-    <type name="Magento\Install\Model\Installer\Db">
-        <arguments>
-            <argument name="dbConfig" xsi:type="array">
-                <item name="mysql4" xsi:type="array">
-                    <item name="type" xsi:type="string">pdo_mysql</item>
-                    <item name="initStatements" xsi:type="string">SET NAMES utf8</item>
-                    <item name="min_version" xsi:type="string">4.1.20</item>
-                </item>
-            </argument>
-        </arguments>
-    </type>
-    <type name="Magento\Install\Model\Installer\Db\AbstractDb">
-        <arguments>
-            <argument name="dbExtensions" xsi:type="array">
-                <item name="mysql4" xsi:type="array">
-                    <item name="pdo" xsi:type="string">pdo_mysql</item>
-                </item>
-            </argument>
-        </arguments>
-    </type>
-    <type name="Magento\Install\Model\Config\Reader">
-        <arguments>
-            <argument name="fileName" xsi:type="string">install_wizard.xml</argument>
-            <argument name="converter" xsi:type="object">Magento\Install\Model\Config\Converter</argument>
-            <argument name="schemaLocator" xsi:type="object">Magento\Install\Model\Config\SchemaLocator</argument>
-        </arguments>
-    </type>
-    <type name="Magento\Install\Model\Config\Data">
-        <arguments>
-            <argument name="reader" xsi:type="object">Magento\Install\Model\Config\Reader</argument>
-            <argument name="cacheId" xsi:type="string">install_wizard_config</argument>
-        </arguments>
-    </type>
-    <type name="Magento\Install\Block\AbstractBlock">
-        <arguments>
-            <argument name="session" xsi:type="object">Magento\Install\Model\Session</argument>
-        </arguments>
-    </type>
-    <type name="Magento\Install\Block\Config">
-        <arguments>
-            <argument name="session" xsi:type="object">Magento\Install\Model\Session</argument>
-        </arguments>
-    </type>
-    <type name="Magento\Install\Block\Locale">
-        <arguments>
-            <argument name="session" xsi:type="object">Magento\Install\Model\Session</argument>
-        </arguments>
-    </type>
-    <type name="Magento\Install\Block\Db\Main">
-        <arguments>
-            <argument name="session" xsi:type="object">Magento\Install\Model\Session</argument>
-        </arguments>
-    </type>
-    <type name="Magento\Install\Block\Db\Type">
-        <arguments>
-            <argument name="session" xsi:type="object">Magento\Install\Model\Session</argument>
-        </arguments>
-    </type>
-    <type name="Magento\Install\Model\Installer">
-        <arguments>
-            <argument name="session" xsi:type="object">Magento\Install\Model\Session</argument>
-        </arguments>
-    </type>
-    <type name="Magento\Install\Model\Observer">
-        <arguments>
-            <argument name="session" xsi:type="object">Magento\Install\Model\Session</argument>
-        </arguments>
-    </type>
-    <type name="Magento\Framework\App\AreaList">
-        <arguments>
-            <argument name="areas" xsi:type="array">
-                <item name="install" xsi:type="array">
-                    <item name="frontName" xsi:type="string">install</item>
-                    <item name="router" xsi:type="string">install</item>
-                </item>
-            </argument>
-        </arguments>
-    </type>
-    <type name="Magento\Backend\Model\Url\ScopeResolver" shared="false">
-        <arguments>
-            <argument name="areaCode" xsi:type="string">adminhtml</argument>
-        </arguments>
-    </type>
-    <type name="Magento\Install\Model\Setup">
-        <arguments>
-            <argument name="resourceName" xsi:type="string">core_setup</argument>
-            <argument name="moduleName" xsi:type="string">Magento_Core</argument>
-        </arguments>
-    </type>
-</config>
diff --git a/app/code/Magento/Install/etc/frontend/di.xml b/app/code/Magento/Install/etc/frontend/di.xml
deleted file mode 100644
index c4f97b70589..00000000000
--- a/app/code/Magento/Install/etc/frontend/di.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0"?>
-<!--
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Academic Free License (AFL 3.0)
- * that is bundled with this package in the file LICENSE_AFL.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/afl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
- */
--->
-<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../lib/internal/Magento/Framework/ObjectManager/etc/config.xsd">
-    <type name="Magento\Core\Model\Url\SecurityInfo">
-        <arguments>
-            <argument name="secureUrlList" xsi:type="array">
-                <item name="install" xsi:type="string">/install/wizard/checkSecureHost</item>
-            </argument>
-        </arguments>
-    </type>
-    <virtualType name="Magento\Install\Model\Session\Storage" type="Magento\Framework\Session\Storage">
-        <arguments>
-            <argument name="namespace" xsi:type="string">install</argument>
-        </arguments>
-    </virtualType>
-    <type name="Magento\Install\Model\Session">
-        <arguments>
-            <argument name="storage" xsi:type="object">Magento\Install\Model\Session\Storage</argument>
-        </arguments>
-    </type>
-</config>
diff --git a/app/code/Magento/Install/etc/install/di.xml b/app/code/Magento/Install/etc/install/di.xml
deleted file mode 100644
index 4bb37d60fd4..00000000000
--- a/app/code/Magento/Install/etc/install/di.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>
-<!--
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Academic Free License (AFL 3.0)
- * that is bundled with this package in the file LICENSE_AFL.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/afl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
- */
--->
-<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../lib/internal/Magento/Framework/ObjectManager/etc/config.xsd">
-    <preference for="Magento\Core\Model\Theme" type="Magento\Core\Model\Theme\Data" />
-</config>
diff --git a/app/code/Magento/Install/etc/install/events.xml b/app/code/Magento/Install/etc/install/events.xml
deleted file mode 100644
index 5f027077cba..00000000000
--- a/app/code/Magento/Install/etc/install/events.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0"?>
-<!--
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Academic Free License (AFL 3.0)
- * that is bundled with this package in the file LICENSE_AFL.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/afl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
- */
--->
-<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../lib/internal/Magento/Framework/Event/etc/events.xsd">
-    <event name="core_locale_set_locale">
-        <observer name="bind_locale" instance="Magento\Install\Model\Observer" method="bindLocale" />
-    </event>
-</config>
diff --git a/app/code/Magento/Install/etc/install_wizard.xml b/app/code/Magento/Install/etc/install_wizard.xml
deleted file mode 100644
index 9ae375da36c..00000000000
--- a/app/code/Magento/Install/etc/install_wizard.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0"?>
-<!--
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Academic Free License (AFL 3.0)
- * that is bundled with this package in the file LICENSE_AFL.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/afl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
- */
--->
-<install_wizard xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="./install_wizard.xsd">
-    <steps>
-        <step id="begin" controller="wizard" action="begin">
-            <label translate="true">License Agreement</label>
-        </step>
-        <step id="locale" controller="wizard" action="locale">
-            <label translate="true">Localization</label>
-        </step>
-        <step id="config" controller="wizard" action="config">
-            <label translate="true">Configuration</label>
-        </step>
-        <step id="administrator" controller="wizard" action="administrator">
-            <label translate="true">Create Admin Account</label>
-        </step>
-        <step id="end" controller="wizard" action="end">
-            <label translate="true">You're All Set!</label>
-        </step>
-    </steps>
-    <filesystem_prerequisites>
-        <directory alias="etc" recursive="false" existence="true" writable="true" />
-        <directory alias="var" recursive="true" existence="true" writable="true" />
-        <directory alias="media" recursive="true" existence="true" writable="true" />
-    </filesystem_prerequisites>
-</install_wizard>
diff --git a/app/code/Magento/Install/etc/install_wizard.xsd b/app/code/Magento/Install/etc/install_wizard.xsd
deleted file mode 100644
index 438acd31947..00000000000
--- a/app/code/Magento/Install/etc/install_wizard.xsd
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Academic Free License (AFL 3.0)
- * that is bundled with this package in the file LICENSE_AFL.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/afl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
- */
--->
-<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
-    <xs:element name="install_wizard">
-        <xs:annotation>
-            <xs:documentation>
-                Specifies install wizard configuration.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:complexType>
-            <xs:all>
-                <xs:element name="steps" type="stepsType" />
-                <xs:element name='filesystem_prerequisites'  type="filesystemPrerequisitesType" />
-            </xs:all>
-        </xs:complexType>
-    </xs:element>
-
-    <xs:complexType name="stepsType">
-        <xs:sequence>
-            <xs:element name="step" type="stepType" minOccurs="1" maxOccurs="unbounded"/>
-        </xs:sequence>
-    </xs:complexType>
-
-    <xs:complexType name="stepType">
-        <xs:annotation>
-            <xs:documentation>
-                The definition of the step.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:sequence>
-            <xs:element name="label" type="translatableType" minOccurs="1" maxOccurs="1" />
-        </xs:sequence>
-        <xs:attribute name="id" type="xs:ID" use="required"/>
-        <xs:attribute name="controller" type="xs:token" use="required"/>
-        <xs:attribute name="action" type="xs:token" use="required"/>
-    </xs:complexType>
-
-    <xs:complexType name="filesystemPrerequisitesType">
-        <xs:sequence>
-            <xs:element name="directory" type="directoryType" minOccurs="1" maxOccurs="unbounded"/>
-        </xs:sequence>
-    </xs:complexType>
-
-    <xs:complexType name="directoryType">
-        <xs:annotation>
-            <xs:documentation>
-                The requirement of a directory
-            </xs:documentation>
-        </xs:annotation>
-        <xs:attribute name="alias" type="xs:token" use="required"/>
-        <xs:attribute name="recursive" type="xs:boolean" use="required"/>
-        <xs:attribute name="existence" type="xs:boolean" use="required"/>
-        <xs:attribute name="writable" type="xs:boolean" use="required"/>
-    </xs:complexType>
-
-    <xs:complexType name="translatableType">
-        <xs:simpleContent>
-            <xs:extension base="xs:string">
-                <xs:attribute name="translate" use="optional" fixed="true" type="xs:boolean"/>
-            </xs:extension>
-        </xs:simpleContent>
-    </xs:complexType>
-</xs:schema>
\ No newline at end of file
diff --git a/app/code/Magento/Install/etc/install_wizard_file.xsd b/app/code/Magento/Install/etc/install_wizard_file.xsd
deleted file mode 100644
index 03da7bcac97..00000000000
--- a/app/code/Magento/Install/etc/install_wizard_file.xsd
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Academic Free License (AFL 3.0)
- * that is bundled with this package in the file LICENSE_AFL.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/afl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
- */
--->
-<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
-    <xs:element name="install_wizard">
-        <xs:annotation>
-            <xs:documentation>
-                Specifies install wizard configuration.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:complexType>
-            <xs:all>
-                <xs:element name="steps" type="stepsType" />
-                <xs:element name='filesystem_prerequisites'  type="filesystemPrerequisitesType" />
-            </xs:all>
-        </xs:complexType>
-    </xs:element>
-
-    <xs:complexType name="stepsType">
-        <xs:sequence>
-            <xs:element name="step" type="stepType" minOccurs="0" maxOccurs="unbounded"/>
-        </xs:sequence>
-    </xs:complexType>
-
-    <xs:complexType name="stepType">
-        <xs:annotation>
-            <xs:documentation>
-                The definition of the step.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:sequence>
-            <xs:element name="label" type="translatableType" minOccurs="0" maxOccurs="1" />
-        </xs:sequence>
-        <xs:attribute name="id" type="xs:ID" use="required"/>
-        <xs:attribute name="controller" type="xs:token" use="optional"/>
-        <xs:attribute name="action" type="xs:token" use="optional"/>
-    </xs:complexType>
-
-    <xs:complexType name="filesystemPrerequisitesType">
-        <xs:sequence>
-            <xs:element name="directory" type="directoryType" minOccurs="0" maxOccurs="unbounded"/>
-        </xs:sequence>
-    </xs:complexType>
-
-    <xs:complexType name="directoryType">
-        <xs:annotation>
-            <xs:documentation>
-                The requirement of a directory
-            </xs:documentation>
-        </xs:annotation>
-        <xs:attribute name="alias" type="xs:token" use="required"/>
-        <xs:attribute name="recursive" type="xs:boolean" use="optional"/>
-        <xs:attribute name="existence" type="xs:boolean" use="optional"/>
-        <xs:attribute name="writable" type="xs:boolean" use="optional"/>
-    </xs:complexType>
-
-    <xs:complexType name="translatableType">
-        <xs:simpleContent>
-            <xs:extension base="xs:string">
-                <xs:attribute name="translate" use="optional" fixed="true" type="xs:boolean"/>
-            </xs:extension>
-        </xs:simpleContent>
-    </xs:complexType>
-</xs:schema>
\ No newline at end of file
diff --git a/app/code/Magento/Install/etc/module.xml b/app/code/Magento/Install/etc/module.xml
deleted file mode 100644
index 64f36117539..00000000000
--- a/app/code/Magento/Install/etc/module.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0"?>
-<!--
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Academic Free License (AFL 3.0)
- * that is bundled with this package in the file LICENSE_AFL.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/afl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
- */
--->
-<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/Module/etc/module.xsd">
-    <module name="Magento_Install" schema_version="0.7.0" active="true">
-        <sequence>
-            <module name="Magento_Core"/>
-            <module name="Magento_Store"/>
-        </sequence>
-        <depends>
-            <module name="Magento_Store"/>
-            <module name="Magento_Directory"/>
-            <module name="Magento_User"/>
-            <module name="Magento_Backend"/>
-            <module name="Magento_Theme"/>
-        </depends>
-    </module>
-</config>
diff --git a/app/code/Magento/Install/i18n/de_DE.csv b/app/code/Magento/Install/i18n/de_DE.csv
deleted file mode 100644
index 1d842842af3..00000000000
--- a/app/code/Magento/Install/i18n/de_DE.csv
+++ /dev/null
@@ -1,118 +0,0 @@
-"User Name",Benutzername
-"First Name",Vorname
-"Last Name",Nachname
-Email,E-Mail
-"Password Confirmation",Passwortbestätigung
-Configuration,Konfiguration
-"File System",Dateisystem
-Database,Datenbank
-Welcome,Wilkommen
-"Personal Information","Persönliche Informationen"
-"User Password",Benutzerpasswort
-"Email Address",E-Mail-Adresse
-Password,Passwort
-"Confirm Password","Passwort bestätigen"
-Continue,Fortsetzen
-Download,Download
-"Login Information","Login Informationen"
-"Required Fields",Pflichtfelder
-"Save Session Files In","Sessiondateien speichern in"
-Locale,Sprachumgebung
-"Time Zone",Zeitzone
-"Default Currency",Standardwährung
-Validation,Validierung
-"Magento Connect Manager Deployment","Magento Verbindungsmanagerentwicklung"
-"Downloading and installing Magento, please wait...","Magento wird heruntergeladen und installiert, bitte warten..."
-"Setting preferred state to: %1","Setting preferred state to: %1"
-"The URL ""%1"" is not accessible.","The URL ""%1"" is not accessible."
-"The URL ""%1"" is invalid.","The URL ""%1"" is invalid."
-"Response from the server is invalid.","Response from the server is invalid."
-"PHP Extensions ""%1"" must be loaded.","PHP Extensions ""%1"" must be loaded."
-"The database server version doesn't match system requirements (required: %1, actual: %2).","The database server version doesn't match system requirements (required: %1, actual: %2)."
-"Database server does not support the InnoDB storage engine.","Der Datenbankserver unterstützt die InnoDB Storage-Engine nicht."
-"Something went wrong while connecting to the database.","Something went wrong while connecting to the database."
-"The Database Name field cannot be empty.","The Database Name field cannot be empty."
-"The table prefix should contain only letters (a-z), numbers (0-9) or underscores (_); the first character should be a letter.","The table prefix should contain only letters (a-z), numbers (0-9) or underscores (_); the first character should be a letter."
-"Path ""%1"" must be writable.","Path ""%1"" must be writable."
-"Welcome to Magento's Installation Wizard","Wilkommen zum Magento Installationsassistenten"
-"I agree to the above terms and conditions.","Ich stimme den allgemeinen Geschäftsbedingungen zu."
-"Web access options","Optionen für Webzugang"
-"Base URL","Base URL"
-"Admin Path","Admin Pfad"
-"This is the additional path used after your base URL to access your store Admin (e.g, Admin).","This is the additional path used after your base URL to access your store Admin (e.g, Admin)."
-"Enable Charts","Tabellen aktivieren"
-"Enable this option if you want to see the charts on your dashboard.","Enable this option if you want to see the charts on your dashboard."
-"Skip Base URL Validation Before the Next Step","Base URL Validierung vor dem nächsten Schritt überspringen"
-"Check this box only if it is not possible to automatically validate the Base URL.","Wählen Sie diese Box nur an, wenn es nicht möglich ist, die Base URL automatisch zu validieren."
-"Use Web Server (Apache) Rewrites","Webserver (Apache) Rewrites verwenden"
-"You could enable this option to use web server rewrites functionality for improved Search Engine Optimization.","You could enable this option to use web server rewrites functionality for improved Search Engine Optimization."
-"Please make sure that <code>mod_rewrite</code> is enabled in Apache configuration.","Bitte gehen Sie sicher, dass <code>mod_rewrite</code> in der Apache Konfiguration aktiviert ist."
-"Use Secure URLs (SSL)","Secure URLs (SSL) verwenden"
-"Enable this option only if you have SSL available.","Aktivieren Sie diese Option nur, wenn Sie über SSL verfügen."
-"Secure Base URL","Secure Base URL"
-"Provide a complete base URL for SSL connection. For example: %1.","Provide a complete base URL for SSL connection. For example: %1."
-"Run admin interface with SSL","Admininterface mit SSL ausführen"
-"Skip Secure URL validation before next step","Base URL Validierung vor nächsten Schritt überspringen"
-"Check this box only if it is not possible to automatically validate Secure URL, for example if HTTP authentication is required.","Wählen Sie diese Box nur an, wenn es nicht möglich ist, die Secure URL automatisch zu validieren, wie zum Beispiel wenn eine HTTP Authentifizierung erforderlich ist."
-"Session Storage Options","Session Storage Optionen"
-"Save Session Data In","Sessiondaten speichern in"
-"Please set all required settings before clicking ""Continue"".","Please set all required settings before clicking ""Continue""."
-"Create Admin Account","Adminkonto erstellen"
-Username,Benutzername
-"Encryption Key",Kodierungsschlüssel
-"Magento uses this key to encrypt passwords, credit cards and more. If you don't fill in this field, we'll create your encryption key and show it to you on the next page.","Magento uses this key to encrypt passwords, credit cards and more. If you don't fill in this field, we'll create your encryption key and show it to you on the next page."
-Connection,Verbindung
-"Database Connection",Datenbankverbindung
-"Database Type",Datenbanktyp
-Host,Host
-"Database host",Datenbankhost
-"You can specify server port, ex.: localhost:3307<br />If you are not using default UNIX socket, you can specify it here instead of host, ex.: /var/run/mysqld/mysqld.sock","Sie können den Server-Port spezifizieren, Ex.: Lokalhost:3307<br />Wenn Sie nicht den Standard-UNIX-Anschluss verwenden, können Sie dies hier anstelle des Host spezifizieren, Ex.: /var/run/mysqld/mysqld.sock"
-"Database Name",Datenbankname
-"Database user name","Datenbank Benutzername"
-"Database user password","Datebank Benutzerpasswort"
-"Tables Prefix",Tabellenpräfix
-"(Optional. Leave blank for no prefix)","(Optional. Lassen Sie es aus, wenn sie kein Präfix brauchen)"
-"All packages were installed. Click 'OK' to continue with installation.","All packages were installed. Click 'OK' to continue with installation."
-"Something went wrong installing the Magento packages. Please read the log, correct any errors and try again.","Something went wrong installing the Magento packages. Please read the log, correct any errors and try again."
-"As another option, you could try the ""Manual Downloads and Upgrades"" method.","As another option, you could try the ""Manual Downloads and Upgrades"" method."
-"Download Magento Core Modules and Updates","Magento Core Modules und Updates herunterladen"
-"Full Download / SVN Installation","Volles Download / SVN Installation"
-"If you have downloaded the full package or installed Magento through SVN, you should skip packages installation and validation by clicking the button below.","Falls Sie das volle Package heruntergeladen oder Magento über SVN installiert haben, überspringen Sie Packageinstallation und Validierung indem Sie den untenstehenden Button klicken."
-"Continue Full Download / SVN Installation","Vollen Download / SVN Installation fortfahren"
-"Package Management through the Web","Packageverwaltung durch das Web"
-"If you wish to manage Magento packages through the web admin interface, you will need to have web writeable permissions applied to all Magento folders and files.","Falls Sie es wünschen Mangeto Packages durch das Web Admin Interface zu verwalten, müssen Sie webschreibbare Erlaubnis auf alle Magento Ordner und Dateien anwenden."
-"If your server is running on MS Windows, most probably you will not need to change anything.","Falls Ihr Server auf MS Windows läuft, müssen Sie höchstwahrscheinlich nichts ändern."
-"If you are running PHP as CGI, your PHP processes may run under the same user as the user you used when uploading Magento files.","Falls Sie PHP als GCI benützen, könnten Ihre PHP Prozesse under dem selben User ausgeführt werden, der genutzt wurde um Magentodateien hochzuladen."
-"In other cases you will need to make Magento files writeable for the user that the web server process is running under.","In anderen Fällen, müssen Sie Magento Dateien schreibbar für User, unter dem der Webserverprozess läuft, machen."
-"Preferred stability: %1","Preferred stability: %1"
-"This is the most stable state available for Magento packages.","This is the most stable state available for Magento packages."
-"Choose this if you would like to test storefront and admin functionality.","Choose this if you would like to test storefront and admin functionality."
-"Proceed With Automatic Download (%1)","Proceed With Automatic Download (%1)"
-"If you are a developer and would like to have the latest public updates, choose this option.","Wenn Sie Entwickler sind und gerne die neusten öffentlichen Updates erhalten wollen, wählen Sie diese Option."
-"Please note that it is much less stable than beta.","Bitte beachten Sie, dass es viel weniger stabil als beta ist."
-"Manual Downloads and Upgrades","Manuelle Downloads und Upgrades"
-"If you are running the install wizard over a previously downloaded and installed Magento installation, proceed with this method.","Falls Sie den Installationsassistenten über eine vorher heruntergeladene und installierte Magentoinstallation laufen lassen wollen, fahren Sie mit dieser Method fort."
-"If you do not wish or are not able to have Magento folders writeable for the web process, you could use PEAR executable located in the root of Magento installation.","Falls Sie es nicht wünschen oder nicht in der Lage sind, Magento Ordner schreibbar für Webprozessierung zu machen, können Sie PEAR verwenden, welches im Rootverzeichnis der Magentoinstallation zu finden ist."
-"Please note that only UNIX, Linux and Mac OS X shells are currently supported. For Windows use the '%1' option.","Please note that only UNIX, Linux and Mac OS X shells are currently supported. For Windows use the '%1' option."
-"Run this in your shell from Magento root folder:","Führen Sie dies in Ihrer Shell aus dem Magento Rootordner aus:"
-"Click the button below when the installation is finished.","Click the button below when the installation is finished."
-"Continue After Manual Download","Nach manuellem Download fortfahren"
-"You're All Set","Sie sind bereit"
-"Get ready to experience Open-Source eCommerce Evolved.","Machen Sie sich bereit, Open-Source eCommerce Evolved zu erleben."
-"Before you continue to your store, please make a note of your encryption key (Magento uses it to encrypt passwords, credit cards and more).","Bevor Sie zu Ihrem Shop gehen, bitte beachten Sie Ihren Kodierungsschlüssel. (Magento verwendet ihn um Passwörter, Kreditkarten und mehr zu verschlüsseln)."
-"(Make sure you keep it in a safe place.)","(Bitte bewahren Sie es sicher auf.)"
-"Go to Frontend","Zum Frontend gehen"
-"Go to Backend","Zum Backend gehen"
-Localization,Lokalisierung
-"Locale settings",Spracheinstellungen
-"Magento Installation Wizard","Magento Installationsassistent"
-Magento,Magento
-"Help Us Keep Magento Healthy","Help Us Keep Magento Healthy"
-"Report All Bugs","Alle Bugs Melden"
-"(ver. %1)","(ver. %1)"
-Installation,Installation
-"Having trouble installing Magento?","Probleme bei der Installation von Magento?"
-"Check out our","Probieren Sie unser"
-"Installation Guide",Installationsanleitung
-"License Agreement",Linzenvereinbarung
-"You're All Set!","Sie sind bereit!"
diff --git a/app/code/Magento/Install/i18n/en_US.csv b/app/code/Magento/Install/i18n/en_US.csv
deleted file mode 100644
index 1a79f03cf17..00000000000
--- a/app/code/Magento/Install/i18n/en_US.csv
+++ /dev/null
@@ -1,118 +0,0 @@
-"User Name","User Name"
-"First Name","First Name"
-"Last Name","Last Name"
-Email,Email
-"Password Confirmation","Password Confirmation"
-Configuration,Configuration
-"File System","File System"
-Database,Database
-Welcome,Welcome
-"Personal Information","Personal Information"
-"User Password","User Password"
-"Email Address","Email Address"
-Password,Password
-"Confirm Password","Confirm Password"
-Continue,Continue
-Download,Download
-"Login Information","Login Information"
-"Required Fields","Required Fields"
-"Save Session Files In","Save Session Files In"
-Locale,Locale
-"Time Zone","Time Zone"
-"Default Currency","Default Currency"
-Validation,Validation
-"Magento Connect Manager Deployment","Magento Connect Manager Deployment"
-"Downloading and installing Magento, please wait...","Downloading and installing Magento, please wait..."
-"Setting preferred state to: %1","Setting preferred state to: %1"
-"The URL ""%1"" is not accessible.","The URL ""%1"" is not accessible."
-"The URL ""%1"" is invalid.","The URL ""%1"" is invalid."
-"Response from the server is invalid.","Response from the server is invalid."
-"PHP Extensions ""%1"" must be loaded.","PHP Extensions ""%1"" must be loaded."
-"The database server version doesn't match system requirements (required: %1, actual: %2).","The database server version doesn't match system requirements (required: %1, actual: %2)."
-"Database server does not support the InnoDB storage engine.","Database server does not support the InnoDB storage engine."
-"Something went wrong while connecting to the database.","Something went wrong while connecting to the database."
-"The Database Name field cannot be empty.","The Database Name field cannot be empty."
-"The table prefix should contain only letters (a-z), numbers (0-9) or underscores (_); the first character should be a letter.","The table prefix should contain only letters (a-z), numbers (0-9) or underscores (_); the first character should be a letter."
-"Path ""%1"" must be writable.","Path ""%1"" must be writable."
-"Welcome to Magento's Installation Wizard","Welcome to Magento's Installation Wizard"
-"I agree to the above terms and conditions.","I agree to the above terms and conditions."
-"Web access options","Web access options"
-"Base URL","Base URL"
-"Admin Path","Admin Path"
-"This is the additional path used after your base URL to access your store Admin (e.g, Admin).","This is the additional path used after your base URL to access your store Admin (e.g, Admin)."
-"Enable Charts","Enable Charts"
-"Enable this option if you want to see the charts on your dashboard.","Enable this option if you want to see the charts on your dashboard."
-"Skip Base URL Validation Before the Next Step","Skip Base URL Validation Before the Next Step"
-"Check this box only if it is not possible to automatically validate the Base URL.","Check this box only if it is not possible to automatically validate the Base URL."
-"Use Web Server (Apache) Rewrites","Use Web Server (Apache) Rewrites"
-"You could enable this option to use web server rewrites functionality for improved Search Engine Optimization.","You could enable this option to use web server rewrites functionality for improved Search Engine Optimization."
-"Please make sure that <code>mod_rewrite</code> is enabled in Apache configuration.","Please make sure that <code>mod_rewrite</code> is enabled in Apache configuration."
-"Use Secure URLs (SSL)","Use Secure URLs (SSL)"
-"Enable this option only if you have SSL available.","Enable this option only if you have SSL available."
-"Secure Base URL","Secure Base URL"
-"Provide a complete base URL for SSL connection. For example: %1.","Provide a complete base URL for SSL connection. For example: %1."
-"Run admin interface with SSL","Run admin interface with SSL"
-"Skip Secure URL validation before next step","Skip Secure URL validation before next step"
-"Check this box only if it is not possible to automatically validate Secure URL, for example if HTTP authentication is required.","Check this box only if it is not possible to automatically validate Secure URL, for example if HTTP authentication is required."
-"Session Storage Options","Session Storage Options"
-"Save Session Data In","Save Session Data In"
-"Please set all required settings before clicking ""Continue"".","Please set all required settings before clicking ""Continue""."
-"Create Admin Account","Create Admin Account"
-Username,Username
-"Encryption Key","Encryption Key"
-"Magento uses this key to encrypt passwords, credit cards and more. If you don't fill in this field, we'll create your encryption key and show it to you on the next page.","Magento uses this key to encrypt passwords, credit cards and more. If you don't fill in this field, we'll create your encryption key and show it to you on the next page."
-Connection,Connection
-"Database Connection","Database Connection"
-"Database Type","Database Type"
-Host,Host
-"Database host","Database host"
-"You can specify server port, ex.: localhost:3307<br />If you are not using default UNIX socket, you can specify it here instead of host, ex.: /var/run/mysqld/mysqld.sock","You can specify server port, ex.: localhost:3307<br />If you are not using default UNIX socket, you can specify it here instead of host, ex.: /var/run/mysqld/mysqld.sock"
-"Database Name","Database Name"
-"Database user name","Database user name"
-"Database user password","Database user password"
-"Tables Prefix","Tables Prefix"
-"(Optional. Leave blank for no prefix)","(Optional. Leave blank for no prefix)"
-"All packages were installed. Click 'OK' to continue with installation.","All packages were installed. Click 'OK' to continue with installation."
-"Something went wrong installing the Magento packages. Please read the log, correct any errors and try again.","Something went wrong installing the Magento packages. Please read the log, correct any errors and try again."
-"As another option, you could try the ""Manual Downloads and Upgrades"" method.","As another option, you could try the ""Manual Downloads and Upgrades"" method."
-"Download Magento Core Modules and Updates","Download Magento Core Modules and Updates"
-"Full Download / SVN Installation","Full Download / SVN Installation"
-"If you have downloaded the full package or installed Magento through SVN, you should skip packages installation and validation by clicking the button below.","If you have downloaded the full package or installed Magento through SVN, you should skip packages installation and validation by clicking the button below."
-"Continue Full Download / SVN Installation","Continue Full Download / SVN Installation"
-"Package Management through the Web","Package Management through the Web"
-"If you wish to manage Magento packages through the web admin interface, you will need to have web writeable permissions applied to all Magento folders and files.","If you wish to manage Magento packages through the web admin interface, you will need to have web writeable permissions applied to all Magento folders and files."
-"If your server is running on MS Windows, most probably you will not need to change anything.","If your server is running on MS Windows, most probably you will not need to change anything."
-"If you are running PHP as CGI, your PHP processes may run under the same user as the user you used when uploading Magento files.","If you are running PHP as CGI, your PHP processes may run under the same user as the user you used when uploading Magento files."
-"In other cases you will need to make Magento files writeable for the user that the web server process is running under.","In other cases you will need to make Magento files writeable for the user that the web server process is running under."
-"Preferred stability: %1","Preferred stability: %1"
-"This is the most stable state available for Magento packages.","This is the most stable state available for Magento packages."
-"Choose this if you would like to test storefront and admin functionality.","Choose this if you would like to test storefront and admin functionality."
-"Proceed With Automatic Download (%1)","Proceed With Automatic Download (%1)"
-"If you are a developer and would like to have the latest public updates, choose this option.","If you are a developer and would like to have the latest public updates, choose this option."
-"Please note that it is much less stable than beta.","Please note that it is much less stable than beta."
-"Manual Downloads and Upgrades","Manual Downloads and Upgrades"
-"If you are running the install wizard over a previously downloaded and installed Magento installation, proceed with this method.","If you are running the install wizard over a previously downloaded and installed Magento installation, proceed with this method."
-"If you do not wish or are not able to have Magento folders writeable for the web process, you could use PEAR executable located in the root of Magento installation.","If you do not wish or are not able to have Magento folders writeable for the web process, you could use PEAR executable located in the root of Magento installation."
-"Please note that only UNIX, Linux and Mac OS X shells are currently supported. For Windows use the '%1' option.","Please note that only UNIX, Linux and Mac OS X shells are currently supported. For Windows use the '%1' option."
-"Run this in your shell from Magento root folder:","Run this in your shell from Magento root folder:"
-"Click the button below when the installation is finished.","Click the button below when the installation is finished."
-"Continue After Manual Download","Continue After Manual Download"
-"You're All Set","You're All Set"
-"Get ready to experience Open-Source eCommerce Evolved.","Get ready to experience Open-Source eCommerce Evolved."
-"Before you continue to your store, please make a note of your encryption key (Magento uses it to encrypt passwords, credit cards and more).","Before you continue to your store, please make a note of your encryption key (Magento uses it to encrypt passwords, credit cards and more)."
-"(Make sure you keep it in a safe place.)","(Make sure you keep it in a safe place.)"
-"Go to Frontend","Go to Frontend"
-"Go to Backend","Go to Backend"
-Localization,Localization
-"Locale settings","Locale settings"
-"Magento Installation Wizard","Magento Installation Wizard"
-Magento,Magento
-"Help Us Keep Magento Healthy","Help Us Keep Magento Healthy"
-"Report All Bugs","Report All Bugs"
-"(ver. %1)","(ver. %1)"
-Installation,Installation
-"Having trouble installing Magento?","Having trouble installing Magento?"
-"Check out our","Check out our"
-"Installation Guide","Installation Guide"
-"License Agreement","License Agreement"
-"You're All Set!","You're All Set!"
diff --git a/app/code/Magento/Install/i18n/es_ES.csv b/app/code/Magento/Install/i18n/es_ES.csv
deleted file mode 100644
index 4b5764ed983..00000000000
--- a/app/code/Magento/Install/i18n/es_ES.csv
+++ /dev/null
@@ -1,118 +0,0 @@
-"User Name","Nombre de Usuario"
-"First Name",Nombre
-"Last Name",Apellido
-Email,"Correo electrónico"
-"Password Confirmation","Confirmación de contraseña"
-Configuration,Configuración
-"File System","Sistema de archivos"
-Database,"Base de datos"
-Welcome,Bienvenido
-"Personal Information","Información Personal"
-"User Password","Contraseña de Usuario"
-"Email Address","Dirección de email"
-Password,Contraseña
-"Confirm Password","Confirma Contraseña"
-Continue,Continuar
-Download,Descargar
-"Login Information","Información de registro"
-"Required Fields","Campos obligatorios"
-"Save Session Files In","Guardar archivos de sesión en"
-Locale,"Configuración regional"
-"Time Zone","Zona Horaria"
-"Default Currency","Moneda predeterminada"
-Validation,Validación
-"Magento Connect Manager Deployment","Implementación del administrador de conexión de Magento"
-"Downloading and installing Magento, please wait...","Descargando e instalando Magento. Espere, por favor."
-"Setting preferred state to: %1","Setting preferred state to: %1"
-"The URL ""%1"" is not accessible.","The URL ""%1"" is not accessible."
-"The URL ""%1"" is invalid.","The URL ""%1"" is invalid."
-"Response from the server is invalid.","Response from the server is invalid."
-"PHP Extensions ""%1"" must be loaded.","PHP Extensions ""%1"" must be loaded."
-"The database server version doesn't match system requirements (required: %1, actual: %2).","The database server version doesn't match system requirements (required: %1, actual: %2)."
-"Database server does not support the InnoDB storage engine.","El servidor de la base de datos no es compatible el motor de almacenamiento InnoDB."
-"Something went wrong while connecting to the database.","Something went wrong while connecting to the database."
-"The Database Name field cannot be empty.","The Database Name field cannot be empty."
-"The table prefix should contain only letters (a-z), numbers (0-9) or underscores (_); the first character should be a letter.","The table prefix should contain only letters (a-z), numbers (0-9) or underscores (_); the first character should be a letter."
-"Path ""%1"" must be writable.","Path ""%1"" must be writable."
-"Welcome to Magento's Installation Wizard","Bienvenido al asistente de instalación de Magento"
-"I agree to the above terms and conditions.","Estoy de acuerdo con los términos y las condiciones que se establecen más arriba."
-"Web access options","Opciones de acceso web"
-"Base URL","Dirección URL básica"
-"Admin Path","Ruta de administración"
-"This is the additional path used after your base URL to access your store Admin (e.g, Admin).","This is the additional path used after your base URL to access your store Admin (e.g, Admin)."
-"Enable Charts","Activar gráficos"
-"Enable this option if you want to see the charts on your dashboard.","Enable this option if you want to see the charts on your dashboard."
-"Skip Base URL Validation Before the Next Step","Saltar validación de URL base antes del próximo paso"
-"Check this box only if it is not possible to automatically validate the Base URL.","Marque esta casilla sólo si no es posible validar automáticamente la dirección URL básica."
-"Use Web Server (Apache) Rewrites","Use reescritura de servidor (Apache)"
-"You could enable this option to use web server rewrites functionality for improved Search Engine Optimization.","You could enable this option to use web server rewrites functionality for improved Search Engine Optimization."
-"Please make sure that <code>mod_rewrite</code> is enabled in Apache configuration.","Por favor asegúrese de que <code>mod_rewrite</code> está activado en la configuración de Apache."
-"Use Secure URLs (SSL)","URLs segura (SSL) de usuario"
-"Enable this option only if you have SSL available.","Active esta opción sólo si tiene SSL disponible."
-"Secure Base URL","URL base segura"
-"Provide a complete base URL for SSL connection. For example: %1.","Provide a complete base URL for SSL connection. For example: %1."
-"Run admin interface with SSL","Ejecutar la interfaz de administración con SSL"
-"Skip Secure URL validation before next step","Saltar validación de URL segura antes del próximo paso"
-"Check this box only if it is not possible to automatically validate Secure URL, for example if HTTP authentication is required.","Marque esta casilla sólo si no es posible validar automáticamente las direcciones URL seguras, por ejemplo, si se necesita autenticación HTTP."
-"Session Storage Options","Opciones de almacenaje de sesión"
-"Save Session Data In","Guardar datos de sesión en"
-"Please set all required settings before clicking ""Continue"".","Please set all required settings before clicking ""Continue""."
-"Create Admin Account","Crear cuenta de administración"
-Username,"Nombre de usuario"
-"Encryption Key","Clave de cifrado"
-"Magento uses this key to encrypt passwords, credit cards and more. If you don't fill in this field, we'll create your encryption key and show it to you on the next page.","Magento uses this key to encrypt passwords, credit cards and more. If you don't fill in this field, we'll create your encryption key and show it to you on the next page."
-Connection,Conexión
-"Database Connection","Conexión a la base de datos"
-"Database Type","Tipo de base de datos"
-Host,Host
-"Database host","Host de base de datos"
-"You can specify server port, ex.: localhost:3307<br />If you are not using default UNIX socket, you can specify it here instead of host, ex.: /var/run/mysqld/mysqld.sock","Puedes especificar el puerto de servidor, ej: localhost:3307<br />Si no estás utilizando el socket UNIX predeterminado, puedes especificarlo aquí en vez del host, ej.: /var/run/mysqld/mysqld.sock"
-"Database Name","Nombre de la base de datos"
-"Database user name","Nombre de usuario de la base de datos"
-"Database user password","Contraseña de usuario de la base de datos"
-"Tables Prefix","Prefijo de tablas"
-"(Optional. Leave blank for no prefix)","(Opcional. Déjelo en blanco si no desea agregar un prefijo.)"
-"All packages were installed. Click 'OK' to continue with installation.","All packages were installed. Click 'OK' to continue with installation."
-"Something went wrong installing the Magento packages. Please read the log, correct any errors and try again.","Something went wrong installing the Magento packages. Please read the log, correct any errors and try again."
-"As another option, you could try the ""Manual Downloads and Upgrades"" method.","As another option, you could try the ""Manual Downloads and Upgrades"" method."
-"Download Magento Core Modules and Updates","Descargar los módulos básicos y las actualizaciones de Magento"
-"Full Download / SVN Installation","Descarga completa/instalación de SVN"
-"If you have downloaded the full package or installed Magento through SVN, you should skip packages installation and validation by clicking the button below.","SI ha descargado el paquete completo o ha instalado Magento mediante SVN, debe omitir los pasos de instalación y validación de paquetes haciendo clic en el siguiente botón."
-"Continue Full Download / SVN Installation","Continuar la descarga completa/instalación de SVN"
-"Package Management through the Web","Administración de paquetes a través de la web"
-"If you wish to manage Magento packages through the web admin interface, you will need to have web writeable permissions applied to all Magento folders and files.","SI desea administrar los paquetes de Magento mediante la interfaz de administración web, deberá aplicar permisos de escritura web a todas las carpetas y todos los archivos de Magento."
-"If your server is running on MS Windows, most probably you will not need to change anything.","Si el servidor se ejecuta en MS Windows, es probable que no necesite hacer cambios."
-"If you are running PHP as CGI, your PHP processes may run under the same user as the user you used when uploading Magento files.","Si ejecuta PHP como CGI, sus procesos de PHP pueden ejecutarse con el mismo usuario que utilizó al cargar los archivos de Magento."
-"In other cases you will need to make Magento files writeable for the user that the web server process is running under.","En otros casos, deberá establecer permiso de escritura en los archivos de Magento para el usuario bajo el cual se ejecute el proceso del servidor web."
-"Preferred stability: %1","Preferred stability: %1"
-"This is the most stable state available for Magento packages.","This is the most stable state available for Magento packages."
-"Choose this if you would like to test storefront and admin functionality.","Choose this if you would like to test storefront and admin functionality."
-"Proceed With Automatic Download (%1)","Proceed With Automatic Download (%1)"
-"If you are a developer and would like to have the latest public updates, choose this option.","Si es desarrollador y desea recibir las actualizaciones públicas más reciente, elija esta opción."
-"Please note that it is much less stable than beta.","Por favor tenga en cuenta que es mucho menos estable que beta."
-"Manual Downloads and Upgrades","Descargas manuales y actualizaciones"
-"If you are running the install wizard over a previously downloaded and installed Magento installation, proceed with this method.","Si está ejecutando el asistente de instalación sobre una instalación de Magento descargada e instalada previamente, siga con este método."
-"If you do not wish or are not able to have Magento folders writeable for the web process, you could use PEAR executable located in the root of Magento installation.","Si no puede escribir en las carpetas de Magento para el proceso web, o no desea hacerlo, puede utilizar el ejecutable PEAR ubicado en la raíz de instalación de Magento."
-"Please note that only UNIX, Linux and Mac OS X shells are currently supported. For Windows use the '%1' option.","Please note that only UNIX, Linux and Mac OS X shells are currently supported. For Windows use the '%1' option."
-"Run this in your shell from Magento root folder:","Ejecute esto en su sistema desde la carpeta raíz de Magento:"
-"Click the button below when the installation is finished.","Click the button below when the installation is finished."
-"Continue After Manual Download","Continuar después de la descarga manual"
-"You're All Set","Usted está preparado"
-"Get ready to experience Open-Source eCommerce Evolved.","Prepárese para descubrir la evolución del comercio electrónico de código abierto."
-"Before you continue to your store, please make a note of your encryption key (Magento uses it to encrypt passwords, credit cards and more).","Antes de continuar con su tienda, tome nota de su clave de cifrado (Magento la utiliza para cifrar las contraseñas, las tarjetas de crédito y más)."
-"(Make sure you keep it in a safe place.)","(Asegúrese de guardarlo en un lugar seguro.)"
-"Go to Frontend","Ir a la interfaz del cliente"
-"Go to Backend","Ir al área de administración"
-Localization,Localización
-"Locale settings","Configuración local"
-"Magento Installation Wizard","Asistente de instalación de Magento"
-Magento,Magento
-"Help Us Keep Magento Healthy","Help Us Keep Magento Healthy"
-"Report All Bugs","Informar de todos los errores"
-"(ver. %1)","(ver. %1)"
-Installation,Instalación
-"Having trouble installing Magento?","¿Tiene problemas con la instalación de Magento?"
-"Check out our","Descubra nuestro"
-"Installation Guide","Guía de instalación"
-"License Agreement","Acuerdo de licencia"
-"You're All Set!","Usted está preparado!"
diff --git a/app/code/Magento/Install/i18n/fr_FR.csv b/app/code/Magento/Install/i18n/fr_FR.csv
deleted file mode 100644
index fe1e60d65e9..00000000000
--- a/app/code/Magento/Install/i18n/fr_FR.csv
+++ /dev/null
@@ -1,118 +0,0 @@
-"User Name","Nom d'utilisateur"
-"First Name",Prénom
-"Last Name",Nom
-Email,Email
-"Password Confirmation","Confirmation du mot de passe"
-Configuration,Configuration
-"File System","Système de fichiers"
-Database,"Base de données"
-Welcome,Bienvenue
-"Personal Information","Information personnelle"
-"User Password","Mot de passe utilisateur"
-"Email Address","Adresse email"
-Password,"Mot de passe"
-"Confirm Password","Confirmez le mot de passe"
-Continue,Continuer
-Download,Téléchargement
-"Login Information","Information de connexion"
-"Required Fields","Champs requis"
-"Save Session Files In","Enregistrer les fichiers de la session dans"
-Locale,"Paramètres régionaux"
-"Time Zone","Fuseau horaire"
-"Default Currency","Monnaie par défaut"
-Validation,Validation
-"Magento Connect Manager Deployment","Déploiement du Magento Connect Manager"
-"Downloading and installing Magento, please wait...","Téléchargement et installation de Magento, veuillez patienter ..."
-"Setting preferred state to: %1","Setting preferred state to: %1"
-"The URL ""%1"" is not accessible.","The URL ""%1"" is not accessible."
-"The URL ""%1"" is invalid.","The URL ""%1"" is invalid."
-"Response from the server is invalid.","Response from the server is invalid."
-"PHP Extensions ""%1"" must be loaded.","PHP Extensions ""%1"" must be loaded."
-"The database server version doesn't match system requirements (required: %1, actual: %2).","The database server version doesn't match system requirements (required: %1, actual: %2)."
-"Database server does not support the InnoDB storage engine.","Le serveur de base de données ne prend pas en charge le moteur de stockage InnoDB."
-"Something went wrong while connecting to the database.","Something went wrong while connecting to the database."
-"The Database Name field cannot be empty.","The Database Name field cannot be empty."
-"The table prefix should contain only letters (a-z), numbers (0-9) or underscores (_); the first character should be a letter.","The table prefix should contain only letters (a-z), numbers (0-9) or underscores (_); the first character should be a letter."
-"Path ""%1"" must be writable.","Path ""%1"" must be writable."
-"Welcome to Magento's Installation Wizard","Bienvenue dans l'assistant d'installation Magento"
-"I agree to the above terms and conditions.","Je suis d'accord avec les conditions d'utilisations."
-"Web access options","Options d'accès Internet"
-"Base URL","URL de base"
-"Admin Path","Répertoire administrateur"
-"This is the additional path used after your base URL to access your store Admin (e.g, Admin).","This is the additional path used after your base URL to access your store Admin (e.g, Admin)."
-"Enable Charts","Activer les graphiques"
-"Enable this option if you want to see the charts on your dashboard.","Enable this option if you want to see the charts on your dashboard."
-"Skip Base URL Validation Before the Next Step","Sauter la validation de l'URL de base avant l'étape suivante."
-"Check this box only if it is not possible to automatically validate the Base URL.","Cochez cette case uniquement s'il n'est pas possible de valider automatiquement l'URL de base."
-"Use Web Server (Apache) Rewrites","Utiliser les réécritures du serveur web (Apache)"
-"You could enable this option to use web server rewrites functionality for improved Search Engine Optimization.","You could enable this option to use web server rewrites functionality for improved Search Engine Optimization."
-"Please make sure that <code>mod_rewrite</code> is enabled in Apache configuration.","Veuillez vous assurer que <code>mod_rewrite</code> est activé dans la configuration Apache."
-"Use Secure URLs (SSL)","Utiliser des URLs sécurisées (SSL)"
-"Enable this option only if you have SSL available.","Choisissez cette option si seul le SSL est disponible."
-"Secure Base URL","Base d'url sécurisée"
-"Provide a complete base URL for SSL connection. For example: %1.","Provide a complete base URL for SSL connection. For example: %1."
-"Run admin interface with SSL","Exécuter l'interface admin avec SSL"
-"Skip Secure URL validation before next step","Passer la validation d'URL sécurisée avant la prochaine étape"
-"Check this box only if it is not possible to automatically validate Secure URL, for example if HTTP authentication is required.","Cochez cette case uniquement s'il n'est pas possible de valider automatiquement l'URL sécurisée, par exemple si une authentification HTTP est nécessaire."
-"Session Storage Options","Option de stockage de la session"
-"Save Session Data In","Enregistrer les données de la session dans"
-"Please set all required settings before clicking ""Continue"".","Please set all required settings before clicking ""Continue""."
-"Create Admin Account","Créer un compte administrateur"
-Username,"Nom d'utilisateur"
-"Encryption Key","Clé d'encryptage"
-"Magento uses this key to encrypt passwords, credit cards and more. If you don't fill in this field, we'll create your encryption key and show it to you on the next page.","Magento uses this key to encrypt passwords, credit cards and more. If you don't fill in this field, we'll create your encryption key and show it to you on the next page."
-Connection,Connexion
-"Database Connection","Connexion à la base de données"
-"Database Type","Type de base de données"
-Host,Hôte
-"Database host","Hébergeur de la base de données"
-"You can specify server port, ex.: localhost:3307<br />If you are not using default UNIX socket, you can specify it here instead of host, ex.: /var/run/mysqld/mysqld.sock","Vous pouvez spécifier un port de serveur, par exemple : localhost:3307<br />Si vous n'utilisez pas de socket UNIX par défaut, vous pouvez le préciser ici à la place de l'hôte, par exemple : /var/run/mysqld/mysqld.sock"
-"Database Name","Nom de la base de données"
-"Database user name","Nom d'utilisateur de la base de données"
-"Database user password","Mot de passe utilisateur de la base de données"
-"Tables Prefix","Préfixe de tables"
-"(Optional. Leave blank for no prefix)","(Optionnel. Laissez vide s'il n'y a pas de préfixe)"
-"All packages were installed. Click 'OK' to continue with installation.","All packages were installed. Click 'OK' to continue with installation."
-"Something went wrong installing the Magento packages. Please read the log, correct any errors and try again.","Something went wrong installing the Magento packages. Please read the log, correct any errors and try again."
-"As another option, you could try the ""Manual Downloads and Upgrades"" method.","As another option, you could try the ""Manual Downloads and Upgrades"" method."
-"Download Magento Core Modules and Updates","Télécharger les modules de base de Magento ainsi que les mises à jour"
-"Full Download / SVN Installation","Téléchargement complet / Installation d'SVN"
-"If you have downloaded the full package or installed Magento through SVN, you should skip packages installation and validation by clicking the button below.","Si vous avez installé l'ensemble des logiciels ou installé Magento via SVN, vous devriez sauter l'installation et la validation des librairies en cliquant le bouton ci-dessous."
-"Continue Full Download / SVN Installation","Continuer le téléchargement complet / l'installation d'SVN"
-"Package Management through the Web","Gestion de paquet via le web"
-"If you wish to manage Magento packages through the web admin interface, you will need to have web writeable permissions applied to all Magento folders and files.","Si vous souhaitez gérer les fichiers de Magento via l'interface web, vous aurez besoin d'avoir les permissions d'écritures web appliquées à tous les dossiers et fichiers Magento."
-"If your server is running on MS Windows, most probably you will not need to change anything.","Si votre serveur utilise MS Windows, vous n'aurez probablement pas besoin de changer quoique ce soit."
-"If you are running PHP as CGI, your PHP processes may run under the same user as the user you used when uploading Magento files.","Si vous utilisez PHP comme CGI, votre processus PHP doit utiliser le même nom d'utilisateur que pour l'envoi des fichiers Magento."
-"In other cases you will need to make Magento files writeable for the user that the web server process is running under.","Sinon vous aurez à rendre les fichiers Magento accessibles en écriture pour l'utilisateur sous lequel le processus web tourne."
-"Preferred stability: %1","Preferred stability: %1"
-"This is the most stable state available for Magento packages.","This is the most stable state available for Magento packages."
-"Choose this if you would like to test storefront and admin functionality.","Choose this if you would like to test storefront and admin functionality."
-"Proceed With Automatic Download (%1)","Proceed With Automatic Download (%1)"
-"If you are a developer and would like to have the latest public updates, choose this option.","Si vous êtes un développeur et que vous aimeriez bénéficier des dernières mises à jour disponibles, choisissez cette option."
-"Please note that it is much less stable than beta.","Veuillez noter que ceci est bien moins stable qu'une beta."
-"Manual Downloads and Upgrades","Téléchargement de mode d'emploi et mises à niveau"
-"If you are running the install wizard over a previously downloaded and installed Magento installation, proceed with this method.","Si vous lancez une installation alors qu'une autre version de Magento est déjà installée, continuez avec cette méthode."
-"If you do not wish or are not able to have Magento folders writeable for the web process, you could use PEAR executable located in the root of Magento installation.","Si vous ne souhaitez pas ou ne pouvez pas rendre les dossiers de Magento accessibles en écriture pour le processus web, vous pouvez utiliser l'exécutable PEAR situé à la racine de l'installation Magento."
-"Please note that only UNIX, Linux and Mac OS X shells are currently supported. For Windows use the '%1' option.","Please note that only UNIX, Linux and Mac OS X shells are currently supported. For Windows use the '%1' option."
-"Run this in your shell from Magento root folder:","Exécuter ceci dans votre shell depuis le dossier racine de Magento :"
-"Click the button below when the installation is finished.","Click the button below when the installation is finished."
-"Continue After Manual Download","Continuer après le téléchargement manuel"
-"You're All Set","Vous êtes prêt"
-"Get ready to experience Open-Source eCommerce Evolved.","Préparez-vous à découvrir le commerce électronique open-source évolué."
-"Before you continue to your store, please make a note of your encryption key (Magento uses it to encrypt passwords, credit cards and more).","Avant de continuer vers notre boutique, veuillez noter votre clé encryptage (Magento l'utilise pour encrypter les mots de passe, cartes crédit, etc.)"
-"(Make sure you keep it in a safe place.)","(Assurez-vous que vous le conservez dans un lieu sûr.)"
-"Go to Frontend","Allez à l'interface visuel"
-"Go to Backend","Allez à la partie technique"
-Localization,"Paramètres régionaux"
-"Locale settings","Réglages des paramètres régionaux"
-"Magento Installation Wizard","Assistant d'installation Magento"
-Magento,Magento
-"Help Us Keep Magento Healthy","Help Us Keep Magento Healthy"
-"Report All Bugs","Rapporter tous les bugs"
-"(ver. %1)","(ver. %1)"
-Installation,Installation
-"Having trouble installing Magento?","Problèmes d'installation de Magento ?"
-"Check out our","Paiement ou"
-"Installation Guide","Guide d'installation"
-"License Agreement","Accord de license"
-"You're All Set!","Vous êtes prêt !"
diff --git a/app/code/Magento/Install/i18n/nl_NL.csv b/app/code/Magento/Install/i18n/nl_NL.csv
deleted file mode 100644
index 8a888274742..00000000000
--- a/app/code/Magento/Install/i18n/nl_NL.csv
+++ /dev/null
@@ -1,118 +0,0 @@
-"User Name",Gebruikersnaam
-"First Name",Voornaam
-"Last Name",Achternaam
-Email,Email
-"Password Confirmation","Wachtwoord Confirmatie"
-Configuration,Configuratie
-"File System","Bestanden Systeem"
-Database,Database
-Welcome,Welkom
-"Personal Information","Persoonlijke Informatie"
-"User Password",Gebruikerswachtwoord
-"Email Address",e-mailadres
-Password,Wachtwoord
-"Confirm Password","Bevestig wachtwoord"
-Continue,Doorgaan
-Download,Download
-"Login Information","Log in Gegevens"
-"Required Fields","Benodigde Velden"
-"Save Session Files In","Sla Sessie Bestanden Op In"
-Locale,Lokaal
-"Time Zone",Tijdszone
-"Default Currency","Standaard Currency"
-Validation,Validatie
-"Magento Connect Manager Deployment","Magento Connect Manager Deployment"
-"Downloading and installing Magento, please wait...","Magento aan het downloaden en installeren, wachten aub..."
-"Setting preferred state to: %1","Setting preferred state to: %1"
-"The URL ""%1"" is not accessible.","The URL ""%1"" is not accessible."
-"The URL ""%1"" is invalid.","The URL ""%1"" is invalid."
-"Response from the server is invalid.","Response from the server is invalid."
-"PHP Extensions ""%1"" must be loaded.","PHP Extensions ""%1"" must be loaded."
-"The database server version doesn't match system requirements (required: %1, actual: %2).","The database server version doesn't match system requirements (required: %1, actual: %2)."
-"Database server does not support the InnoDB storage engine.","Database-server ondersteunt de InnoDB opslag engine niet."
-"Something went wrong while connecting to the database.","Something went wrong while connecting to the database."
-"The Database Name field cannot be empty.","The Database Name field cannot be empty."
-"The table prefix should contain only letters (a-z), numbers (0-9) or underscores (_); the first character should be a letter.","The table prefix should contain only letters (a-z), numbers (0-9) or underscores (_); the first character should be a letter."
-"Path ""%1"" must be writable.","Path ""%1"" must be writable."
-"Welcome to Magento's Installation Wizard","Welkom bij Magento's Installatiewizard"
-"I agree to the above terms and conditions.","Ik accepteer de bovenstaande voorwaarden en condities."
-"Web access options",Webtoegangsopties
-"Base URL","Basis URL"
-"Admin Path","Admin Pad"
-"This is the additional path used after your base URL to access your store Admin (e.g, Admin).","This is the additional path used after your base URL to access your store Admin (e.g, Admin)."
-"Enable Charts","Charts instellen"
-"Enable this option if you want to see the charts on your dashboard.","Enable this option if you want to see the charts on your dashboard."
-"Skip Base URL Validation Before the Next Step","Sla Basis-URL Validatie Over Voor de Volgende Stap"
-"Check this box only if it is not possible to automatically validate the Base URL.","Bekijk dit vakje alleen als het niet lukt om automatisch Base URL te valideren."
-"Use Web Server (Apache) Rewrites","Gebruik Web Server (Apache) Herschrijvingen"
-"You could enable this option to use web server rewrites functionality for improved Search Engine Optimization.","You could enable this option to use web server rewrites functionality for improved Search Engine Optimization."
-"Please make sure that <code>mod_rewrite</code> is enabled in Apache configuration.","Controleer of <code>mod_rewrite</code> is ingeschakeld in uw Apache configuratie."
-"Use Secure URLs (SSL)","Gebruik Beveiligde URL's (SSL)"
-"Enable this option only if you have SSL available.","Schakel deze optie alleen in als je SSL geschikbaar hebt."
-"Secure Base URL","Veilige Basis URL"
-"Provide a complete base URL for SSL connection. For example: %1.","Provide a complete base URL for SSL connection. For example: %1."
-"Run admin interface with SSL","Start administratie bedieningspaneel met SSL"
-"Skip Secure URL validation before next step","Sla Beveiligde URL validatie over voor volgende stap"
-"Check this box only if it is not possible to automatically validate Secure URL, for example if HTTP authentication is required.","Bekijk dit vakje alleen als het niet lukt om automatisch Secure URL te valideren, bijvoorbeeld als HTTP verificatie vereist is."
-"Session Storage Options","Sessie Opslag Opties"
-"Save Session Data In","Sla Sessie Data Op In"
-"Please set all required settings before clicking ""Continue"".","Please set all required settings before clicking ""Continue""."
-"Create Admin Account","Creëer Admin Account"
-Username,Gebruikersnaam
-"Encryption Key","Versleutel Key"
-"Magento uses this key to encrypt passwords, credit cards and more. If you don't fill in this field, we'll create your encryption key and show it to you on the next page.","Magento uses this key to encrypt passwords, credit cards and more. If you don't fill in this field, we'll create your encryption key and show it to you on the next page."
-Connection,Verbinding
-"Database Connection","Database Verbinding"
-"Database Type","Database Type"
-Host,Host
-"Database host","Database host"
-"You can specify server port, ex.: localhost:3307<br />If you are not using default UNIX socket, you can specify it here instead of host, ex.: /var/run/mysqld/mysqld.sock","U kunt een serverpoort specificeren, bv.: localhost:3307<br />Als u niet de standaard UNIX-socket gebruikt, kunt u deze hier specificeren in plaats van host, bv.: /var/run/mysqld/mysqld.sock"
-"Database Name","Naam Database"
-"Database user name","Database gebruikersnaam"
-"Database user password","Database gebruikerswachtwoord"
-"Tables Prefix","Tabellen Voorvoegsel"
-"(Optional. Leave blank for no prefix)","(Optioneel. Laat leeg als er geen prefix is)"
-"All packages were installed. Click 'OK' to continue with installation.","All packages were installed. Click 'OK' to continue with installation."
-"Something went wrong installing the Magento packages. Please read the log, correct any errors and try again.","Something went wrong installing the Magento packages. Please read the log, correct any errors and try again."
-"As another option, you could try the ""Manual Downloads and Upgrades"" method.","As another option, you could try the ""Manual Downloads and Upgrades"" method."
-"Download Magento Core Modules and Updates","Download Magento Core Modules en Updates"
-"Full Download / SVN Installation","Volledige Download / SVN installatie"
-"If you have downloaded the full package or installed Magento through SVN, you should skip packages installation and validation by clicking the button below.","Als u het volledige pakket heeft gedownload, of Magento via SVN heeft geïnstalleerd, dan kan u het beste de pakket installatie en verificatie voorbij gaan door op de knop hieronder te klikken."
-"Continue Full Download / SVN Installation","Ga door Met Volledige Download / SVN Installatie"
-"Package Management through the Web","Pakket Management door het Web"
-"If you wish to manage Magento packages through the web admin interface, you will need to have web writeable permissions applied to all Magento folders and files.","Als u het liefste de Magento pakketten met het web administratie bedieningspaneel wilt beheren, moeten alle Magento folders en bestanden web beschrijfbare toestemming hebben."
-"If your server is running on MS Windows, most probably you will not need to change anything.","Als uw server MS Windows gebruikt hoeft u waarschijnlijk niks te veranderen."
-"If you are running PHP as CGI, your PHP processes may run under the same user as the user you used when uploading Magento files.","Indien u PHP gebruikt als CGI, dan kunt u uw PHP processen onder dezelfde gebruiker uitvoeren als de gebruiker die u heeft gebruikt voor uw Magento bestanden."
-"In other cases you will need to make Magento files writeable for the user that the web server process is running under.","In andere gevallen zult u de Magento bestanden beschrijfbare toestemming moeten geven voor de gebruiker waaronder het web proces draait."
-"Preferred stability: %1","Preferred stability: %1"
-"This is the most stable state available for Magento packages.","This is the most stable state available for Magento packages."
-"Choose this if you would like to test storefront and admin functionality.","Choose this if you would like to test storefront and admin functionality."
-"Proceed With Automatic Download (%1)","Proceed With Automatic Download (%1)"
-"If you are a developer and would like to have the latest public updates, choose this option.","Kies deze optie indien u een ontwikkelaar bent en de laatste updates wilt ontvangen."
-"Please note that it is much less stable than beta.","Houd er rekening mee dat het veel minder stabiel is dan beta."
-"Manual Downloads and Upgrades","Handmatig Downloaden en Upgraden"
-"If you are running the install wizard over a previously downloaded and installed Magento installation, proceed with this method.","Indien u de installatiewizard over een oudere Magento versie laat installeren, moet u deze methode gebruiken."
-"If you do not wish or are not able to have Magento folders writeable for the web process, you could use PEAR executable located in the root of Magento installation.","Indien u uw Magento folders niet beschrijfbaar wilt, of kunt maken voor het webproces, dan kunt u het PEAR bestand gelocaliseerd in de root van de Magento installatie gebruiken."
-"Please note that only UNIX, Linux and Mac OS X shells are currently supported. For Windows use the '%1' option.","Please note that only UNIX, Linux and Mac OS X shells are currently supported. For Windows use the '%1' option."
-"Run this in your shell from Magento root folder:","Voer dit in uw shell van uw Magento root folder uit:"
-"Click the button below when the installation is finished.","Click the button below when the installation is finished."
-"Continue After Manual Download","Ga door Na Handmatige Download"
-"You're All Set","U Bent Klaar"
-"Get ready to experience Open-Source eCommerce Evolved.","Maak je klaar om de nieuwe versie Open-Source eCommerce te ervaren."
-"Before you continue to your store, please make a note of your encryption key (Magento uses it to encrypt passwords, credit cards and more).","Voor u doorgaat met opslaan, maak a.u.b. een notitie van uw versleutelingscode (Magento gebruikt het om wachtwoorden, creditcards en meer te versleutelen)."
-"(Make sure you keep it in a safe place.)","(Zorg ervoor dat u het op een veilige plaats bewaard)"
-"Go to Frontend","Ga naar Frontend"
-"Go to Backend","Ga naar Backend"
-Localization,Lokalisatie
-"Locale settings","Lokale instellingen"
-"Magento Installation Wizard","Magento Installatiewizard"
-Magento,Magento
-"Help Us Keep Magento Healthy","Help Us Keep Magento Healthy"
-"Report All Bugs","Rapporteer Alle Bugs"
-"(ver. %1)","(ver. %1)"
-Installation,Installatie
-"Having trouble installing Magento?","Moeilijkheden met het installeren van Magento?"
-"Check out our","Bekijk onze"
-"Installation Guide","Installatie Handleiding"
-"License Agreement",Licentie-overeenkomst
-"You're All Set!","U Bent Klaar!"
diff --git a/app/code/Magento/Install/i18n/pt_BR.csv b/app/code/Magento/Install/i18n/pt_BR.csv
deleted file mode 100644
index 42e2fbc84f9..00000000000
--- a/app/code/Magento/Install/i18n/pt_BR.csv
+++ /dev/null
@@ -1,118 +0,0 @@
-"User Name","Nome do Usuário"
-"First Name","Primeiro nome"
-"Last Name","Último nome"
-Email,E-mail
-"Password Confirmation","Confirmação de Senha"
-Configuration,Configuração
-"File System","Arquivo de Sistema"
-Database,"Base de Dados"
-Welcome,"Bem Vindo"
-"Personal Information","Informações pessoais"
-"User Password","Senha do Usuário"
-"Email Address","Endereço de e-mail"
-Password,Senha
-"Confirm Password","Confirmar a senha"
-Continue,Continue
-Download,Baixar
-"Login Information","Informações de login"
-"Required Fields","Campos Obrigatórios"
-"Save Session Files In","Salve Arquivos de Sessão Em"
-Locale,Locale
-"Time Zone","Fuso Horário"
-"Default Currency","Moeda Padrão"
-Validation,Validação
-"Magento Connect Manager Deployment","Implementação do Gerenciador de Conexão Magento"
-"Downloading and installing Magento, please wait...","Baixando e instalando o Magento, por favor, espere..."
-"Setting preferred state to: %1","Setting preferred state to: %1"
-"The URL ""%1"" is not accessible.","The URL ""%1"" is not accessible."
-"The URL ""%1"" is invalid.","The URL ""%1"" is invalid."
-"Response from the server is invalid.","Response from the server is invalid."
-"PHP Extensions ""%1"" must be loaded.","PHP Extensions ""%1"" must be loaded."
-"The database server version doesn't match system requirements (required: %1, actual: %2).","The database server version doesn't match system requirements (required: %1, actual: %2)."
-"Database server does not support the InnoDB storage engine.","O servidor do banco de dados não suporta o mecanismo de armazenamento InnoDB."
-"Something went wrong while connecting to the database.","Something went wrong while connecting to the database."
-"The Database Name field cannot be empty.","The Database Name field cannot be empty."
-"The table prefix should contain only letters (a-z), numbers (0-9) or underscores (_); the first character should be a letter.","The table prefix should contain only letters (a-z), numbers (0-9) or underscores (_); the first character should be a letter."
-"Path ""%1"" must be writable.","Path ""%1"" must be writable."
-"Welcome to Magento's Installation Wizard","Bem-vindo ao Assistente de Instalação do Magento"
-"I agree to the above terms and conditions.","Eu concordo com os termos e condições acima."
-"Web access options","Opções de acesso web"
-"Base URL","URL Base"
-"Admin Path","Caminho Administrativo"
-"This is the additional path used after your base URL to access your store Admin (e.g, Admin).","This is the additional path used after your base URL to access your store Admin (e.g, Admin)."
-"Enable Charts","Habilitar Gráficos"
-"Enable this option if you want to see the charts on your dashboard.","Enable this option if you want to see the charts on your dashboard."
-"Skip Base URL Validation Before the Next Step","Pular Validação URL Base Antes do Próximo Passo"
-"Check this box only if it is not possible to automatically validate the Base URL.","Marque esta caixa apenas se não é possível validar automaticamente o URL Base."
-"Use Web Server (Apache) Rewrites","Use Servidor Web (Apache) Reescrito"
-"You could enable this option to use web server rewrites functionality for improved Search Engine Optimization.","You could enable this option to use web server rewrites functionality for improved Search Engine Optimization."
-"Please make sure that <code>mod_rewrite</code> is enabled in Apache configuration.","Por favor, certifique-se que <code>mod_rewrite</code> está ativado na configuração Apache."
-"Use Secure URLs (SSL)","Use URLs (SSL) Seguros"
-"Enable this option only if you have SSL available.","Habilite esta opção se tiver SSL disponível."
-"Secure Base URL","URL Base Segura"
-"Provide a complete base URL for SSL connection. For example: %1.","Provide a complete base URL for SSL connection. For example: %1."
-"Run admin interface with SSL","Execute a interface de administração com SSL"
-"Skip Secure URL validation before next step","Pular Validação URL Segura antes do Próximo Passo"
-"Check this box only if it is not possible to automatically validate Secure URL, for example if HTTP authentication is required.","Marque esta caixa apenas se não é possível validar automaticamente o URL Seguro, por exemplo se a autenticação HTTP é necessária."
-"Session Storage Options","Opções de Armazenamento de Sessão"
-"Save Session Data In","Salve Dados de Sessão Em"
-"Please set all required settings before clicking ""Continue"".","Please set all required settings before clicking ""Continue""."
-"Create Admin Account","Crie uma Conta de Administrador"
-Username,"Nome do usuário"
-"Encryption Key","Chave criptografada."
-"Magento uses this key to encrypt passwords, credit cards and more. If you don't fill in this field, we'll create your encryption key and show it to you on the next page.","Magento uses this key to encrypt passwords, credit cards and more. If you don't fill in this field, we'll create your encryption key and show it to you on the next page."
-Connection,Conexão
-"Database Connection","Conexão de Base de Dados"
-"Database Type","Tipo de Banco de Dados"
-Host,Anfitrião
-"Database host","Servidor de banco de dados"
-"You can specify server port, ex.: localhost:3307<br />If you are not using default UNIX socket, you can specify it here instead of host, ex.: /var/run/mysqld/mysqld.sock","Você pode especificar a porta do servidor, ex.: localhost:3307<br />Se você não estiver usando o socket UNIX predefinido, você pode especificá-lo aqui em vez do host, ex.: /var/run/mysqld/mysqld.sock"
-"Database Name","Nome da Base de Dados"
-"Database user name","Nome de usuário do banco de dados"
-"Database user password","Senha de usuário do banco de dados"
-"Tables Prefix","Prefixo das Tabelas"
-"(Optional. Leave blank for no prefix)","(Opcional. Deixe em branco para nenhum prefixo)"
-"All packages were installed. Click 'OK' to continue with installation.","All packages were installed. Click 'OK' to continue with installation."
-"Something went wrong installing the Magento packages. Please read the log, correct any errors and try again.","Something went wrong installing the Magento packages. Please read the log, correct any errors and try again."
-"As another option, you could try the ""Manual Downloads and Upgrades"" method.","As another option, you could try the ""Manual Downloads and Upgrades"" method."
-"Download Magento Core Modules and Updates","Download de atualizações e módulos centrais do Magento"
-"Full Download / SVN Installation","Download Completo / Instalação do SVN"
-"If you have downloaded the full package or installed Magento through SVN, you should skip packages installation and validation by clicking the button below.","Se você tiver baixado o pacote completo ou instalado Magento através de SVN, você deve pular pacotes de instalação e validação clicando no botão abaixo."
-"Continue Full Download / SVN Installation","Continue a Baixar Tudo/Instalação SVN"
-"Package Management through the Web","Gerenciamento de Pacotes através da Web"
-"If you wish to manage Magento packages through the web admin interface, you will need to have web writeable permissions applied to all Magento folders and files.","Se você deseja gerenciar pacotes Magento através da interface de administração web, você precisará ter permissões web graváveis aplicadas a todas as pastas e arquivos Magento."
-"If your server is running on MS Windows, most probably you will not need to change anything.","Se o servidor estiver correndo em MS Windows, muito provavelmente você não vai precisar mudar nada."
-"If you are running PHP as CGI, your PHP processes may run under the same user as the user you used when uploading Magento files.","Se você estiver executando o PHP como CGI, seus processos PHP podem ser executados sob o mesmo usuário como o usuário que você usou ao fazer o carregamento de arquivos Magento."
-"In other cases you will need to make Magento files writeable for the user that the web server process is running under.","Em outros casos, você vai precisar fazer arquivos Magento graváveis para o usuário em que o processo do servidor web está em execução."
-"Preferred stability: %1","Preferred stability: %1"
-"This is the most stable state available for Magento packages.","This is the most stable state available for Magento packages."
-"Choose this if you would like to test storefront and admin functionality.","Choose this if you would like to test storefront and admin functionality."
-"Proceed With Automatic Download (%1)","Proceed With Automatic Download (%1)"
-"If you are a developer and would like to have the latest public updates, choose this option.","Se você é um desenvolvedor e gostaria de ter as últimas atualizações públicas, escolha esta opção."
-"Please note that it is much less stable than beta.","Por favor note que é muito menos estável do que o beta."
-"Manual Downloads and Upgrades","Transferências de Manual e Atualizações"
-"If you are running the install wizard over a previously downloaded and installed Magento installation, proceed with this method.","Se você estiver executando o assistente de instalação sobre uma instalação anteriormente baixada e instalada de Magento, prossiga com este método."
-"If you do not wish or are not able to have Magento folders writeable for the web process, you could use PEAR executable located in the root of Magento installation.","Se você não quiser ou não for capaz de ter pastas Magento graváveis para o processo web, você poderia usar PEAR executável localizado na raiz da instalação do Magento."
-"Please note that only UNIX, Linux and Mac OS X shells are currently supported. For Windows use the '%1' option.","Please note that only UNIX, Linux and Mac OS X shells are currently supported. For Windows use the '%1' option."
-"Run this in your shell from Magento root folder:","Execute isto em seu sistema operativo a partir da pasta raiz Magento:"
-"Click the button below when the installation is finished.","Click the button below when the installation is finished."
-"Continue After Manual Download","Continue Depois de Baixar Manualmente"
-"You're All Set","Você Está Pronto"
-"Get ready to experience Open-Source eCommerce Evolved.","Prepare-se para experimentar o Open-Source eCommerce Evolved."
-"Before you continue to your store, please make a note of your encryption key (Magento uses it to encrypt passwords, credit cards and more).","Antes de continuar para sua loja, por favor, anote sua chave criptografada (Magento a utiliza para criptografar senhas, cartões de crédito e mais)."
-"(Make sure you keep it in a safe place.)","(Certifique-se de o manter em um local seguro.)"
-"Go to Frontend","Ir para o Frontend"
-"Go to Backend","Ir para o Backend"
-Localization,Localização
-"Locale settings","Configurações locais"
-"Magento Installation Wizard","Assistente de Instalação Magento"
-Magento,Magento
-"Help Us Keep Magento Healthy","Help Us Keep Magento Healthy"
-"Report All Bugs","Reporte Todos os Erros"
-"(ver. %1)","(ver. %1)"
-Installation,Instalação
-"Having trouble installing Magento?","Tendo problemas na instalação do Magento?"
-"Check out our","Confira nosso"
-"Installation Guide","Guia de Instalação"
-"License Agreement","Contrato de Licença"
-"You're All Set!","Você Está Pronto!"
diff --git a/app/code/Magento/Install/i18n/zh_CN.csv b/app/code/Magento/Install/i18n/zh_CN.csv
deleted file mode 100644
index 083c1904003..00000000000
--- a/app/code/Magento/Install/i18n/zh_CN.csv
+++ /dev/null
@@ -1,118 +0,0 @@
-"User Name",用户名
-"First Name",名字
-"Last Name",姓氏
-Email,电子邮件
-"Password Confirmation",密码确认
-Configuration,配置
-"File System",文件系统
-Database,数据库
-Welcome,欢迎
-"Personal Information",个人信息
-"User Password",用户密码
-"Email Address",编辑电子邮件地址
-Password,密码
-"Confirm Password",确认密码
-Continue,ç»§ç»­
-Download,下载
-"Login Information",登录信息
-"Required Fields",必须的字段
-"Save Session Files In",保存会话文件至
-Locale,区域
-"Time Zone",时区
-"Default Currency",默认货币
-Validation,验证
-"Magento Connect Manager Deployment",Magento内容管理器部署
-"Downloading and installing Magento, please wait...",正在下载和安装Magento,请稍候...
-"Setting preferred state to: %1","Setting preferred state to: %1"
-"The URL ""%1"" is not accessible.","The URL ""%1"" is not accessible."
-"The URL ""%1"" is invalid.","The URL ""%1"" is invalid."
-"Response from the server is invalid.","Response from the server is invalid."
-"PHP Extensions ""%1"" must be loaded.","PHP Extensions ""%1"" must be loaded."
-"The database server version doesn't match system requirements (required: %1, actual: %2).","The database server version doesn't match system requirements (required: %1, actual: %2)."
-"Database server does not support the InnoDB storage engine.","数据库服务器不支持 InnoDB 存储引擎。"
-"Something went wrong while connecting to the database.","Something went wrong while connecting to the database."
-"The Database Name field cannot be empty.","The Database Name field cannot be empty."
-"The table prefix should contain only letters (a-z), numbers (0-9) or underscores (_); the first character should be a letter.","The table prefix should contain only letters (a-z), numbers (0-9) or underscores (_); the first character should be a letter."
-"Path ""%1"" must be writable.","Path ""%1"" must be writable."
-"Welcome to Magento's Installation Wizard",欢迎使用Magento安装向导
-"I agree to the above terms and conditions.",我同意上述合约和条款。
-"Web access options",Web访问选项
-"Base URL",备份URL
-"Admin Path",管理路径
-"This is the additional path used after your base URL to access your store Admin (e.g, Admin).","This is the additional path used after your base URL to access your store Admin (e.g, Admin)."
-"Enable Charts",启用图表
-"Enable this option if you want to see the charts on your dashboard.","Enable this option if you want to see the charts on your dashboard."
-"Skip Base URL Validation Before the Next Step",在开始下一步之前跳过基本URL验证
-"Check this box only if it is not possible to automatically validate the Base URL.",如果不能自动验证基本URL,就选中该选项。
-"Use Web Server (Apache) Rewrites",使用Web服务器(Apache)重写
-"You could enable this option to use web server rewrites functionality for improved Search Engine Optimization.","You could enable this option to use web server rewrites functionality for improved Search Engine Optimization."
-"Please make sure that <code>mod_rewrite</code> is enabled in Apache configuration.",请确保在Apache配置中启用了<code>mod_rewrite</code>。
-"Use Secure URLs (SSL)",使用安全URL(SSL)
-"Enable this option only if you have SSL available.",如果您可以使用SSL,就选中该选项。
-"Secure Base URL",安全基本URL
-"Provide a complete base URL for SSL connection. For example: %1.","Provide a complete base URL for SSL connection. For example: %1."
-"Run admin interface with SSL",使用SSL运行管理界面。
-"Skip Secure URL validation before next step",在开始下一步之前跳过安全URL验证
-"Check this box only if it is not possible to automatically validate Secure URL, for example if HTTP authentication is required.",如果不能自动验证安全URL,例如如果需要HTTP验证,就请选择该选项。
-"Session Storage Options",会话存储选项
-"Save Session Data In",保存会话数据至
-"Please set all required settings before clicking ""Continue"".","Please set all required settings before clicking ""Continue""."
-"Create Admin Account",创建管理帐户
-Username,用户名
-"Encryption Key",加密密钥
-"Magento uses this key to encrypt passwords, credit cards and more. If you don't fill in this field, we'll create your encryption key and show it to you on the next page.","Magento uses this key to encrypt passwords, credit cards and more. If you don't fill in this field, we'll create your encryption key and show it to you on the next page."
-Connection,连接
-"Database Connection",数据库连接
-"Database Type",数据库类型
-Host,主机
-"Database host",数据库主机
-"You can specify server port, ex.: localhost:3307<br />If you are not using default UNIX socket, you can specify it here instead of host, ex.: /var/run/mysqld/mysqld.sock","您可以指定服务器端口,例如: localhost:3307<br />如果没有使用默认的UNIX socket,则可以在此指定,而不用在主机中指定,例如: /var/run/mysqld/mysqld.sock"
-"Database Name",数据库名称
-"Database user name",数据库用户名
-"Database user password",数据库用户密码
-"Tables Prefix",表格前缀
-"(Optional. Leave blank for no prefix)",(可选,留空即可不使用前缀。)
-"All packages were installed. Click 'OK' to continue with installation.","All packages were installed. Click 'OK' to continue with installation."
-"Something went wrong installing the Magento packages. Please read the log, correct any errors and try again.","Something went wrong installing the Magento packages. Please read the log, correct any errors and try again."
-"As another option, you could try the ""Manual Downloads and Upgrades"" method.","As another option, you could try the ""Manual Downloads and Upgrades"" method."
-"Download Magento Core Modules and Updates",下载Magento核心模块和更新
-"Full Download / SVN Installation",完整下载/SVN安装
-"If you have downloaded the full package or installed Magento through SVN, you should skip packages installation and validation by clicking the button below.",如果您下载了完整版,或通过SVN安装Magento,则应点击下列按钮跳过包安装操作和验证过程。
-"Continue Full Download / SVN Installation",继续完整下载/SVN安装
-"Package Management through the Web",通过Web进行包管理
-"If you wish to manage Magento packages through the web admin interface, you will need to have web writeable permissions applied to all Magento folders and files.",如果希望通过Web管理界面管理Magento包,则需要为所有Magento文件夹和文件应用可写权限。
-"If your server is running on MS Windows, most probably you will not need to change anything.",如果您的服务器运行了微软Windows,则不需要修改任何内容。
-"If you are running PHP as CGI, your PHP processes may run under the same user as the user you used when uploading Magento files.",如果您将PHP作为CGI运行,您PHP的处理使用的身份应与上传Magento文件所用的用户身份相同。
-"In other cases you will need to make Magento files writeable for the user that the web server process is running under.",其他情况下,您依然需要为服务器上运行Web服务的用户提供Magento文件的写权限。
-"Preferred stability: %1","Preferred stability: %1"
-"This is the most stable state available for Magento packages.","This is the most stable state available for Magento packages."
-"Choose this if you would like to test storefront and admin functionality.","Choose this if you would like to test storefront and admin functionality."
-"Proceed With Automatic Download (%1)","Proceed With Automatic Download (%1)"
-"If you are a developer and would like to have the latest public updates, choose this option.",如果您是开发人员,希望获得最新的公开更新,请选择该选项。
-"Please note that it is much less stable than beta.",请注意,该版本的稳定性不如Beta版。
-"Manual Downloads and Upgrades",手工下载和升级
-"If you are running the install wizard over a previously downloaded and installed Magento installation, proceed with this method.",如果您是在老版本下载并安装好的Magento基础上运行安装向导,请使用这种方法。
-"If you do not wish or are not able to have Magento folders writeable for the web process, you could use PEAR executable located in the root of Magento installation.",如果您不希望,或者不能提供可写的Magento文件夹,则应使用Magento安装文件中的PEAR执行文件。
-"Please note that only UNIX, Linux and Mac OS X shells are currently supported. For Windows use the '%1' option.","Please note that only UNIX, Linux and Mac OS X shells are currently supported. For Windows use the '%1' option."
-"Run this in your shell from Magento root folder:",在您的外壳中从Magento根文件夹运行这个:
-"Click the button below when the installation is finished.","Click the button below when the installation is finished."
-"Continue After Manual Download",手工下载后连接
-"You're All Set",您已经设置完毕。
-"Get ready to experience Open-Source eCommerce Evolved.",准备体验开源电子商务的进化。
-"Before you continue to your store, please make a note of your encryption key (Magento uses it to encrypt passwords, credit cards and more).",在继续您的店铺前,请记录您的加密密钥(Magento将其用于加密密码、信用卡号码等)。
-"(Make sure you keep it in a safe place.)",(请务必将其保存在安全的地点。)
-"Go to Frontend",转到前端
-"Go to Backend",转到后端
-Localization,本地化
-"Locale settings",区域设置
-"Magento Installation Wizard",Magento安装向导
-Magento,Magento
-"Help Us Keep Magento Healthy","Help Us Keep Magento Healthy"
-"Report All Bugs",报告所有Bug
-"(ver. %1)","(ver. %1)"
-Installation,安装
-"Having trouble installing Magento?",安装Magento时遇到了问题?
-"Check out our",结账指南
-"Installation Guide",安装指南
-"License Agreement",许可协议
-"You're All Set!",您已经设置完毕!
diff --git a/app/code/Magento/Install/view/adminhtml/layout/default.xml b/app/code/Magento/Install/view/adminhtml/layout/default.xml
deleted file mode 100644
index efbc5c38998..00000000000
--- a/app/code/Magento/Install/view/adminhtml/layout/default.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>
-<!--
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Academic Free License (AFL 3.0)
- * that is bundled with this package in the file LICENSE_AFL.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/afl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
- */
--->
-<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <head>
-        <link src="Magento_Install::survey_notification.js"/>
-    </head>
-    <body/>
-</page>
diff --git a/app/code/Magento/Install/view/install/layout/install_wizard.xml b/app/code/Magento/Install/view/install/layout/install_wizard.xml
deleted file mode 100644
index 202c11765ce..00000000000
--- a/app/code/Magento/Install/view/install/layout/install_wizard.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0"?>
-<!--
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Academic Free License (AFL 3.0)
- * that is bundled with this package in the file LICENSE_AFL.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/afl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
- */
--->
-<layout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/layout_generic.xsd">
-    <container name="root">
-        <block class="Magento\Framework\View\Element\Template" name="page.block">
-            <action method="setTemplate">
-                <argument name="template" xsi:type="string">Magento_Install::page.phtml</argument>
-            </action>
-            <block class="Magento\Backend\Block\Page\Copyright" name="copyright" as="copyright"/>
-            <container name="left" as="left" label="Left Column"/>
-            <container name="content" as="content" label="Content"/>
-        </block>
-    </container>
-    <block class="Magento\Install\Block\Db\Main" name="database" as="database"/>
-</layout>
diff --git a/app/code/Magento/Install/view/install/templates/config.phtml b/app/code/Magento/Install/view/install/templates/config.phtml
deleted file mode 100644
index 726cc7f2b13..00000000000
--- a/app/code/Magento/Install/view/install/templates/config.phtml
+++ /dev/null
@@ -1,183 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Academic Free License (AFL 3.0)
- * that is bundled with this package in the file LICENSE_AFL.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/afl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
- */
-
-/**
- * Install configuration template
- *
- * @see \Magento\Install\Block\Config
- * @var $this \Magento\Install\Block\Config
- */
-?>
-<div class="page-head">
-    <h3><?php echo __('Configuration') ?></h3>
-</div>
-<?php echo $this->getLayout()->getMessagesBlock()->getGroupedHtml() ?>
-<?php if ($this->getInstaller()->getServerCheckStatus()): ?>
-<form action="<?php echo $this->getPostUrl() ?>" method="post" id="form-validate">
-
-    <!--    database connection    -->
-    <?php echo $this->getLayout()->getBlock('database')->toHtml() ?>
-
-    <fieldset class="group-select">
-        <legend><?php echo __('Web access options') ?></legend>
-        <h4 class="legend"><?php echo __('Web access options') ?></h4>
-        <ul>
-            <li>
-                <label for="base_url"><?php echo __('Base URL') ?> <span class="required">*</span></label><br/>
-                <input type="text" name="config[unsecure_base_url]" id="base_url"
-                       value="<?php echo $this->getFormData()->getUnsecureBaseUrl() ?>"
-                       title="<?php echo __('Base URL') ?>" data-validate="{required:true,'validate-url':true}"
-                       class="input-text"/>
-            </li>
-            <li>
-                <label for="backend_frontname"><?php echo __('Admin Path') ?> <span
-                    class="required">*</span></label><br/>
-                <input type="text" name="config[backend_frontname]" id="backend_frontname"
-                       value="<?php echo $this->getFormData()->getBackendFrontname() ?>"
-                       title="<?php echo __('Admin Path') ?>" data-validate="{required:true,'validate-data':true}"
-                       class="input-text"/>
-
-                <p style="margin-top:4px; line-height:1.3em; color:#666;">
-                    <small><?php echo __('This is the additional path used after your base URL to access your store Admin (e.g, Admin).') ?></small>
-                </p>
-            </li>
-            <li>
-                <input type="checkbox" name="config[enable_charts]" id="enable_charts"
-                       value="1" <?php if ($this->getFormData()->getEnableCharts()): ?>checked="checked"<?php endif; ?> />
-                <label for="enable_charts"><?php echo __('Enable Charts') ?></label><br/>
-
-                <p style="margin-top:4px; line-height:1.3em; color:#666;">
-                    <small><?php echo __('Enable this option if you want to see the charts on your dashboard.') ?></small>
-                </p>
-            </li>
-            <li>
-                <input type="checkbox" name="skip_base_url_validation" id="skip_base_url_validation"
-                       value="1" <?php if ($this->getSkipBaseUrlValidation()): ?>checked="checked"<?php endif; ?> />
-                <label
-                    for="skip_base_url_validation"><?php echo __('Skip Base URL Validation Before the Next Step') ?></label><br/>
-
-                <p style="margin-top:4px; line-height:1.3em; color:#666;">
-                    <small><?php echo __('Check this box only if it is not possible to automatically validate the Base URL.') ?></small>
-                </p>
-            </li>
-            <li>
-                <input type="checkbox" name="config[use_rewrites]" id="use_rewrites"
-                       value="1" <?php if ($this->getFormData()->getUseRewrites()): ?>checked="checked"<?php endif; ?> />
-                <label for="use_rewrites"><?php echo __('Use Web Server (Apache) Rewrites') ?></label><br/>
-
-                <p style="margin-top:4px; line-height:1.3em; color:#666;">
-                    <small>
-                        <?php echo __('You could enable this option to use web server rewrites functionality for improved Search Engine Optimization.') ?>
-                        <br/>
-                        <strong><?php echo __('Please make sure that <code>mod_rewrite</code> is enabled in Apache configuration.') ?></strong>
-                    </small>
-                </p>
-            </li>
-            <li>
-                <input type="checkbox" name="config[use_secure]" id="use_secure"
-                       value="1" <?php if ($this->getFormData()->getUseSecure()): ?>checked="checked"<?php endif ?> />
-                <label for="use_secure"><?php echo __('Use Secure URLs (SSL)') ?></label><br/>
-
-                <p style="margin-top:4px; line-height:1.3em; color:#666;">
-                    <small><?php echo __('Enable this option only if you have SSL available.') ?></small>
-                </p>
-            </li>
-        </ul>
-        <ul id="use_secure_options" <?php if (!$this->getFormData()->getUseSecure()): ?>style="display:none"<?php endif ?>>
-            <li>
-                <label for="secure_base_url"><?php echo __('Secure Base URL') ?> <span class="required">*</span></label><br/>
-                <input type="text" name="config[secure_base_url]" id="secure_base_url"
-                       value="<?php echo $this->getFormData()->getSecureBaseUrl() ?>"
-                       title="<?php echo __('Secure Base URL') ?>"
-                       data-validate="{required:true,'validate-url':true}" class="input-text"/>
-
-                <p style="margin-top:4px; line-height:1.3em; color:#666;">
-                    <small><?php echo __('Provide a complete base URL for SSL connection. For example: %1.', '<strong>https://www.mydomain.com/magento/</strong>') ?></small>
-                </p>
-            </li>
-            <li>
-                <input type="checkbox" name="config[use_secure_admin]" id="use_secure_admin"
-                       value="1" <?php if ($this->getFormData()->getUseSecureAdmin()): ?>checked="checked"<?php endif; ?> />
-                <label for="use_secure_admin"><?php echo __('Run admin interface with SSL') ?></label><br/>
-            </li>
-            <li>
-                <input type="checkbox" name="skip_url_validation" id="skip_url_validation"
-                       value="1" <?php if ($this->getSkipUrlValidation()): ?>checked="checked"<?php endif; ?> />
-                <label
-                    for="skip_url_validation"><?php echo __('Skip Secure URL validation before next step') ?></label><br/>
-
-                <p style="margin-top:4px; line-height:1.3em; color:#666;">
-                    <small><?php echo __('Check this box only if it is not possible to automatically validate Secure URL, for example if HTTP authentication is required.') ?></small>
-                </p>
-            </li>
-        </ul>
-    </fieldset>
-
-    <fieldset class="group-select">
-        <legend><?php echo __('Session Storage Options') ?></legend>
-        <h4 class="legend"><?php echo __('Session Storage Options') ?></h4>
-        <ul>
-            <li>
-                <div class="input-box">
-                    <label for="password"><?php echo __('Save Session Data In') ?></label><br/>
-                    <?php echo $this->getSessionSaveSelect() ?>
-                </div>
-            </li>
-        </ul>
-    </fieldset>
-
-    <div class="button-set">
-        <p class="required">* <?php echo __('Required Fields') ?></p>
-        <button class="form-button" type="submit"><span><?php echo __('Continue') ?></span></button>
-    </div>
-</form>
-<script type="text/javascript">
-require([
-    "jquery",
-    "Magento_Install/js/install"
-], function($){
-
-    $.mage.install.configureForm('#form-validate', '#use_secure', '#use_secure_options');
-
-});
-</script>
-<?php else: ?>
-<div><?php echo __('Please set all required settings before clicking "Continue".') ?></div>
-<div class="button-set">
-    <button id="btn-continue" class="form-button" type="button">
-        <span><?php echo __('Continue') ?></span></button>
-    <script type="text/javascript">
-require([
-    "jquery",
-    "Magento_Install/js/install"
-], function($){
-
-    $.mage.install.configureContinue(
-        '#btn-continue', '<?php echo $this->getUrl('*/*/*', array('_current' => true)) ?>'
-    );
-
-});
-</script>
-</div>
-<?php endif; ?>
diff --git a/app/code/Magento/Install/view/install/templates/create_admin.phtml b/app/code/Magento/Install/view/install/templates/create_admin.phtml
deleted file mode 100644
index a5287dc1158..00000000000
--- a/app/code/Magento/Install/view/install/templates/create_admin.phtml
+++ /dev/null
@@ -1,123 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Academic Free License (AFL 3.0)
- * that is bundled with this package in the file LICENSE_AFL.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/afl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
- */
-
-/**
- * Administrator account installation
- *
- * @see \Magento\Install\Block\Admin
- */
-?>
-<div class="page-head">
-    <h3><?php echo __('Create Admin Account') ?></h3>
-</div>
-<?php echo $this->getLayout()->getMessagesBlock()->getGroupedHtml() ?>
-<form action="<?php echo $this->getPostUrl() ?>" method="post" id="form-validate">
-    <fieldset class="group-select wide">
-        <legend><?php echo __('Personal Information') ?></legend>
-        <h4 class="legend"><?php echo __('Personal Information') ?></h4>
-        <ul>
-            <li>
-                <div class="input-box">
-                    <label for="firstname"><?php echo __('First Name') ?> <span class="required">*</span></label><br/>
-                    <input type="text" name="admin[firstname]" id="firstname"
-                           value="<?php echo $this->getFormData()->getFirstname() ?>"
-                           title="<?php echo __('First Name') ?>" data-validate="{required:true}"
-                           class="input-text"/>
-                </div>
-                <div class="input-box">
-                    <label for="lastname"><?php echo __('Last Name') ?> <span
-                        class="required">*</span></label><br/>
-                    <input type="text" name="admin[lastname]" id="lastname"
-                           value="<?php echo $this->getFormData()->getLastname() ?>"
-                           title="<?php echo __('Last Name') ?>" data-validate="{required:true}"
-                           class="input-text"/>
-                </div>
-            </li>
-            <li>
-                <label for="email_address"><?php echo __('Email') ?> <span class="required">*</span></label><br/>
-                <input type="text" name="admin[email]" id="email_address"
-                       value="<?php echo $this->getFormData()->getEmail() ?>"
-                       title="<?php echo __('Email Address') ?>"
-                       data-validate="{required:true,'validate-email':true}" class="input-text"/>
-            </li>
-        </ul>
-    </fieldset>
-    <fieldset class="group-select wide">
-        <legend><?php echo __('Login Information') ?></legend>
-        <h4 class="legend"><?php echo __('Login Information') ?></h4>
-        <ul>
-            <li>
-                <label for="username"><?php echo __('Username') ?> <span class="required">*</span></label><br/>
-                <input type="text" name="admin[username]" id="username"
-                       value="<?php echo $this->getFormData()->getUsername() ?>"
-                       title="<?php echo __('Username') ?>" data-validate="{required:true}" class="input-text"/>
-            </li>
-            <li>
-                <div class="input-box">
-                    <label for="password"><?php echo __('Password') ?> <span
-                        class="required">*</span></label><br/>
-                    <input type="password" name="admin[password]" id="password"
-                           title="<?php echo __('Password') ?>"
-                           data-validate="{required:true,'validate-admin-password':true}" class="input-text"/>
-                </div>
-                <div class="input-box">
-                    <label for="confirmation"><?php echo __('Confirm Password') ?> <span
-                        class="required">*</span></label><br/>
-                    <input type="password" name="admin[password_confirmation]"
-                           title="<?php echo __('Password Confirmation') ?>" id="confirmation"
-                           data-validate="{required:true, equalTo:'#password'}" class="input-text"/>
-                </div>
-            </li>
-        </ul>
-    </fieldset>
-    <fieldset class="group-select wide">
-        <legend><?php echo __('Encryption Key') ?></legend>
-        <h4 class="legend"><?php echo __('Encryption Key') ?></h4>
-        <ul>
-            <li>
-                <input type="text" name="encryption_key" id="encryption_key"
-                       value="<?php echo $this->getFormData()->getEncryptionKey() ?>"
-                       title="<?php echo __('Encryption Key') ?>" class="input-text"/>
-
-                <p style="margin-top:4px; line-height:1.3em; color:#666;">
-                    <small><?php echo __('Magento uses this key to encrypt passwords, credit cards and more. If you don\'t fill in this field, we\'ll create your encryption key and show it to you on the next page.') ?></small>
-                </p>
-            </li>
-        </ul>
-    </fieldset>
-    <div class="button-set">
-        <p class="required">* <?php echo __('Required Fields') ?></p>
-        <button class="form-button" type="submit"><span><?php echo __('Continue') ?></span></button>
-    </div>
-</form>
-<script type="text/javascript">
-require([
-    'jquery',
-    "Magento_Install/js/install"
-], function($){
-
-    $.mage.install.createAdmin('#form-validate');
-
-});
-</script>
diff --git a/app/code/Magento/Install/view/install/templates/db/main.phtml b/app/code/Magento/Install/view/install/templates/db/main.phtml
deleted file mode 100644
index 5bd339bf5b9..00000000000
--- a/app/code/Magento/Install/view/install/templates/db/main.phtml
+++ /dev/null
@@ -1,90 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Academic Free License (AFL 3.0)
- * that is bundled with this package in the file LICENSE_AFL.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/afl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
- */
-
-/**
- * Install database configuration template
- *
- * @see \Magento\Install\Block\Config
- * @var $this \Magento\Install\Block\Config
- */
-?>
-<script type="text/javascript">
-require([
-    'prototype'
-], function(){
-
-//<![CDATA[
-dbTypeIds = [];
-showContent = function(select)
-{
-    dbTypeIds.each(function (name) {
-        $(name + '_conn_form').hide()
-    });
-    $(select.value + '_conn_form').show();
-}
-//]]>
-
-});
-</script>
-
-<fieldset class="group-select">
- <legend><?php echo __('Connection') ?></legend>
-    <h4 class="legend"><?php echo __('Database Connection') ?></h4>
-    <ul>
-        <?php $dbTypeOptions = $this->getDatabaseBlocks(); ?>
-        <?php if (count($dbTypeOptions) > 0): ?>
-        <li>
-            <div class="input-box">
-                <label for="prefix"><?php echo __('Database Type') ?></label><br />
-                <select name="config[db_model]" onchange="showContent(this)">
-                    <?php foreach($dbTypeOptions as $block): ?>
-                        <option value="<?php echo $block->getIdPrefix()?>" <?php if($this->getFormData()->getDbModel() == $block->getIdPrefix()):?>selected="selected"<?php endif;?>><?php echo $block->getTitle()?></option>
-                    <?php endforeach; ?>
-                </select>
-            </div>
-        </li>
-        <?php endif ?>
-
-        <?php foreach ($dbTypeOptions as $block): ?>
-            <script type="text/javascript">
-require([
-    'prototype'
-], function(){
-
-    //<![CDATA[
-        dbTypeIds[dbTypeIds.length] = "<?php echo $block->getIdPrefix(); ?>";
-    //]]>
-            
-});
-</script>
-            <?php $block = $this->getDatabaseBlock($block->getIdPrefix()) ?>
-
-            <div id="<?php echo $block->getIdPrefix() ?>_conn_form" <?php if($this->getFormData()->getDbModel() != $block->getIdPrefix()):?>style="display:none;"<?php endif;?>>
-                <ul>
-                    <?php echo $block->toHtml(); ?>
-                </ul>
-            </div>
-        <?php endforeach; ?>
-    </ul>
-</fieldset>
diff --git a/app/code/Magento/Install/view/install/templates/db/mysql4.phtml b/app/code/Magento/Install/view/install/templates/db/mysql4.phtml
deleted file mode 100644
index 859a511eb49..00000000000
--- a/app/code/Magento/Install/view/install/templates/db/mysql4.phtml
+++ /dev/null
@@ -1,63 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Academic Free License (AFL 3.0)
- * that is bundled with this package in the file LICENSE_AFL.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/afl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
- */
-
-/**
- * Install mysql database configuration template
- *
- * @see \Magento\Install\Block\Config
- * @var $this \Magento\Install\Block\Config
- */
-?>
-<li>
-    <div class="input-box">
-        <label for="host"><?php echo __('Host') ?> <span class="required">*</span></label><br />
-        <input type="text" name="connection[<?php echo $this->getIdPrefix()?>][db_host]" id="host" value="<?php echo $this->getFormData()->getDbHost() ?>" title="<?php echo __('Database host') ?>" data-validate="{required:true}" class="input-text" />
-        <p style="margin-top:4px; line-height:1.3em; color:#666;">
-            <small><?php echo __('You can specify server port, ex.: localhost:3307<br />If you are not using default UNIX socket, you can specify it here instead of host, ex.: /var/run/mysqld/mysqld.sock') ?></small>
-        </p>
-    </div>
-    <div class="input-box">
-        <label for="dbname"><?php echo __('Database Name') ?> <span class="required">*</span></label><br />
-        <input type="text" name="connection[<?php echo $this->getIdPrefix()?>][db_name]" id="dbname" value="<?php echo $this->getFormData()->getDbName() ?>" title="<?php echo __('Database Name') ?>" data-validate="{required:true}" class="input-text" />
-    </div>
-</li>
-<li>
-    <div class="input-box">
-        <label for="user"><?php echo __('User Name') ?> <span class="required">*</span></label><br />
-        <input type="text" name="connection[<?php echo $this->getIdPrefix()?>][db_user]" id="user" value="<?php echo $this->getFormData()->getDbUser() ?>" title="<?php echo __('Database user name') ?>" data-validate="{required:true}" class="input-text" />
-    </div>
-    <div class="input-box">
-        <label for="password"><?php echo __('User Password') ?></label><br />
-        <input type="password" name="connection[<?php echo $this->getIdPrefix()?>][db_pass]" id="password" value="" title="<?php echo __('Database user password') ?>" class="input-text" />
-    </div>
-</li>
-<li>
-    <div class="input-box">
-        <label for="prefix"><?php echo __('Tables Prefix') ?></label><br />
-        <input type="text" name="connection[<?php echo $this->getIdPrefix()?>][db_prefix]" id="prefix" value="<?php echo $this->getFormData()->getDbPrefix() ?>" title="<?php echo __('Tables Prefix') ?>" data-validate="{'validate-data':true}" class="input-text" />
-        <p style="margin-top:4px; line-height:1.3em; color:#666;">
-            <small><?php echo __('(Optional. Leave blank for no prefix)') ?></small>
-        </p>
-    </div>
-</li>
diff --git a/app/code/Magento/Install/view/install/templates/download.phtml b/app/code/Magento/Install/view/install/templates/download.phtml
deleted file mode 100644
index 4a978fd46d4..00000000000
--- a/app/code/Magento/Install/view/install/templates/download.phtml
+++ /dev/null
@@ -1,135 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Academic Free License (AFL 3.0)
- * that is bundled with this package in the file LICENSE_AFL.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/afl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
- */
-
-/**
- * Install download choice template
- *
- * @see \Magento\Install\Block\Download
- */
-?>
-<script type="text/javascript">
-require([
-    'prototype'
-], function(){
-
-    startInstall = function(state)
-    {
-        $$('button').each(function(el) {
-            el.disabled = true;
-            el.addClassName('disabled');
-        });
-        var install = $('install_iframe');
-        install.setStyle({'display':'block', 'width':'100%', 'height':'300px'});
-        install.src = '<?php echo $this->getUrl('*/*/install') ?>do/start/state/'+state;
-    }
-
-    installSuccess = function()
-    {
-        alert("<?php echo __("All packages were installed. Click 'OK' to continue with installation.") ?>");
-        location.href = "<?php echo $this->getNextUrl() ?>";
-        $$('button').each(function(el) {
-            el.disabled = true;
-            el.removeClassName('disabled');
-        });
-    }
-
-    installFailure = function()
-    {
-        alert("<?php echo __("Something went wrong installing the Magento packages. Please read the log, correct any errors and try again.") ?>\n<?php echo __('As another option, you could try the "Manual Downloads and Upgrades" method.') ?>");
-        $$('button').each(function(el) {
-            el.disabled = true;
-            el.removeClassName('disabled');
-        });
-    }
-
-
-});
-</script>
-<div class="page-head">
-    <h3><?php echo __('Download Magento Core Modules and Updates') ?></h3>
-</div>
-<?php echo $this->getLayout()->getMessagesBlock()->getGroupedHtml() ?>
-
-<form action="<?php echo $this->getPostUrl() ?>" method="post" id="form-validate">
-<input type="hidden" id="continue" name="continue" value="svn" />
-<?php if($this->hasLocalCopy()): ?>
-<fieldset class="group-select">
-    <legend><?php echo __('Full Download / SVN Installation') ?></legend>
-    <h4 class="legend"><?php echo __('Full Download / SVN Installation') ?></h4>
-
-    <p><?php echo __("If you have downloaded the full package or installed Magento through SVN, you should skip packages installation and validation by clicking the button below.") ?></p>
-
-    <p><button class="form-button" type="submit" onclick="$('continue').value='svn'"><span><?php echo __('Continue Full Download / SVN Installation') ?></span></button></p>
-</fieldset>
-<?php endif; ?>
-
-<fieldset class="group-select">
-    <legend><?php echo __('Package Management through the Web') ?></legend>
-    <h4 class="legend"><?php echo __('Package Management through the Web') ?></h4>
-
-    <p><?php echo __("If you wish to manage Magento packages through the web admin interface, you will need to have web writeable permissions applied to all Magento folders and files.") ?></p>
-    <p><?php echo __("If your server is running on MS Windows, most probably you will not need to change anything.") ?></p>
-    <p><?php echo __("If you are running PHP as CGI, your PHP processes may run under the same user as the user you used when uploading Magento files.") ?></p>
-    <p><?php echo __("In other cases you will need to make Magento files writeable for the user that the web server process is running under.") ?></p>
-
-        <h4><?php echo __("Preferred stability: %1", __("BETA")) ?></h4>
-        <p><?php echo __("This is the most stable state available for Magento packages.") ?><br/><?php echo __("Choose this if you would like to test storefront and admin functionality.") ?></p>
-        <p><button class="form-button" type="button" onclick="startInstall('beta')"><span><?php echo __('Proceed With Automatic Download (%1)', __('Beta')) ?></span></button></p>
-<br/>
-        <h4><?php echo __("Preferred stability: %1", __("ALPHA")) ?></h4>
-        <p><?php echo __("If you are a developer and would like to have the latest public updates, choose this option.") ?><br/><?php echo __("Please note that it is much less stable than beta.") ?></p>
-        <p><button class="form-button" type="button" onclick="startInstall('alpha')"><span><?php echo __('Proceed With Automatic Download (%1)', __('Alpha')) ?></span></button></p>
-<br/>
-    <iframe id="install_iframe" src="<?php echo $this->getUrl('*/*/install') ?>" style="display:none" frameborder="no"></iframe>
-</fieldset>
-
-<fieldset class="group-select">
-    <legend><?php echo __('Manual Downloads and Upgrades') ?></legend>
-    <h4 class="legend"><?php echo __('Manual Downloads and Upgrades') ?></h4>
-
-    <p><?php echo __("If you are running the install wizard over a previously downloaded and installed Magento installation, proceed with this method.") ?></p>
-    <p><?php echo __("If you do not wish or are not able to have Magento folders writeable for the web process, you could use PEAR executable located in the root of Magento installation.") ?></p>
-    <p><?php echo __("Please note that only UNIX, Linux and Mac OS X shells are currently supported. For Windows use the '%1' option.", __('Package Management through the Web')) ?></p>
-    <p><?php echo __("Run this in your shell from Magento root folder:") ?></p>
-    <pre>
-./pear mage-setup
-./pear install mage-core/\Magento\Pear_Helpers mage-core/Lib_ZF mage-core/Lib_Varien
-./pear install mage-core/Magento_All mage-core/Interface_Install_Default
-./pear install mage-core/Interface_Frontend_Default mage-core/Interface_Adminhtml_Default
-
-</pre>
-    <p><?php echo __("Click the button below when the installation is finished.") ?></p>
-
-    <p><button class="form-button" type="submit" onclick="$('continue').value='manual'"><span><?php echo __('Continue After Manual Download') ?></span></button></p>
-</fieldset>
-
-</form>
-
-<script type="text/javascript">
-require(['prototype'], function(){
-
-    tabs = new Varien.Tabs('.tabs');
-
-});
-</script>
diff --git a/app/code/Magento/Install/view/install/templates/end.phtml b/app/code/Magento/Install/view/install/templates/end.phtml
deleted file mode 100644
index 59dd2dddc12..00000000000
--- a/app/code/Magento/Install/view/install/templates/end.phtml
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Academic Free License (AFL 3.0)
- * that is bundled with this package in the file LICENSE_AFL.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/afl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
- */
-
-/**
- * Installation end page
- *
- * @see \Magento\Install\Block\End
- */
-?>
-<div class="page-head">
-    <h3><?php echo __("You're All Set") ?>!</h3>
-</div>
-<?php if ($this->getIframeSourceUrl()): ?>
-    <iframe id="iframe_box" src="<?php echo $this->getIframeSourceUrl() ?>" frameborder="0" width="650" height="600"></iframe>
-<?php endif; ?>
-<p><?php echo __('Get ready to experience Open-Source eCommerce Evolved.') ?></p>
-<?php if($this->getEncryptionKey()): ?>
-<p><?php echo __('Before you continue to your store, please make a note of your encryption key (Magento uses it to encrypt passwords, credit cards and more).') ?></p>
-<p><strong><big><?php echo $this->getEncryptionKey() ?></big></strong></p>
-<p><?php echo __('(Make sure you keep it in a safe place.)') ?></p>
-<?php endif; ?>
-<div class="button-set">
-    <button class="form-button" onclick="window.open('<?php echo $this->getUrl('') ?>')" type="button"><?php echo __('Go to Frontend') ?></button>&nbsp;&nbsp;
-    <button class="form-button" onclick="window.open('<?php echo $this->helper('Magento\Backend\Helper\Data')->getHomePageUrl() ?>')" type="button"><?php echo __('Go to Backend') ?></button>
-</div>
diff --git a/app/code/Magento/Install/view/install/templates/locale.phtml b/app/code/Magento/Install/view/install/templates/locale.phtml
deleted file mode 100644
index 8863efafd71..00000000000
--- a/app/code/Magento/Install/view/install/templates/locale.phtml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Academic Free License (AFL 3.0)
- * that is bundled with this package in the file LICENSE_AFL.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/afl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
- */
-
-/**
- * Install localization template
- *
- * @see \Magento\Install\Block\Locale
- */
-?>
-<div class="page-head">
-    <h3><?php echo __('Localization') ?></h3>
-</div>
-<?php echo $this->getLayout()->getMessagesBlock()->getGroupedHtml() ?>
-
-<form action="<?php echo $this->getPostUrl() ?>" method="get" id="form-validate">
-<fieldset class="group-select">
- <legend><?php echo __('Locale') ?></legend>
-    <h4 class="legend"><?php echo __('Locale settings') ?></h4>
-    <ul>
-        <li>
-            <div class="input-box">
-                <label for="locale"><?php echo __('Locale') ?> <span class="required">*</span></label><br/>
-                <?php echo $this->getLocaleSelect() ?>
-            </div>
-        </li>
-        <li>
-            <div class="input-box">
-                <label for="timezone"><?php echo __('Time Zone') ?> <span class="required">*</span></label><br/>
-                <?php echo $this->getTimezoneSelect() ?>
-            </div>
-            <div class="input-box">
-                <label for="currency"><?php echo __('Default Currency') ?> <span class="required">*</span></label><br/>
-                <?php echo $this->getCurrencySelect() ?>
-            </div>
-        </li>
-    </ul>
-</fieldset>
-<div class="button-set">
-    <p class="required">* <?php echo __('Required Fields') ?></p>
-    <button class="form-button" type="submit"><span><?php echo __('Continue') ?></span></button>
-</div>
-</form>
-<script type="text/javascript">
-require([
-    "jquery",
-    "Magento_Install/js/install"
-], function($){
-
-    $.mage.install.changeLocale('#locale', '<?php echo $this->getChangeUrl();?>');
-
-});
-</script>
diff --git a/app/code/Magento/Install/view/install/templates/page.phtml b/app/code/Magento/Install/view/install/templates/page.phtml
deleted file mode 100644
index 83c6dfce4f7..00000000000
--- a/app/code/Magento/Install/view/install/templates/page.phtml
+++ /dev/null
@@ -1,123 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Academic Free License (AFL 3.0)
- * that is bundled with this package in the file LICENSE_AFL.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/afl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
- */
-?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
-    <title><?php echo __('Magento Installation Wizard') ?></title>
-
-    <link rel="icon" href="<?php echo $this->getViewFileUrl('Magento_Theme::favicon.ico') ?>" type="image/x-icon"/>
-    <link rel="shortcut icon" href="<?php echo $this->getViewFileUrl('Magento_Theme::favicon.ico') ?>" type="image/x-icon"/>
-    <script type="text/javascript">
-        var require = {
-            "baseUrl": "<?php echo $this->getViewFileUrl('/') ?>",
-            "paths": {
-                "jquery/ui": "jquery/jquery-ui"
-            }
-        };
-    </script>
-
-
-    <script src="<?php echo $this->getViewFileUrl('requirejs/require.js') ?>"></script>
-    <script src="<?php echo $this->getViewFileUrl('jquery/jquery.js') ?>"></script>
-    <script src="<?php echo $this->getViewFileUrl('app-config.js') ?>"></script>
-
-    <link rel="stylesheet" href="<?php echo $this->getViewFileUrl('Magento_Install::css/mage-js-style.css') ?>" type="text/css"
-          media="all"/>
-    <link rel="stylesheet" href="<?php echo $this->getViewFileUrl('Magento_Install::css/validate.css') ?>" type="text/css"
-          media="all"/>
-    <link rel="stylesheet" href="<?php echo $this->getViewFileUrl('css/reset.css') ?>" type="text/css" media="all"/>
-    <link rel="stylesheet" href="<?php echo $this->getViewFileUrl('css/boxes.css') ?>" type="text/css" media="all"/>
-    <link rel="stylesheet" href="<?php echo $this->getViewFileUrl('css/clears.css') ?>" type="text/css" media="all"/>
-    <?php echo $this->getTranslatorScript(); ?>
-</head>
-
-<body>
-<!-- [start] header -->
-<div class="header">
-    <div class="header-top-container">
-        <div class="header-top">
-            <h1 id="logo">
-                <a href="<?php echo $this->getUrl('') ?>"><img src="<?php echo $this->getViewFileUrl('images/logo.gif') ?>"
-                                                               title="<?php echo __('Magento') ?>"
-                                                               alt="<?php echo __('Magento') ?>"/></a>
-            </h1>
-
-            <?php echo $this->getChildHtml('topSearch') ?>
-
-            <div class="quick-access">
-                <div class="account-access">
-                    <strong>
-                        &nbsp;<?php echo $this->getWelcome() ?></strong> <?php echo $this->getChildHtml('topLeftLinks') ?>
-                </div>
-                <div class="shop-access">
-                    <?php echo $this->getChildHtml('topRightLinks') ?>
-                </div>
-            </div>
-
-        </div>
-    </div>
-    <?php echo $this->getChildHtml('topMenu') ?>
-</div>
-<!-- [end] header -->
-
-<!-- [start] middle -->
-<?php echo $this->getChildHtml('store') ?>
-<div class="middle-container">
-    <div class="middle col-2-left-layout">
-        <?php echo $this->getChildHtml('breadcrumbs') ?>
-
-        <!-- [start] left -->
-        <div class="col-left side-col">
-            <?php echo $this->getChildHtml('left') ?>
-        </div>
-        <div id="main" class="col-main">
-            <!-- [start] global messages -->
-            <?php echo $this->getChildHtml('global_messages') ?>
-            <!-- [end] global messages -->
-            <!-- [start] content -->
-            <?php echo $this->getChildHtml('content') ?>
-            <!-- [end] content -->
-        </div>
-    </div>
-    <!-- [end] center -->
-</div>
-<!-- [end] middle -->
-
-<!-- [start] footer -->
-<div class="footer-container">
-    <div class="footer">
-        <p class="legality">
-            <?php echo __('Help Us Keep Magento Healthy') ?> - <a
-            href="http://www.magentocommerce.com/bug-tracking"
-            target="varien_external"><strong><?php echo __('Report All Bugs') ?></strong></a> <?php echo __('(ver. %1)', \Magento\Framework\AppInterface::VERSION) ?>
-            <br/>
-            <?php echo $this->getChildHtml('copyright');?>
-        </p>
-    </div>
-</div>
-<!-- [end] footer -->
-</body>
-</html>
diff --git a/app/code/Magento/Install/view/install/templates/state.phtml b/app/code/Magento/Install/view/install/templates/state.phtml
deleted file mode 100644
index 46af94b1459..00000000000
--- a/app/code/Magento/Install/view/install/templates/state.phtml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Academic Free License (AFL 3.0)
- * that is bundled with this package in the file LICENSE_AFL.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/afl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
- */
-?>
-<div style="border:1px solid #ccc; background:#f6f6f6;">
-    <h2 style="margin-bottom:0; border-bottom:1px solid #ccc; padding:4px 10px; color:#3c5974; font-size:1.4em;"><?php echo __('Installation') ?></h2>
-    <ol style="padding:10px; border-top:1px solid #fff;">
-        <?php foreach ($this->getDownloaderSteps() as $step): ?>
-        <li><?php echo $step ?></li>
-        <?php endforeach; ?>
-        <li><?php echo __('Download')?></li>
-        <?php foreach ($steps as $_step): ?>
-        <li <?php if ($_step->getActive()): ?>style="color:green; font-weight:bold; "<?php endif ?>><?php echo __($_step->getCode()) ?></li>
-        <?php endforeach ?>
-    </ol>
-</div>
-
-<br/>
-<p>
-    <?php echo __('Having trouble installing Magento?') ?>
-    <?php echo __('Check out our') ?> <a href="http://www.magentocommerce.com/magento2/install"
-                                                target="installation_guide"><?php echo __('Installation Guide') ?></a>
-</p>
diff --git a/app/code/Magento/Install/view/install/web/css/mage-js-ee-style.css b/app/code/Magento/Install/view/install/web/css/mage-js-ee-style.css
deleted file mode 100644
index 9b58eeb2b3d..00000000000
--- a/app/code/Magento/Install/view/install/web/css/mage-js-ee-style.css
+++ /dev/null
@@ -1,34 +0,0 @@
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Academic Free License (AFL 3.0)
- * that is bundled with this package in the file LICENSE_AFL.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/afl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
- */
-
-input.mage-error {
-    background: none repeat scroll 0 0 #FFF7F5 !important;
-    border: 1px solid #F47D4E !important;
-}
-
-div.mage-error {
-    clear: both;
-    color: #D91A00 !important;
-    font-size: 11px !important;
-    padding: 3px 0 0 !important;
-}
diff --git a/app/code/Magento/Install/view/install/web/css/mage-js-style.css b/app/code/Magento/Install/view/install/web/css/mage-js-style.css
deleted file mode 100644
index b580d80a704..00000000000
--- a/app/code/Magento/Install/view/install/web/css/mage-js-style.css
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Academic Free License (AFL 3.0)
- * that is bundled with this package in the file LICENSE_AFL.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/afl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
- */
-
-button.mage-disabled {
-    background: none repeat scroll 0% 0% #bbb;
-    border-color: #bbb;
-    cursor: default;
-    color: white;
-}
-
-button.mage-enabled {
-    background: #f18200;
-    cursor: pointer;
-    color: #C73615;
-}
-
diff --git a/app/code/Magento/Install/view/install/web/css/validate.css b/app/code/Magento/Install/view/install/web/css/validate.css
deleted file mode 100644
index 95d9adb4ffb..00000000000
--- a/app/code/Magento/Install/view/install/web/css/validate.css
+++ /dev/null
@@ -1,38 +0,0 @@
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Academic Free License (AFL 3.0)
- * that is bundled with this package in the file LICENSE_AFL.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/afl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
- */
-input.mage-error, textarea.mage-error, ul.mage-error, select.mage-error {
-    background: none repeat scroll 0 0 #FAEBE7 !important;
-    border: 1px dashed #EB340A !important;
-
-}
-div.mage-error {
-    background: url(../images/validation_advice_bg.gif) no-repeat scroll 2px 1px transparent;
-    clear: both;
-    font-size: 0.95em;
-    font-weight: bold;
-    line-height: 1.25em;
-    margin-top: 3px;
-    min-height: 15px;
-    padding-left: 17px;
-    color: #DF280A;
-}
diff --git a/app/code/Magento/Install/view/install/web/images/validation_advice_bg.gif b/app/code/Magento/Install/view/install/web/images/validation_advice_bg.gif
deleted file mode 100644
index 46b1a2267ba5ad31f59a9c6cd8eaac9ee3b0f8ce..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 134
zcmZ?wbhEHb<YeGw*v!N5efR3Gi+Vq|<$PN`<DHe@&&Rhu1nT^HdiR|<-?uG`-<fiM
zKd|xluWt-6p!k!8k%57SK?fuNGJ}D|c!FoxGGCR*X%n1gT@mDBG-62NIhCN$kRa2&
gNv2Ie#%HfV`++0dU*7CG;(KY+91%8APZkDi0Dg`$ivR!s

diff --git a/app/code/Magento/Install/view/install/web/js/install.js b/app/code/Magento/Install/view/install/web/js/install.js
deleted file mode 100644
index dd0a3dc1ba7..00000000000
--- a/app/code/Magento/Install/view/install/web/js/install.js
+++ /dev/null
@@ -1,102 +0,0 @@
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Academic Free License (AFL 3.0)
- * that is bundled with this package in the file LICENSE_AFL.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/afl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
- */
-/*jshint browser:true jquery:true */
-define([
-    "jquery",
-    "mage/mage",
-    "mage/validation/validation"
-], function($) {
-
-    $.extend(true, $.mage, {
-        install: {
-            /**
-             * Beginning phase of the installation process. Check the box to agree to Terms and
-             * Conditions, License, etc. and then click the Continue button.
-             * @param {string} agreeBox Selector for the agree checkbox
-             * @param {string} submitButton Selector for the submit button
-             */
-            begin: function(agreeBox, submitButton) {
-                $(agreeBox).on('click', function(e) {
-                    var btn = $(submitButton);
-                    if (e.target.checked) {
-                        btn.removeClass('mage-disabled').addClass('mage-enabled')
-                            .removeAttr('disabled');
-                    } else {
-                        btn.removeClass('mage-enabled').addClass('mage-disabled')
-                            .attr('disabled', 'disabled');
-                    }
-                });
-            },
-
-            /**
-             * Configuration phase. Prompt for hostname, database information, and options,
-             * such as whether to enable SSL, referred to as secure options.
-             * @param {string} form Selector for the configuration form
-             * @param {string} useSecure Selector for the 'Use Secure (SSL)' checkbox
-             * @param {string} useSecureOptions Selector for the secure (SSL) options content
-             */
-            configureForm: function(form, useSecure, useSecureOptions) {
-                $(form).validation();
-                $(useSecure).on('click', function(e) {
-                    return e.target.checked ?
-                        $(useSecureOptions).show() : $(useSecureOptions).hide();
-                });
-            },
-
-            /**
-             * Configure phase. Happens when an error occurs and intervention is needed. Prompts
-             * the user to fix the issue and click a Continue button to proceed.
-             * @param {string} continueButton Selector for the continue button
-             * @param {string} url The URL to proceed to next after clicking the button
-             */
-            configureContinue: function(continueButton, url) {
-                $(continueButton).on('click', function() {
-                    location.href = url;
-                });
-            },
-
-            /**
-             * Create backend administrator login form validation. Enter user's name, email,
-             * admin username, and password. Validate the form.
-             * @param {string} form Selector for the administrator form
-             */
-            createAdmin: function(form) {
-                $(form).validation();
-            },
-
-            /**
-             * Generate a new URL whenever a different locale is selected and refresh the
-             * page to that new locale based URL.
-             * @param {string} localeField Selector for the locale input field
-             * @param {string} url Partial URL used to construct full URL to change the locale
-             */
-            changeLocale: function(localeField, url) {
-                $(localeField).on('change', function() {
-                    location.href = url + 'locale/' + $(localeField).val() + '/?timezone=' +
-                        $('#timezone').val() + '&amp;currency=' + $('#currency').val();
-                });
-            }
-        }
-    });
-
-});
\ No newline at end of file
diff --git a/app/code/Magento/Integration/composer.json b/app/code/Magento/Integration/composer.json
index ce0e0cb0489..8abd0ede0e4 100644
--- a/app/code/Magento/Integration/composer.json
+++ b/app/code/Magento/Integration/composer.json
@@ -3,17 +3,17 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/module-customer": "0.1.0-alpha102",
-        "magento/module-user": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
-        "magento/module-authorization": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/module-customer": "0.1.0-alpha103",
+        "magento/module-user": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
+        "magento/module-authorization": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Integration/sql/integration_setup/install-1.0.0.0.php b/app/code/Magento/Integration/sql/integration_setup/install-1.0.0.0.php
index bc364bcda99..0da0ebbc986 100644
--- a/app/code/Magento/Integration/sql/integration_setup/install-1.0.0.0.php
+++ b/app/code/Magento/Integration/sql/integration_setup/install-1.0.0.0.php
@@ -24,7 +24,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* @var \Magento\Framework\Module\Setup $installer */
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 $installer->startSetup();
 
diff --git a/app/code/Magento/Integration/sql/integration_setup/upgrade-1.0.0.0-1.0.0.1.php b/app/code/Magento/Integration/sql/integration_setup/upgrade-1.0.0.0-1.0.0.1.php
index f6beb08170b..994951d4f26 100644
--- a/app/code/Magento/Integration/sql/integration_setup/upgrade-1.0.0.0-1.0.0.1.php
+++ b/app/code/Magento/Integration/sql/integration_setup/upgrade-1.0.0.0-1.0.0.1.php
@@ -24,7 +24,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* @var \Magento\Integration\Model\Resource\Setup $installer */
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 $installer->getConnection()->addColumn(
     $installer->getTable('integration'),
diff --git a/app/code/Magento/Integration/sql/integration_setup/upgrade-1.0.0.1-1.0.0.2.php b/app/code/Magento/Integration/sql/integration_setup/upgrade-1.0.0.1-1.0.0.2.php
index 271c328339f..b83205d54d2 100644
--- a/app/code/Magento/Integration/sql/integration_setup/upgrade-1.0.0.1-1.0.0.2.php
+++ b/app/code/Magento/Integration/sql/integration_setup/upgrade-1.0.0.1-1.0.0.2.php
@@ -24,7 +24,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* @var \Magento\Integration\Model\Resource\Setup $installer */
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 $installer->getConnection()->addColumn(
     $installer->getTable('integration'),
diff --git a/app/code/Magento/Integration/sql/integration_setup/upgrade-1.0.0.2-1.0.0.3.php b/app/code/Magento/Integration/sql/integration_setup/upgrade-1.0.0.2-1.0.0.3.php
index f77a5d32b3c..ce9a9a55b6c 100644
--- a/app/code/Magento/Integration/sql/integration_setup/upgrade-1.0.0.2-1.0.0.3.php
+++ b/app/code/Magento/Integration/sql/integration_setup/upgrade-1.0.0.2-1.0.0.3.php
@@ -24,10 +24,8 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* @var $installer \Magento\Integration\Model\Resource\Setup */
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
-
-/* @var $connection \Magento\Framework\DB\Adapter\AdapterInterface */
 $connection = $installer->getConnection();
 
 $oauthTokenTable = $installer->getTable('oauth_token');
diff --git a/app/code/Magento/LayeredNavigation/composer.json b/app/code/Magento/LayeredNavigation/composer.json
index ffd074ea7b3..194a561b670 100644
--- a/app/code/Magento/LayeredNavigation/composer.json
+++ b/app/code/Magento/LayeredNavigation/composer.json
@@ -3,13 +3,13 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-catalog": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-catalog": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Log/Model/Log.php b/app/code/Magento/Log/Model/Log.php
index a3841892b63..96207c06b25 100644
--- a/app/code/Magento/Log/Model/Log.php
+++ b/app/code/Magento/Log/Model/Log.php
@@ -28,8 +28,6 @@ namespace Magento\Log\Model;
  *
  * @method \Magento\Log\Model\Resource\Log _getResource()
  * @method \Magento\Log\Model\Resource\Log getResource()
- * @method string getSessionId()
- * @method \Magento\Log\Model\Log setSessionId(string $value)
  * @method string getFirstVisitAt()
  * @method \Magento\Log\Model\Log setFirstVisitAt(string $value)
  * @method string getLastVisitAt()
diff --git a/app/code/Magento/Log/Model/Visitor.php b/app/code/Magento/Log/Model/Visitor.php
index 915a77c20f6..1ef1cf8600c 100644
--- a/app/code/Magento/Log/Model/Visitor.php
+++ b/app/code/Magento/Log/Model/Visitor.php
@@ -26,8 +26,6 @@ namespace Magento\Log\Model;
 /**
  * @method Resource\Visitor _getResource()
  * @method Resource\Visitor getResource()
- * @method string getSessionId()
- * @method Visitor setSessionId(string $value)
  * @method Visitor setFirstVisitAt(string $value)
  * @method Visitor setLastVisitAt(string $value)
  * @method Visitor setVisitorId(int $value)
diff --git a/app/code/Magento/Log/composer.json b/app/code/Magento/Log/composer.json
index c84df82df44..e6decb233a9 100644
--- a/app/code/Magento/Log/composer.json
+++ b/app/code/Magento/Log/composer.json
@@ -3,16 +3,16 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-customer": "0.1.0-alpha102",
-        "magento/module-eav": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-customer": "0.1.0-alpha103",
+        "magento/module-eav": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Log/data/log_setup/data-install-1.6.0.0.php b/app/code/Magento/Log/data/log_setup/data-install-1.6.0.0.php
index 3a45b26c8bd..8a4b1313fc9 100644
--- a/app/code/Magento/Log/data/log_setup/data-install-1.6.0.0.php
+++ b/app/code/Magento/Log/data/log_setup/data-install-1.6.0.0.php
@@ -22,8 +22,8 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-$installer = $this;
 /* @var $installer \Magento\Framework\Module\Setup */
+$installer = $this;
 
 $data = array(
     array('type_id' => 1, 'type_code' => 'hour', 'period' => 1, 'period_type' => 'HOUR'),
diff --git a/app/code/Magento/Log/sql/log_setup/install-1.6.0.0.php b/app/code/Magento/Log/sql/log_setup/install-1.6.0.0.php
index 35be24be9cc..ccfdf163263 100644
--- a/app/code/Magento/Log/sql/log_setup/install-1.6.0.0.php
+++ b/app/code/Magento/Log/sql/log_setup/install-1.6.0.0.php
@@ -22,8 +22,8 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
-/* @var $installer \Magento\Framework\Module\Setup */
 
 $installer->startSetup();
 
@@ -288,15 +288,6 @@ $table = $installer->getConnection()->newTable(
     'Log Visitors Table'
 );
 $installer->getConnection()->createTable($table);
-$installer->getConnection()->addForeignKey(
-    $installer->getFkName('log_visitor', 'visitor_id', 'customer_visitor', 'visitor_id'),
-    $installer->getTable('log_visitor'),
-    'visitor_id',
-    $installer->getTable('customer_visitor'),
-    'visitor_id',
-    \Magento\Framework\DB\Ddl\Table::ACTION_CASCADE,
-    \Magento\Framework\DB\Ddl\Table::ACTION_CASCADE
-);
 
 /**
  * Create table 'log_visitor_info'
diff --git a/app/code/Magento/Msrp/composer.json b/app/code/Magento/Msrp/composer.json
index 20d701c86dc..2fb27823c7b 100644
--- a/app/code/Magento/Msrp/composer.json
+++ b/app/code/Magento/Msrp/composer.json
@@ -3,21 +3,21 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-bundle": "0.1.0-alpha102",
-        "magento/module-catalog": "0.1.0-alpha102",
-        "magento/module-configurable-product": "0.1.0-alpha102",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-downloadable": "0.1.0-alpha102",
-        "magento/module-eav": "0.1.0-alpha102",
-        "magento/module-grouped-product": "0.1.0-alpha102",
-        "magento/module-sales": "0.1.0-alpha102",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-tax": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-bundle": "0.1.0-alpha103",
+        "magento/module-catalog": "0.1.0-alpha103",
+        "magento/module-configurable-product": "0.1.0-alpha103",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-downloadable": "0.1.0-alpha103",
+        "magento/module-eav": "0.1.0-alpha103",
+        "magento/module-grouped-product": "0.1.0-alpha103",
+        "magento/module-sales": "0.1.0-alpha103",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-tax": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Multishipping/composer.json b/app/code/Magento/Multishipping/composer.json
index 9fe7e3d1c89..e4df9fe320e 100644
--- a/app/code/Magento/Multishipping/composer.json
+++ b/app/code/Magento/Multishipping/composer.json
@@ -3,19 +3,19 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-checkout": "0.1.0-alpha102",
-        "magento/module-sales": "0.1.0-alpha102",
-        "magento/module-payment": "0.1.0-alpha102",
-        "magento/module-tax": "0.1.0-alpha102",
-        "magento/module-customer": "0.1.0-alpha102",
-        "magento/module-theme": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-checkout": "0.1.0-alpha103",
+        "magento/module-sales": "0.1.0-alpha103",
+        "magento/module-payment": "0.1.0-alpha103",
+        "magento/module-tax": "0.1.0-alpha103",
+        "magento/module-customer": "0.1.0-alpha103",
+        "magento/module-theme": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Multishipping/view/frontend/templates/checkout/addresses.phtml b/app/code/Magento/Multishipping/view/frontend/templates/checkout/addresses.phtml
index 2aea13745e9..ac9593c75f8 100644
--- a/app/code/Magento/Multishipping/view/frontend/templates/checkout/addresses.phtml
+++ b/app/code/Magento/Multishipping/view/frontend/templates/checkout/addresses.phtml
@@ -52,16 +52,26 @@
                     <tr>
                         <td class="col product" data-th="<?php echo $this->escapeHtml(__('Product'));?>"><?php echo $this->getItemHtml($_item->getQuoteItem()) ?></td>
                         <td class="col qty" data-th="<?php echo $this->escapeHtml(__('Qty'));?>">
-                            <div class="control qty">
-                                <input type="number" name="ship[<?php echo $_index ?>][<?php echo $_item->getQuoteItemId() ?>][qty]" value="<?php echo $this->escapeHtml($_item->getQty()) ?>" size="2" class="input-text qty" data-validate="{number: true}"/>
+                            <div class="field qty">
+                                <label for="ship-<?php echo $_index ?>-<?php echo $_item->getQuoteItemId() ?>-qty" class="label">
+                                    <span><?php echo __('Qty') ?></span>
+                                </label>
+                                <div class="control">
+                                    <input type="number" id="ship-<?php echo $_index ?>-<?php echo $_item->getQuoteItemId() ?>-qty" name="ship[<?php echo $_index ?>][<?php echo $_item->getQuoteItemId() ?>][qty]" value="<?php echo $this->escapeHtml($_item->getQty()) ?>" size="2" class="input-text qty" data-validate="{number: true}"/>
+                                </div>
                             </div>
                         </td>
                         <td class="col address" data-th="<?php echo $this->escapeHtml(__('Send To'));?>">
                             <?php if ($_item->getProduct()->getIsVirtual()): ?>
                                 <div class="applicable"><?php echo __('Shipping selection is not applicable.'); ?></div>
                             <?php else: ?>
-                                <div class="control address">
-                                    <?php echo $this->getAddressesHtmlSelect($_item, $_index); ?>
+                                <div class="field address">
+                                    <label for="ship_<?php echo $_index ?>_<?php echo $_item->getQuoteItemId() ?>_address" class="label">
+                                        <span><?php echo __('Send To') ?></span>
+                                    </label>
+                                    <div class="control">
+                                        <?php echo $this->getAddressesHtmlSelect($_item, $_index); ?>
+                                    </div>
                                 </div>
                             <?php endif; ?>
                         </td>
diff --git a/app/code/Magento/Multishipping/view/frontend/templates/checkout/billing.phtml b/app/code/Magento/Multishipping/view/frontend/templates/checkout/billing.phtml
index 43876ba26e0..34fd873537c 100644
--- a/app/code/Magento/Multishipping/view/frontend/templates/checkout/billing.phtml
+++ b/app/code/Magento/Multishipping/view/frontend/templates/checkout/billing.phtml
@@ -43,34 +43,36 @@
                 </div>
             </div>
             <div class="box box-billing-method">
-                <strong class="box-title"><span><?php echo __('Payment Method') ?></span></strong>
-                <div class="box-content">
-                    <?php echo $this->getChildHtml('payment_methods_before') ?>
-                    <?php /* Payment methods forms list */ ?>
-                    <dl class="items methods-payment" id="payment-methods">
-                        <?php
-                        $_methods       = $this->getMethods();
-                        $_methodsCount  = count($_methods);
-                        ?>
-                        <?php foreach ($_methods as $_method): $_code = $_method->getCode() ?>
-                            <dt class="item-title">
-                                <?php if ($_methodsCount > 1): ?>
-                                    <input type="radio" id="p_method_<?php echo $_code ?>" value="<?php echo $_code ?>" name="payment[method]" title="<?php echo $this->escapeHtml($_method->getTitle()) ?>" <?php if ($this->getSelectedMethodCode() == $_code): ?> checked="checked"<?php endif; ?> class="radio"/>
-                                <?php else : ?>
-                                    <input type="radio" id="p_method_<?php echo $_code ?>" value="<?php echo $_code ?>" name="payment[method]" checked="checked" class="radio solo method"/>
+                <fieldset class="fieldset">
+                    <legend class="legend box-title"><span><?php echo __('Payment Method') ?></span></legend><br>
+                    <div class="box-content">
+                        <?php echo $this->getChildHtml('payment_methods_before') ?>
+                        <?php /* Payment methods forms list */ ?>
+                        <dl class="items methods-payment" id="payment-methods">
+                            <?php
+                            $_methods       = $this->getMethods();
+                            $_methodsCount  = count($_methods);
+                            ?>
+                            <?php foreach ($_methods as $_method): $_code = $_method->getCode() ?>
+                                <dt class="item-title">
+                                    <?php if ($_methodsCount > 1): ?>
+                                        <input type="radio" id="p_method_<?php echo $_code ?>" value="<?php echo $_code ?>" name="payment[method]" title="<?php echo $this->escapeHtml($_method->getTitle()) ?>" <?php if ($this->getSelectedMethodCode() == $_code): ?> checked="checked"<?php endif; ?> class="radio"/>
+                                    <?php else : ?>
+                                        <input type="radio" id="p_method_<?php echo $_code ?>" value="<?php echo $_code ?>" name="payment[method]" checked="checked" class="radio solo method"/>
+                                    <?php endif; ?>
+                                    <label for="p_method_<?php echo $_code ?>"><?php echo $this->escapeHtml($_method->getTitle()) ?></label>
+                                </dt>
+                                <?php if ($html = $this->getChildHtml('payment.method.' . $_code)) : ?>
+                                    <dd class="item-content">
+                                        <?php echo $html; ?>
+                                    </dd>
                                 <?php endif; ?>
-                                <label for="p_method_<?php echo $_code ?>"><?php echo $this->escapeHtml($_method->getTitle()) ?></label>
-                            </dt>
-                            <?php if ($html = $this->getChildHtml('payment.method.' . $_code)) : ?>
-                                <dd class="item-content">
-                                    <?php echo $html; ?>
-                                </dd>
-                            <?php endif; ?>
-                        <?php endforeach; ?>
-                    </dl>
-                    <?php echo $this->getChildHtml('payment_methods_after') ?>
-                    <?php echo $this->getChildHtml('checkout_billing_items') ?>
-                </div>
+                            <?php endforeach; ?>
+                        </dl>
+                        <?php echo $this->getChildHtml('payment_methods_after') ?>
+                        <?php echo $this->getChildHtml('checkout_billing_items') ?>
+                    </div>
+                </fieldset>
             </div>
         </div>
     </div>
diff --git a/app/code/Magento/Multishipping/view/frontend/templates/checkout/shipping.phtml b/app/code/Magento/Multishipping/view/frontend/templates/checkout/shipping.phtml
index fc03ee38027..a0470c099a1 100644
--- a/app/code/Magento/Multishipping/view/frontend/templates/checkout/shipping.phtml
+++ b/app/code/Magento/Multishipping/view/frontend/templates/checkout/shipping.phtml
@@ -55,33 +55,40 @@
                         <?php $_sole = count($_shippingRateGroups) == 1; foreach ($_shippingRateGroups as $code => $_rates): ?>
                             <dt class="item-title"><?php echo $this->escapeHtml($this->getCarrierName($code)) ?></dt>
                             <dd class="item-content">
-                                <?php $_sole = $_sole && count($_rates) == 1; foreach ($_rates as $_rate): ?>
-                                <div class="field choice">
-                                <?php if ($_rate->getErrorMessage()): ?>
-                                    <strong><?php echo $this->escapeHtml($_rate->getCarrierTitle()) ?>: <?php echo $this->escapeHtml($_rate->getErrorMessage()) ?></strong>
-                                <?php else: ?>
-                                    <?php if ($_sole) : ?>
-                                        <input type="radio" name="shipping_method[<?php echo $_address->getId() ?>]" value="<?php echo $this->escapeHtml($_rate->getCode()) ?>" id="s_method_<?php echo $_address->getId() ?>_<?php echo $_rate->getCode() ?>" class="radio solo method" checked="checked"/>
+                                <fieldset class="fieldset">
+                                    <legend class="legend">
+                                        <span><?php echo $this->escapeHtml($this->getCarrierName($code)) ?></span>
+                                    </legend><br>
+                                    <?php $_sole = $_sole && count($_rates) == 1; foreach ($_rates as $_rate): ?>
+                                    <div class="field choice">
+                                    <?php if ($_rate->getErrorMessage()): ?>
+                                        <strong><?php echo $this->escapeHtml($_rate->getCarrierTitle()) ?>: <?php echo $this->escapeHtml($_rate->getErrorMessage()) ?></strong>
                                     <?php else: ?>
-                                        <input type="radio" name="shipping_method[<?php echo $_address->getId() ?>]" value="<?php echo $_rate->getCode() ?>" id="s_method_<?php echo $_address->getId() ?>_<?php echo $_rate->getCode() ?>"<?php if($_rate->getCode()===$this->getAddressShippingMethod($_address)) echo ' checked="checked"' ?> class="radio" />
-                                    <?php endif; ?>
-                                    <label for="s_method_<?php echo $_address->getId() ?>_<?php echo $_rate->getCode() ?>"><?php echo $this->escapeHtml($_rate->getMethodTitle()) ?>
-                                        <?php $_excl = $this->getShippingPrice($_address, $_rate->getPrice(), $this->helper('Magento\Tax\Helper\Data')->displayShippingPriceIncludingTax()); ?>
-                                        <?php $_incl = $this->getShippingPrice($_address, $_rate->getPrice(), true); ?>
-                                    <?php if ($this->helper('Magento\Tax\Helper\Data')->displayShippingBothPrices() && $_incl != $_excl): ?>
-                                        <span class="price-including-tax" data-label="<?php echo __('Incl. Tax'); ?>">
-                                    <?php endif; ?>
-                                        <?php echo $_incl; ?>
-                                    <?php if ($this->helper('Magento\Tax\Helper\Data')->displayShippingBothPrices() && $_incl != $_excl): ?>
-                                        </span>
-                                    <?php endif; ?>
-                                    <?php if ($this->helper('Magento\Tax\Helper\Data')->displayShippingBothPrices() && $_incl != $_excl): ?>
-                                        <span class="price-excluding-tax" data-label="<?php echo __('Excl. Tax'); ?>"><?php echo $_excl; ?></span>
-                                    <?php endif; ?>
-                                    </label>
-                                <?php endif ?>
-                                </div>
-                                <?php endforeach; ?>
+                                        <div class="control">
+                                            <?php if ($_sole) : ?>
+                                                <input type="radio" name="shipping_method[<?php echo $_address->getId() ?>]" value="<?php echo $this->escapeHtml($_rate->getCode()) ?>" id="s_method_<?php echo $_address->getId() ?>_<?php echo $_rate->getCode() ?>" class="radio solo method" checked="checked"/>
+                                            <?php else: ?>
+                                                <input type="radio" name="shipping_method[<?php echo $_address->getId() ?>]" value="<?php echo $_rate->getCode() ?>" id="s_method_<?php echo $_address->getId() ?>_<?php echo $_rate->getCode() ?>"<?php if($_rate->getCode()===$this->getAddressShippingMethod($_address)) echo ' checked="checked"' ?> class="radio" />
+                                            <?php endif; ?>
+                                        </div>
+                                        <label for="s_method_<?php echo $_address->getId() ?>_<?php echo $_rate->getCode() ?>"><?php echo $this->escapeHtml($_rate->getMethodTitle()) ?>
+                                            <?php $_excl = $this->getShippingPrice($_address, $_rate->getPrice(), $this->helper('Magento\Tax\Helper\Data')->displayShippingPriceIncludingTax()); ?>
+                                            <?php $_incl = $this->getShippingPrice($_address, $_rate->getPrice(), true); ?>
+                                        <?php if ($this->helper('Magento\Tax\Helper\Data')->displayShippingBothPrices() && $_incl != $_excl): ?>
+                                            <span class="price-including-tax" data-label="<?php echo __('Incl. Tax'); ?>">
+                                        <?php endif; ?>
+                                            <?php echo $_incl; ?>
+                                        <?php if ($this->helper('Magento\Tax\Helper\Data')->displayShippingBothPrices() && $_incl != $_excl): ?>
+                                            </span>
+                                        <?php endif; ?>
+                                        <?php if ($this->helper('Magento\Tax\Helper\Data')->displayShippingBothPrices() && $_incl != $_excl): ?>
+                                            <span class="price-excluding-tax" data-label="<?php echo __('Excl. Tax'); ?>"><?php echo $_excl; ?></span>
+                                        <?php endif; ?>
+                                        </label>
+                                    <?php endif ?>
+                                    </div>
+                                    <?php endforeach; ?>
+                                </fieldset>
                             </dd>
                         <?php endforeach; ?>
                     </dl>
diff --git a/app/code/Magento/Newsletter/composer.json b/app/code/Magento/Newsletter/composer.json
index 33f0cdcbb30..2095dfd29d1 100644
--- a/app/code/Magento/Newsletter/composer.json
+++ b/app/code/Magento/Newsletter/composer.json
@@ -3,20 +3,20 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-customer": "0.1.0-alpha102",
-        "magento/module-widget": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/module-cms": "0.1.0-alpha102",
-        "magento/module-email": "0.1.0-alpha102",
-        "magento/module-cron": "0.1.0-alpha102",
-        "magento/module-eav": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-customer": "0.1.0-alpha103",
+        "magento/module-widget": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/module-cms": "0.1.0-alpha103",
+        "magento/module-email": "0.1.0-alpha103",
+        "magento/module-cron": "0.1.0-alpha103",
+        "magento/module-eav": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Newsletter/data/newsletter_setup/data-upgrade-1.6.0.1-1.6.0.2.php b/app/code/Magento/Newsletter/data/newsletter_setup/data-upgrade-1.6.0.1-1.6.0.2.php
index fc251177db4..8f35fc9e468 100644
--- a/app/code/Magento/Newsletter/data/newsletter_setup/data-upgrade-1.6.0.1-1.6.0.2.php
+++ b/app/code/Magento/Newsletter/data/newsletter_setup/data-upgrade-1.6.0.1-1.6.0.2.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/** @var $installer \Magento\Framework\Module\Setup\Migration */
+/** @var $this \Magento\Framework\Module\Setup */
 $installer = $this->createMigrationSetup();
 $installer->startSetup();
 
diff --git a/app/code/Magento/Newsletter/sql/newsletter_setup/install-1.6.0.0.php b/app/code/Magento/Newsletter/sql/newsletter_setup/install-1.6.0.0.php
index 59d6bb8da52..8413bb44fcf 100644
--- a/app/code/Magento/Newsletter/sql/newsletter_setup/install-1.6.0.0.php
+++ b/app/code/Magento/Newsletter/sql/newsletter_setup/install-1.6.0.0.php
@@ -22,14 +22,14 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-
 /**
  * Newsletter install
  *
  * @author     Magento Core Team <core@magentocommerce.com>
  */
+
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
-/* @var $installer \Magento\Framework\Module\Setup */
 
 $installer->startSetup();
 
diff --git a/app/code/Magento/Newsletter/view/frontend/templates/subscribe.phtml b/app/code/Magento/Newsletter/view/frontend/templates/subscribe.phtml
index df99b50994a..f898cfe5d74 100644
--- a/app/code/Magento/Newsletter/view/frontend/templates/subscribe.phtml
+++ b/app/code/Magento/Newsletter/view/frontend/templates/subscribe.phtml
@@ -26,17 +26,15 @@
     <div class="title"><strong>Newsletter</strong></div>
     <div class="content">
         <form class="form subscribe" action="<?php echo $this->getFormActionUrl() ?>" method="post" id="newsletter-validate-detail">
-            <fieldset class="fieldset">
-                <div class="field newsletter">
-                    <label class="label" for="newsletter"><span><?php echo __('Sign Up for Our Newsletter:') ?></span></label>
-                    <div class="control">
-                        <input name="email" type="email" id="newsletter"
-                                      placeholder="<?php echo __('Enter your email address') ?>"
-                                      data-mage-init='{"newsletter":{"formSelector": "#newsletter-validate-detail", "placeholder": "<?php echo __('Enter your email address') ?>"}}'
-                                      data-validate="{required:true, 'validate-email':true}"/>
-                    </div>
+            <div class="field newsletter">
+                <label class="label" for="newsletter"><span><?php echo __('Sign Up for Our Newsletter:') ?></span></label>
+                <div class="control">
+                    <input name="email" type="email" id="newsletter"
+                                  placeholder="<?php echo __('Enter your email address') ?>"
+                                  data-mage-init='{"newsletter":{"formSelector": "#newsletter-validate-detail", "placeholder": "<?php echo __('Enter your email address') ?>"}}'
+                                  data-validate="{required:true, 'validate-email':true}"/>
                 </div>
-            </fieldset>
+            </div>
             <div class="actions">
                 <button class="action subscribe" title="<?php echo __('Subscribe') ?>" type="submit">
                     <span><?php echo __('Subscribe') ?></span>
diff --git a/app/code/Magento/OfflinePayments/composer.json b/app/code/Magento/OfflinePayments/composer.json
index 3c2931a9f97..2b06806aa09 100644
--- a/app/code/Magento/OfflinePayments/composer.json
+++ b/app/code/Magento/OfflinePayments/composer.json
@@ -3,12 +3,12 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-payment": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-payment": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/OfflineShipping/composer.json b/app/code/Magento/OfflineShipping/composer.json
index 495d293b7df..3a7d0d251f5 100644
--- a/app/code/Magento/OfflineShipping/composer.json
+++ b/app/code/Magento/OfflineShipping/composer.json
@@ -3,19 +3,19 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/module-shipping": "0.1.0-alpha102",
-        "magento/module-catalog": "0.1.0-alpha102",
-        "magento/module-sales": "0.1.0-alpha102",
-        "magento/module-sales-rule": "0.1.0-alpha102",
-        "magento/module-directory": "0.1.0-alpha102",
-        "magento/module-checkout": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/module-shipping": "0.1.0-alpha103",
+        "magento/module-catalog": "0.1.0-alpha103",
+        "magento/module-sales": "0.1.0-alpha103",
+        "magento/module-sales-rule": "0.1.0-alpha103",
+        "magento/module-directory": "0.1.0-alpha103",
+        "magento/module-checkout": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/OfflineShipping/sql/offlineshipping_setup/install-2.0.0.0.php b/app/code/Magento/OfflineShipping/sql/offlineshipping_setup/install-2.0.0.0.php
index 9196d04196f..2432d3e6996 100644
--- a/app/code/Magento/OfflineShipping/sql/offlineshipping_setup/install-2.0.0.0.php
+++ b/app/code/Magento/OfflineShipping/sql/offlineshipping_setup/install-2.0.0.0.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/** @var $installer \Magento\Framework\Module\Setup */
+/** @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 $installer->startSetup();
diff --git a/app/code/Magento/Ogone/composer.json b/app/code/Magento/Ogone/composer.json
index c7f1e983301..dc6ff442783 100644
--- a/app/code/Magento/Ogone/composer.json
+++ b/app/code/Magento/Ogone/composer.json
@@ -3,15 +3,15 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-sales": "0.1.0-alpha102",
-        "magento/module-payment": "0.1.0-alpha102",
-        "magento/module-checkout": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-sales": "0.1.0-alpha103",
+        "magento/module-payment": "0.1.0-alpha103",
+        "magento/module-checkout": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Ogone/data/ogone_setup/data-install-1.6.0.0.php b/app/code/Magento/Ogone/data/ogone_setup/data-install-1.6.0.0.php
index 1334c28d9aa..0348dd7c407 100644
--- a/app/code/Magento/Ogone/data/ogone_setup/data-install-1.6.0.0.php
+++ b/app/code/Magento/Ogone/data/ogone_setup/data-install-1.6.0.0.php
@@ -22,8 +22,8 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-$installer = $this;
 /* @var $installer \Magento\Framework\Module\Setup */
+$installer = $this;
 
 $data = array();
 $statuses = array(
diff --git a/app/code/Magento/PageCache/composer.json b/app/code/Magento/PageCache/composer.json
index 173f05e07d6..b80a9f8d3a5 100644
--- a/app/code/Magento/PageCache/composer.json
+++ b/app/code/Magento/PageCache/composer.json
@@ -3,13 +3,13 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/PayPalRecurringPayment/composer.json b/app/code/Magento/PayPalRecurringPayment/composer.json
index 79620286d96..c7e5ca5291b 100644
--- a/app/code/Magento/PayPalRecurringPayment/composer.json
+++ b/app/code/Magento/PayPalRecurringPayment/composer.json
@@ -3,17 +3,17 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-customer": "0.1.0-alpha102",
-        "magento/module-directory": "0.1.0-alpha102",
-        "magento/module-payment": "0.1.0-alpha102",
-        "magento/module-paypal": "0.1.0-alpha102",
-        "magento/module-recurring-payment": "0.1.0-alpha102",
-        "magento/module-sales": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-customer": "0.1.0-alpha103",
+        "magento/module-directory": "0.1.0-alpha103",
+        "magento/module-payment": "0.1.0-alpha103",
+        "magento/module-paypal": "0.1.0-alpha103",
+        "magento/module-recurring-payment": "0.1.0-alpha103",
+        "magento/module-sales": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Payment/composer.json b/app/code/Magento/Payment/composer.json
index 9b965355aa3..a10ad27cc9c 100644
--- a/app/code/Magento/Payment/composer.json
+++ b/app/code/Magento/Payment/composer.json
@@ -3,16 +3,16 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-sales": "0.1.0-alpha102",
-        "magento/module-centinel": "0.1.0-alpha102",
-        "magento/module-checkout": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-sales": "0.1.0-alpha103",
+        "magento/module-centinel": "0.1.0-alpha103",
+        "magento/module-checkout": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Paypal/Block/Iframe.php b/app/code/Magento/Paypal/Block/Iframe.php
index 2d78245680d..a1b9235ad8e 100644
--- a/app/code/Magento/Paypal/Block/Iframe.php
+++ b/app/code/Magento/Paypal/Block/Iframe.php
@@ -135,7 +135,7 @@ class Iframe extends \Magento\Payment\Block\Form
             $this->_block = $this->getLayout()->createBlock(
                 'Magento\\Paypal\\Block\\' . str_replace(
                     ' ',
-                    \Magento\Framework\Autoload\IncludePath::NS_SEPARATOR,
+                    '\\',
                     ucwords(str_replace('_', ' ', $this->_paymentMethodCode))
                 ) . '\\Iframe'
             );
diff --git a/app/code/Magento/Paypal/composer.json b/app/code/Magento/Paypal/composer.json
index 09d9c8a74bf..7cca4e58880 100644
--- a/app/code/Magento/Paypal/composer.json
+++ b/app/code/Magento/Paypal/composer.json
@@ -3,25 +3,25 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-checkout": "0.1.0-alpha102",
-        "magento/module-sales": "0.1.0-alpha102",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-customer": "0.1.0-alpha102",
-        "magento/module-payment": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/module-tax": "0.1.0-alpha102",
-        "magento/module-directory": "0.1.0-alpha102",
-        "magento/module-theme": "0.1.0-alpha102",
-        "magento/module-centinel": "0.1.0-alpha102",
-        "magento/module-catalog": "0.1.0-alpha102",
-        "magento/module-eav": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-checkout": "0.1.0-alpha103",
+        "magento/module-sales": "0.1.0-alpha103",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-customer": "0.1.0-alpha103",
+        "magento/module-payment": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/module-tax": "0.1.0-alpha103",
+        "magento/module-directory": "0.1.0-alpha103",
+        "magento/module-theme": "0.1.0-alpha103",
+        "magento/module-centinel": "0.1.0-alpha103",
+        "magento/module-catalog": "0.1.0-alpha103",
+        "magento/module-eav": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "lib-libxml": "*",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Paypal/data/paypal_setup/data-upgrade-1.6.0.2-1.6.0.3.php b/app/code/Magento/Paypal/data/paypal_setup/data-upgrade-1.6.0.2-1.6.0.3.php
index 11cc8e870d6..b34584387c7 100644
--- a/app/code/Magento/Paypal/data/paypal_setup/data-upgrade-1.6.0.2-1.6.0.3.php
+++ b/app/code/Magento/Paypal/data/paypal_setup/data-upgrade-1.6.0.2-1.6.0.3.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/** @var $this \Magento\Framework\Module\Setup */
+/** @var $this \Magento\Sales\Model\Resource\Setup */
 $installer = $this;
 $connection = $installer->getConnection();
 $installer->startSetup();
diff --git a/app/code/Magento/Paypal/sql/paypal_setup/install-1.6.0.0.php b/app/code/Magento/Paypal/sql/paypal_setup/install-1.6.0.0.php
index 9607f307fe1..b1809bf6af8 100644
--- a/app/code/Magento/Paypal/sql/paypal_setup/install-1.6.0.0.php
+++ b/app/code/Magento/Paypal/sql/paypal_setup/install-1.6.0.0.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/** @var $installer \Magento\Sales\Model\Resource\Setup */
+/** @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 /**
diff --git a/app/code/Magento/Paypal/sql/paypal_setup/upgrade-1.6.0.0-1.6.0.1.php b/app/code/Magento/Paypal/sql/paypal_setup/upgrade-1.6.0.0-1.6.0.1.php
index 215a0efabd5..7355597d8f5 100644
--- a/app/code/Magento/Paypal/sql/paypal_setup/upgrade-1.6.0.0-1.6.0.1.php
+++ b/app/code/Magento/Paypal/sql/paypal_setup/upgrade-1.6.0.0-1.6.0.1.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/** @var $installer \Magento\Sales\Model\Resource\Setup */
+/** @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 /**
diff --git a/app/code/Magento/Paypal/sql/paypal_setup/upgrade-1.6.0.1-1.6.0.2.php b/app/code/Magento/Paypal/sql/paypal_setup/upgrade-1.6.0.1-1.6.0.2.php
index 026c521e712..96281ede42f 100644
--- a/app/code/Magento/Paypal/sql/paypal_setup/upgrade-1.6.0.1-1.6.0.2.php
+++ b/app/code/Magento/Paypal/sql/paypal_setup/upgrade-1.6.0.1-1.6.0.2.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/** @var $installer \Magento\Sales\Model\Resource\Setup */
+/** @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 $installer->getConnection()->addColumn(
diff --git a/app/code/Magento/Paypal/sql/paypal_setup/upgrade-1.6.0.3-1.6.0.4.php b/app/code/Magento/Paypal/sql/paypal_setup/upgrade-1.6.0.3-1.6.0.4.php
index 2ab3222b039..03fdc17f2ea 100644
--- a/app/code/Magento/Paypal/sql/paypal_setup/upgrade-1.6.0.3-1.6.0.4.php
+++ b/app/code/Magento/Paypal/sql/paypal_setup/upgrade-1.6.0.3-1.6.0.4.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/** @var $installer \Magento\Sales\Model\Resource\Setup */
+/** @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 $installer->getConnection()
diff --git a/app/code/Magento/Persistent/composer.json b/app/code/Magento/Persistent/composer.json
index c3ab69a918a..5c946c684d0 100644
--- a/app/code/Magento/Persistent/composer.json
+++ b/app/code/Magento/Persistent/composer.json
@@ -3,17 +3,17 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-checkout": "0.1.0-alpha102",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-customer": "0.1.0-alpha102",
-        "magento/module-sales": "0.1.0-alpha102",
-        "magento/module-cron": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-checkout": "0.1.0-alpha103",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-customer": "0.1.0-alpha103",
+        "magento/module-sales": "0.1.0-alpha103",
+        "magento/module-cron": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Persistent/sql/persistent_setup/install-1.0.0.0.php b/app/code/Magento/Persistent/sql/persistent_setup/install-1.0.0.0.php
index 24112e20230..fb33978aa5d 100644
--- a/app/code/Magento/Persistent/sql/persistent_setup/install-1.0.0.0.php
+++ b/app/code/Magento/Persistent/sql/persistent_setup/install-1.0.0.0.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/** @var $installer \Magento\Framework\Module\Setup */
+/** @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 $installer->startSetup();
 
diff --git a/app/code/Magento/ProductAlert/composer.json b/app/code/Magento/ProductAlert/composer.json
index 6f7242980e3..838a97b3f97 100644
--- a/app/code/Magento/ProductAlert/composer.json
+++ b/app/code/Magento/ProductAlert/composer.json
@@ -3,15 +3,15 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-catalog": "0.1.0-alpha102",
-        "magento/module-customer": "0.1.0-alpha102",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-catalog": "0.1.0-alpha103",
+        "magento/module-customer": "0.1.0-alpha103",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/ProductAlert/sql/productalert_setup/install-1.6.0.0.php b/app/code/Magento/ProductAlert/sql/productalert_setup/install-1.6.0.0.php
index c7d4e70b70b..7eac79e51e1 100644
--- a/app/code/Magento/ProductAlert/sql/productalert_setup/install-1.6.0.0.php
+++ b/app/code/Magento/ProductAlert/sql/productalert_setup/install-1.6.0.0.php
@@ -27,8 +27,9 @@
  *
  * @author      Magento Core Team <core@magentocommerce.com>
  */
+
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
-/* @var $installer \Magento\Framework\Module\Setup */
 
 $installer->startSetup();
 /**
diff --git a/app/code/Magento/RecurringPayment/composer.json b/app/code/Magento/RecurringPayment/composer.json
index 9b1c2893c7c..b4b05b2f40d 100644
--- a/app/code/Magento/RecurringPayment/composer.json
+++ b/app/code/Magento/RecurringPayment/composer.json
@@ -3,22 +3,22 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-catalog": "0.1.0-alpha102",
-        "magento/module-checkout": "0.1.0-alpha102",
-        "magento/module-customer": "0.1.0-alpha102",
-        "magento/module-eav": "0.1.0-alpha102",
-        "magento/module-payment": "0.1.0-alpha102",
-        "magento/module-sales": "0.1.0-alpha102",
-        "magento/module-theme": "0.1.0-alpha102",
-        "magento/module-catalog-inventory": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-catalog": "0.1.0-alpha103",
+        "magento/module-checkout": "0.1.0-alpha103",
+        "magento/module-customer": "0.1.0-alpha103",
+        "magento/module-eav": "0.1.0-alpha103",
+        "magento/module-payment": "0.1.0-alpha103",
+        "magento/module-sales": "0.1.0-alpha103",
+        "magento/module-theme": "0.1.0-alpha103",
+        "magento/module-catalog-inventory": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/RecurringPayment/data/recurringpayment_setup/data-install-1.0.0.0.php b/app/code/Magento/RecurringPayment/data/recurringpayment_setup/data-install-1.0.0.0.php
index a6d44ef5166..b0e5a0f6276 100644
--- a/app/code/Magento/RecurringPayment/data/recurringpayment_setup/data-install-1.0.0.0.php
+++ b/app/code/Magento/RecurringPayment/data/recurringpayment_setup/data-install-1.0.0.0.php
@@ -21,7 +21,8 @@
  * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
-/** @var $this \Magento\Catalog\Model\Resource\Setup */
+
+/** @var $this \Magento\RecurringPayment\Model\Resource\Setup */
 $this->installEntities();
 $entityTypeId = $this->getEntityTypeId(\Magento\Catalog\Model\Product::ENTITY);
 $attributeSetId = $this->getAttributeSetId($entityTypeId, 'Default');
diff --git a/app/code/Magento/RecurringPayment/sql/recurringpayment_setup/install-1.0.0.0.php b/app/code/Magento/RecurringPayment/sql/recurringpayment_setup/install-1.0.0.0.php
index 3a7e310032d..06f5e086605 100644
--- a/app/code/Magento/RecurringPayment/sql/recurringpayment_setup/install-1.0.0.0.php
+++ b/app/code/Magento/RecurringPayment/sql/recurringpayment_setup/install-1.0.0.0.php
@@ -21,7 +21,8 @@
  * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
-/** @var $this \Magento\Catalog\Model\Resource\Setup */
+
+/** @var $this \Magento\Setup\Module\SetupModule */
 $this->startSetup();
 
 /**
diff --git a/app/code/Magento/RecurringPayment/view/frontend/templates/recurring/payment/view.phtml b/app/code/Magento/RecurringPayment/view/frontend/templates/recurring/payment/view.phtml
index 33630f8d889..2eb34f80e9f 100644
--- a/app/code/Magento/RecurringPayment/view/frontend/templates/recurring/payment/view.phtml
+++ b/app/code/Magento/RecurringPayment/view/frontend/templates/recurring/payment/view.phtml
@@ -24,97 +24,108 @@
 ?>
 <?php /* @var $this \Magento\RecurringPayment\Block\Payment\View */ ?>
 
-<div class="order recurring details">
-    <div class="actions">
+<div class="order-recurring-details">
+    <?php /* info tabs */ ?>
+    <?php $layout = $this->getLayout(); ?>
+    <?php $infoTabs = $this->getGroupChildNames('info_tabs');?>
+
+    <div class="actions-toolbar">
         <div class="primary">
+            <?php if ($this->getCanActivate()): ?>
+                <button type="button" title="<?php echo __('Activate') ?>" class="action activate"
+                        onclick="if( confirm('<?php echo $this->getConfirmationMessage() ?>') ) { window.location.href = '<?php echo $this->getActivateUrl() ?>'; } return false;">
+                    <span><?php echo __('Activate') ?></span>
+                </button>
+            <?php endif; ?>
             <?php if ($this->getCanCancel()): ?>
                 <button type="button" title="<?php echo __('Cancel') ?>" class="action cancel"
                         onclick="if( confirm('<?php echo $this->getConfirmationMessage() ?>') ) { window.location.href = '<?php echo $this->getCancelUrl() ?>'; } return false;">
-                    <span><?php echo __('Cancel') ?></span></button>
+                    <span><?php echo __('Cancel') ?></span>
+                </button>
             <?php endif; ?>
             <?php if ($this->getCanSuspend()): ?>
                 <button type="button" title="<?php echo __('Suspend') ?>" class="action suspend"
                         onclick="if( confirm('<?php echo $this->getConfirmationMessage() ?>') ) { window.location.href = '<?php echo $this->getSuspendUrl() ?>'; } return false;">
-                    <span><?php echo __('Suspend') ?></span></button>
-            <?php endif; ?>
-            <?php if ($this->getCanActivate()): ?>
-                <button type="button" title="<?php echo __('Activate') ?>" class="action activate"
-                        onclick="if( confirm('<?php echo $this->getConfirmationMessage() ?>') ) { window.location.href = '<?php echo $this->getActivateUrl() ?>'; } return false;">
-                    <span><?php echo __('Activate') ?></span></button>
+                    <span><?php echo __('Suspend') ?></span>
+                </button>
             <?php endif; ?>
             <?php if ($this->getCanUpdate()): ?>
                 <button type="button" title="<?php echo __('Get Update') ?>" class="action update"
                         onclick="if( confirm('<?php echo $this->getConfirmationMessage() ?>') ) { window.location.href = '<?php echo $this->getUpdateUrl() ?>'; } return false;">
-                    <span><?php echo __('Get Update') ?></span></button>
+                    <span><?php echo __('Get Update') ?></span>
+                </button>
             <?php endif; ?>
         </div>
     </div>
 
-    <?php /* info tabs */ ?>
-    <?php $layout = $this->getLayout(); ?>
-    <?php $infoTabs = $this->getGroupChildNames('info_tabs'); ?>
-    <dl class="order info">
-        <dt><?php echo __('About This Payment:') ?></dt>
-        <dd>
-            <ul id="order-info-tabs" class="items">
-                <?php foreach ($infoTabs as $elementName): ?>
-                    <?php $block = $layout->getBlock($elementName); ?>
-                    <?php if (!$block) continue; ?>
-                    <?php if ($this->getObjectData($block, 'is_view_current')): ?>
-                        <li class="nav item current">
-                            <strong><?php echo $this->escapeHtml($this->getObjectData($block, 'view_label')) ?></strong>
-                        </li>
-                    <?php else: ?>
-                        <li class="nav item">
-                            <a href="<?php echo $this->escapeHtml($this->getObjectData($block, 'view_url')) ?>"><?php echo $this->escapeHtml($this->getObjectData($block, 'view_label')) ?></a>
-                        </li>
-                    <?php endif; ?>
-                <?php endforeach; ?>
-            </ul>
-        </dd>
-    </dl>
+    <ul id="order-info-tabs" class="items items-info-tabs">
+        <?php foreach ($infoTabs as $elementName): ?>
+            <?php $block = $layout->getBlock($elementName); ?>
+            <?php if (!$block) continue; ?>
+            <?php if ($this->getObjectData($block, 'is_view_current')): ?>
+                <li class="item current">
+                    <strong><?php echo $this->escapeHtml($this->getObjectData($block, 'view_label')) ?></strong>
+                </li>
+            <?php else: ?>
+                <li class="item">
+                    <a href="<?php echo $this->escapeHtml($this->getObjectData($block, 'view_url')) ?>">
+                        <?php echo $this->escapeHtml($this->getObjectData($block, 'view_label')) ?>
+                    </a>
+                </li>
+            <?php endif; ?>
+        <?php endforeach; ?>
+    </ul>
 
-    <?php /* info blocks */ ?>
-    <!-- info blocks in 2 columns -->
-    <?php for ($i = 1; $i <= 5; $i++): ?>
-        <?php $infoBlocks = $this->getGroupChildNames("info_blocks_row_{$i}"); ?>
-        <?php if ($infoBlocks): ?>
-            <div class="block view info">
-                <?php for ($j = 1; $j <= 2; $j++): ?>
-                    <?php foreach ($infoBlocks as $elementName): ?>
-                        <?php $block = $layout->getBlock($elementName); ?>
-                        <?php if (!$block) continue; ?>
-                        <?php if ($j == $this->getObjectData($block, 'view_column')): ?>
-                            <div class="box box<?php echo $j ?>">
-                                <strong class="subtitle">
-                                    <span><?php echo $this->escapeHtml($this->getObjectData($block, 'view_label')) ?></span>
-                                </strong>
+    <div class="order-recurring-details-item">
+        <?php /* info blocks */ ?>
+        <!-- info blocks in 2 columns -->
+        <?php for ($i = 1; $i <= 5; $i++): ?>
+            <?php $infoBlocks = $this->getGroupChildNames("info_blocks_row_{$i}"); ?>
+            <?php if ($infoBlocks): ?>
+                <div class="block block-view-info">
+                    <div class="block-content">
+                        <?php for ($j = 1; $j <= 2; $j++): ?>
+                            <?php foreach ($infoBlocks as $elementName): ?>
+                                <?php $block = $layout->getBlock($elementName); ?>
+                                <?php if (!$block) continue; ?>
+                                <?php if ($j == $this->getObjectData($block, 'view_column')): ?>
+                                    <div class="box box<?php echo $j ?>">
+                                        <strong class="box-title">
+                                            <span><?php echo $this->escapeHtml($this->getObjectData($block, 'view_label')) ?></span>
+                                        </strong>
 
-                                <div class="content">
-                                    <?php $html = $layout->renderElement($elementName); ?>
-                                    <?php echo($html ? $html : __('No information available.')); ?>
-                                </div>
-                            </div>
-                        <?php endif; ?>
-                    <?php endforeach; ?>
-                <?php endfor; ?>
-            </div>
-        <?php endif; ?>
-    <?php endfor; ?>
+                                        <div class="box-content">
+                                            <?php $html = $layout->renderElement($elementName); ?>
+                                            <?php echo($html ? $html : __('No information available.')); ?>
+                                        </div>
+                                    </div>
+                                <?php endif; ?>
+                            <?php endforeach; ?>
+                        <?php endfor; ?>
+                    </div>
+                </div>
+            <?php endif; ?>
+        <?php endfor; ?>
+    </div>
 
     <!-- table data block -->
     <?php $table = $this->getChildBlock('table') ?>
     <?php if ($table): ?>
-        <div class="recurring order details items">
-            <div class="order subtitle caption">
-                <strong><?php echo $this->escapeHtml($this->getObjectData($table, 'view_label')) ?></strong></div>
-            <?php echo $this->getChildHtml('table') ?>
+        <div class="block block-recurring-details-items">
+            <div class="block-title">
+                <strong><?php echo $this->escapeHtml($this->getObjectData($table, 'view_label')) ?></strong>
+            </div>
+            <div class="block-content">
+                <?php echo $this->getChildHtml('table') ?>
+            </div>
         </div>
     <?php endif; ?>
 
-    <div class="actions">
-        <div class="secondary"><a href="<?php echo $this->getBackUrl() ?>"
-                                  class="action back"><span><?php echo __('Back to Recurring Billing Payments') ?></span></a>
+    <div class="actions-toolbar">
+        <div class="secondary">
+            <a href="<?php echo $this->getBackUrl() ?>" class="action back">
+                <span><?php echo __('Back to Recurring Billing Payments') ?></span>
+            </a>
         </div>
     </div>
-</div>
+</div>
\ No newline at end of file
diff --git a/app/code/Magento/RecurringPayment/view/frontend/templates/recurring/payment/view/info.phtml b/app/code/Magento/RecurringPayment/view/frontend/templates/recurring/payment/view/info.phtml
index 3ca312b08e5..caacf92f1d8 100644
--- a/app/code/Magento/RecurringPayment/view/frontend/templates/recurring/payment/view/info.phtml
+++ b/app/code/Magento/RecurringPayment/view/frontend/templates/recurring/payment/view/info.phtml
@@ -37,8 +37,8 @@
         <?php foreach ($this->getRenderedInfo() as $row): ?>
             <?php $isAmount = $this->getObjectData($row, 'is_amount'); ?>
             <tr>
-                <th class="col label" scope="row"><?php echo $this->escapeHtml($this->getObjectData($row, 'label')) ?>:</th>
-                <td class="col value"><?php echo $this->renderRowValue($row) ?></td>
+                <th class="col label" scope="row"><span><?php echo $this->escapeHtml($this->getObjectData($row, 'label')) ?>:</span></th>
+                <td class="col value"><span><?php echo $this->renderRowValue($row) ?></span></td>
             </tr>
         <?php endforeach; ?>
         </tbody>
diff --git a/app/code/Magento/Reports/composer.json b/app/code/Magento/Reports/composer.json
index 05576ea8e8b..2742899c658 100644
--- a/app/code/Magento/Reports/composer.json
+++ b/app/code/Magento/Reports/composer.json
@@ -3,27 +3,27 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-eav": "0.1.0-alpha102",
-        "magento/module-customer": "0.1.0-alpha102",
-        "magento/module-catalog": "0.1.0-alpha102",
-        "magento/module-sales": "0.1.0-alpha102",
-        "magento/module-cms": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-widget": "0.1.0-alpha102",
-        "magento/module-log": "0.1.0-alpha102",
-        "magento/module-wishlist": "0.1.0-alpha102",
-        "magento/module-review": "0.1.0-alpha102",
-        "magento/module-catalog-inventory": "0.1.0-alpha102",
-        "magento/module-tax": "0.1.0-alpha102",
-        "magento/module-downloadable": "0.1.0-alpha102",
-        "magento/module-sales-rule": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-eav": "0.1.0-alpha103",
+        "magento/module-customer": "0.1.0-alpha103",
+        "magento/module-catalog": "0.1.0-alpha103",
+        "magento/module-sales": "0.1.0-alpha103",
+        "magento/module-cms": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-widget": "0.1.0-alpha103",
+        "magento/module-log": "0.1.0-alpha103",
+        "magento/module-wishlist": "0.1.0-alpha103",
+        "magento/module-review": "0.1.0-alpha103",
+        "magento/module-catalog-inventory": "0.1.0-alpha103",
+        "magento/module-tax": "0.1.0-alpha103",
+        "magento/module-downloadable": "0.1.0-alpha103",
+        "magento/module-sales-rule": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Reports/sql/reports_setup/install-1.6.0.0.php b/app/code/Magento/Reports/sql/reports_setup/install-1.6.0.0.php
index 57220ce51de..5fddea42e51 100644
--- a/app/code/Magento/Reports/sql/reports_setup/install-1.6.0.0.php
+++ b/app/code/Magento/Reports/sql/reports_setup/install-1.6.0.0.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/** @var $installer \Magento\Framework\Module\Setup */
+/** @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 /*
  * Prepare database for tables install
diff --git a/app/code/Magento/Reports/sql/reports_setup/upgrade-1.6.0.0-1.6.0.0.1.php b/app/code/Magento/Reports/sql/reports_setup/upgrade-1.6.0.0-1.6.0.0.1.php
index 7769531278e..dd717d434ac 100644
--- a/app/code/Magento/Reports/sql/reports_setup/upgrade-1.6.0.0-1.6.0.0.1.php
+++ b/app/code/Magento/Reports/sql/reports_setup/upgrade-1.6.0.0-1.6.0.0.1.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/** @var $installer \Magento\Framework\Module\Setup */
+/** @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 /*
  * Prepare database for tables install
diff --git a/app/code/Magento/Reports/sql/reports_setup/upgrade-1.6.0.0.1-1.6.0.0.2.php b/app/code/Magento/Reports/sql/reports_setup/upgrade-1.6.0.0.1-1.6.0.0.2.php
index 4163424822f..6b96db0e92f 100644
--- a/app/code/Magento/Reports/sql/reports_setup/upgrade-1.6.0.0.1-1.6.0.0.2.php
+++ b/app/code/Magento/Reports/sql/reports_setup/upgrade-1.6.0.0.1-1.6.0.0.2.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/** @var $installer \Magento\Framework\Module\Setup */
+/** @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 /*
  * Rename incorrectly named tables in early magento 2 development version
diff --git a/app/code/Magento/Reports/view/frontend/templates/product/widget/viewed/item.phtml b/app/code/Magento/Reports/view/frontend/templates/product/widget/viewed/item.phtml
index 595f87c63e8..cb1b811a505 100644
--- a/app/code/Magento/Reports/view/frontend/templates/product/widget/viewed/item.phtml
+++ b/app/code/Magento/Reports/view/frontend/templates/product/widget/viewed/item.phtml
@@ -77,9 +77,9 @@ $rating = 'short';
                             <?php endif; ?>
                         <?php else: ?>
                             <?php if ($item->getIsSalable()): ?>
-                                <p class="stock available"><span><?php echo __('In stock') ?></span></p>
+                                <div class="stock available"><span><?php echo __('In stock') ?></span></div>
                             <?php else: ?>
-                                <p class="stock unavailable"><span><?php echo __('Out of stock') ?></span></p>
+                                <div class="stock unavailable"><span><?php echo __('Out of stock') ?></span></div>
                             <?php endif; ?>
                         <?php endif; ?>
                     </div>
diff --git a/app/code/Magento/Reports/view/frontend/templates/widget/compared/column/compared_default_list.phtml b/app/code/Magento/Reports/view/frontend/templates/widget/compared/column/compared_default_list.phtml
index 3191111afde..6865ece0f30 100644
--- a/app/code/Magento/Reports/view/frontend/templates/widget/compared/column/compared_default_list.phtml
+++ b/app/code/Magento/Reports/view/frontend/templates/widget/compared/column/compared_default_list.phtml
@@ -42,64 +42,70 @@ if ($exist = $this->getRecentlyComparedProducts()) {
 }
 ?>
 <?php if ($exist): ?>
-<div class="block widget compared <?php echo $mode; ?>">
-    <div class="title">
+<div class="block widget block-compared-products-<?php echo $mode; ?>">
+    <div class="block-title">
         <strong><?php echo $title; ?></strong>
     </div>
-    <?php $suffix = $this->getNameInLayout(); ?>
-    <ol class="mini products list items" id="widget-compared-<?php echo $suffix; ?>">
-        <?php $iterator = 1; ?>
-        <?php foreach($items as $_product): ?>
-        <?php echo ($iterator++==1) ? '<li class="item product">' : '</li><li class="item product">' ?>
-            <a class="product photo" href="<?php echo $_product->getProductUrl() ?>"
-               title="<?php echo $this->stripTags($_product->getName(), null, true) ?>">
-                <?php echo $imageBlock->init($_product, $image)->toHtml() ?>
-            </a>
-            <div class="product details">
-                <strong class="product name">
-                    <a href="<?php echo $_product->getProductUrl() ?>"
-                       title="<?php echo $this->stripTags($_product->getName(), null, true) ?>)">
-                        <?php echo $this->helper('Magento\Catalog\Helper\Output')->productAttribute($_product, $_product->getName(), 'name') ?>
+    <div class="block-content">
+        <?php $suffix = $this->getNameInLayout(); ?>
+        <ol class="product-items" id="widget-compared-<?php echo $suffix; ?>">
+            <?php $iterator = 1; ?>
+            <?php foreach($items as $_product): ?>
+                <?php echo ($iterator++==1) ? '<li class="product-item">' : '</li><li class="product-item">' ?>
+                <div class="product-item-info">
+                    <a class="product-item-photo" href="<?php echo $_product->getProductUrl() ?>"
+                       title="<?php echo $this->stripTags($_product->getName(), null, true) ?>">
+                        <?php echo $imageBlock->init($_product, $image)->toHtml() ?>
                     </a>
-                </strong>
-                <?php echo $this->getProductPriceHtml(
-                    $_product,
-                    \Magento\Catalog\Pricing\Price\FinalPrice::PRICE_CODE,
-                    \Magento\Framework\Pricing\Render::ZONE_ITEM_LIST,
-                    [
-                        'price_id_suffix' => '-widget-compared-' . $suffix
-                    ]
-                ) ?>
-                <?php if($_product->isSaleable()): ?>
-                    <div class="actions">
-                        <?php if ($_product->getTypeInstance()->hasRequiredOptions($_product)): ?>
-                            <button class="action tocart"
-                                    data-mage-init='{"redirectUrl": {"url": "<?php echo $this->getAddToCartUrl($_product) ?>"}}'
-                                    type="button" title="<?php echo __('Add to Cart') ?>">
-                                <span><?php echo __('Add to Cart') ?></span>
-                            </button>
-                        <?php else: ?>
-                            <?php
+                    <div class="product-item-details">
+                        <strong class="product-item-name">
+                            <a href="<?php echo $_product->getProductUrl() ?>"
+                               title="<?php echo $this->stripTags($_product->getName(), null, true) ?>)">
+                                <?php echo $this->helper('Magento\Catalog\Helper\Output')->productAttribute($_product, $_product->getName(), 'name') ?>
+                            </a>
+                        </strong>
+                        <?php echo $this->getProductPriceHtml(
+                            $_product,
+                            \Magento\Catalog\Pricing\Price\FinalPrice::PRICE_CODE,
+                            \Magento\Framework\Pricing\Render::ZONE_ITEM_LIST,
+                            [
+                                'price_id_suffix' => '-widget-compared-' . $suffix
+                            ]
+                        ) ?>
+                        <div class="product-item-actions">
+                        <?php if($_product->isSaleable()): ?>
+                            <div class="actions-primary">
+                            <?php if ($_product->getTypeInstance()->hasRequiredOptions($_product)): ?>
+                                <button class="action tocart primary"
+                                        data-mage-init='{"redirectUrl": {"url": "<?php echo $this->getAddToCartUrl($_product) ?>"}}'
+                                        type="button" title="<?php echo __('Add to Cart') ?>">
+                                    <span><?php echo __('Add to Cart') ?></span>
+                                </button>
+                            <?php else: ?>
+                                <?php
                                 $postDataHelper = $this->helper('Magento\Core\Helper\PostData');
                                 $postData = $postDataHelper->getPostData($this->getAddToCartUrl($_product), ['product' => $_product->getEntityId()])
-                            ?>
-                            <button class="action tocart"
-                                    data-post='<?php echo $postData; ?>'
-                                    type="button" title="<?php echo __('Add to Cart') ?>">
-                                <span><?php echo __('Add to Cart') ?></span>
-                            </button>
+                                ?>
+                                <button class="action tocart primary"
+                                        data-post='<?php echo $postData; ?>'
+                                        type="button" title="<?php echo __('Add to Cart') ?>">
+                                    <span><?php echo __('Add to Cart') ?></span>
+                                </button>
+                            <?php endif; ?>
+                            </div>
+                        <?php else: ?>
+                            <?php if ($_product->getIsSalable()): ?>
+                                <div class="stock available"><span><?php echo __('In stock') ?></span></div>
+                            <?php else: ?>
+                                <div class="stock unavailable"><span><?php echo __('Out of stock') ?></span></div>
+                            <?php endif; ?>
                         <?php endif; ?>
+                        </div>
                     </div>
-                <?php else: ?>
-                    <?php if ($_product->getIsSalable()): ?>
-                        <p class="stock available"><span><?php echo __('In stock') ?></span></p>
-                    <?php else: ?>
-                        <p class="stock unavailable"><span><?php echo __('Out of stock') ?></span></p>
-                    <?php endif; ?>
-                <?php endif; ?>
-            </div>
-            <?php echo ($iterator==count($items)+1) ? '</li>' : '' ?>
-        <?php endforeach; ?>
-    </ol>
+                </div>
+                <?php echo ($iterator==count($items)+1) ? '</li>' : '' ?>
+            <?php endforeach; ?>
+        </ol>
+    </div>
 </div>
 <?php endif; ?>
diff --git a/app/code/Magento/Reports/view/frontend/templates/widget/compared/column/compared_images_list.phtml b/app/code/Magento/Reports/view/frontend/templates/widget/compared/column/compared_images_list.phtml
index cca84385bc4..2ec85eb1a69 100644
--- a/app/code/Magento/Reports/view/frontend/templates/widget/compared/column/compared_images_list.phtml
+++ b/app/code/Magento/Reports/view/frontend/templates/widget/compared/column/compared_images_list.phtml
@@ -39,16 +39,16 @@ if ($exist = $this->getRecentlyComparedProducts()) {
 }
 ?>
 <?php if ($exist): ?>
-<div class="block widget compared mini products images">
-    <div class="title">
+<div class="block widget block-compared-products-images">
+    <div class="block-title">
         <strong><?php echo $title; ?></strong>
     </div>
-    <div class="content">
+    <div class="block-content">
         <?php $suffix = $this->getNameInLayout(); ?>
-        <ol class="items" id="widget-compared-<?php echo $suffix; ?>">
+        <ol id="widget-compared-<?php echo $suffix; ?>" class="product-items product-items-images">
         <?php $i=0; foreach ($items as $_product): ?>
-            <li class="item">
-                <a class="product photo" href="<?php echo $_product->getProductUrl() ?>"
+            <li class="product-item">
+                <a class="product-item-photo" href="<?php echo $_product->getProductUrl() ?>"
                     title="<?php echo $this->stripTags($_product->getName(), null, true) ?>">
                     <?php echo $imageBlock->init($_product, $image)->toHtml() ?>
                 </a>
diff --git a/app/code/Magento/Reports/view/frontend/templates/widget/compared/column/compared_names_list.phtml b/app/code/Magento/Reports/view/frontend/templates/widget/compared/column/compared_names_list.phtml
index 4aae374818c..ca9abf4ef47 100644
--- a/app/code/Magento/Reports/view/frontend/templates/widget/compared/column/compared_names_list.phtml
+++ b/app/code/Magento/Reports/view/frontend/templates/widget/compared/column/compared_names_list.phtml
@@ -23,17 +23,17 @@
  */
 ?>
 <?php if ($_products = $this->getRecentlyComparedProducts()): ?>
-<div class="block widget compared links">
-    <div class="title">
+<div class="block widget block-compared-products-names">
+    <div class="block-title">
         <strong><?php echo __('Recently Compared') ?></span></strong>
     </div>
-    <div class="content">
+    <div class="block-content">
         <?php $suffix = $this->getNameInLayout(); ?>
-        <ol id="widget-compared-<?php echo $suffix; ?>" class="items">
+        <ol id="widget-compared-<?php echo $suffix; ?>" class="product-items product-items-names">
         <?php $i=0; foreach ($_products as $_product): ?>
-            <li class="item">
-                <strong class="product name">
-                    <a href="<?php echo $_product->getProductUrl() ?>">
+            <li class="product-item">
+                <strong class="product-item-name">
+                    <a href="<?php echo $_product->getProductUrl() ?>" class="product-item-link">
                         <?php echo $this->helper('Magento\Catalog\Helper\Output')->productAttribute($_product, $_product->getName(), 'name') ?>
                     </a>
                 </strong>
diff --git a/app/code/Magento/Reports/view/frontend/templates/widget/compared/content/compared_grid.phtml b/app/code/Magento/Reports/view/frontend/templates/widget/compared/content/compared_grid.phtml
index cec10c808cd..bd5504424f2 100644
--- a/app/code/Magento/Reports/view/frontend/templates/widget/compared/content/compared_grid.phtml
+++ b/app/code/Magento/Reports/view/frontend/templates/widget/compared/content/compared_grid.phtml
@@ -45,26 +45,25 @@ if ($exist = $this->getRecentlyComparedProducts()) {
 ?>
 
 <?php if ($exist):?>
-    <div class="block widget compared <?php echo $mode; ?>">
-        <div class="title">
+    <div class="block widget block-compared-products-<?php echo $mode; ?>">
+        <div class="block-title">
             <strong><?php echo $title; ?></strong>
         </div>
-        <div class="content">
-            <?php echo $this->getPagerHtml() ?>
+        <div class="block-content">
             <?php echo '<!-- ' . $image . '-->' ?>
-            <div class="products wrapper <?php echo $mode; ?>">
-                <ol class="products list items <?php echo $type; ?>">
+            <div class="products-<?php echo $mode; ?> <?php echo $mode; ?>">
+                <ol class="product-items <?php echo $type; ?>">
                     <?php $iterator = 1; ?>
                     <?php foreach($items as $_item): ?>
-                        <?php echo ($iterator++==1) ? '<li class="item product">' : '</li><li class="item product">' ?>
-                        <div class="product">
-                            <a href="<?php echo $this->getProductUrl($_item) ?>" class="product photo">
+                        <?php echo ($iterator++==1) ? '<li class="product-item">' : '</li><li class="product-item">' ?>
+                        <div class="product-item-info">
+                            <a href="<?php echo $this->getProductUrl($_item) ?>" class="product-item-photo">
                                 <?php echo $imageBlock->init($_item, $image)->toHtml() ?>
                             </a>
-                            <div class="product details">
-                                <strong class="product name">
+                            <div class="product-item-details">
+                                <strong class="product-item-name">
                                     <a title="<?php echo $this->escapeHtml($_item->getName()) ?>"
-                                       href="<?php echo $this->getProductUrl($_item) ?>">
+                                       href="<?php echo $this->getProductUrl($_item) ?>" class="product-item-link">
                                         <?php echo $this->escapeHtml($_item->getName()) ?>
                                     </a>
                                 </strong>
@@ -80,9 +79,9 @@ if ($exist = $this->getRecentlyComparedProducts()) {
                                     <?php echo $this->getReviewsSummaryHtml($_item, $rating) ?>
                                 <?php endif; ?>
                                 <?php if($showWishlist || $showCompare || $showCart): ?>
-                                    <div class="product actions">
+                                    <div class="product-item-actions">
                                         <?php if($showCart): ?>
-                                            <div class="primary">
+                                            <div class="actions-primary">
                                                 <?php if($_item->isSaleable()): ?>
                                                     <?php if ($_item->getTypeInstance()->hasRequiredOptions($_item)): ?>
                                                         <button class="action tocart primary"
@@ -103,16 +102,16 @@ if ($exist = $this->getRecentlyComparedProducts()) {
                                                     <?php endif; ?>
                                                 <?php else: ?>
                                                     <?php if ($_item->getIsSalable()): ?>
-                                                        <p class="stock available"><span><?php echo __('In stock') ?></span></p>
+                                                        <div class="stock available"><span><?php echo __('In stock') ?></span></div>
                                                     <?php else: ?>
-                                                        <p class="stock unavailable"><span><?php echo __('Out of stock') ?></span></p>
+                                                        <div class="stock unavailable"><span><?php echo __('Out of stock') ?></span></div>
                                                     <?php endif; ?>
                                                 <?php endif; ?>
                                             </div>
                                         <?php endif; ?>
 
                                         <?php if($showWishlist || $showCompare): ?>
-                                            <div class="secondary-addto-links" data-role="add-to-links">
+                                            <div class="actions-secondary" data-role="add-to-links">
                                                 <?php if ($this->helper('Magento\Wishlist\Helper\Data')->isAllow() && $showWishlist): ?>
                                                     <a href="#"
                                                        data-post='<?php echo $this->getAddToWishlistParams($_item); ?>'
@@ -140,6 +139,7 @@ if ($exist = $this->getRecentlyComparedProducts()) {
                     <?php endforeach ?>
                 </ol>
             </div>
+            <?php echo $this->getPagerHtml() ?>
         </div>
     </div>
 <?php endif;?>
diff --git a/app/code/Magento/Reports/view/frontend/templates/widget/compared/content/compared_list.phtml b/app/code/Magento/Reports/view/frontend/templates/widget/compared/content/compared_list.phtml
index 49566e2fb98..82db388a23e 100644
--- a/app/code/Magento/Reports/view/frontend/templates/widget/compared/content/compared_list.phtml
+++ b/app/code/Magento/Reports/view/frontend/templates/widget/compared/content/compared_list.phtml
@@ -35,6 +35,7 @@ if ($exist = $this->getRecentlyComparedProducts()) {
     $image = 'recently_compared_products_list_content_widget';
     $title = __('Recently Compared');
     $items = $exist;
+    $_helper = $this->helper('Magento\Catalog\Helper\Output');
 
     $showWishlist = true;
     $showCompare = true;
@@ -45,26 +46,25 @@ if ($exist = $this->getRecentlyComparedProducts()) {
 ?>
 
 <?php if ($exist):?>
-    <div class="block widget compared <?php echo $mode; ?>">
-        <div class="title">
+    <div class="block widget block-compared-products-<?php echo $mode; ?>">
+        <div class="block-title">
             <strong><?php echo $title; ?></strong>
         </div>
-        <div class="content">
-            <?php echo $this->getPagerHtml() ?>
+        <div class="block-content">
             <?php echo '<!-- ' . $image . '-->' ?>
-            <div class="products wrapper <?php echo $mode; ?>">
-                <ol class="products list items <?php echo $type; ?>">
+            <div class="products-<?php echo $mode; ?> <?php echo $mode; ?>">
+                <ol class="product-items <?php echo $type; ?>">
                     <?php $iterator = 1; ?>
                     <?php foreach($items as $_item): ?>
-                        <?php echo ($iterator++==1) ? '<li class="item product">' : '</li><li class="item product">' ?>
-                        <div class="product">
-                            <a href="<?php echo $this->getProductUrl($_item) ?>" class="product photo">
+                        <?php echo ($iterator++==1) ? '<li class="product-item">' : '</li><li class="product-item">' ?>
+                        <div class="product-item-info">
+                            <a href="<?php echo $this->getProductUrl($_item) ?>" class="product-item-photo">
                                 <?php echo $imageBlock->init($_item, $image)->toHtml() ?>
                             </a>
-                            <div class="product details">
-                                <strong class="product name">
+                            <div class="product-item-details">
+                                <strong class="product-item-name">
                                     <a title="<?php echo $this->escapeHtml($_item->getName()) ?>"
-                                       href="<?php echo $this->getProductUrl($_item) ?>">
+                                       href="<?php echo $this->getProductUrl($_item) ?>" class="product-item-link">
                                         <?php echo $this->escapeHtml($_item->getName()) ?>
                                     </a>
                                 </strong>
@@ -80,9 +80,9 @@ if ($exist = $this->getRecentlyComparedProducts()) {
                                     <?php echo $this->getReviewsSummaryHtml($_item, $rating) ?>
                                 <?php endif; ?>
                                 <?php if($showWishlist || $showCompare || $showCart): ?>
-                                    <div class="product actions">
+                                    <div class="product-item-actions">
                                         <?php if($showCart): ?>
-                                            <div class="primary">
+                                            <div class="actions-primary">
                                                 <?php if($_item->isSaleable()): ?>
                                                     <?php if ($_item->getTypeInstance()->hasRequiredOptions($_item)): ?>
                                                         <button class="action tocart primary"
@@ -103,16 +103,16 @@ if ($exist = $this->getRecentlyComparedProducts()) {
                                                     <?php endif; ?>
                                                 <?php else: ?>
                                                     <?php if ($_item->getIsSalable()): ?>
-                                                        <p class="stock available"><span><?php echo __('In stock') ?></span></p>
+                                                        <div class="stock available"><span><?php echo __('In stock') ?></span></div>
                                                     <?php else: ?>
-                                                        <p class="stock unavailable"><span><?php echo __('Out of stock') ?></span></p>
+                                                        <div class="stock unavailable"><span><?php echo __('Out of stock') ?></span></div>
                                                     <?php endif; ?>
                                                 <?php endif; ?>
                                             </div>
                                         <?php endif; ?>
 
                                         <?php if($showWishlist || $showCompare): ?>
-                                            <div class="secondary-addto-links" data-role="add-to-links">
+                                            <div class="actions-secondary" data-role="add-to-links">
                                                 <?php if ($this->helper('Magento\Wishlist\Helper\Data')->isAllow() && $showWishlist): ?>
                                                     <a href="#"
                                                        data-post='<?php echo $this->getAddToWishlistParams($_item); ?>'
@@ -134,12 +134,21 @@ if ($exist = $this->getRecentlyComparedProducts()) {
                                         <?php endif; ?>
                                     </div>
                                 <?php endif; ?>
+                                <?php if($description):?>
+                                    <div class="product-item-description">
+                                        <?php echo $_helper->productAttribute($_item, $_item->getShortDescription(), 'short_description') ?>
+                                        <a title="<?php echo $this->escapeHtml($_item->getName()) ?>"
+                                           href="<?php echo $this->getProductUrl($_item) ?>"
+                                           class="action more"><?php echo __('Learn More') ?></a>
+                                    </div>
+                                <?php endif; ?>
                             </div>
                         </div>
                         <?php echo ($iterator==count($items)+1) ? '</li>' : '' ?>
                     <?php endforeach ?>
                 </ol>
             </div>
+            <?php echo $this->getPagerHtml() ?>
         </div>
     </div>
 <?php endif;?>
diff --git a/app/code/Magento/Reports/view/frontend/templates/widget/viewed/column/viewed_default_list.phtml b/app/code/Magento/Reports/view/frontend/templates/widget/viewed/column/viewed_default_list.phtml
index 8f9164b5577..3f00ac3007b 100644
--- a/app/code/Magento/Reports/view/frontend/templates/widget/viewed/column/viewed_default_list.phtml
+++ b/app/code/Magento/Reports/view/frontend/templates/widget/viewed/column/viewed_default_list.phtml
@@ -28,7 +28,7 @@
  */
 ?>
 <?php
-if ($exist = $this->getRecentlyViewedProducts()) {
+if ($exist = ($this->getRecentlyViewedProducts() && $this->getRecentlyViewedProducts()->getSize())) {
     $type = 'widget-viewed';
     $mode = 'list';
 
@@ -37,7 +37,7 @@ if ($exist = $this->getRecentlyViewedProducts()) {
     $imageBlock =  $this->getLayout()->createBlock('Magento\Catalog\Block\Product\Image');
     $image = 'recently_viewed_products_images_names_widget';
     $title = __('Recently Viewed');
-    $items = $exist;
+    $items = $this->getRecentlyViewedProducts();
 
     $showWishlist = false;
     $showCompare = false;
@@ -47,25 +47,26 @@ if ($exist = $this->getRecentlyViewedProducts()) {
 }
 ?>
 <?php if ($exist): ?>
-<div class="block widget viewed <?php echo $mode; ?>">
-    <div class="title">
+<div class="block widget block-viewed-products-<?php echo $mode; ?>">
+    <div class="block-title">
         <strong><?php echo $title; ?></strong>
     </div>
-    <div class="content">
+    <div class="block-content">
         <?php $suffix = $this->getNameInLayout(); ?>
-        <ol class="mini products list items" id="widget-viewed-<?php echo $suffix; ?>">
+        <ol class="product-items" id="widget-viewed-<?php echo $suffix; ?>">
             <?php $iterator = 1; ?>
             <?php foreach($items as $_product): ?>
-                <?php echo ($iterator++==1) ? '<li class="item product">' : '</li><li class="item product">' ?>
-                <div class="product">
-                    <a class="product photo" href="<?php echo $_product->getProductUrl() ?>"
+                <?php echo ($iterator++==1) ? '<li class="product-item">' : '</li><li class="product-item">' ?>
+                <div class="product-item-info">
+                    <a class="product-item-photo" href="<?php echo $_product->getProductUrl() ?>"
                        title="<?php echo $this->stripTags($_product->getName(), null, true) ?>">
                         <?php echo $imageBlock->init($_product, $image)->toHtml() ?>
                     </a>
-                    <div class="product details">
-                        <strong class="product name">
+                    <div class="product-item-details">
+                        <strong class="product-item-name">
                             <a href="<?php echo $_product->getProductUrl() ?>"
-                               title="<?php echo $this->stripTags($_product->getName(), null, true) ?>">
+                               title="<?php echo $this->stripTags($_product->getName(), null, true) ?>"
+                               class="product-item-link">
                                 <?php echo $this->helper('Magento\Catalog\Helper\Output')->productAttribute($_product, $_product->getName(), 'name') ?>
                             </a>
                         </strong>
@@ -77,11 +78,11 @@ if ($exist = $this->getRecentlyViewedProducts()) {
                                 'price_id_suffix' => '-widget-viewed-' . $suffix
                             ]
                         ) ?>
-                        <div class="product actions">
+                        <div class="product-item-actions">
                             <?php if($_product->isSaleable()): ?>
-                            <div class="primary">
+                            <div class="actions-primary">
                                 <?php if ($_product->getTypeInstance()->hasRequiredOptions($_product)): ?>
-                                    <button class="action tocart"
+                                    <button class="action tocart primary"
                                             data-mage-init='{"redirectUrl": {"url": "<?php echo $this->getAddToCartUrl($_product) ?>"}}'
                                             type="button" title="<?php echo __('Add to Cart') ?>">
                                         <span><?php echo __('Add to Cart') ?></span>
@@ -91,16 +92,16 @@ if ($exist = $this->getRecentlyViewedProducts()) {
                                         $postDataHelper = $this->helper('Magento\Core\Helper\PostData');
                                         $postData = $postDataHelper->getPostData($this->getAddToCartUrl($_product), ['product' => $_product->getEntityId()]);
                                     ?>
-                                    <button type="button" class="action tocart" data-post='<?php echo $postData; ?>'>
+                                    <button type="button" class="action tocart primary" data-post='<?php echo $postData; ?>'>
                                         <span><?php echo __('Add to Cart') ?></span>
                                     </button>
                                 <?php endif; ?>
                             </div>
                             <?php else: ?>
                                 <?php if ($_product->getIsSalable()): ?>
-                                    <p class="stock available"><span><?php echo __('In stock') ?></span></p>
+                                    <div class="stock available"><span><?php echo __('In stock') ?></span></div>
                                 <?php else: ?>
-                                    <p class="stock unavailable"><span><?php echo __('Out of stock') ?></span></p>
+                                    <div class="stock unavailable"><span><?php echo __('Out of stock') ?></span></div>
                                 <?php endif; ?>
                             <?php endif; ?>
                         </div>
diff --git a/app/code/Magento/Reports/view/frontend/templates/widget/viewed/column/viewed_images_list.phtml b/app/code/Magento/Reports/view/frontend/templates/widget/viewed/column/viewed_images_list.phtml
index 0c512054bfe..2781e39802c 100644
--- a/app/code/Magento/Reports/view/frontend/templates/widget/viewed/column/viewed_images_list.phtml
+++ b/app/code/Magento/Reports/view/frontend/templates/widget/viewed/column/viewed_images_list.phtml
@@ -28,13 +28,13 @@
  */
 ?>
 <?php
-if ($exist = $this->getRecentlyViewedProducts()) {
+if ($exist = ($this->getRecentlyViewedProducts() && $this->getRecentlyViewedProducts()->getSize())) {
     $type = 'widget-viewed';
 
     $imageBlock =  $this->getLayout()->createBlock('Magento\Catalog\Block\Product\Image');
     $image = 'recently_viewed_products_images_only_widget';
     $title = __('Recently Viewed');
-    $items = $exist;
+    $items = $this->getRecentlyViewedProducts();
 
     $showWishlist = false;
     $showCompare = false;
@@ -44,17 +44,17 @@ if ($exist = $this->getRecentlyViewedProducts()) {
 }
 ?>
 <?php if ($exist): ?>
-    <div class="block widget viewed mini products images">
-        <div class="title">
+    <div class="block widget block-viewed-products-images">
+        <div class="block-title">
             <strong><?php echo $title; ?></strong>
         </div>
-        <div class="content">
+        <div class="block-content">
             <?php $suffix = $this->getNameInLayout(); ?>
-            <ol class="items" id="widget-viewed-<?php echo $suffix; ?>">
+            <ol id="widget-viewed-<?php echo $suffix; ?>" class="product-items product-items-images">
                 <?php $iterator = 1; ?>
                 <?php foreach($items as $_product): ?>
-                    <?php echo ($iterator++==1) ? '<li class="item product">' : '</li><li class="item product">' ?>
-                        <a class="product photo" href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->stripTags($_product->getName(), null, true) ?>">
+                    <?php echo ($iterator++==1) ? '<li class="product-item">' : '</li><li class="product-item">' ?>
+                        <a class="product-item-photo" href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->stripTags($_product->getName(), null, true) ?>">
                             <?php echo $imageBlock->init($_product, $image)->toHtml() ?>
                         </a>
                     <?php echo ($iterator==count($items)+1) ? '</li>' : '' ?>
diff --git a/app/code/Magento/Reports/view/frontend/templates/widget/viewed/column/viewed_names_list.phtml b/app/code/Magento/Reports/view/frontend/templates/widget/viewed/column/viewed_names_list.phtml
index 64183f1df84..a5c9bbfd861 100644
--- a/app/code/Magento/Reports/view/frontend/templates/widget/viewed/column/viewed_names_list.phtml
+++ b/app/code/Magento/Reports/view/frontend/templates/widget/viewed/column/viewed_names_list.phtml
@@ -27,18 +27,18 @@
  * @var $this \Magento\Reports\Block\Product\Viewed
  */
 ?>
-<?php if ($_products = $this->getRecentlyViewedProducts()): ?>
-<div class="block widget viewed links">
-    <div class="title">
+<?php if (($_products = $this->getRecentlyViewedProducts()) && $_products->getSize() ): ?>
+<div class="block widget block-viewed-products-names">
+    <div class="block-title">
         <strong><?php echo __('Recently Viewed') ?></strong>
     </div>
-    <div class="content">
+    <div class="block-content">
         <?php $suffix = $this->getNameInLayout(); ?>
-        <ol id="widget-viewed-<?php echo $suffix; ?>" class="items">
+        <ol id="widget-viewed-<?php echo $suffix; ?>" class="product-items product-items-names">
         <?php foreach ($_products as $_product): ?>
-            <li class="item">
-                <strong class="product name">
-                    <a href="<?php echo $_product->getProductUrl() ?>">
+            <li class="product-item">
+                <strong class="product-item-name">
+                    <a href="<?php echo $_product->getProductUrl() ?>" class="product-item-link">
                         <?php echo $this->helper('Magento\Catalog\Helper\Output')->productAttribute($_product, $_product->getName(), 'name') ?>
                     </a>
                 </strong>
diff --git a/app/code/Magento/Reports/view/frontend/templates/widget/viewed/content/viewed_grid.phtml b/app/code/Magento/Reports/view/frontend/templates/widget/viewed/content/viewed_grid.phtml
index 9eb0c4aba76..cd09fc6784b 100644
--- a/app/code/Magento/Reports/view/frontend/templates/widget/viewed/content/viewed_grid.phtml
+++ b/app/code/Magento/Reports/view/frontend/templates/widget/viewed/content/viewed_grid.phtml
@@ -28,7 +28,7 @@
  */
 ?>
 <?php
-if ($exist = $this->getRecentlyViewedProducts()) {
+if ($exist = ($this->getRecentlyViewedProducts() && $this->getRecentlyViewedProducts()->getSize())) {
     $type = 'widget-viewed';
     $mode = 'grid';
 
@@ -37,7 +37,7 @@ if ($exist = $this->getRecentlyViewedProducts()) {
     $imageBlock =  $this->getLayout()->createBlock('Magento\Catalog\Block\Product\Image');
     $image = 'recently_viewed_products_grid_content_widget';
     $title = __('Recently Viewed');
-    $items = $exist;
+    $items = $this->getRecentlyViewedProducts();
 
     $showWishlist = true;
     $showCompare = true;
@@ -47,26 +47,25 @@ if ($exist = $this->getRecentlyViewedProducts()) {
 }
 ?>
 <?php if ($exist):?>
-    <div class="block widget viewed <?php echo $mode; ?>">
-        <div class="title">
+    <div class="block widget block-viewed-products-<?php echo $mode; ?>">
+        <div class="block-title">
             <strong><?php echo $title; ?></strong>
         </div>
-        <div class="content">
-            <?php echo $this->getPagerHtml() ?>
+        <div class="block-content">
             <?php echo '<!-- ' . $image . '-->' ?>
-            <div class="products wrapper <?php echo $mode; ?>">
-                <ol class="products list items <?php echo $type; ?>">
+            <div class="products-<?php echo $mode; ?> <?php echo $mode; ?>">
+                <ol class="product-items <?php echo $type; ?>">
                     <?php $iterator = 1; ?>
                     <?php foreach($items as $_item): ?>
-                        <?php echo ($iterator++==1) ? '<li class="item product">' : '</li><li class="item product">' ?>
-                        <div class="product">
-                            <a href="<?php echo $this->getProductUrl($_item) ?>" class="product photo">
+                        <?php echo ($iterator++==1) ? '<li class="product-item">' : '</li><li class="product-item">' ?>
+                        <div class="product-item-info">
+                            <a href="<?php echo $this->getProductUrl($_item) ?>" class="product-item-photo">
                                 <?php echo $imageBlock->init($_item, $image)->toHtml() ?>
                             </a>
-                            <div class="product details">
-                                <strong class="product name">
+                            <div class="product-item-details">
+                                <strong class="product-item-name">
                                     <a title="<?php echo $this->escapeHtml($_item->getName()) ?>"
-                                       href="<?php echo $this->getProductUrl($_item) ?>">
+                                       href="<?php echo $this->getProductUrl($_item) ?>" class="product-item-link">
                                         <?php echo $this->escapeHtml($_item->getName()) ?>
                                     </a>
                                 </strong>
@@ -82,12 +81,14 @@ if ($exist = $this->getRecentlyViewedProducts()) {
                                     <?php echo $this->getReviewsSummaryHtml($_item, $rating) ?>
                                 <?php endif; ?>
                                 <?php if($showWishlist || $showCompare || $showCart): ?>
-                                    <div class="product actions">
+                                    <div class="product-item-actions">
                                         <?php if($showCart): ?>
-                                            <div class="primary">
+                                            <div class="actions-primary">
                                                 <?php if($_item->isSaleable()): ?>
                                                     <?php if ($_item->getTypeInstance()->hasRequiredOptions($_item)): ?>
-                                                        <button class="action tocart primary" data-mage-init='{"redirectUrl": {"url": "<?php echo $this->getAddToCartUrl($_item) ?>"}}' type="button" title="<?php echo __('Add to Cart') ?>">
+                                                        <button class="action tocart primary"
+                                                                data-mage-init='{"redirectUrl": {"url": "<?php echo $this->getAddToCartUrl($_item) ?>"}}'
+                                                                type="button" title="<?php echo __('Add to Cart') ?>">
                                                             <span><?php echo __('Add to Cart') ?></span>
                                                         </button>
                                                     <?php else: ?>
@@ -103,15 +104,15 @@ if ($exist = $this->getRecentlyViewedProducts()) {
                                                     <?php endif; ?>
                                                 <?php else: ?>
                                                     <?php if ($_item->getIsSalable()): ?>
-                                                        <p class="stock available"><span><?php echo __('In stock') ?></span></p>
+                                                        <div class="stock available"><span><?php echo __('In stock') ?></span></div>
                                                     <?php else: ?>
-                                                        <p class="stock unavailable"><span><?php echo __('Out of stock') ?></span></p>
+                                                        <div class="stock unavailable"><span><?php echo __('Out of stock') ?></span></div>
                                                     <?php endif; ?>
                                                 <?php endif; ?>
                                             </div>
                                         <?php endif; ?>
                                         <?php if($showWishlist || $showCompare): ?>
-                                            <div class="secondary-addto-links" data-role="add-to-links">
+                                            <div class="actions-secondary" data-role="add-to-links">
                                                 <?php if ($this->helper('Magento\Wishlist\Helper\Data')->isAllow() && $showWishlist): ?>
                                                     <a href="#"
                                                        class="action towishlist" data-action="add-to-wishlist"
@@ -138,6 +139,7 @@ if ($exist = $this->getRecentlyViewedProducts()) {
                     <?php endforeach ?>
                 </ol>
             </div>
+            <?php echo $this->getPagerHtml() ?>
         </div>
     </div>
 <?php endif;?>
diff --git a/app/code/Magento/Reports/view/frontend/templates/widget/viewed/content/viewed_list.phtml b/app/code/Magento/Reports/view/frontend/templates/widget/viewed/content/viewed_list.phtml
index 764f026b577..a461737e45e 100644
--- a/app/code/Magento/Reports/view/frontend/templates/widget/viewed/content/viewed_list.phtml
+++ b/app/code/Magento/Reports/view/frontend/templates/widget/viewed/content/viewed_list.phtml
@@ -28,7 +28,7 @@
  */
 ?>
 <?php
-if ($exist = $this->getRecentlyViewedProducts()) {
+if ($exist = ($this->getRecentlyViewedProducts() && $this->getRecentlyViewedProducts()->getSize())) {
     $type = 'widget-viewed';
     $mode = 'list';
 
@@ -37,7 +37,8 @@ if ($exist = $this->getRecentlyViewedProducts()) {
     $imageBlock =  $this->getLayout()->createBlock('Magento\Catalog\Block\Product\Image');
     $image = 'recently_viewed_products_list_content_widget';
     $title = __('Recently Viewed');
-    $items = $exist;
+    $items = $this->getRecentlyViewedProducts();
+    $_helper = $this->helper('Magento\Catalog\Helper\Output');
 
     $showWishlist = true;
     $showCompare = true;
@@ -48,26 +49,25 @@ if ($exist = $this->getRecentlyViewedProducts()) {
 ?>
 
 <?php if ($exist):?>
-    <div class="block widget viewed <?php echo $mode; ?>">
-        <div class="title">
+    <div class="block widget block-viewed-products-<?php echo $mode; ?>">
+        <div class="block-title">
             <strong><?php echo $title; ?></strong>
         </div>
-        <div class="content">
-            <?php echo $this->getPagerHtml() ?>
+        <div class="block-content">
             <?php echo '<!-- ' . $image . '-->' ?>
-            <div class="products wrapper <?php echo $mode; ?>">
-                <ol class="products list items <?php echo $type; ?>">
+            <div class="products-<?php echo $mode; ?> <?php echo $mode; ?>">
+                <ol class="product-items <?php echo $type; ?>">
                     <?php $iterator = 1; ?>
                     <?php foreach($items as $_item): ?>
-                        <?php echo ($iterator++==1) ? '<li class="item product">' : '</li><li class="item product">' ?>
-                        <div class="product">
-                            <a href="<?php echo $this->getProductUrl($_item) ?>" class="product photo">
+                        <?php echo ($iterator++==1) ? '<li class="product-item">' : '</li><li class="product-item">' ?>
+                        <div class="product-item-info">
+                            <a href="<?php echo $this->getProductUrl($_item) ?>" class="product-item-photo">
                                 <?php echo $imageBlock->init($_item, $image)->toHtml() ?>
                             </a>
-                            <div class="product details">
-                                <strong class="product name">
+                            <div class="product-item-details">
+                                <strong class="product-item-name">
                                     <a title="<?php echo $this->escapeHtml($_item->getName()) ?>"
-                                       href="<?php echo $this->getProductUrl($_item) ?>">
+                                       href="<?php echo $this->getProductUrl($_item) ?>" class="product-item-link">
                                         <?php echo $this->escapeHtml($_item->getName()) ?>
                                     </a>
                                 </strong>
@@ -83,9 +83,9 @@ if ($exist = $this->getRecentlyViewedProducts()) {
                                     <?php echo $this->getReviewsSummaryHtml($_item, $rating) ?>
                                 <?php endif; ?>
                                 <?php if($showWishlist || $showCompare || $showCart): ?>
-                                    <div class="product actions">
+                                    <div class="product-item-actions">
                                         <?php if($showCart): ?>
-                                            <div class="primary">
+                                            <div class="actions-primary">
                                                 <?php if($_item->isSaleable()): ?>
                                                     <?php if ($_item->getTypeInstance()->hasRequiredOptions($_item)): ?>
                                                         <button class="action tocart primary"
@@ -106,16 +106,16 @@ if ($exist = $this->getRecentlyViewedProducts()) {
                                                         <?php endif; ?>
                                                 <?php else: ?>
                                                     <?php if ($_item->getIsSalable()): ?>
-                                                        <p class="stock available"><span><?php echo __('In stock') ?></span></p>
+                                                        <div class="stock available"><span><?php echo __('In stock') ?></span></div>
                                                     <?php else: ?>
-                                                        <p class="stock unavailable"><span><?php echo __('Out of stock') ?></span></p>
+                                                        <div class="stock unavailable"><span><?php echo __('Out of stock') ?></span></div>
                                                     <?php endif; ?>
                                                 <?php endif; ?>
                                             </div>
                                         <?php endif; ?>
 
                                         <?php if($showWishlist || $showCompare): ?>
-                                            <div class="secondary-addto-links" data-role="add-to-links">
+                                            <div class="actions-secondary" data-role="add-to-links">
                                                 <?php if ($this->helper('Magento\Wishlist\Helper\Data')->isAllow() && $showWishlist): ?>
                                                     <a href="#"
                                                        class="action towishlist" data-action="add-to-wishlist"
@@ -136,12 +136,21 @@ if ($exist = $this->getRecentlyViewedProducts()) {
                                         <?php endif; ?>
                                     </div>
                                 <?php endif; ?>
+                                <?php if($description):?>
+                                    <div class="product-item-description">
+                                        <?php echo $_helper->productAttribute($_item, $_item->getShortDescription(), 'short_description') ?>
+                                        <a title="<?php echo $this->escapeHtml($_item->getName()) ?>"
+                                           href="<?php echo $this->getProductUrl($_item) ?>"
+                                           class="action more"><?php echo __('Learn More') ?></a>
+                                    </div>
+                                <?php endif; ?>
                             </div>
                         </div>
                         <?php echo ($iterator==count($items)+1) ? '</li>' : '' ?>
                     <?php endforeach ?>
                 </ol>
             </div>
+            <?php echo $this->getPagerHtml() ?>
         </div>
     </div>
 <?php endif;?>
diff --git a/app/code/Magento/RequireJs/composer.json b/app/code/Magento/RequireJs/composer.json
index f68102891f3..d890eb8dd64 100644
--- a/app/code/Magento/RequireJs/composer.json
+++ b/app/code/Magento/RequireJs/composer.json
@@ -3,11 +3,11 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Review/Block/Adminhtml/Rss.php b/app/code/Magento/Review/Block/Adminhtml/Rss.php
index 1f0b689ca04..833afb450d6 100644
--- a/app/code/Magento/Review/Block/Adminhtml/Rss.php
+++ b/app/code/Magento/Review/Block/Adminhtml/Rss.php
@@ -120,4 +120,12 @@ class Rss extends \Magento\Backend\Block\AbstractBlock implements DataProviderIn
     {
         return array();
     }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function isAuthRequired()
+    {
+        return true;
+    }
 }
diff --git a/app/code/Magento/Review/composer.json b/app/code/Magento/Review/composer.json
index c720f19c152..acf1ecf72c6 100644
--- a/app/code/Magento/Review/composer.json
+++ b/app/code/Magento/Review/composer.json
@@ -3,20 +3,20 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-catalog": "0.1.0-alpha102",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-customer": "0.1.0-alpha102",
-        "magento/module-eav": "0.1.0-alpha102",
-        "magento/module-theme": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/module-tax": "0.1.0-alpha102",
-        "magento/module-newsletter": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-catalog": "0.1.0-alpha103",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-customer": "0.1.0-alpha103",
+        "magento/module-eav": "0.1.0-alpha103",
+        "magento/module-theme": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/module-tax": "0.1.0-alpha103",
+        "magento/module-newsletter": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Review/sql/review_setup/install-1.6.0.0.php b/app/code/Magento/Review/sql/review_setup/install-1.6.0.0.php
index d8a831a1696..9e9dc000f00 100644
--- a/app/code/Magento/Review/sql/review_setup/install-1.6.0.0.php
+++ b/app/code/Magento/Review/sql/review_setup/install-1.6.0.0.php
@@ -27,8 +27,9 @@
  *
  * @author      Magento Core Team <core@magentocommerce.com>
  */
+
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
-/* @var $installer \Magento\Framework\Module\Setup */
 
 $installer->startSetup();
 /**
diff --git a/app/code/Magento/Review/view/frontend/layout/review_product_list.xml b/app/code/Magento/Review/view/frontend/layout/review_product_list.xml
index bdad11bdc91..5c25def4879 100644
--- a/app/code/Magento/Review/view/frontend/layout/review_product_list.xml
+++ b/app/code/Magento/Review/view/frontend/layout/review_product_list.xml
@@ -30,7 +30,7 @@
             <block class="Magento\Review\Block\Product\View\Other" name="product.info.other" as="other" template="Magento_Review::product/view/other.phtml" before="product.info.addto"/>
         </referenceContainer>
         <referenceContainer name="content">
-            <container name="product.info.details" label="invisible" htmlTag="div" htmlClass="product info detailed" after="product.info.media">
+            <container name="product.info.details" htmlTag="div" htmlClass="product info detailed" after="product.info.media">
                 <block class="Magento\Review\Block\Form" name="product.review.form" as="review_form">
                     <container name="product.review.form.fields.before" as="form_fields_before" label="Review Form Fields Before" htmlTag="div" htmlClass="rewards"/>
                 </block>
diff --git a/app/code/Magento/Review/view/frontend/templates/helper/summary.phtml b/app/code/Magento/Review/view/frontend/templates/helper/summary.phtml
index 11b60ed7437..302bbcfcd7e 100644
--- a/app/code/Magento/Review/view/frontend/templates/helper/summary.phtml
+++ b/app/code/Magento/Review/view/frontend/templates/helper/summary.phtml
@@ -26,17 +26,17 @@
 <?php $urlForm = $this->getReviewsUrl() . '#review-form'; ?>
 <?php if ($this->getReviewsCount()): ?>
 <?php $rating = $this->getRatingSummary(); ?>
-<div class="product-reviews-summary<?php echo !$rating ? ' no-rating' :''?>">
+<div class="product-reviews-summary<?php echo !$rating ? ' no-rating' :''?>" itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating">
     <?php if ($rating):?>
     <div class="rating-summary">
          <span class="label"><span><?php echo __('Rating') ?>:</span></span>
          <div class="rating-result" title="<?php echo $rating; ?>%">
-             <span style="width:<?php echo $rating; ?>%"><span><?php echo $rating; ?>%</span></span>
+             <span style="width:<?php echo $rating; ?>%"><span><span itemprop="ratingValue"><?php echo $rating; ?></span>% of <span itemprop="bestRating">100</span></span></span>
          </div>
      </div>
     <?php endif;?>
     <div class="reviews-actions">
-        <a class="action view" href="<?php echo $url ?>"><?php echo $this->getReviewsCount() ?>&nbsp;<span><?php echo ($this->getReviewsCount() == 1) ? __('Review') : __('Reviews') ?></span></a>
+        <a class="action view" href="<?php echo $url ?>"><span itemprop="reviewCount"><?php echo $this->getReviewsCount() ?></span>&nbsp;<span><?php echo ($this->getReviewsCount() == 1) ? __('Review') : __('Reviews') ?></span></a>
         <a class="action add" href="<?php echo $urlForm ?>"><?php echo __('Add Your Review') ?></a>
     </div>
 </div>
diff --git a/app/code/Magento/Review/view/frontend/templates/product/view/list.phtml b/app/code/Magento/Review/view/frontend/templates/product/view/list.phtml
index 8ab88ed9e1f..934ef890e13 100644
--- a/app/code/Magento/Review/view/frontend/templates/product/view/list.phtml
+++ b/app/code/Magento/Review/view/frontend/templates/product/view/list.phtml
@@ -43,33 +43,35 @@
         </div>
         <ol class="items review-items">
         <?php foreach ($_items as $_review):?>
-            <li class="item review-item">
-                <div class="review-title"><?php echo $this->escapeHtml($_review->getTitle()) ?></div>
+            <li class="item review-item" itemscope itemprop="review" itemtype="http://schema.org/Review">
+                <div class="review-title" itemprop="name"><?php echo $this->escapeHtml($_review->getTitle()) ?></div>
                 <?php if (count($_review->getRatingVotes())): ?>
                     <div class="review-ratings">
                     <?php foreach ($_review->getRatingVotes() as $_vote): ?>
-                    <div class="rating-summary item">
+                    <div class="rating-summary item" itemprop="reviewRating" itemscope itemtype="http://schema.org/Rating">
                         <span class="label rating-label"><span><?php echo $this->escapeHtml($_vote->getRatingCode()) ?></span></span>
                         <div class="rating-result" title="<?php echo $_vote->getPercent() ?>%">
+	                        <meta itemprop="worstRating" content = "1"/>
+	                        <meta itemprop="bestRating" content = "100"/>
                             <span style="width:<?php echo $_vote->getPercent() ?>%">
-                                <span><?php echo $_vote->getPercent() ?>%</span>
+                                <span itemprop="ratingValue"><?php echo $_vote->getPercent() ?>%</span>
                             </span>
                         </div>
                     </div>
                     <?php endforeach; ?>
                     </div>
                 <?php endif; ?>
-                <div class="review-content">
+                <div class="review-content" itemprop="description">
                     <?php echo nl2br($this->escapeHtml($_review->getDetail())) ?>
                 </div>
                 <div class="review-details">
                     <p class="review-author">
                         <span class="review-details-label"><?php echo __('Review by')?></span>
-                        <strong class="review-details-value"><?php echo $this->escapeHtml($_review->getNickname()) ?></strong>
+                        <strong class="review-details-value" itemprop="author"><?php echo $this->escapeHtml($_review->getNickname()) ?></strong>
                     </p>
                     <p class="review-date">
                         <span class="review-details-label"><?php echo __('Posted on') ?></span>
-                        <time class="review-details-value"><?php echo $this->formatDate($_review->getCreatedAt(), $format) ?></time>
+                        <time class="review-details-value" itemprop="datePublished" datetime="<?php echo $this->formatDate($_review->getCreatedAt(), $format) ?>"><?php echo $this->formatDate($_review->getCreatedAt(), $format) ?></time>
                     </p>
                 </div>
             </li>
diff --git a/app/code/Magento/Rss/App/Action/Plugin/Authentication.php b/app/code/Magento/Rss/App/Action/Plugin/BackendAuthentication.php
similarity index 96%
rename from app/code/Magento/Rss/App/Action/Plugin/Authentication.php
rename to app/code/Magento/Rss/App/Action/Plugin/BackendAuthentication.php
index 62f8f85ec24..04c5159482f 100644
--- a/app/code/Magento/Rss/App/Action/Plugin/Authentication.php
+++ b/app/code/Magento/Rss/App/Action/Plugin/BackendAuthentication.php
@@ -1,6 +1,6 @@
 <?php
 /**
- * RSS Authentication plugin
+ * RSS Backend Authentication plugin
  *
  * Magento
  *
@@ -30,10 +30,10 @@ use Magento\Framework\App\ResponseInterface;
 use Magento\Backend\App\AbstractAction;
 
 /**
- * Class Authentication
+ * Class BackendAuthentication
  * @package Magento\Rss\App\Action\Plugin
  */
-class Authentication extends \Magento\Backend\App\Action\Plugin\Authentication
+class BackendAuthentication extends \Magento\Backend\App\Action\Plugin\Authentication
 {
     /**
      * @var \Magento\Framework\HTTP\Authentication
@@ -54,7 +54,6 @@ class Authentication extends \Magento\Backend\App\Action\Plugin\Authentication
      * @var array
      */
     protected $aclResources = array(
-        'authenticate' => 'Magento_Rss::rss',
         'feed' => 'Magento_Rss::rss'
     );
 
diff --git a/app/code/Magento/Rss/Controller/Adminhtml/Feed.php b/app/code/Magento/Rss/Controller/Adminhtml/Feed.php
index f7b52bc2f5a..faa42abcf8c 100644
--- a/app/code/Magento/Rss/Controller/Adminhtml/Feed.php
+++ b/app/code/Magento/Rss/Controller/Adminhtml/Feed.php
@@ -27,7 +27,7 @@ namespace Magento\Rss\Controller\Adminhtml;
  * Class Feed
  * @package Magento\Rss\Controller
  */
-class Feed extends Authenticate
+class Feed extends \Magento\Backend\App\Action
 {
     /**
      * @var \Magento\Rss\Model\RssManager
diff --git a/app/code/Magento/Rss/Controller/Feed.php b/app/code/Magento/Rss/Controller/Feed.php
index b089d377f6b..84154f4f072 100644
--- a/app/code/Magento/Rss/Controller/Feed.php
+++ b/app/code/Magento/Rss/Controller/Feed.php
@@ -25,10 +25,29 @@ namespace Magento\Rss\Controller;
 
 /**
  * Class Feed
- * @package Magento\Rss\Controller
  */
 class Feed extends \Magento\Framework\App\Action\Action
 {
+    /**
+     * @var \Magento\Customer\Model\Session
+     */
+    protected $customerSession;
+
+    /**
+     * @var \Magento\Customer\Service\V1\CustomerAccountServiceInterface
+     */
+    protected $customerAccountService;
+
+    /**
+     * @var \Magento\Framework\HTTP\Authentication
+     */
+    protected $httpAuthentication;
+
+    /**
+     * @var \Magento\Framework\Logger
+     */
+    protected $logger;
+
     /**
      * @var \Magento\Rss\Model\RssManager
      */
@@ -49,16 +68,52 @@ class Feed extends \Magento\Framework\App\Action\Action
      * @param \Magento\Rss\Model\RssManager $rssManager
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
      * @param \Magento\Rss\Model\RssFactory $rssFactory
+     * @param \Magento\Customer\Model\Session $customerSession
+     * @param \Magento\Customer\Service\V1\CustomerAccountServiceInterface $customerAccountService
+     * @param \Magento\Framework\HTTP\Authentication $httpAuthentication
+     * @param \Magento\Framework\Logger $logger
      */
     public function __construct(
         \Magento\Framework\App\Action\Context $context,
         \Magento\Rss\Model\RssManager $rssManager,
         \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
-        \Magento\Rss\Model\RssFactory $rssFactory
+        \Magento\Rss\Model\RssFactory $rssFactory,
+        \Magento\Customer\Model\Session $customerSession,
+        \Magento\Customer\Service\V1\CustomerAccountServiceInterface $customerAccountService,
+        \Magento\Framework\HTTP\Authentication $httpAuthentication,
+        \Magento\Framework\Logger $logger
     ) {
         $this->rssManager = $rssManager;
         $this->scopeConfig = $scopeConfig;
         $this->rssFactory = $rssFactory;
+        $this->customerSession = $customerSession;
+        $this->customerAccountService = $customerAccountService;
+        $this->httpAuthentication = $httpAuthentication;
+        $this->logger = $logger;
         parent::__construct($context);
     }
+
+    /**
+     * @return bool
+     */
+    protected function auth()
+    {
+        if (!$this->customerSession->isLoggedIn()) {
+            list($login, $password) = $this->httpAuthentication->getCredentials();
+            try {
+                $customer = $this->customerAccountService->authenticate($login, $password);
+                $this->customerSession->setCustomerDataAsLoggedIn($customer);
+                $this->customerSession->regenerateId();
+            } catch (\Exception $e) {
+                $this->logger->logException($e);
+            }
+        }
+
+        if (!$this->customerSession->isLoggedIn()) {
+            $this->httpAuthentication->setAuthenticationFailed('RSS Feeds');
+            return false;
+        }
+
+        return true;
+    }
 }
diff --git a/app/code/Magento/Rss/Controller/Feed/Index.php b/app/code/Magento/Rss/Controller/Feed/Index.php
index 9d75a3d85dc..00b304f6780 100644
--- a/app/code/Magento/Rss/Controller/Feed/Index.php
+++ b/app/code/Magento/Rss/Controller/Feed/Index.php
@@ -51,6 +51,10 @@ class Index extends \Magento\Rss\Controller\Feed
             throw new NotFoundException($e->getMessage());
         }
 
+        if ($provider->isAuthRequired() && !$this->auth()) {
+            return;
+        }
+
         if (!$provider->isAllowed()) {
             throw new NotFoundException();
         }
diff --git a/app/code/Magento/Rss/composer.json b/app/code/Magento/Rss/composer.json
index cf505b7d1c7..12d22eadd1a 100644
--- a/app/code/Magento/Rss/composer.json
+++ b/app/code/Magento/Rss/composer.json
@@ -3,13 +3,14 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
+        "magento/module-customer": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Rss/etc/adminhtml/di.xml b/app/code/Magento/Rss/etc/adminhtml/di.xml
index 111c8235aae..cb233310af3 100644
--- a/app/code/Magento/Rss/etc/adminhtml/di.xml
+++ b/app/code/Magento/Rss/etc/adminhtml/di.xml
@@ -24,7 +24,7 @@
  */
 -->
 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../lib/internal/Magento/Framework/ObjectManager/etc/config.xsd">
-    <type name="Magento\Rss\Controller\Adminhtml\Authenticate">
-        <plugin name="adminAuthentication" type="Magento\Rss\App\Action\Plugin\Authentication"/>
+    <type name="Magento\Rss\Controller\Adminhtml\Feed">
+        <plugin name="adminAuthentication" type="Magento\Rss\App\Action\Plugin\BackendAuthentication"/>
     </type>
 </config>
diff --git a/app/code/Magento/Rss/etc/module.xml b/app/code/Magento/Rss/etc/module.xml
index 81e93a9cbbf..08f7a9fe423 100644
--- a/app/code/Magento/Rss/etc/module.xml
+++ b/app/code/Magento/Rss/etc/module.xml
@@ -28,6 +28,7 @@
         <depends>
             <module name="Magento_Store"/>
             <module name="Magento_Backend"/>
+            <module name="Magento_Customer"/>
         </depends>
     </module>
 </config>
diff --git a/app/code/Magento/Rule/composer.json b/app/code/Magento/Rule/composer.json
index 952040ed37c..02b8dfdb00a 100644
--- a/app/code/Magento/Rule/composer.json
+++ b/app/code/Magento/Rule/composer.json
@@ -3,16 +3,16 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-eav": "0.1.0-alpha102",
-        "magento/module-catalog": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-eav": "0.1.0-alpha103",
+        "magento/module-catalog": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "lib-libxml": "*",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Sales/Block/Adminhtml/Order/Create/Form/AbstractForm.php b/app/code/Magento/Sales/Block/Adminhtml/Order/Create/Form/AbstractForm.php
index 4be492dfaff..7fc392efcec 100644
--- a/app/code/Magento/Sales/Block/Adminhtml/Order/Create/Form/AbstractForm.php
+++ b/app/code/Magento/Sales/Block/Adminhtml/Order/Create/Form/AbstractForm.php
@@ -199,7 +199,7 @@ abstract class AbstractForm extends \Magento\Sales\Block\Adminhtml\Order\Create\
                 if ($inputType == 'select' || $inputType == 'multiselect') {
                     $options = array();
                     foreach ($attribute->getOptions() as $optionData) {
-                        $options[] = \Magento\Framework\Service\SimpleDataObjectConverter::toFlatArray($optionData);
+                        $options[] = \Magento\Framework\Api\SimpleDataObjectConverter::toFlatArray($optionData);
                     }
                     $element->setValues($options);
                 } elseif ($inputType == 'date') {
diff --git a/app/code/Magento/Sales/Block/Adminhtml/Order/Create/Form/Account.php b/app/code/Magento/Sales/Block/Adminhtml/Order/Create/Form/Account.php
index 928a84110c7..d3725c32ffe 100644
--- a/app/code/Magento/Sales/Block/Adminhtml/Order/Create/Form/Account.php
+++ b/app/code/Magento/Sales/Block/Adminhtml/Order/Create/Form/Account.php
@@ -26,7 +26,7 @@ namespace Magento\Sales\Block\Adminhtml\Order\Create\Form;
 use Magento\Framework\Data\Form\Element\AbstractElement;
 use Magento\Customer\Service\V1\CustomerAccountServiceInterface;
 use Magento\Framework\Pricing\PriceCurrencyInterface;
-use Magento\Framework\Service\ExtensibleDataObjectConverter;
+use Magento\Framework\Api\ExtensibleDataObjectConverter;
 
 /**
  * Create order account form
diff --git a/app/code/Magento/Sales/Model/AdminOrder/Create.php b/app/code/Magento/Sales/Model/AdminOrder/Create.php
index 4520924cca4..f3d45333bb3 100644
--- a/app/code/Magento/Sales/Model/AdminOrder/Create.php
+++ b/app/code/Magento/Sales/Model/AdminOrder/Create.php
@@ -24,8 +24,6 @@
 namespace Magento\Sales\Model\AdminOrder;
 
 use Magento\Customer\Service\V1\CustomerAccountServiceInterface;
-use Magento\Customer\Service\V1\CustomerMetadataServiceInterface;
-use Magento\Customer\Service\V1\AddressMetadataServiceInterface;
 use Magento\Customer\Service\V1\CustomerAddressServiceInterface;
 use Magento\Customer\Service\V1\Data\AddressBuilder as CustomerAddressBuilder;
 use Magento\Customer\Service\V1\Data\CustomerBuilder;
@@ -1221,7 +1219,7 @@ class Create extends \Magento\Framework\Object implements \Magento\Checkout\Mode
         $customerForm = $this->_metadataFormFactory->create(
             \Magento\Customer\Service\V1\CustomerMetadataServiceInterface::ENTITY_TYPE_CUSTOMER,
             'adminhtml_checkout',
-            \Magento\Framework\Service\ExtensibleDataObjectConverter::toFlatArray($customerDataObject),
+            \Magento\Framework\Api\ExtensibleDataObjectConverter::toFlatArray($customerDataObject),
             false,
             CustomerForm::DONT_IGNORE_INVISIBLE
         );
@@ -1248,7 +1246,7 @@ class Create extends \Magento\Framework\Object implements \Magento\Checkout\Mode
         $data = isset($data['region']) && is_array($data['region']) ? array_merge($data, $data['region']) : $data;
 
         $addressForm = $this->_metadataFormFactory->create(
-            AddressMetadataServiceInterface::ENTITY_TYPE_ADDRESS,
+            \Magento\Customer\Api\AddressMetadataInterface::ENTITY_TYPE_ADDRESS,
             'adminhtml_customer_address',
             $data,
             $isAjax,
@@ -1499,7 +1497,7 @@ class Create extends \Magento\Framework\Object implements \Magento\Checkout\Mode
         $this->getQuote()->updateCustomerData($customer);
         $data = array();
 
-        $customerData = \Magento\Framework\Service\ExtensibleDataObjectConverter::toFlatArray($customer);
+        $customerData = \Magento\Framework\Api\ExtensibleDataObjectConverter::toFlatArray($customer);
         foreach ($form->getAttributes() as $attribute) {
             $code = sprintf('customer_%s', $attribute->getAttributeCode());
             $data[$code] = isset(
@@ -1671,7 +1669,7 @@ class Create extends \Magento\Framework\Object implements \Magento\Checkout\Mode
         }
         $this->getQuote()->updateCustomerData($customerDataObject);
 
-        $customerData = \Magento\Framework\Service\ExtensibleDataObjectConverter::toFlatArray($customerDataObject);
+        $customerData = \Magento\Framework\Api\ExtensibleDataObjectConverter::toFlatArray($customerDataObject);
         foreach ($this->_createCustomerForm($customerDataObject)->getUserAttributes() as $attribute) {
             if (isset($customerData[$attribute->getAttributeCode()])) {
                 $quoteCode = sprintf('customer_%s', $attribute->getAttributeCode());
diff --git a/app/code/Magento/Sales/Model/Order/Payment/TransactionRepository.php b/app/code/Magento/Sales/Model/Order/Payment/TransactionRepository.php
index e9d96d6a6c6..1b51916e335 100644
--- a/app/code/Magento/Sales/Model/Order/Payment/TransactionRepository.php
+++ b/app/code/Magento/Sales/Model/Order/Payment/TransactionRepository.php
@@ -25,8 +25,8 @@
 namespace Magento\Sales\Model\Order\Payment;
 
 use Magento\Sales\Model\Resource\Order\Payment\Transaction as TransactionResource;
-use Magento\Framework\Service\V1\Data\FilterBuilder;
-use Magento\Framework\Service\V1\Data\SearchCriteriaBuilder;
+use Magento\Framework\Api\FilterBuilder;
+use Magento\Framework\Api\SearchCriteriaBuilder;
 
 /**
  * Repository class for \Magento\Sales\Model\Order\Payment\Transaction
@@ -55,12 +55,12 @@ class TransactionRepository
     private $registry = array();
 
     /**
-     * @var \Magento\Framework\Service\V1\Data\FilterBuilder
+     * @var \Magento\Framework\Api\FilterBuilder
      */
     private $filterBuilder;
 
     /**
-     * @var \Magento\Framework\Service\V1\Data\SearchCriteriaBuilder
+     * @var \Magento\Framework\Api\SearchCriteriaBuilder
      */
     private $searchCriteriaBuilder;
 
@@ -126,10 +126,10 @@ class TransactionRepository
     /**
      * Find entities by criteria
      *
-     * @param \Magento\Framework\Service\V1\Data\SearchCriteria  $criteria
+     * @param \Magento\Framework\Api\SearchCriteria  $criteria
      * @return Transaction[]
      */
-    public function find(\Magento\Framework\Service\V1\Data\SearchCriteria $criteria)
+    public function find(\Magento\Framework\Api\SearchCriteria $criteria)
     {
         /** @var TransactionResource\Collection $collection */
         $collection = $this->transactionCollectionFactory->create();
diff --git a/app/code/Magento/Sales/Model/OrderConverter.php b/app/code/Magento/Sales/Model/OrderConverter.php
index 83ab755637a..47ea3ab4a14 100644
--- a/app/code/Magento/Sales/Model/OrderConverter.php
+++ b/app/code/Magento/Sales/Model/OrderConverter.php
@@ -109,7 +109,7 @@ class OrderConverter
 
     /**
      * Get Order Items
-     * 
+     *
      * @param OrderData $dataObject
      * @return array
      */
diff --git a/app/code/Magento/Sales/Model/Quote.php b/app/code/Magento/Sales/Model/Quote.php
index d20517b11e5..72165ecb21c 100644
--- a/app/code/Magento/Sales/Model/Quote.php
+++ b/app/code/Magento/Sales/Model/Quote.php
@@ -709,7 +709,7 @@ class Quote extends \Magento\Framework\Model\AbstractModel
     {
         /* @TODO: remove model usage in favor of Data Object in scope of MAGETWO-19930 */
         $customer = $this->_customerFactory->create();
-        $customer->setData(\Magento\Framework\Service\ExtensibleDataObjectConverter::toFlatArray($customerData));
+        $customer->setData(\Magento\Framework\Api\ExtensibleDataObjectConverter::toFlatArray($customerData));
         $customer->setId($customerData->getId());
         $this->setCustomer($customer);
         return $this;
diff --git a/app/code/Magento/Sales/Model/Rss/NewOrder.php b/app/code/Magento/Sales/Model/Rss/NewOrder.php
index 6d763f59050..efda9d697cc 100644
--- a/app/code/Magento/Sales/Model/Rss/NewOrder.php
+++ b/app/code/Magento/Sales/Model/Rss/NewOrder.php
@@ -168,4 +168,12 @@ class NewOrder implements DataProviderInterface
     {
         return array();
     }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function isAuthRequired()
+    {
+        return true;
+    }
 }
diff --git a/app/code/Magento/Sales/Model/Rss/OrderStatus.php b/app/code/Magento/Sales/Model/Rss/OrderStatus.php
index e134b478101..e42181069f4 100644
--- a/app/code/Magento/Sales/Model/Rss/OrderStatus.php
+++ b/app/code/Magento/Sales/Model/Rss/OrderStatus.php
@@ -234,4 +234,12 @@ class OrderStatus implements DataProviderInterface
     {
         return array();
     }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function isAuthRequired()
+    {
+        return true;
+    }
 }
diff --git a/app/code/Magento/Sales/Service/V1/Action/CreditmemoCommentsList.php b/app/code/Magento/Sales/Service/V1/Action/CreditmemoCommentsList.php
index bbb755e832f..9defd3bccef 100644
--- a/app/code/Magento/Sales/Service/V1/Action/CreditmemoCommentsList.php
+++ b/app/code/Magento/Sales/Service/V1/Action/CreditmemoCommentsList.php
@@ -24,9 +24,9 @@
 namespace Magento\Sales\Service\V1\Action;
 
 use Magento\Sales\Service\V1\Data\CommentMapper;
-use Magento\Framework\Service\V1\Data\FilterBuilder;
+use Magento\Framework\Api\FilterBuilder;
 use Magento\Sales\Model\Order\Creditmemo\CommentRepository;
-use Magento\Framework\Service\V1\Data\SearchCriteriaBuilder;
+use Magento\Framework\Api\SearchCriteriaBuilder;
 use Magento\Sales\Service\V1\Data\CommentSearchResultsBuilder;
 
 /**
@@ -45,12 +45,12 @@ class CreditmemoCommentsList
     protected $commentMapper;
 
     /**
-     * @var \Magento\Framework\Service\V1\Data\SearchCriteriaBuilder
+     * @var \Magento\Framework\Api\SearchCriteriaBuilder
      */
     protected $criteriaBuilder;
 
     /**
-     * @var \Magento\Framework\Service\V1\Data\FilterBuilder
+     * @var \Magento\Framework\Api\FilterBuilder
      */
     protected $filterBuilder;
 
@@ -62,8 +62,8 @@ class CreditmemoCommentsList
     /**
      * @param \Magento\Sales\Model\Order\Creditmemo\CommentRepository $commentRepository
      * @param \Magento\Sales\Service\V1\Data\CommentMapper $commentMapper
-     * @param \Magento\Framework\Service\V1\Data\SearchCriteriaBuilder $criteriaBuilder
-     * @param \Magento\Framework\Service\V1\Data\FilterBuilder $filterBuilder
+     * @param \Magento\Framework\Api\SearchCriteriaBuilder $criteriaBuilder
+     * @param \Magento\Framework\Api\FilterBuilder $filterBuilder
      * @param \Magento\Sales\Service\V1\Data\CommentSearchResultsBuilder $searchResultsBuilder
      */
     public function __construct(
diff --git a/app/code/Magento/Sales/Service/V1/Action/CreditmemoList.php b/app/code/Magento/Sales/Service/V1/Action/CreditmemoList.php
index 3b38db63556..7d9cf4af026 100644
--- a/app/code/Magento/Sales/Service/V1/Action/CreditmemoList.php
+++ b/app/code/Magento/Sales/Service/V1/Action/CreditmemoList.php
@@ -25,7 +25,7 @@ namespace Magento\Sales\Service\V1\Action;
 
 use Magento\Sales\Service\V1\Data\CreditmemoMapper;
 use Magento\Sales\Model\Order\CreditmemoRepository;
-use Magento\Framework\Service\V1\Data\SearchCriteria;
+use Magento\Framework\Api\SearchCriteria;
 use Magento\Sales\Service\V1\Data\CreditmemoSearchResultsBuilder;
 
 /**
@@ -66,8 +66,8 @@ class CreditmemoList
     /**
      * Invoke CreditmemoList service
      *
-     * @param \Magento\Framework\Service\V1\Data\SearchCriteria $searchCriteria
-     * @return \Magento\Framework\Service\V1\Data\SearchResults
+     * @param \Magento\Framework\Api\SearchCriteria $searchCriteria
+     * @return \Magento\Framework\Api\SearchResults
      */
     public function invoke(SearchCriteria $searchCriteria)
     {
diff --git a/app/code/Magento/Sales/Service/V1/Action/InvoiceCommentsList.php b/app/code/Magento/Sales/Service/V1/Action/InvoiceCommentsList.php
index f5d8730ab96..d42d74c36cf 100644
--- a/app/code/Magento/Sales/Service/V1/Action/InvoiceCommentsList.php
+++ b/app/code/Magento/Sales/Service/V1/Action/InvoiceCommentsList.php
@@ -24,9 +24,9 @@
 namespace Magento\Sales\Service\V1\Action;
 
 use Magento\Sales\Service\V1\Data\CommentMapper;
-use Magento\Framework\Service\V1\Data\FilterBuilder;
+use Magento\Framework\Api\FilterBuilder;
 use Magento\Sales\Model\Order\Invoice\CommentRepository;
-use Magento\Framework\Service\V1\Data\SearchCriteriaBuilder;
+use Magento\Framework\Api\SearchCriteriaBuilder;
 use Magento\Sales\Service\V1\Data\CommentSearchResultsBuilder;
 
 /**
@@ -45,12 +45,12 @@ class InvoiceCommentsList
     protected $commentMapper;
 
     /**
-     * @var \Magento\Framework\Service\V1\Data\SearchCriteriaBuilder
+     * @var \Magento\Framework\Api\SearchCriteriaBuilder
      */
     protected $criteriaBuilder;
 
     /**
-     * @var \Magento\Framework\Service\V1\Data\FilterBuilder
+     * @var \Magento\Framework\Api\FilterBuilder
      */
     protected $filterBuilder;
 
@@ -62,8 +62,8 @@ class InvoiceCommentsList
     /**
      * @param \Magento\Sales\Model\Order\Invoice\CommentRepository $commentRepository
      * @param \Magento\Sales\Service\V1\Data\CommentMapper $commentMapper
-     * @param \Magento\Framework\Service\V1\Data\SearchCriteriaBuilder $criteriaBuilder
-     * @param \Magento\Framework\Service\V1\Data\FilterBuilder $filterBuilder
+     * @param \Magento\Framework\Api\SearchCriteriaBuilder $criteriaBuilder
+     * @param \Magento\Framework\Api\FilterBuilder $filterBuilder
      * @param \Magento\Sales\Service\V1\Data\CommentSearchResultsBuilder $searchResultsBuilder
      */
     public function __construct(
diff --git a/app/code/Magento/Sales/Service/V1/Action/InvoiceList.php b/app/code/Magento/Sales/Service/V1/Action/InvoiceList.php
index 8632bc4d1c9..60433608271 100644
--- a/app/code/Magento/Sales/Service/V1/Action/InvoiceList.php
+++ b/app/code/Magento/Sales/Service/V1/Action/InvoiceList.php
@@ -26,7 +26,7 @@ namespace Magento\Sales\Service\V1\Action;
 use Magento\Sales\Model\Order\InvoiceRepository;
 use Magento\Sales\Service\V1\Data\InvoiceMapper;
 use Magento\Sales\Service\V1\Data\InvoiceSearchResultsBuilder;
-use Magento\Framework\Service\V1\Data\SearchCriteria;
+use Magento\Framework\Api\SearchCriteria;
 
 /**
  * Class InvoiceList
@@ -67,7 +67,7 @@ class InvoiceList
      * Invoke InvoiceList service
      *
      * @param SearchCriteria $searchCriteria
-     * @return \Magento\Framework\Service\V1\Data\SearchResults
+     * @return \Magento\Framework\Api\SearchResults
      */
     public function invoke(SearchCriteria $searchCriteria)
     {
diff --git a/app/code/Magento/Sales/Service/V1/Action/OrderCommentsList.php b/app/code/Magento/Sales/Service/V1/Action/OrderCommentsList.php
index 7fec849be43..e78f59757bc 100644
--- a/app/code/Magento/Sales/Service/V1/Action/OrderCommentsList.php
+++ b/app/code/Magento/Sales/Service/V1/Action/OrderCommentsList.php
@@ -25,8 +25,8 @@ namespace Magento\Sales\Service\V1\Action;
 
 use Magento\Sales\Model\Order\Status\HistoryRepository;
 use Magento\Sales\Service\V1\Data\OrderStatusHistoryMapper;
-use Magento\Framework\Service\V1\Data\SearchCriteriaBuilder;
-use Magento\Framework\Service\V1\Data\FilterBuilder;
+use Magento\Framework\Api\SearchCriteriaBuilder;
+use Magento\Framework\Api\FilterBuilder;
 use Magento\Sales\Service\V1\Data\OrderStatusHistorySearchResultsBuilder;
 
 /**
diff --git a/app/code/Magento/Sales/Service/V1/Action/OrderList.php b/app/code/Magento/Sales/Service/V1/Action/OrderList.php
index 65b92272eff..a506e22a6a0 100644
--- a/app/code/Magento/Sales/Service/V1/Action/OrderList.php
+++ b/app/code/Magento/Sales/Service/V1/Action/OrderList.php
@@ -26,7 +26,7 @@ namespace Magento\Sales\Service\V1\Action;
 use Magento\Sales\Model\OrderRepository;
 use Magento\Sales\Service\V1\Data\OrderMapper;
 use Magento\Sales\Service\V1\Data\OrderSearchResultsBuilder;
-use Magento\Framework\Service\V1\Data\SearchCriteria;
+use Magento\Framework\Api\SearchCriteria;
 
 /**
  * Class OrderList
@@ -66,7 +66,7 @@ class OrderList
     /**
      * Invoke OrderList service
      *
-     * @param \Magento\Framework\Service\V1\Data\SearchCriteria $searchCriteria
+     * @param \Magento\Framework\Api\SearchCriteria $searchCriteria
      * @return \Magento\Sales\Service\V1\Data\OrderSearchResults
      */
     public function invoke(SearchCriteria $searchCriteria)
diff --git a/app/code/Magento/Sales/Service/V1/Action/ShipmentCommentsList.php b/app/code/Magento/Sales/Service/V1/Action/ShipmentCommentsList.php
index 85e8a150860..e8448cab849 100644
--- a/app/code/Magento/Sales/Service/V1/Action/ShipmentCommentsList.php
+++ b/app/code/Magento/Sales/Service/V1/Action/ShipmentCommentsList.php
@@ -24,9 +24,9 @@
 namespace Magento\Sales\Service\V1\Action;
 
 use Magento\Sales\Service\V1\Data\CommentMapper;
-use Magento\Framework\Service\V1\Data\FilterBuilder;
+use Magento\Framework\Api\FilterBuilder;
 use Magento\Sales\Model\Order\Shipment\CommentRepository;
-use Magento\Framework\Service\V1\Data\SearchCriteriaBuilder;
+use Magento\Framework\Api\SearchCriteriaBuilder;
 use Magento\Sales\Service\V1\Data\CommentSearchResultsBuilder;
 
 /**
@@ -45,12 +45,12 @@ class ShipmentCommentsList
     protected $commentMapper;
 
     /**
-     * @var \Magento\Framework\Service\V1\Data\SearchCriteriaBuilder
+     * @var \Magento\Framework\Api\SearchCriteriaBuilder
      */
     protected $criteriaBuilder;
 
     /**
-     * @var \Magento\Framework\Service\V1\Data\FilterBuilder
+     * @var \Magento\Framework\Api\FilterBuilder
      */
     protected $filterBuilder;
 
@@ -62,8 +62,8 @@ class ShipmentCommentsList
     /**
      * @param \Magento\Sales\Model\Order\Shipment\CommentRepository $commentRepository
      * @param \Magento\Sales\Service\V1\Data\CommentMapper $commentMapper
-     * @param \Magento\Framework\Service\V1\Data\SearchCriteriaBuilder $criteriaBuilder
-     * @param \Magento\Framework\Service\V1\Data\FilterBuilder $filterBuilder
+     * @param \Magento\Framework\Api\SearchCriteriaBuilder $criteriaBuilder
+     * @param \Magento\Framework\Api\FilterBuilder $filterBuilder
      * @param \Magento\Sales\Service\V1\Data\CommentSearchResultsBuilder $searchResultsBuilder
      */
     public function __construct(
diff --git a/app/code/Magento/Sales/Service/V1/Action/ShipmentList.php b/app/code/Magento/Sales/Service/V1/Action/ShipmentList.php
index 766b66457f9..5862905697e 100644
--- a/app/code/Magento/Sales/Service/V1/Action/ShipmentList.php
+++ b/app/code/Magento/Sales/Service/V1/Action/ShipmentList.php
@@ -26,7 +26,7 @@ namespace Magento\Sales\Service\V1\Action;
 use Magento\Sales\Model\Order\ShipmentRepository;
 use Magento\Sales\Service\V1\Data\ShipmentMapper;
 use Magento\Sales\Service\V1\Data\ShipmentSearchResultsBuilder;
-use Magento\Framework\Service\V1\Data\SearchCriteria;
+use Magento\Framework\Api\SearchCriteria;
 
 /**
  * Class ShipmentList
@@ -67,7 +67,7 @@ class ShipmentList
      * Invoke ShipmentList service
      *
      * @param SearchCriteria $searchCriteria
-     * @return \Magento\Framework\Service\V1\Data\SearchResults
+     * @return \Magento\Framework\Api\SearchResults
      */
     public function invoke(SearchCriteria $searchCriteria)
     {
diff --git a/app/code/Magento/Sales/Service/V1/CreditmemoRead.php b/app/code/Magento/Sales/Service/V1/CreditmemoRead.php
index 84e6634a203..73e70710fde 100644
--- a/app/code/Magento/Sales/Service/V1/CreditmemoRead.php
+++ b/app/code/Magento/Sales/Service/V1/CreditmemoRead.php
@@ -26,7 +26,7 @@ namespace Magento\Sales\Service\V1;
 use Magento\Sales\Service\V1\Action\CreditmemoGet;
 use Magento\Sales\Service\V1\Action\CreditmemoList;
 use Magento\Sales\Service\V1\Action\CreditmemoCommentsList;
-use Magento\Framework\Service\V1\Data\SearchCriteria;
+use Magento\Framework\Api\SearchCriteria;
 
 /**
  * Class CreditmemoRead
@@ -75,7 +75,7 @@ class CreditmemoRead implements CreditmemoReadInterface
 
     /**
      * @param SearchCriteria $searchCriteria
-     * @return \Magento\Framework\Service\V1\Data\SearchResults
+     * @return \Magento\Framework\Api\SearchResults
      */
     public function search(SearchCriteria $searchCriteria)
     {
diff --git a/app/code/Magento/Sales/Service/V1/CreditmemoReadInterface.php b/app/code/Magento/Sales/Service/V1/CreditmemoReadInterface.php
index 8f59c3beb08..dc065962988 100644
--- a/app/code/Magento/Sales/Service/V1/CreditmemoReadInterface.php
+++ b/app/code/Magento/Sales/Service/V1/CreditmemoReadInterface.php
@@ -23,7 +23,7 @@
  */
 namespace Magento\Sales\Service\V1;
 
-use Magento\Framework\Service\V1\Data\SearchCriteria;
+use Magento\Framework\Api\SearchCriteria;
 
 interface CreditmemoReadInterface
 {
@@ -35,8 +35,8 @@ interface CreditmemoReadInterface
     public function get($id);
 
     /**
-     * @param \Magento\Framework\Service\V1\Data\SearchCriteria $searchCriteria
-     * @return \Magento\Framework\Service\V1\Data\SearchResults
+     * @param \Magento\Framework\Api\SearchCriteria $searchCriteria
+     * @return \Magento\Framework\Api\SearchResults
      */
     public function search(SearchCriteria $searchCriteria);
 
diff --git a/app/code/Magento/Sales/Service/V1/Data/Comment.php b/app/code/Magento/Sales/Service/V1/Data/Comment.php
index 716dc4432dc..454d8155fd0 100644
--- a/app/code/Magento/Sales/Service/V1/Data/Comment.php
+++ b/app/code/Magento/Sales/Service/V1/Data/Comment.php
@@ -23,7 +23,7 @@
  */
 namespace Magento\Sales\Service\V1\Data;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObject as DataObject;
+use Magento\Framework\Api\AbstractExtensibleObject as DataObject;
 
 /**
  * Class InvoiceComment
diff --git a/app/code/Magento/Sales/Service/V1/Data/Creditmemo.php b/app/code/Magento/Sales/Service/V1/Data/Creditmemo.php
index 53eec058290..19091fd9ec5 100644
--- a/app/code/Magento/Sales/Service/V1/Data/Creditmemo.php
+++ b/app/code/Magento/Sales/Service/V1/Data/Creditmemo.php
@@ -23,7 +23,7 @@
  */
 namespace Magento\Sales\Service\V1\Data;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObject as DataObject;
+use Magento\Framework\Api\AbstractExtensibleObject as DataObject;
 
 /**
  * Class Creditmemo
diff --git a/app/code/Magento/Sales/Service/V1/Data/CreditmemoItem.php b/app/code/Magento/Sales/Service/V1/Data/CreditmemoItem.php
index 1e8b6c8a197..d42481cb7bd 100644
--- a/app/code/Magento/Sales/Service/V1/Data/CreditmemoItem.php
+++ b/app/code/Magento/Sales/Service/V1/Data/CreditmemoItem.php
@@ -23,7 +23,7 @@
  */
 namespace Magento\Sales\Service\V1\Data;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObject as DataObject;
+use Magento\Framework\Api\AbstractExtensibleObject as DataObject;
 
 /**
  * Class CreditmemoItem
diff --git a/app/code/Magento/Sales/Service/V1/Data/CreditmemoMapper.php b/app/code/Magento/Sales/Service/V1/Data/CreditmemoMapper.php
index bc2dbfc1c08..72ee099a661 100644
--- a/app/code/Magento/Sales/Service/V1/Data/CreditmemoMapper.php
+++ b/app/code/Magento/Sales/Service/V1/Data/CreditmemoMapper.php
@@ -66,7 +66,7 @@ class CreditmemoMapper
 
     /**
      * @param \Magento\Sales\Model\Order\Creditmemo $creditmemo
-     * @return \Magento\Framework\Service\Data\AbstractExtensibleObject
+     * @return \Magento\Framework\Api\AbstractExtensibleObject
      */
     public function extractDto(\Magento\Sales\Model\Order\Creditmemo $creditmemo)
     {
diff --git a/app/code/Magento/Sales/Service/V1/Data/Invoice.php b/app/code/Magento/Sales/Service/V1/Data/Invoice.php
index 792de8a3da6..f1973993714 100644
--- a/app/code/Magento/Sales/Service/V1/Data/Invoice.php
+++ b/app/code/Magento/Sales/Service/V1/Data/Invoice.php
@@ -23,7 +23,7 @@
  */
 namespace Magento\Sales\Service\V1\Data;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObject as DataObject;
+use Magento\Framework\Api\AbstractExtensibleObject as DataObject;
 
 /**
  * Class Invoice
diff --git a/app/code/Magento/Sales/Service/V1/Data/InvoiceItem.php b/app/code/Magento/Sales/Service/V1/Data/InvoiceItem.php
index de74d451a0a..4776c0e7a7c 100644
--- a/app/code/Magento/Sales/Service/V1/Data/InvoiceItem.php
+++ b/app/code/Magento/Sales/Service/V1/Data/InvoiceItem.php
@@ -23,7 +23,7 @@
  */
 namespace Magento\Sales\Service\V1\Data;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObject as DataObject;
+use Magento\Framework\Api\AbstractExtensibleObject as DataObject;
 
 /**
  * Class InvoiceItem
diff --git a/app/code/Magento/Sales/Service/V1/Data/InvoiceMapper.php b/app/code/Magento/Sales/Service/V1/Data/InvoiceMapper.php
index f4768093c54..5e061b99969 100644
--- a/app/code/Magento/Sales/Service/V1/Data/InvoiceMapper.php
+++ b/app/code/Magento/Sales/Service/V1/Data/InvoiceMapper.php
@@ -65,7 +65,7 @@ class InvoiceMapper
 
     /**
      * @param \Magento\Sales\Model\Order\Invoice $object
-     * @return \Magento\Framework\Service\Data\AbstractExtensibleObject
+     * @return \Magento\Framework\Api\AbstractExtensibleObject
      */
     public function extractDto(\Magento\Sales\Model\Order\Invoice $object)
     {
diff --git a/app/code/Magento/Sales/Service/V1/Data/Order.php b/app/code/Magento/Sales/Service/V1/Data/Order.php
index c314f83583f..ab07670bbd4 100644
--- a/app/code/Magento/Sales/Service/V1/Data/Order.php
+++ b/app/code/Magento/Sales/Service/V1/Data/Order.php
@@ -23,7 +23,7 @@
  */
 namespace Magento\Sales\Service\V1\Data;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObject as DataObject;
+use Magento\Framework\Api\AbstractExtensibleObject as DataObject;
 
 /**
  * Class Order
diff --git a/app/code/Magento/Sales/Service/V1/Data/OrderAddress.php b/app/code/Magento/Sales/Service/V1/Data/OrderAddress.php
index bbff300f009..7fef2ec9c66 100644
--- a/app/code/Magento/Sales/Service/V1/Data/OrderAddress.php
+++ b/app/code/Magento/Sales/Service/V1/Data/OrderAddress.php
@@ -23,7 +23,7 @@
  */
 namespace Magento\Sales\Service\V1\Data;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObject as DataObject;
+use Magento\Framework\Api\AbstractExtensibleObject as DataObject;
 
 /**
  * Class OrderAddress
diff --git a/app/code/Magento/Sales/Service/V1/Data/OrderItem.php b/app/code/Magento/Sales/Service/V1/Data/OrderItem.php
index 04208de6e80..73a38141dfc 100644
--- a/app/code/Magento/Sales/Service/V1/Data/OrderItem.php
+++ b/app/code/Magento/Sales/Service/V1/Data/OrderItem.php
@@ -23,7 +23,7 @@
  */
 namespace Magento\Sales\Service\V1\Data;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObject as DataObject;
+use Magento\Framework\Api\AbstractExtensibleObject as DataObject;
 
 /**
  * Class OrderItem
diff --git a/app/code/Magento/Sales/Service/V1/Data/OrderPayment.php b/app/code/Magento/Sales/Service/V1/Data/OrderPayment.php
index f38b6dc5fe8..404f83accad 100644
--- a/app/code/Magento/Sales/Service/V1/Data/OrderPayment.php
+++ b/app/code/Magento/Sales/Service/V1/Data/OrderPayment.php
@@ -23,7 +23,7 @@
  */
 namespace Magento\Sales\Service\V1\Data;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObject as DataObject;
+use Magento\Framework\Api\AbstractExtensibleObject as DataObject;
 
 /**
  * Class OrderPayment
diff --git a/app/code/Magento/Sales/Service/V1/Data/OrderStatusHistory.php b/app/code/Magento/Sales/Service/V1/Data/OrderStatusHistory.php
index e980a7e983e..d5c48cc7ce7 100644
--- a/app/code/Magento/Sales/Service/V1/Data/OrderStatusHistory.php
+++ b/app/code/Magento/Sales/Service/V1/Data/OrderStatusHistory.php
@@ -23,7 +23,7 @@
  */
 namespace Magento\Sales\Service\V1\Data;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObject as DataObject;
+use Magento\Framework\Api\AbstractExtensibleObject as DataObject;
 
 /**
  * Class OrderStatusHistory
diff --git a/app/code/Magento/Sales/Service/V1/Data/Shipment.php b/app/code/Magento/Sales/Service/V1/Data/Shipment.php
index 4b3cfbc5a26..b53b62c6d98 100644
--- a/app/code/Magento/Sales/Service/V1/Data/Shipment.php
+++ b/app/code/Magento/Sales/Service/V1/Data/Shipment.php
@@ -23,7 +23,7 @@
  */
 namespace Magento\Sales\Service\V1\Data;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObject as DataObject;
+use Magento\Framework\Api\AbstractExtensibleObject as DataObject;
 
 /**
  * Class Shipment
diff --git a/app/code/Magento/Sales/Service/V1/Data/ShipmentItem.php b/app/code/Magento/Sales/Service/V1/Data/ShipmentItem.php
index 2c0c7adc887..c9a2fa73a3a 100644
--- a/app/code/Magento/Sales/Service/V1/Data/ShipmentItem.php
+++ b/app/code/Magento/Sales/Service/V1/Data/ShipmentItem.php
@@ -23,7 +23,7 @@
  */
 namespace Magento\Sales\Service\V1\Data;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObject as DataObject;
+use Magento\Framework\Api\AbstractExtensibleObject as DataObject;
 
 /**
  * Class ShipmentItem
diff --git a/app/code/Magento/Sales/Service/V1/Data/ShipmentTrack.php b/app/code/Magento/Sales/Service/V1/Data/ShipmentTrack.php
index a4bba0c831c..fdc5b1d18e1 100644
--- a/app/code/Magento/Sales/Service/V1/Data/ShipmentTrack.php
+++ b/app/code/Magento/Sales/Service/V1/Data/ShipmentTrack.php
@@ -23,7 +23,7 @@
  */
 namespace Magento\Sales\Service\V1\Data;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObject as DataObject;
+use Magento\Framework\Api\AbstractExtensibleObject as DataObject;
 
 /**
  * Class ShipmentTrack
diff --git a/app/code/Magento/Sales/Service/V1/Data/Transaction.php b/app/code/Magento/Sales/Service/V1/Data/Transaction.php
index 8a5fd6564c8..4b91c7dbd2d 100644
--- a/app/code/Magento/Sales/Service/V1/Data/Transaction.php
+++ b/app/code/Magento/Sales/Service/V1/Data/Transaction.php
@@ -24,7 +24,7 @@
  
 namespace Magento\Sales\Service\V1\Data;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObject as DataObject;
+use Magento\Framework\Api\AbstractExtensibleObject as DataObject;
 
 /**
  * @codeCoverageIgnore
diff --git a/app/code/Magento/Sales/Service/V1/Data/Transaction/AdditionalInformation.php b/app/code/Magento/Sales/Service/V1/Data/Transaction/AdditionalInformation.php
index 3ecf08e07dc..5cc7ec4977c 100644
--- a/app/code/Magento/Sales/Service/V1/Data/Transaction/AdditionalInformation.php
+++ b/app/code/Magento/Sales/Service/V1/Data/Transaction/AdditionalInformation.php
@@ -24,7 +24,7 @@
  
 namespace Magento\Sales\Service\V1\Data\Transaction;
 
-use Magento\Framework\Service\Data\AbstractSimpleObject as DataObject;
+use Magento\Framework\Api\AbstractSimpleObject as DataObject;
 
 /**
  * @codeCoverageIgnore
diff --git a/app/code/Magento/Sales/Service/V1/Data/TransactionBuilder.php b/app/code/Magento/Sales/Service/V1/Data/TransactionBuilder.php
index 0e5d852db59..bb2a7073f92 100644
--- a/app/code/Magento/Sales/Service/V1/Data/TransactionBuilder.php
+++ b/app/code/Magento/Sales/Service/V1/Data/TransactionBuilder.php
@@ -27,7 +27,7 @@ namespace Magento\Sales\Service\V1\Data;
 /**
  * Builder class for \Magento\Sales\Service\V1\Data\Transaction
  */
-class TransactionBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder
+class TransactionBuilder extends \Magento\Framework\Api\ExtensibleObjectBuilder
 {
     /**
      * {@inheritdoc}
diff --git a/app/code/Magento/Sales/Service/V1/InvoiceRead.php b/app/code/Magento/Sales/Service/V1/InvoiceRead.php
index a890060aa7f..19fdb2b1dc0 100644
--- a/app/code/Magento/Sales/Service/V1/InvoiceRead.php
+++ b/app/code/Magento/Sales/Service/V1/InvoiceRead.php
@@ -26,7 +26,7 @@ namespace Magento\Sales\Service\V1;
 use Magento\Sales\Service\V1\Action\InvoiceGet;
 use Magento\Sales\Service\V1\Action\InvoiceList;
 use Magento\Sales\Service\V1\Action\InvoiceCommentsList;
-use Magento\Framework\Service\V1\Data\SearchCriteria;
+use Magento\Framework\Api\SearchCriteria;
 
 /**
  * Class InvoiceRead
@@ -79,8 +79,8 @@ class InvoiceRead implements InvoiceReadInterface
     }
 
     /**
-     * @param \Magento\Framework\Service\V1\Data\SearchCriteria $searchCriteria
-     * @return \Magento\Framework\Service\V1\Data\SearchResults
+     * @param \Magento\Framework\Api\SearchCriteria $searchCriteria
+     * @return \Magento\Framework\Api\SearchResults
      */
     public function search(SearchCriteria $searchCriteria)
     {
diff --git a/app/code/Magento/Sales/Service/V1/InvoiceReadInterface.php b/app/code/Magento/Sales/Service/V1/InvoiceReadInterface.php
index b566d1be23c..61979ce246a 100644
--- a/app/code/Magento/Sales/Service/V1/InvoiceReadInterface.php
+++ b/app/code/Magento/Sales/Service/V1/InvoiceReadInterface.php
@@ -23,7 +23,7 @@
  */
 namespace Magento\Sales\Service\V1;
 
-use Magento\Framework\Service\V1\Data\SearchCriteria;
+use Magento\Framework\Api\SearchCriteria;
 
 interface InvoiceReadInterface
 {
@@ -35,8 +35,8 @@ interface InvoiceReadInterface
     public function get($id);
 
     /**
-     * @param \Magento\Framework\Service\V1\Data\SearchCriteria $searchCriteria
-     * @return \Magento\Framework\Service\V1\Data\SearchResults
+     * @param \Magento\Framework\Api\SearchCriteria $searchCriteria
+     * @return \Magento\Framework\Api\SearchResults
      */
     public function search(SearchCriteria $searchCriteria);
 
diff --git a/app/code/Magento/Sales/Service/V1/OrderRead.php b/app/code/Magento/Sales/Service/V1/OrderRead.php
index dc3a72c3d29..fa5a497568b 100644
--- a/app/code/Magento/Sales/Service/V1/OrderRead.php
+++ b/app/code/Magento/Sales/Service/V1/OrderRead.php
@@ -27,7 +27,7 @@ use Magento\Sales\Service\V1\Action\OrderGet;
 use Magento\Sales\Service\V1\Action\OrderList;
 use Magento\Sales\Service\V1\Action\OrderCommentsList;
 use Magento\Sales\Service\V1\Action\OrderGetStatus;
-use Magento\Framework\Service\V1\Data\SearchCriteria;
+use Magento\Framework\Api\SearchCriteria;
 
 /**
  * Class OrderRead
@@ -83,7 +83,7 @@ class OrderRead implements OrderReadInterface
     }
 
     /**
-     * @param \Magento\Framework\Service\V1\Data\SearchCriteria $searchCriteria
+     * @param \Magento\Framework\Api\SearchCriteria $searchCriteria
      * @return \Magento\Sales\Service\V1\Data\OrderSearchResults
      */
     public function search(SearchCriteria $searchCriteria)
diff --git a/app/code/Magento/Sales/Service/V1/OrderReadInterface.php b/app/code/Magento/Sales/Service/V1/OrderReadInterface.php
index 4862680cfee..418d3db00b6 100644
--- a/app/code/Magento/Sales/Service/V1/OrderReadInterface.php
+++ b/app/code/Magento/Sales/Service/V1/OrderReadInterface.php
@@ -23,7 +23,7 @@
  */
 namespace Magento\Sales\Service\V1;
 
-use Magento\Framework\Service\V1\Data\SearchCriteria;
+use Magento\Framework\Api\SearchCriteria;
 
 interface OrderReadInterface
 {
@@ -35,7 +35,7 @@ interface OrderReadInterface
     public function get($id);
 
     /**
-     * @param \Magento\Framework\Service\V1\Data\SearchCriteria $searchCriteria
+     * @param \Magento\Framework\Api\SearchCriteria $searchCriteria
      * @return \Magento\Sales\Service\V1\Data\OrderSearchResults
      */
     public function search(SearchCriteria $searchCriteria);
diff --git a/app/code/Magento/Sales/Service/V1/ShipmentRead.php b/app/code/Magento/Sales/Service/V1/ShipmentRead.php
index 333cc714834..0ae6561b8f4 100644
--- a/app/code/Magento/Sales/Service/V1/ShipmentRead.php
+++ b/app/code/Magento/Sales/Service/V1/ShipmentRead.php
@@ -27,7 +27,7 @@ use Magento\Sales\Service\V1\Action\ShipmentGet;
 use Magento\Sales\Service\V1\Action\ShipmentList;
 use Magento\Sales\Service\V1\Action\ShipmentCommentsList;
 use Magento\Sales\Service\V1\Action\ShipmentLabelGet;
-use Magento\Framework\Service\V1\Data\SearchCriteria;
+use Magento\Framework\Api\SearchCriteria;
 
 /**
  * Class ShipmentRead
@@ -83,8 +83,8 @@ class ShipmentRead implements ShipmentReadInterface
     }
 
     /**
-     * @param \Magento\Framework\Service\V1\Data\SearchCriteria $searchCriteria
-     * @return \Magento\Framework\Service\V1\Data\SearchResults
+     * @param \Magento\Framework\Api\SearchCriteria $searchCriteria
+     * @return \Magento\Framework\Api\SearchResults
      */
     public function search(SearchCriteria $searchCriteria)
     {
diff --git a/app/code/Magento/Sales/Service/V1/ShipmentReadInterface.php b/app/code/Magento/Sales/Service/V1/ShipmentReadInterface.php
index c4da5bab4cf..9ce01290592 100644
--- a/app/code/Magento/Sales/Service/V1/ShipmentReadInterface.php
+++ b/app/code/Magento/Sales/Service/V1/ShipmentReadInterface.php
@@ -23,7 +23,7 @@
  */
 namespace Magento\Sales\Service\V1;
 
-use Magento\Framework\Service\V1\Data\SearchCriteria;
+use Magento\Framework\Api\SearchCriteria;
 
 interface ShipmentReadInterface
 {
@@ -35,8 +35,8 @@ interface ShipmentReadInterface
     public function get($id);
 
     /**
-     * @param \Magento\Framework\Service\V1\Data\SearchCriteria $searchCriteria
-     * @return \Magento\Framework\Service\V1\Data\SearchResults
+     * @param \Magento\Framework\Api\SearchCriteria $searchCriteria
+     * @return \Magento\Framework\Api\SearchResults
      */
     public function search(SearchCriteria $searchCriteria);
 
diff --git a/app/code/Magento/Sales/Service/V1/TransactionRead.php b/app/code/Magento/Sales/Service/V1/TransactionRead.php
index 26412a89a42..afe3e14a533 100644
--- a/app/code/Magento/Sales/Service/V1/TransactionRead.php
+++ b/app/code/Magento/Sales/Service/V1/TransactionRead.php
@@ -24,7 +24,7 @@
  
 namespace Magento\Sales\Service\V1;
 
-use Magento\Framework\Service\V1\Data\SearchCriteria;
+use Magento\Framework\Api\SearchCriteria;
 use Magento\Sales\Model\Order\Payment\TransactionRepository;
 
 class TransactionRead implements TransactionReadInterface
diff --git a/app/code/Magento/Sales/Service/V1/TransactionReadInterface.php b/app/code/Magento/Sales/Service/V1/TransactionReadInterface.php
index 1a354f4be5e..c1e532e1709 100644
--- a/app/code/Magento/Sales/Service/V1/TransactionReadInterface.php
+++ b/app/code/Magento/Sales/Service/V1/TransactionReadInterface.php
@@ -24,7 +24,7 @@
 
 namespace Magento\Sales\Service\V1;
 
-use Magento\Framework\Service\V1\Data\SearchCriteria;
+use Magento\Framework\Api\SearchCriteria;
 
 interface TransactionReadInterface
 {
@@ -37,7 +37,7 @@ interface TransactionReadInterface
     public function get($id);
 
     /**
-     * @param \Magento\Framework\Service\V1\Data\SearchCriteria $searchCriteria
+     * @param \Magento\Framework\Api\SearchCriteria $searchCriteria
      * @return \Magento\Sales\Service\V1\Data\TransactionSearchResults
      */
     public function search(SearchCriteria $searchCriteria);
diff --git a/app/code/Magento/Sales/composer.json b/app/code/Magento/Sales/composer.json
index bd064e27f46..4c296da9b42 100644
--- a/app/code/Magento/Sales/composer.json
+++ b/app/code/Magento/Sales/composer.json
@@ -3,31 +3,31 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-catalog": "0.1.0-alpha102",
-        "magento/module-customer": "0.1.0-alpha102",
-        "magento/module-authorization": "0.1.0-alpha102",
-        "magento/module-payment": "0.1.0-alpha102",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-checkout": "0.1.0-alpha102",
-        "magento/module-theme": "0.1.0-alpha102",
-        "magento/module-sales-rule": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/module-widget": "0.1.0-alpha102",
-        "magento/module-directory": "0.1.0-alpha102",
-        "magento/module-eav": "0.1.0-alpha102",
-        "magento/module-tax": "0.1.0-alpha102",
-        "magento/module-gift-message": "0.1.0-alpha102",
-        "magento/module-reports": "0.1.0-alpha102",
-        "magento/module-catalog-inventory": "0.1.0-alpha102",
-        "magento/module-wishlist": "0.1.0-alpha102",
-        "magento/module-email": "0.1.0-alpha102",
-        "magento/module-shipping": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-catalog": "0.1.0-alpha103",
+        "magento/module-customer": "0.1.0-alpha103",
+        "magento/module-authorization": "0.1.0-alpha103",
+        "magento/module-payment": "0.1.0-alpha103",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-checkout": "0.1.0-alpha103",
+        "magento/module-theme": "0.1.0-alpha103",
+        "magento/module-sales-rule": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/module-widget": "0.1.0-alpha103",
+        "magento/module-directory": "0.1.0-alpha103",
+        "magento/module-eav": "0.1.0-alpha103",
+        "magento/module-tax": "0.1.0-alpha103",
+        "magento/module-gift-message": "0.1.0-alpha103",
+        "magento/module-reports": "0.1.0-alpha103",
+        "magento/module-catalog-inventory": "0.1.0-alpha103",
+        "magento/module-wishlist": "0.1.0-alpha103",
+        "magento/module-email": "0.1.0-alpha103",
+        "magento/module-shipping": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Sales/sql/sales_setup/install-1.6.0.0.php b/app/code/Magento/Sales/sql/sales_setup/install-1.6.0.0.php
index 4f14d633525..408e985eb95 100644
--- a/app/code/Magento/Sales/sql/sales_setup/install-1.6.0.0.php
+++ b/app/code/Magento/Sales/sql/sales_setup/install-1.6.0.0.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/** @var $installer \Magento\Sales\Model\Resource\Setup */
+/** @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 $installer->startSetup();
 
diff --git a/app/code/Magento/Sales/sql/sales_setup/upgrade-1.6.0.0-1.6.0.1.php b/app/code/Magento/Sales/sql/sales_setup/upgrade-1.6.0.0-1.6.0.1.php
index d57e55ea2eb..af18b0bdaa8 100644
--- a/app/code/Magento/Sales/sql/sales_setup/upgrade-1.6.0.0-1.6.0.1.php
+++ b/app/code/Magento/Sales/sql/sales_setup/upgrade-1.6.0.0-1.6.0.1.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* @var $installer \Magento\Sales\Model\Resource\Setup */
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 $installer->getConnection()->addColumn(
diff --git a/app/code/Magento/Sales/sql/sales_setup/upgrade-1.6.0.1-1.6.0.2.php b/app/code/Magento/Sales/sql/sales_setup/upgrade-1.6.0.1-1.6.0.2.php
index bf9cd2bfef2..252edee3a82 100644
--- a/app/code/Magento/Sales/sql/sales_setup/upgrade-1.6.0.1-1.6.0.2.php
+++ b/app/code/Magento/Sales/sql/sales_setup/upgrade-1.6.0.1-1.6.0.2.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* @var $installer \Magento\Sales\Model\Resource\Setup */
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 $installer->startSetup();
 $installer->getConnection()->addColumn(
diff --git a/app/code/Magento/Sales/sql/sales_setup/upgrade-1.6.0.11-1.6.0.12.php b/app/code/Magento/Sales/sql/sales_setup/upgrade-1.6.0.11-1.6.0.12.php
index ccdf1e0c72c..978444e5eee 100644
--- a/app/code/Magento/Sales/sql/sales_setup/upgrade-1.6.0.11-1.6.0.12.php
+++ b/app/code/Magento/Sales/sql/sales_setup/upgrade-1.6.0.11-1.6.0.12.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* @var $installer \Magento\Sales\Model\Resource\Setup */
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 $installer->startSetup();
 
diff --git a/app/code/Magento/Sales/sql/sales_setup/upgrade-1.6.0.2-1.6.0.3.php b/app/code/Magento/Sales/sql/sales_setup/upgrade-1.6.0.2-1.6.0.3.php
index 693bef0eb3d..0f316272360 100644
--- a/app/code/Magento/Sales/sql/sales_setup/upgrade-1.6.0.2-1.6.0.3.php
+++ b/app/code/Magento/Sales/sql/sales_setup/upgrade-1.6.0.2-1.6.0.3.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* @var $installer \Magento\Sales\Model\Resource\Setup */
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 $installer->getConnection()->addColumn(
     $installer->getTable('sales_flat_shipment'),
diff --git a/app/code/Magento/Sales/sql/sales_setup/upgrade-1.6.0.3-1.6.0.4.php b/app/code/Magento/Sales/sql/sales_setup/upgrade-1.6.0.3-1.6.0.4.php
index 0378e84b995..8d5542163ff 100644
--- a/app/code/Magento/Sales/sql/sales_setup/upgrade-1.6.0.3-1.6.0.4.php
+++ b/app/code/Magento/Sales/sql/sales_setup/upgrade-1.6.0.3-1.6.0.4.php
@@ -26,7 +26,7 @@
  * Create aggregation tables for updated_at fields
  */
 
-/** @var $installer \Magento\Sales\Model\Resource\Setup */
+/** @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 $connection = $installer->getConnection();
 $connection->createTable(
diff --git a/app/code/Magento/Sales/sql/sales_setup/upgrade-1.6.0.4-1.6.0.5.php b/app/code/Magento/Sales/sql/sales_setup/upgrade-1.6.0.4-1.6.0.5.php
index 273e1b64957..a40b49fec9f 100644
--- a/app/code/Magento/Sales/sql/sales_setup/upgrade-1.6.0.4-1.6.0.5.php
+++ b/app/code/Magento/Sales/sql/sales_setup/upgrade-1.6.0.4-1.6.0.5.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* @var $installer \Magento\Sales\Model\Resource\Setup */
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 $installer->getConnection()->addColumn(
     $installer->getTable('sales_flat_order_item'),
diff --git a/app/code/Magento/Sales/sql/sales_setup/upgrade-1.6.0.6-1.6.0.7.php b/app/code/Magento/Sales/sql/sales_setup/upgrade-1.6.0.6-1.6.0.7.php
index 802059097a5..14d993e9bc3 100644
--- a/app/code/Magento/Sales/sql/sales_setup/upgrade-1.6.0.6-1.6.0.7.php
+++ b/app/code/Magento/Sales/sql/sales_setup/upgrade-1.6.0.6-1.6.0.7.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* @var $installer \Magento\Sales\Model\Resource\Setup */
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 $installer->getConnection()->addColumn(
diff --git a/app/code/Magento/Sales/sql/sales_setup/upgrade-1.6.0.7-1.6.0.8.php b/app/code/Magento/Sales/sql/sales_setup/upgrade-1.6.0.7-1.6.0.8.php
index f070bb0f18e..fdcdff51c72 100644
--- a/app/code/Magento/Sales/sql/sales_setup/upgrade-1.6.0.7-1.6.0.8.php
+++ b/app/code/Magento/Sales/sql/sales_setup/upgrade-1.6.0.7-1.6.0.8.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* @var $installer \Magento\Sales\Model\Resource\Setup */
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 $invoiceTable = $installer->getTable('sales_flat_invoice');
diff --git a/app/code/Magento/Sales/sql/sales_setup/upgrade-1.6.0.8-1.6.0.9.php b/app/code/Magento/Sales/sql/sales_setup/upgrade-1.6.0.8-1.6.0.9.php
index 32611d5bf33..b4dbc035aee 100644
--- a/app/code/Magento/Sales/sql/sales_setup/upgrade-1.6.0.8-1.6.0.9.php
+++ b/app/code/Magento/Sales/sql/sales_setup/upgrade-1.6.0.8-1.6.0.9.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* @var $installer \Magento\Sales\Model\Resource\Setup */
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 $installer->startSetup();
 
diff --git a/app/code/Magento/Sales/view/frontend/layout/sales_order_guest_info_links.xml b/app/code/Magento/Sales/view/frontend/layout/sales_order_guest_info_links.xml
index 5ad4d941f6e..7e6860af50b 100644
--- a/app/code/Magento/Sales/view/frontend/layout/sales_order_guest_info_links.xml
+++ b/app/code/Magento/Sales/view/frontend/layout/sales_order_guest_info_links.xml
@@ -25,10 +25,10 @@
 -->
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <body>
-        <referenceBlock name="sales.order.info">
-            <block class="Magento\Framework\View\Element\Html\Links" as="links" name="sales.order.info.links">
+        <referenceContainer name="content">
+            <block class="Magento\Framework\View\Element\Html\Links" as="links" name="sales.order.info.links" before="-">
                 <arguments>
-                    <argument name="css_class" xsi:type="string">items</argument>
+                    <argument name="css_class" xsi:type="string">items order-links</argument>
                 </arguments>
                 <block class="Magento\Sales\Block\Order\Link" name="sales.order.info.links.information">
                     <arguments>
@@ -58,6 +58,6 @@
                     </arguments>
                 </block>
             </block>
-        </referenceBlock>
+        </referenceContainer>
     </body>
 </page>
diff --git a/app/code/Magento/Sales/view/frontend/templates/reorder/sidebar.phtml b/app/code/Magento/Sales/view/frontend/templates/reorder/sidebar.phtml
index 4ca94efa82f..097820a12d8 100644
--- a/app/code/Magento/Sales/view/frontend/templates/reorder/sidebar.phtml
+++ b/app/code/Magento/Sales/view/frontend/templates/reorder/sidebar.phtml
@@ -31,23 +31,31 @@
 ?>
 <?php $_items = $this->getItems()?>
 <?php if($_items): ?>
-<div class="block reorder">
-    <div class="title">
+<div class="block block-reorder">
+    <div class="block-title">
         <strong><?php echo __('My Orders') ?></strong>
     </div>
-    <div class="content">
+    <div class="block-content">
         <form method="post" class="form reorder" action="<?php echo $this->getFormActionUrl() ?>" id="reorder-validate-detail">
             <strong class="subtitle"><?php echo __('Last Ordered Items') ?></strong>
-            <ol class="items" id="cart-sidebar-reorder">
+            <ol id="cart-sidebar-reorder" class="product-items product-items-names">
             <?php $_showAddButtonFlag = false ?>
             <?php foreach ($_items as $_item): ?>
-                <li class="item">
+                <li class="product-item">
                     <?php if ($this->isItemAvailableForReorder($_item)): ?>
                         <?php $_showAddButtonFlag = true ?>
-                        <input type="checkbox" name="order_items[]" id="reorder-item-<?php echo $_item->getId() ?>" value="<?php echo $_item->getId() ?>" title="<?php echo __('Add to Cart') ?>"
-                               class="checkbox" data-validate='{"validate-one-checkbox-required-by-name": true}'/>
+                        <div class="field item choice">
+                            <label class="label" for="reorder-item-<?php echo $_item->getId() ?>"><span><?php echo __('Add to Cart') ?></span></label>
+                            <div class="control">
+                                <input type="checkbox" name="order_items[]" id="reorder-item-<?php echo $_item->getId() ?>" value="<?php echo $_item->getId() ?>" title="<?php echo __('Add to Cart') ?>"
+                                       class="checkbox" data-validate='{"validate-one-checkbox-required-by-name": true}'/>
+                            </div>
+                        </div>
                     <?php endif; ?>
-                    <strong class="product name"><a href="<?php echo $_item->getProduct()->getProductUrl() ?>"><?php echo $this->escapeHtml($_item->getName()) ?></a></strong>
+                    <strong class="product-item-name">
+                        <a href="<?php echo $_item->getProduct()->getProductUrl() ?>"
+                           class="product-item-link"><?php echo $this->escapeHtml($_item->getName()) ?></a>
+                    </strong>
                 </li>
             <?php endforeach; ?>
             </ol>
diff --git a/app/code/Magento/SalesRule/Block/Rss/Discounts.php b/app/code/Magento/SalesRule/Block/Rss/Discounts.php
index 53b24bc09be..cd661947b4b 100644
--- a/app/code/Magento/SalesRule/Block/Rss/Discounts.php
+++ b/app/code/Magento/SalesRule/Block/Rss/Discounts.php
@@ -188,4 +188,12 @@ class Discounts extends \Magento\Framework\View\Element\AbstractBlock implements
         }
         return $data;
     }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function isAuthRequired()
+    {
+        return false;
+    }
 }
diff --git a/app/code/Magento/SalesRule/Model/Resource/Report/Collection.php b/app/code/Magento/SalesRule/Model/Resource/Report/Collection.php
index 05aeedaa89c..d89f7a69585 100644
--- a/app/code/Magento/SalesRule/Model/Resource/Report/Collection.php
+++ b/app/code/Magento/SalesRule/Model/Resource/Report/Collection.php
@@ -58,6 +58,11 @@ class Collection extends \Magento\Sales\Model\Resource\Report\Collection\Abstrac
      */
     protected $_rulesIdsFilter;
 
+    /**
+     * @var \Magento\SalesRule\Model\Resource\Report\RuleFactory $ruleFactory
+     */
+    protected $_ruleFactory;
+
     /**
      * @param \Magento\Core\Model\EntityFactory $entityFactory
      * @param \Magento\Framework\Logger $logger
@@ -171,7 +176,7 @@ class Collection extends \Magento\Sales\Model\Resource\Report\Collection\Abstrac
             return $this;
         }
 
-        $rulesList = $this->_ruleFactory->getUniqRulesNamesList();
+        $rulesList = $this->_ruleFactory->create()->getUniqRulesNamesList();
 
         $rulesFilterSqlParts = array();
         foreach ($this->_rulesIdsFilter as $ruleId) {
diff --git a/app/code/Magento/SalesRule/composer.json b/app/code/Magento/SalesRule/composer.json
index a53b5480102..56b42d7c447 100644
--- a/app/code/Magento/SalesRule/composer.json
+++ b/app/code/Magento/SalesRule/composer.json
@@ -3,26 +3,26 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-rule": "0.1.0-alpha102",
-        "magento/module-catalog": "0.1.0-alpha102",
-        "magento/module-sales": "0.1.0-alpha102",
-        "magento/module-eav": "0.1.0-alpha102",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/module-customer": "0.1.0-alpha102",
-        "magento/module-directory": "0.1.0-alpha102",
-        "magento/module-shipping": "0.1.0-alpha102",
-        "magento/module-payment": "0.1.0-alpha102",
-        "magento/module-reports": "0.1.0-alpha102",
-        "magento/module-catalog-rule": "0.1.0-alpha102",
-        "magento/module-widget": "0.1.0-alpha102",
-        "magento/module-cron": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-rule": "0.1.0-alpha103",
+        "magento/module-catalog": "0.1.0-alpha103",
+        "magento/module-sales": "0.1.0-alpha103",
+        "magento/module-eav": "0.1.0-alpha103",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/module-customer": "0.1.0-alpha103",
+        "magento/module-directory": "0.1.0-alpha103",
+        "magento/module-shipping": "0.1.0-alpha103",
+        "magento/module-payment": "0.1.0-alpha103",
+        "magento/module-reports": "0.1.0-alpha103",
+        "magento/module-catalog-rule": "0.1.0-alpha103",
+        "magento/module-widget": "0.1.0-alpha103",
+        "magento/module-cron": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/SalesRule/sql/salesrule_setup/install-1.6.0.0.php b/app/code/Magento/SalesRule/sql/salesrule_setup/install-1.6.0.0.php
index 32f2aaad573..5bdfccba3fa 100644
--- a/app/code/Magento/SalesRule/sql/salesrule_setup/install-1.6.0.0.php
+++ b/app/code/Magento/SalesRule/sql/salesrule_setup/install-1.6.0.0.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* @var $installer \Magento\Framework\Module\Setup */
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 $installer->startSetup();
 
diff --git a/app/code/Magento/SalesRule/sql/salesrule_setup/upgrade-1.6.0.0-1.6.0.1.php b/app/code/Magento/SalesRule/sql/salesrule_setup/upgrade-1.6.0.0-1.6.0.1.php
index 4545c73b421..3e252381877 100644
--- a/app/code/Magento/SalesRule/sql/salesrule_setup/upgrade-1.6.0.0-1.6.0.1.php
+++ b/app/code/Magento/SalesRule/sql/salesrule_setup/upgrade-1.6.0.0-1.6.0.1.php
@@ -22,8 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-$installer = $this;
-/** @var $installer \Magento\Framework\Module\Setup */
+/** @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 $connection = $installer->getConnection();
 $connection->createTable(
diff --git a/app/code/Magento/SalesRule/sql/salesrule_setup/upgrade-1.6.0.1-1.6.0.2.php b/app/code/Magento/SalesRule/sql/salesrule_setup/upgrade-1.6.0.1-1.6.0.2.php
index dd138da18bd..656e8b88ef7 100644
--- a/app/code/Magento/SalesRule/sql/salesrule_setup/upgrade-1.6.0.1-1.6.0.2.php
+++ b/app/code/Magento/SalesRule/sql/salesrule_setup/upgrade-1.6.0.1-1.6.0.2.php
@@ -23,7 +23,7 @@
  */
 
 /**
- * @var $installer \Magento\Framework\Module\Setup
+ * @var $installer \Magento\Setup\Module\SetupModule
  */
 $installer = $this;
 
diff --git a/app/code/Magento/SalesRule/sql/salesrule_setup/upgrade-1.6.0.2-1.6.0.3.php b/app/code/Magento/SalesRule/sql/salesrule_setup/upgrade-1.6.0.2-1.6.0.3.php
index ee5589dbd91..443d92baa25 100644
--- a/app/code/Magento/SalesRule/sql/salesrule_setup/upgrade-1.6.0.2-1.6.0.3.php
+++ b/app/code/Magento/SalesRule/sql/salesrule_setup/upgrade-1.6.0.2-1.6.0.3.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* @var $installer \Magento\Framework\Module\Setup */
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 $connection = $installer->getConnection();
 
diff --git a/app/code/Magento/Search/composer.json b/app/code/Magento/Search/composer.json
index e3269ead358..4ceeea36119 100644
--- a/app/code/Magento/Search/composer.json
+++ b/app/code/Magento/Search/composer.json
@@ -3,13 +3,13 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/framework": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/module-store": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/module-store": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Search/sql/search_setup/install-1.6.0.0.php b/app/code/Magento/Search/sql/search_setup/install-1.6.0.0.php
index dc72c579abc..f81b228658c 100644
--- a/app/code/Magento/Search/sql/search_setup/install-1.6.0.0.php
+++ b/app/code/Magento/Search/sql/search_setup/install-1.6.0.0.php
@@ -22,8 +22,8 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
-/* @var $installer \Magento\Framework\Module\Setup */
 
 $installer->startSetup();
 
diff --git a/app/code/Magento/Sendfriend/composer.json b/app/code/Magento/Sendfriend/composer.json
index ab35dfe1ffa..d1b5e5e445d 100644
--- a/app/code/Magento/Sendfriend/composer.json
+++ b/app/code/Magento/Sendfriend/composer.json
@@ -3,16 +3,16 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-catalog": "0.1.0-alpha102",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-customer": "0.1.0-alpha102",
-        "magento/module-theme": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-catalog": "0.1.0-alpha103",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-customer": "0.1.0-alpha103",
+        "magento/module-theme": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Sendfriend/sql/sendfriend_setup/install-1.6.0.0.php b/app/code/Magento/Sendfriend/sql/sendfriend_setup/install-1.6.0.0.php
index a9540607f72..6404e5ccbba 100644
--- a/app/code/Magento/Sendfriend/sql/sendfriend_setup/install-1.6.0.0.php
+++ b/app/code/Magento/Sendfriend/sql/sendfriend_setup/install-1.6.0.0.php
@@ -22,8 +22,8 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
-/* @var $installer \Magento\Framework\Module\Setup */
 
 $installer->startSetup();
 
diff --git a/app/code/Magento/Shipping/composer.json b/app/code/Magento/Shipping/composer.json
index ba8d4194e89..7b306b9cec0 100644
--- a/app/code/Magento/Shipping/composer.json
+++ b/app/code/Magento/Shipping/composer.json
@@ -3,23 +3,23 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-catalog": "0.1.0-alpha102",
-        "magento/module-sales": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/module-directory": "0.1.0-alpha102",
-        "magento/module-contact": "0.1.0-alpha102",
-        "magento/module-customer": "0.1.0-alpha102",
-        "magento/module-payment": "0.1.0-alpha102",
-        "magento/module-tax": "0.1.0-alpha102",
-        "magento/module-catalog-inventory": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-catalog": "0.1.0-alpha103",
+        "magento/module-sales": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/module-directory": "0.1.0-alpha103",
+        "magento/module-contact": "0.1.0-alpha103",
+        "magento/module-customer": "0.1.0-alpha103",
+        "magento/module-payment": "0.1.0-alpha103",
+        "magento/module-tax": "0.1.0-alpha103",
+        "magento/module-catalog-inventory": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "ext-gd": "*",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Shipping/view/frontend/templates/tracking/popup.phtml b/app/code/Magento/Shipping/view/frontend/templates/tracking/popup.phtml
index d755b37e5c7..c4aaa46ebe2 100644
--- a/app/code/Magento/Shipping/view/frontend/templates/tracking/popup.phtml
+++ b/app/code/Magento/Shipping/view/frontend/templates/tracking/popup.phtml
@@ -156,12 +156,12 @@
             <?php /* end for each tracking information */ ?>
             <?php endforeach; ?>
         <?php else: ?>
-            <p class="empty"><?php echo __('There is no tracking available for this shipment.'); ?></p>
+            <div class="message info empty"><div><?php echo __('There is no tracking available for this shipment.'); ?></div></div>
         <?php endif; ?>
 
     <?php endforeach; ?>
     <?php else: ?>
-        <p class="empty"><?php echo __('There is no tracking available.'); ?></p>
+        <div class="message info empty"><div><?php echo __('There is no tracking available.'); ?></div></div>
     <?php endif; ?>
     <div class="actions">
         <button type="button"
@@ -171,4 +171,4 @@
             <span><?php echo __('Close Window') ?></span>
         </button>
     </div>
-</div>
\ No newline at end of file
+</div>
diff --git a/app/code/Magento/Sitemap/composer.json b/app/code/Magento/Sitemap/composer.json
index e9d89e4571e..2f74fa2dc41 100644
--- a/app/code/Magento/Sitemap/composer.json
+++ b/app/code/Magento/Sitemap/composer.json
@@ -3,18 +3,18 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-catalog": "0.1.0-alpha102",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-eav": "0.1.0-alpha102",
-        "magento/module-cms": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/module-catalog-url-rewrite": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-catalog": "0.1.0-alpha103",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-eav": "0.1.0-alpha103",
+        "magento/module-cms": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/module-catalog-url-rewrite": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Sitemap/sql/sitemap_setup/install-1.6.0.0.php b/app/code/Magento/Sitemap/sql/sitemap_setup/install-1.6.0.0.php
index 6961163e6ff..aea99f0298e 100644
--- a/app/code/Magento/Sitemap/sql/sitemap_setup/install-1.6.0.0.php
+++ b/app/code/Magento/Sitemap/sql/sitemap_setup/install-1.6.0.0.php
@@ -22,9 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-
-/* @var $installer \Magento\Framework\Module\Setup */
-
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 $installer->startSetup();
diff --git a/app/code/Magento/Store/Model/Config/Reader/DefaultReader.php b/app/code/Magento/Store/Model/Config/Reader/DefaultReader.php
index 72c6baa1046..f870859d617 100644
--- a/app/code/Magento/Store/Model/Config/Reader/DefaultReader.php
+++ b/app/code/Magento/Store/Model/Config/Reader/DefaultReader.php
@@ -42,27 +42,19 @@ class DefaultReader implements \Magento\Framework\App\Config\Scope\ReaderInterfa
      */
     protected $_collectionFactory;
 
-    /**
-     * @var \Magento\Framework\App\State
-     */
-    protected $_appState;
-
     /**
      * @param \Magento\Framework\App\Config\Initial $initialConfig
      * @param \Magento\Framework\App\Config\Scope\Converter $converter
      * @param \Magento\Store\Model\Resource\Config\Collection\ScopedFactory $collectionFactory
-     * @param \Magento\Framework\App\State $appState
      */
     public function __construct(
         \Magento\Framework\App\Config\Initial $initialConfig,
         \Magento\Framework\App\Config\Scope\Converter $converter,
-        \Magento\Store\Model\Resource\Config\Collection\ScopedFactory $collectionFactory,
-        \Magento\Framework\App\State $appState
+        \Magento\Store\Model\Resource\Config\Collection\ScopedFactory $collectionFactory
     ) {
         $this->_initialConfig = $initialConfig;
         $this->_converter = $converter;
         $this->_collectionFactory = $collectionFactory;
-        $this->_appState = $appState;
     }
 
     /**
@@ -73,17 +65,17 @@ class DefaultReader implements \Magento\Framework\App\Config\Scope\ReaderInterfa
     public function read()
     {
         $config = $this->_initialConfig->getData(\Magento\Framework\App\ScopeInterface::SCOPE_DEFAULT);
-        if ($this->_appState->isInstalled()) {
-            $collection = $this->_collectionFactory->create(
-                array('scope' => \Magento\Framework\App\ScopeInterface::SCOPE_DEFAULT)
-            );
-            $dbDefaultConfig = array();
-            foreach ($collection as $item) {
-                $dbDefaultConfig[$item->getPath()] = $item->getValue();
-            }
-            $dbDefaultConfig = $this->_converter->convert($dbDefaultConfig);
-            $config = array_replace_recursive($config, $dbDefaultConfig);
+
+        $collection = $this->_collectionFactory->create(
+            array('scope' => \Magento\Framework\App\ScopeInterface::SCOPE_DEFAULT)
+        );
+        $dbDefaultConfig = array();
+        foreach ($collection as $item) {
+            $dbDefaultConfig[$item->getPath()] = $item->getValue();
         }
+        $dbDefaultConfig = $this->_converter->convert($dbDefaultConfig);
+        $config = array_replace_recursive($config, $dbDefaultConfig);
+
         return $config;
     }
 }
diff --git a/app/code/Magento/Store/Model/Config/Reader/Store.php b/app/code/Magento/Store/Model/Config/Reader/Store.php
index a00f4092cbb..6709807f94a 100644
--- a/app/code/Magento/Store/Model/Config/Reader/Store.php
+++ b/app/code/Magento/Store/Model/Config/Reader/Store.php
@@ -52,11 +52,6 @@ class Store implements \Magento\Framework\App\Config\Scope\ReaderInterface
      */
     protected $_storeFactory;
 
-    /**
-     * @var \Magento\Framework\App\State
-     */
-    protected $_appState;
-
     /**
      * @var \Magento\Framework\StoreManagerInterface
      */
@@ -68,7 +63,6 @@ class Store implements \Magento\Framework\App\Config\Scope\ReaderInterface
      * @param \Magento\Store\Model\Config\Converter $converter
      * @param \Magento\Store\Model\Resource\Config\Collection\ScopedFactory $collectionFactory
      * @param \Magento\Store\Model\StoreFactory $storeFactory
-     * @param \Magento\Framework\App\State $appState
      * @param \Magento\Framework\StoreManagerInterface $storeManager
      */
     public function __construct(
@@ -77,7 +71,6 @@ class Store implements \Magento\Framework\App\Config\Scope\ReaderInterface
         \Magento\Store\Model\Config\Converter $converter,
         \Magento\Store\Model\Resource\Config\Collection\ScopedFactory $collectionFactory,
         \Magento\Store\Model\StoreFactory $storeFactory,
-        \Magento\Framework\App\State $appState,
         \Magento\Framework\StoreManagerInterface $storeManager
     ) {
         $this->_initialConfig = $initialConfig;
@@ -85,7 +78,6 @@ class Store implements \Magento\Framework\App\Config\Scope\ReaderInterface
         $this->_converter = $converter;
         $this->_collectionFactory = $collectionFactory;
         $this->_storeFactory = $storeFactory;
-        $this->_appState = $appState;
         $this->_storeManager = $storeManager;
     }
 
@@ -94,43 +86,36 @@ class Store implements \Magento\Framework\App\Config\Scope\ReaderInterface
      *
      * @param string $code
      * @return array
+     * @throws NoSuchEntityException
      */
     public function read($code = null)
     {
-        if ($this->_appState->isInstalled()) {
-            if (empty($code)) {
-                $store = $this->_storeManager->getStore();
-            } elseif (($code == \Magento\Framework\App\ScopeInterface::SCOPE_DEFAULT)) {
-                $store = $this->_storeManager->getDefaultStoreView();
-            } else {
-                $store = $this->_storeFactory->create();
-                $store->load($code);
-            }
+        if (empty($code)) {
+            $store = $this->_storeManager->getStore();
+        } elseif (($code == \Magento\Framework\App\ScopeInterface::SCOPE_DEFAULT)) {
+            $store = $this->_storeManager->getDefaultStoreView();
+        } else {
+            $store = $this->_storeFactory->create();
+            $store->load($code);
+        }
 
-            if (!$store->getCode()) {
-                throw NoSuchEntityException::singleField('storeCode', $code);
-            }
-            $websiteConfig = $this->_scopePool->getScope(
-                \Magento\Store\Model\ScopeInterface::SCOPE_WEBSITE,
-                $store->getWebsite()->getCode()
-            )->getSource();
-            $config = array_replace_recursive($websiteConfig, $this->_initialConfig->getData("stores|{$code}"));
+        if (!$store->getCode()) {
+            throw NoSuchEntityException::singleField('storeCode', $code);
+        }
+        $websiteConfig = $this->_scopePool->getScope(
+            \Magento\Store\Model\ScopeInterface::SCOPE_WEBSITE,
+            $store->getWebsite()->getCode()
+        )->getSource();
+        $config = array_replace_recursive($websiteConfig, $this->_initialConfig->getData("stores|{$code}"));
 
-            $collection = $this->_collectionFactory->create(
-                array('scope' => \Magento\Store\Model\ScopeInterface::SCOPE_STORES, 'scopeId' => $store->getId())
-            );
-            $dbStoreConfig = array();
-            foreach ($collection as $item) {
-                $dbStoreConfig[$item->getPath()] = $item->getValue();
-            }
-            $config = $this->_converter->convert($dbStoreConfig, $config);
-        } else {
-            $websiteConfig = $this->_scopePool->getScope(
-                \Magento\Store\Model\ScopeInterface::SCOPE_WEBSITE,
-                \Magento\Framework\App\ScopeInterface::SCOPE_DEFAULT
-            )->getSource();
-            $config = $this->_converter->convert($websiteConfig, $this->_initialConfig->getData("stores|{$code}"));
+        $collection = $this->_collectionFactory->create(
+            array('scope' => \Magento\Store\Model\ScopeInterface::SCOPE_STORES, 'scopeId' => $store->getId())
+        );
+        $dbStoreConfig = array();
+        foreach ($collection as $item) {
+            $dbStoreConfig[$item->getPath()] = $item->getValue();
         }
+        $config = $this->_converter->convert($dbStoreConfig, $config);
         return $config;
     }
 }
diff --git a/app/code/Magento/Store/Model/Config/Reader/Website.php b/app/code/Magento/Store/Model/Config/Reader/Website.php
index eadead79c46..73eca953d1f 100644
--- a/app/code/Magento/Store/Model/Config/Reader/Website.php
+++ b/app/code/Magento/Store/Model/Config/Reader/Website.php
@@ -50,33 +50,25 @@ class Website implements \Magento\Framework\App\Config\Scope\ReaderInterface
      */
     protected $_websiteFactory;
 
-    /**
-     * @var \Magento\Framework\App\State
-     */
-    protected $_appState;
-
     /**
      * @param \Magento\Framework\App\Config\Initial $initialConfig
      * @param \Magento\Framework\App\Config\ScopePool $scopePool
      * @param \Magento\Framework\App\Config\Scope\Converter $converter
      * @param \Magento\Store\Model\Resource\Config\Collection\ScopedFactory $collectionFactory
      * @param \Magento\Store\Model\WebsiteFactory $websiteFactory
-     * @param \Magento\Framework\App\State $appState
      */
     public function __construct(
         \Magento\Framework\App\Config\Initial $initialConfig,
         \Magento\Framework\App\Config\ScopePool $scopePool,
         \Magento\Framework\App\Config\Scope\Converter $converter,
         \Magento\Store\Model\Resource\Config\Collection\ScopedFactory $collectionFactory,
-        \Magento\Store\Model\WebsiteFactory $websiteFactory,
-        \Magento\Framework\App\State $appState
+        \Magento\Store\Model\WebsiteFactory $websiteFactory
     ) {
         $this->_initialConfig = $initialConfig;
         $this->_scopePool = $scopePool;
         $this->_converter = $converter;
         $this->_collectionFactory = $collectionFactory;
         $this->_websiteFactory = $websiteFactory;
-        $this->_appState = $appState;
     }
 
     /**
@@ -92,22 +84,21 @@ class Website implements \Magento\Framework\App\Config\Scope\ReaderInterface
             $this->_initialConfig->getData("websites|{$code}")
         );
 
-        if ($this->_appState->isInstalled()) {
-            $website = $this->_websiteFactory->create();
-            $website->load($code);
-            $collection = $this->_collectionFactory->create(
-                array('scope' => \Magento\Store\Model\ScopeInterface::SCOPE_WEBSITES, 'scopeId' => $website->getId())
-            );
-            $dbWebsiteConfig = array();
-            foreach ($collection as $configValue) {
-                $dbWebsiteConfig[$configValue->getPath()] = $configValue->getValue();
-            }
-            $dbWebsiteConfig = $this->_converter->convert($dbWebsiteConfig);
+        $website = $this->_websiteFactory->create();
+        $website->load($code);
+        $collection = $this->_collectionFactory->create(
+            array('scope' => \Magento\Store\Model\ScopeInterface::SCOPE_WEBSITES, 'scopeId' => $website->getId())
+        );
+        $dbWebsiteConfig = array();
+        foreach ($collection as $configValue) {
+            $dbWebsiteConfig[$configValue->getPath()] = $configValue->getValue();
+        }
+        $dbWebsiteConfig = $this->_converter->convert($dbWebsiteConfig);
 
-            if (count($dbWebsiteConfig)) {
-                $config = array_replace_recursive($config, $dbWebsiteConfig);
-            }
+        if (count($dbWebsiteConfig)) {
+            $config = array_replace_recursive($config, $dbWebsiteConfig);
         }
+
         return $config;
     }
 }
diff --git a/app/code/Magento/Store/Model/StorageFactory.php b/app/code/Magento/Store/Model/StorageFactory.php
index 200629e0aac..080b830f595 100644
--- a/app/code/Magento/Store/Model/StorageFactory.php
+++ b/app/code/Magento/Store/Model/StorageFactory.php
@@ -33,18 +33,11 @@ class StorageFactory
     protected $_objectManager;
 
     /**
-     * Default storage class name
+     * Storage class name
      *
      * @var string
      */
-    protected $_defaultStorageClassName;
-
-    /**
-     * Installed storage class name
-     *
-     * @var string
-     */
-    protected $_installedStorageClassName;
+    protected $_storageClassName;
 
     /**
      * @var \Magento\Framework\StoreManagerInterface[]
@@ -95,8 +88,7 @@ class StorageFactory
      * @param \Magento\Framework\App\Http\Context $httpContext
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
      * @param \Magento\Framework\App\RequestInterface $request
-     * @param string $defaultStorageClassName
-     * @param string $installedStorageClassName
+     * @param string $storageClassName
      * @param string $writerModel
      */
     public function __construct(
@@ -108,13 +100,11 @@ class StorageFactory
         \Magento\Framework\App\Http\Context $httpContext,
         \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
         \Magento\Framework\App\RequestInterface $request,
-        $defaultStorageClassName = 'Magento\Store\Model\Storage\DefaultStorage',
-        $installedStorageClassName = 'Magento\Store\Model\Storage\Db',
+        $storageClassName = 'Magento\Store\Model\Storage\Db',
         $writerModel = ''
     ) {
         $this->_objectManager = $objectManager;
-        $this->_defaultStorageClassName = $defaultStorageClassName;
-        $this->_installedStorageClassName = $installedStorageClassName;
+        $this->_storageClassName = $storageClassName;
         $this->_eventManager = $eventManager;
         $this->_log = $logger;
         $this->_appState = $appState;
@@ -134,8 +124,7 @@ class StorageFactory
      */
     public function get(array $arguments = array())
     {
-        $className =
-            $this->_appState->isInstalled() ? $this->_installedStorageClassName : $this->_defaultStorageClassName;
+        $className = $this->_storageClassName;
 
         if (false == isset($this->_cache[$className])) {
             /** @var $storage \Magento\Framework\StoreManagerInterface */
@@ -147,7 +136,7 @@ class StorageFactory
                 );
             }
             $this->_cache[$className] = $storage;
-            if ($className === $this->_installedStorageClassName) {
+            if ($className === $this->_storageClassName) {
                 $this->_reinitStores($storage, $arguments);
                 $useSid = $this->_scopeConfig->isSetFlag(
                     \Magento\Framework\Session\SidResolver::XML_PATH_USE_FRONTEND_SID,
diff --git a/app/code/Magento/Store/composer.json b/app/code/Magento/Store/composer.json
index 3a9e2b96925..a83b6296445 100644
--- a/app/code/Magento/Store/composer.json
+++ b/app/code/Magento/Store/composer.json
@@ -3,14 +3,14 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-directory": "0.1.0-alpha102",
-        "magento/module-ui": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-directory": "0.1.0-alpha103",
+        "magento/module-ui": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Store/sql/store_setup/install-2.0.0.0.php b/app/code/Magento/Store/sql/store_setup/install-2.0.0.0.php
index 88ae298ff33..fb5a480ef00 100644
--- a/app/code/Magento/Store/sql/store_setup/install-2.0.0.0.php
+++ b/app/code/Magento/Store/sql/store_setup/install-2.0.0.0.php
@@ -21,9 +21,10 @@
  * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
+
 use Magento\Framework\DB\Ddl\Table;
 
-/* @var $installer \Magento\Core\Model\Resource\Setup */
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 $installer->startSetup();
diff --git a/app/code/Magento/Tax/Model/Rate/Source.php b/app/code/Magento/Tax/Model/Rate/Source.php
index f2d3501db1d..2b239acf0be 100644
--- a/app/code/Magento/Tax/Model/Rate/Source.php
+++ b/app/code/Magento/Tax/Model/Rate/Source.php
@@ -25,7 +25,7 @@
 namespace Magento\Tax\Model\Rate;
 
 use Magento\Tax\Service\V1\TaxRateServiceInterface;
-use Magento\Framework\Service\V1\Data\SearchCriteriaBuilder;
+use Magento\Framework\Api\SearchCriteriaBuilder;
 use Magento\Framework\Convert\Object as Converter;
 use Magento\Tax\Service\V1\Data\TaxRate;
 
diff --git a/app/code/Magento/Tax/Model/TaxClass/Source/Customer.php b/app/code/Magento/Tax/Model/TaxClass/Source/Customer.php
index 33032cf2252..f7f08a311a0 100644
--- a/app/code/Magento/Tax/Model/TaxClass/Source/Customer.php
+++ b/app/code/Magento/Tax/Model/TaxClass/Source/Customer.php
@@ -38,12 +38,12 @@ class Customer extends \Magento\Eav\Model\Entity\Attribute\Source\AbstractSource
     protected $taxClassService;
 
     /**
-     * @var \Magento\Framework\Service\V1\Data\SearchCriteriaBuilder
+     * @var \Magento\Framework\Api\SearchCriteriaBuilder
      */
     protected $searchCriteriaBuilder;
 
     /**
-     * @var \Magento\Framework\Service\V1\Data\FilterBuilder
+     * @var \Magento\Framework\Api\FilterBuilder
      */
     protected $filterBuilder;
 
@@ -51,13 +51,13 @@ class Customer extends \Magento\Eav\Model\Entity\Attribute\Source\AbstractSource
      * Initialize dependencies.
      *
      * @param \Magento\Tax\Service\V1\TaxClassServiceInterface $taxClassService
-     * @param \Magento\Framework\Service\V1\Data\SearchCriteriaBuilder $searchCriteriaBuilder
-     * @param \Magento\Framework\Service\V1\Data\FilterBuilder $filterBuilder
+     * @param \Magento\Framework\Api\SearchCriteriaBuilder $searchCriteriaBuilder
+     * @param \Magento\Framework\Api\FilterBuilder $filterBuilder
      */
     public function __construct(
         \Magento\Tax\Service\V1\TaxClassServiceInterface $taxClassService,
-        \Magento\Framework\Service\V1\Data\SearchCriteriaBuilder $searchCriteriaBuilder,
-        \Magento\Framework\Service\V1\Data\FilterBuilder $filterBuilder
+        \Magento\Framework\Api\SearchCriteriaBuilder $searchCriteriaBuilder,
+        \Magento\Framework\Api\FilterBuilder $filterBuilder
     ) {
         $this->taxClassService = $taxClassService;
         $this->searchCriteriaBuilder = $searchCriteriaBuilder;
diff --git a/app/code/Magento/Tax/Model/TaxClass/Source/Product.php b/app/code/Magento/Tax/Model/TaxClass/Source/Product.php
index c102950e4a0..73acebbcdfb 100644
--- a/app/code/Magento/Tax/Model/TaxClass/Source/Product.php
+++ b/app/code/Magento/Tax/Model/TaxClass/Source/Product.php
@@ -38,12 +38,12 @@ class Product extends \Magento\Eav\Model\Entity\Attribute\Source\AbstractSource
     protected $_taxClassService;
 
     /**
-     * @var \Magento\Framework\Service\V1\Data\SearchCriteriaBuilder
+     * @var \Magento\Framework\Api\SearchCriteriaBuilder
      */
     protected $_searchCriteriaBuilder;
 
     /**
-     * @var \Magento\Framework\Service\V1\Data\FilterBuilder
+     * @var \Magento\Framework\Api\FilterBuilder
      */
     protected $_filterBuilder;
 
@@ -66,16 +66,16 @@ class Product extends \Magento\Eav\Model\Entity\Attribute\Source\AbstractSource
      * @param \Magento\Tax\Model\Resource\TaxClass\CollectionFactory $classesFactory
      * @param \Magento\Eav\Model\Resource\Entity\Attribute\OptionFactory $optionFactory
      * @param \Magento\Tax\Service\V1\TaxClassServiceInterface $taxClassService
-     * @param \Magento\Framework\Service\V1\Data\SearchCriteriaBuilder $searchCriteriaBuilder
-     * @param \Magento\Framework\Service\V1\Data\FilterBuilder $filterBuilder
+     * @param \Magento\Framework\Api\SearchCriteriaBuilder $searchCriteriaBuilder
+     * @param \Magento\Framework\Api\FilterBuilder $filterBuilder
      */
     public function __construct(
         \Magento\Core\Helper\Data $coreData,
         \Magento\Tax\Model\Resource\TaxClass\CollectionFactory $classesFactory,
         \Magento\Eav\Model\Resource\Entity\Attribute\OptionFactory $optionFactory,
         \Magento\Tax\Service\V1\TaxClassServiceInterface $taxClassService,
-        \Magento\Framework\Service\V1\Data\SearchCriteriaBuilder $searchCriteriaBuilder,
-        \Magento\Framework\Service\V1\Data\FilterBuilder $filterBuilder
+        \Magento\Framework\Api\SearchCriteriaBuilder $searchCriteriaBuilder,
+        \Magento\Framework\Api\FilterBuilder $filterBuilder
     ) {
         $this->_coreData = $coreData;
         $this->_classesFactory = $classesFactory;
diff --git a/app/code/Magento/Tax/Model/TaxClass/Type/Customer.php b/app/code/Magento/Tax/Model/TaxClass/Type/Customer.php
index 31db5326917..46b02037569 100644
--- a/app/code/Magento/Tax/Model/TaxClass/Type/Customer.php
+++ b/app/code/Magento/Tax/Model/TaxClass/Type/Customer.php
@@ -34,12 +34,12 @@ class Customer extends \Magento\Tax\Model\TaxClass\AbstractType
     protected $groupService;
 
     /**
-     * @var \Magento\Framework\Service\V1\Data\FilterBuilder
+     * @var \Magento\Framework\Api\FilterBuilder
      */
     protected $filterBuilder;
 
     /**
-     * @var \Magento\Framework\Service\V1\Data\SearchCriteriaBuilder
+     * @var \Magento\Framework\Api\SearchCriteriaBuilder
      */
     protected $searchCriteriaBuilder;
 
@@ -53,15 +53,15 @@ class Customer extends \Magento\Tax\Model\TaxClass\AbstractType
     /**
      * @param \Magento\Tax\Model\Calculation\Rule $calculationRule
      * @param \Magento\Customer\Service\V1\CustomerGroupServiceInterface $groupService
-     * @param \Magento\Framework\Service\V1\Data\FilterBuilder $filterBuilder
-     * @param \Magento\Framework\Service\V1\Data\SearchCriteriaBuilder $searchCriteriaBuilder
+     * @param \Magento\Framework\Api\FilterBuilder $filterBuilder
+     * @param \Magento\Framework\Api\SearchCriteriaBuilder $searchCriteriaBuilder
      * @param array $data
      */
     public function __construct(
         \Magento\Tax\Model\Calculation\Rule $calculationRule,
         \Magento\Customer\Service\V1\CustomerGroupServiceInterface $groupService,
-        \Magento\Framework\Service\V1\Data\FilterBuilder $filterBuilder,
-        \Magento\Framework\Service\V1\Data\SearchCriteriaBuilder $searchCriteriaBuilder,
+        \Magento\Framework\Api\FilterBuilder $filterBuilder,
+        \Magento\Framework\Api\SearchCriteriaBuilder $searchCriteriaBuilder,
         array $data = array()
     ) {
         parent::__construct($calculationRule, $data);
diff --git a/app/code/Magento/Tax/Service/V1/Collection/TaxRateCollection.php b/app/code/Magento/Tax/Service/V1/Collection/TaxRateCollection.php
index d98d973389e..7f9661fb825 100644
--- a/app/code/Magento/Tax/Service/V1/Collection/TaxRateCollection.php
+++ b/app/code/Magento/Tax/Service/V1/Collection/TaxRateCollection.php
@@ -25,13 +25,13 @@
 namespace Magento\Tax\Service\V1\Collection;
 
 use Magento\Core\Model\EntityFactory;
-use Magento\Framework\Service\AbstractServiceCollection;
-use Magento\Framework\Service\V1\Data\FilterBuilder;
-use Magento\Framework\Service\V1\Data\SearchCriteriaBuilder;
+use Magento\Framework\Api\AbstractServiceCollection;
+use Magento\Framework\Api\FilterBuilder;
+use Magento\Framework\Api\SearchCriteriaBuilder;
 use Magento\Tax\Model\Calculation\Rate\Converter;
 use Magento\Tax\Service\V1\TaxRateServiceInterface;
 use Magento\Tax\Service\V1\Data\TaxRate;
-use Magento\Framework\Service\V1\Data\SortOrderBuilder;
+use Magento\Framework\Api\SortOrderBuilder;
 
 /**
  * Tax rate collection for a grid backed by Services
diff --git a/app/code/Magento/Tax/Service/V1/Collection/TaxRuleCollection.php b/app/code/Magento/Tax/Service/V1/Collection/TaxRuleCollection.php
index ee563608238..412906c6f58 100644
--- a/app/code/Magento/Tax/Service/V1/Collection/TaxRuleCollection.php
+++ b/app/code/Magento/Tax/Service/V1/Collection/TaxRuleCollection.php
@@ -25,13 +25,13 @@
 namespace Magento\Tax\Service\V1\Collection;
 
 use Magento\Core\Model\EntityFactory;
-use Magento\Framework\Service\AbstractServiceCollection;
-use Magento\Framework\Service\V1\Data\FilterBuilder;
-use Magento\Framework\Service\V1\Data\SearchCriteriaBuilder;
+use Magento\Framework\Api\AbstractServiceCollection;
+use Magento\Framework\Api\FilterBuilder;
+use Magento\Framework\Api\SearchCriteriaBuilder;
 use Magento\Tax\Model\Calculation\TaxRuleConverter;
 use Magento\Tax\Service\V1\TaxRuleServiceInterface;
 use Magento\Tax\Service\V1\Data\TaxRule;
-use Magento\Framework\Service\V1\Data\SortOrderBuilder;
+use Magento\Framework\Api\SortOrderBuilder;
 
 /**
  * Tax rule collection for a grid backed by Services
diff --git a/app/code/Magento/Tax/Service/V1/Data/OrderTaxDetails.php b/app/code/Magento/Tax/Service/V1/Data/OrderTaxDetails.php
index 932f0020890..c8162539d41 100644
--- a/app/code/Magento/Tax/Service/V1/Data/OrderTaxDetails.php
+++ b/app/code/Magento/Tax/Service/V1/Data/OrderTaxDetails.php
@@ -24,7 +24,7 @@
 
 namespace Magento\Tax\Service\V1\Data;
 
-class OrderTaxDetails extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+class OrderTaxDetails extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     /**#@+
      * Constants defined for keys of array, makes typos less likely
diff --git a/app/code/Magento/Tax/Service/V1/Data/OrderTaxDetails/AppliedTax.php b/app/code/Magento/Tax/Service/V1/Data/OrderTaxDetails/AppliedTax.php
index 8e93f552661..4a8468d8652 100644
--- a/app/code/Magento/Tax/Service/V1/Data/OrderTaxDetails/AppliedTax.php
+++ b/app/code/Magento/Tax/Service/V1/Data/OrderTaxDetails/AppliedTax.php
@@ -23,7 +23,7 @@
  */
 namespace Magento\Tax\Service\V1\Data\OrderTaxDetails;
 
-class AppliedTax extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+class AppliedTax extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     /**#@+
      * Constants defined for keys of array, makes typos less likely
diff --git a/app/code/Magento/Tax/Service/V1/Data/OrderTaxDetails/AppliedTaxBuilder.php b/app/code/Magento/Tax/Service/V1/Data/OrderTaxDetails/AppliedTaxBuilder.php
index 246873d51f8..ab56a3a40f2 100644
--- a/app/code/Magento/Tax/Service/V1/Data/OrderTaxDetails/AppliedTaxBuilder.php
+++ b/app/code/Magento/Tax/Service/V1/Data/OrderTaxDetails/AppliedTaxBuilder.php
@@ -28,7 +28,7 @@ namespace Magento\Tax\Service\V1\Data\OrderTaxDetails;
  *
  * @method AppliedTax create()
  */
-class AppliedTaxBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder
+class AppliedTaxBuilder extends \Magento\Framework\Api\ExtensibleObjectBuilder
 {
     /**
      * Set tax rate code
diff --git a/app/code/Magento/Tax/Service/V1/Data/OrderTaxDetails/Item.php b/app/code/Magento/Tax/Service/V1/Data/OrderTaxDetails/Item.php
index 4a821da9819..51e8dcefd5d 100644
--- a/app/code/Magento/Tax/Service/V1/Data/OrderTaxDetails/Item.php
+++ b/app/code/Magento/Tax/Service/V1/Data/OrderTaxDetails/Item.php
@@ -24,7 +24,7 @@
 
 namespace Magento\Tax\Service\V1\Data\OrderTaxDetails;
 
-class Item extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+class Item extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     /**#@+
      * Constants defined for keys of array, makes typos less likely
diff --git a/app/code/Magento/Tax/Service/V1/Data/OrderTaxDetails/ItemBuilder.php b/app/code/Magento/Tax/Service/V1/Data/OrderTaxDetails/ItemBuilder.php
index aadb4c89817..f96ecf5e2c1 100644
--- a/app/code/Magento/Tax/Service/V1/Data/OrderTaxDetails/ItemBuilder.php
+++ b/app/code/Magento/Tax/Service/V1/Data/OrderTaxDetails/ItemBuilder.php
@@ -23,8 +23,8 @@
  */
 namespace Magento\Tax\Service\V1\Data\OrderTaxDetails;
 
-use Magento\Framework\Service\Data\AttributeValueBuilder;
-use Magento\Framework\Service\Data\MetadataServiceInterface;
+use Magento\Framework\Api\AttributeValueBuilder;
+use Magento\Framework\Api\MetadataServiceInterface;
 
 /**
  * Builder for the Item Data Object
@@ -32,7 +32,7 @@ use Magento\Framework\Service\Data\MetadataServiceInterface;
  * @method Item create()
  */
 
-class ItemBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder
+class ItemBuilder extends \Magento\Framework\Api\ExtensibleObjectBuilder
 {
     /**
      * Applied Tax data object builder
@@ -44,13 +44,13 @@ class ItemBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleObje
     /**
      * Initialize dependencies
      *
-     * @param \Magento\Framework\Service\Data\ObjectFactory $objectFactory
+     * @param \Magento\Framework\Api\ObjectFactory $objectFactory
      * @param AttributeValueBuilder $valueBuilder
      * @param MetadataServiceInterface $metadataService
      * @param AppliedTaxBuilder $appliedTaxBuilder
      */
     public function __construct(
-        \Magento\Framework\Service\Data\ObjectFactory $objectFactory,
+        \Magento\Framework\Api\ObjectFactory $objectFactory,
         AttributeValueBuilder $valueBuilder,
         MetadataServiceInterface $metadataService,
         AppliedTaxBuilder $appliedTaxBuilder
diff --git a/app/code/Magento/Tax/Service/V1/Data/OrderTaxDetailsBuilder.php b/app/code/Magento/Tax/Service/V1/Data/OrderTaxDetailsBuilder.php
index 9d3e50fb301..ad33bc878b2 100644
--- a/app/code/Magento/Tax/Service/V1/Data/OrderTaxDetailsBuilder.php
+++ b/app/code/Magento/Tax/Service/V1/Data/OrderTaxDetailsBuilder.php
@@ -26,15 +26,15 @@ namespace Magento\Tax\Service\V1\Data;
 
 use \Magento\Tax\Service\V1\Data\OrderTaxDetails\AppliedTaxBuilder;
 use \Magento\Tax\Service\V1\Data\OrderTaxDetails\ItemBuilder;
-use Magento\Framework\Service\Data\AttributeValueBuilder;
-use Magento\Framework\Service\Data\MetadataServiceInterface;
+use Magento\Framework\Api\AttributeValueBuilder;
+use Magento\Framework\Api\MetadataServiceInterface;
 
 /**
  * Builder for the OrderTaxDetails Data Object
  *
  * @method OrderTaxDetails create()
  */
-class OrderTaxDetailsBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder
+class OrderTaxDetailsBuilder extends \Magento\Framework\Api\ExtensibleObjectBuilder
 {
     /**
      * Applied Tax data object builder
@@ -53,14 +53,14 @@ class OrderTaxDetailsBuilder extends \Magento\Framework\Service\Data\AbstractExt
     /**
      * Initialize dependencies
      *
-     * @param \Magento\Framework\Service\Data\ObjectFactory $objectFactory
+     * @param \Magento\Framework\Api\ObjectFactory $objectFactory
      * @param AttributeValueBuilder $valueBuilder
      * @param MetadataServiceInterface $metadataService
      * @param AppliedTaxBuilder $appliedTaxBuilder
      * @param ItemBuilder $itemBuilder
      */
     public function __construct(
-        \Magento\Framework\Service\Data\ObjectFactory $objectFactory,
+        \Magento\Framework\Api\ObjectFactory $objectFactory,
         AttributeValueBuilder $valueBuilder,
         MetadataServiceInterface $metadataService,
         AppliedTaxBuilder $appliedTaxBuilder,
diff --git a/app/code/Magento/Tax/Service/V1/Data/QuoteDetails.php b/app/code/Magento/Tax/Service/V1/Data/QuoteDetails.php
index 960ef5d5f4f..f45a598e094 100644
--- a/app/code/Magento/Tax/Service/V1/Data/QuoteDetails.php
+++ b/app/code/Magento/Tax/Service/V1/Data/QuoteDetails.php
@@ -24,7 +24,7 @@
 
 namespace Magento\Tax\Service\V1\Data;
 
-class QuoteDetails extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+class QuoteDetails extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     /**#@+
      * Constants defined for keys of array, makes typos less likely
diff --git a/app/code/Magento/Tax/Service/V1/Data/QuoteDetails/Item.php b/app/code/Magento/Tax/Service/V1/Data/QuoteDetails/Item.php
index 79ef1884876..a96253ea29e 100644
--- a/app/code/Magento/Tax/Service/V1/Data/QuoteDetails/Item.php
+++ b/app/code/Magento/Tax/Service/V1/Data/QuoteDetails/Item.php
@@ -23,7 +23,7 @@
  */
 namespace Magento\Tax\Service\V1\Data\QuoteDetails;
 
-class Item extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+class Item extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     /**#@+
      * Constants defined for keys of array, makes typos less likely
diff --git a/app/code/Magento/Tax/Service/V1/Data/QuoteDetails/ItemBuilder.php b/app/code/Magento/Tax/Service/V1/Data/QuoteDetails/ItemBuilder.php
index b74b0d23e66..4606696a560 100644
--- a/app/code/Magento/Tax/Service/V1/Data/QuoteDetails/ItemBuilder.php
+++ b/app/code/Magento/Tax/Service/V1/Data/QuoteDetails/ItemBuilder.php
@@ -23,15 +23,15 @@
  */
 namespace Magento\Tax\Service\V1\Data\QuoteDetails;
 
-use Magento\Framework\Service\Data\AttributeValueBuilder;
-use Magento\Framework\Service\Data\MetadataServiceInterface;
+use Magento\Framework\Api\AttributeValueBuilder;
+use Magento\Framework\Api\MetadataServiceInterface;
 
 /**
  * Builder for the Item Service Data Object
  *
  * @method Item create()
  */
-class ItemBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder
+class ItemBuilder extends \Magento\Framework\Api\ExtensibleObjectBuilder
 {
     /**
      * TaxClassKey data object builder
@@ -43,13 +43,13 @@ class ItemBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleObje
     /**
      * Initialize dependencies
      *
-     * @param \Magento\Framework\Service\Data\ObjectFactory $objectFactory
+     * @param \Magento\Framework\Api\ObjectFactory $objectFactory
      * @param AttributeValueBuilder $valueBuilder
      * @param MetadataServiceInterface $metadataService
      * @param \Magento\Tax\Service\V1\Data\TaxClassKeyBuilder $taxClassKeyBuilder
      */
     public function __construct(
-        \Magento\Framework\Service\Data\ObjectFactory $objectFactory,
+        \Magento\Framework\Api\ObjectFactory $objectFactory,
         AttributeValueBuilder $valueBuilder,
         MetadataServiceInterface $metadataService,
         \Magento\Tax\Service\V1\Data\TaxClassKeyBuilder $taxClassKeyBuilder
diff --git a/app/code/Magento/Tax/Service/V1/Data/QuoteDetailsBuilder.php b/app/code/Magento/Tax/Service/V1/Data/QuoteDetailsBuilder.php
index d571b054b23..3ca8f0b5665 100644
--- a/app/code/Magento/Tax/Service/V1/Data/QuoteDetailsBuilder.php
+++ b/app/code/Magento/Tax/Service/V1/Data/QuoteDetailsBuilder.php
@@ -23,15 +23,15 @@
  */
 namespace Magento\Tax\Service\V1\Data;
 
-use Magento\Framework\Service\Data\AttributeValueBuilder;
-use Magento\Framework\Service\Data\MetadataServiceInterface;
+use Magento\Framework\Api\AttributeValueBuilder;
+use Magento\Framework\Api\MetadataServiceInterface;
 
 /**
  * QuoteDetailsBuilder
  *
  * @method QuoteDetails create()
  */
-class QuoteDetailsBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder
+class QuoteDetailsBuilder extends \Magento\Framework\Api\ExtensibleObjectBuilder
 {
     /**
      * QuoteDetails item builder
@@ -57,7 +57,7 @@ class QuoteDetailsBuilder extends \Magento\Framework\Service\Data\AbstractExtens
     /**
      * Initialize dependencies.
      *
-     * @param \Magento\Framework\Service\Data\ObjectFactory $objectFactory
+     * @param \Magento\Framework\Api\ObjectFactory $objectFactory
      * @param AttributeValueBuilder $valueBuilder
      * @param MetadataServiceInterface $metadataService
      * @param \Magento\Tax\Service\V1\Data\QuoteDetails\ItemBuilder $itemBuilder
@@ -65,7 +65,7 @@ class QuoteDetailsBuilder extends \Magento\Framework\Service\Data\AbstractExtens
      * @param \Magento\Customer\Service\V1\Data\AddressBuilder $addressBuilder
      */
     public function __construct(
-        \Magento\Framework\Service\Data\ObjectFactory $objectFactory,
+        \Magento\Framework\Api\ObjectFactory $objectFactory,
         AttributeValueBuilder $valueBuilder,
         MetadataServiceInterface $metadataService,
         \Magento\Tax\Service\V1\Data\QuoteDetails\ItemBuilder $itemBuilder,
diff --git a/app/code/Magento/Tax/Service/V1/Data/TaxClass.php b/app/code/Magento/Tax/Service/V1/Data/TaxClass.php
index 27453f66efa..6aa09ad9aaf 100644
--- a/app/code/Magento/Tax/Service/V1/Data/TaxClass.php
+++ b/app/code/Magento/Tax/Service/V1/Data/TaxClass.php
@@ -27,7 +27,7 @@ namespace Magento\Tax\Service\V1\Data;
 /**
  * Tax class data
  */
-class TaxClass extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+class TaxClass extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     /**#@+
      *
diff --git a/app/code/Magento/Tax/Service/V1/Data/TaxClassBuilder.php b/app/code/Magento/Tax/Service/V1/Data/TaxClassBuilder.php
index 06f41a59881..2d1b47d5309 100644
--- a/app/code/Magento/Tax/Service/V1/Data/TaxClassBuilder.php
+++ b/app/code/Magento/Tax/Service/V1/Data/TaxClassBuilder.php
@@ -29,7 +29,7 @@ namespace Magento\Tax\Service\V1\Data;
  *
  * @method TaxClass create()
  */
-class TaxClassBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder
+class TaxClassBuilder extends \Magento\Framework\Api\ExtensibleObjectBuilder
 {
     /**
      * Set tax class ID.
diff --git a/app/code/Magento/Tax/Service/V1/Data/TaxClassKey.php b/app/code/Magento/Tax/Service/V1/Data/TaxClassKey.php
index e689608f07d..85790435fc2 100644
--- a/app/code/Magento/Tax/Service/V1/Data/TaxClassKey.php
+++ b/app/code/Magento/Tax/Service/V1/Data/TaxClassKey.php
@@ -24,7 +24,7 @@
 
 namespace Magento\Tax\Service\V1\Data;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObject;
+use Magento\Framework\Api\AbstractExtensibleObject;
 
 /**
  * Class TaxClassKey
diff --git a/app/code/Magento/Tax/Service/V1/Data/TaxClassKeyBuilder.php b/app/code/Magento/Tax/Service/V1/Data/TaxClassKeyBuilder.php
index 9a19219f2bd..c5083076fd5 100644
--- a/app/code/Magento/Tax/Service/V1/Data/TaxClassKeyBuilder.php
+++ b/app/code/Magento/Tax/Service/V1/Data/TaxClassKeyBuilder.php
@@ -23,14 +23,14 @@
  */
 namespace Magento\Tax\Service\V1\Data;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder;
+use Magento\Framework\Api\ExtensibleObjectBuilder;
 
 /**
  * Builder for the TaxClassKey Service Data Object
  *
  * @method TaxClassKey create()
  */
-class TaxClassKeyBuilder extends AbstractExtensibleObjectBuilder
+class TaxClassKeyBuilder extends ExtensibleObjectBuilder
 {
     /**
      * Set type of tax class key
diff --git a/app/code/Magento/Tax/Service/V1/Data/TaxClassSearchResults.php b/app/code/Magento/Tax/Service/V1/Data/TaxClassSearchResults.php
index b06d170acab..301c93285af 100644
--- a/app/code/Magento/Tax/Service/V1/Data/TaxClassSearchResults.php
+++ b/app/code/Magento/Tax/Service/V1/Data/TaxClassSearchResults.php
@@ -24,7 +24,7 @@
 
 namespace Magento\Tax\Service\V1\Data;
 
-use Magento\Framework\Service\V1\Data\SearchResults;
+use Magento\Framework\Api\SearchResults;
 
 /**
  * Data object for Tax class search results.
diff --git a/app/code/Magento/Tax/Service/V1/Data/TaxClassSearchResultsBuilder.php b/app/code/Magento/Tax/Service/V1/Data/TaxClassSearchResultsBuilder.php
index 24bf667ed20..d1a5b4d6b14 100644
--- a/app/code/Magento/Tax/Service/V1/Data/TaxClassSearchResultsBuilder.php
+++ b/app/code/Magento/Tax/Service/V1/Data/TaxClassSearchResultsBuilder.php
@@ -24,11 +24,11 @@
 
 namespace Magento\Tax\Service\V1\Data;
 
-use Magento\Framework\Service\Data\AttributeValueBuilder;
-use Magento\Framework\Service\Data\MetadataServiceInterface;
-use Magento\Framework\Service\Data\ObjectFactory;
-use Magento\Framework\Service\V1\Data\SearchCriteriaBuilder;
-use Magento\Framework\Service\V1\Data\AbstractSearchResultsBuilder;
+use Magento\Framework\Api\AttributeValueBuilder;
+use Magento\Framework\Api\MetadataServiceInterface;
+use Magento\Framework\Api\ObjectFactory;
+use Magento\Framework\Api\SearchCriteriaBuilder;
+use Magento\Framework\Api\AbstractSearchResultsBuilder;
 
 /**
  * Builder for the TaxClassSearchResults Service Data Object
diff --git a/app/code/Magento/Tax/Service/V1/Data/TaxDetails.php b/app/code/Magento/Tax/Service/V1/Data/TaxDetails.php
index a5253acf400..fbe30022a56 100644
--- a/app/code/Magento/Tax/Service/V1/Data/TaxDetails.php
+++ b/app/code/Magento/Tax/Service/V1/Data/TaxDetails.php
@@ -24,7 +24,7 @@
 
 namespace Magento\Tax\Service\V1\Data;
 
-class TaxDetails extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+class TaxDetails extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     /**#@+
      * Constants defined for keys of array, makes typos less likely
diff --git a/app/code/Magento/Tax/Service/V1/Data/TaxDetails/AppliedTax.php b/app/code/Magento/Tax/Service/V1/Data/TaxDetails/AppliedTax.php
index ead2f0446d2..64673a0de00 100644
--- a/app/code/Magento/Tax/Service/V1/Data/TaxDetails/AppliedTax.php
+++ b/app/code/Magento/Tax/Service/V1/Data/TaxDetails/AppliedTax.php
@@ -23,7 +23,7 @@
  */
 namespace Magento\Tax\Service\V1\Data\TaxDetails;
 
-class AppliedTax extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+class AppliedTax extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     /**#@+
      * Constants defined for keys of array, makes typos less likely
diff --git a/app/code/Magento/Tax/Service/V1/Data/TaxDetails/AppliedTaxBuilder.php b/app/code/Magento/Tax/Service/V1/Data/TaxDetails/AppliedTaxBuilder.php
index 30131187acf..63155d19996 100644
--- a/app/code/Magento/Tax/Service/V1/Data/TaxDetails/AppliedTaxBuilder.php
+++ b/app/code/Magento/Tax/Service/V1/Data/TaxDetails/AppliedTaxBuilder.php
@@ -23,15 +23,15 @@
  */
 namespace Magento\Tax\Service\V1\Data\TaxDetails;
 
-use Magento\Framework\Service\Data\AttributeValueBuilder;
-use Magento\Framework\Service\Data\MetadataServiceInterface;
+use Magento\Framework\Api\AttributeValueBuilder;
+use Magento\Framework\Api\MetadataServiceInterface;
 
 /**
  * Builder for the AppliedTax Service Data Object
  *
  * @method AppliedTax create()
  */
-class AppliedTaxBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder
+class AppliedTaxBuilder extends \Magento\Framework\Api\ExtensibleObjectBuilder
 {
     /**
      * AppliedTaxRate builder
@@ -43,13 +43,13 @@ class AppliedTaxBuilder extends \Magento\Framework\Service\Data\AbstractExtensib
     /**
      * Initialize dependencies.
      *
-     * @param \Magento\Framework\Service\Data\ObjectFactory $objectFactory
+     * @param \Magento\Framework\Api\ObjectFactory $objectFactory
      * @param AttributeValueBuilder $valueBuilder
      * @param MetadataServiceInterface $metadataService
      * @param AppliedTaxRateBuilder $appliedTaxRateBuilder
      */
     public function __construct(
-        \Magento\Framework\Service\Data\ObjectFactory $objectFactory,
+        \Magento\Framework\Api\ObjectFactory $objectFactory,
         AttributeValueBuilder $valueBuilder,
         MetadataServiceInterface $metadataService,
         AppliedTaxRateBuilder $appliedTaxRateBuilder
diff --git a/app/code/Magento/Tax/Service/V1/Data/TaxDetails/AppliedTaxRate.php b/app/code/Magento/Tax/Service/V1/Data/TaxDetails/AppliedTaxRate.php
index b51bdb50050..b7ec7f75038 100644
--- a/app/code/Magento/Tax/Service/V1/Data/TaxDetails/AppliedTaxRate.php
+++ b/app/code/Magento/Tax/Service/V1/Data/TaxDetails/AppliedTaxRate.php
@@ -24,7 +24,7 @@
 
 namespace Magento\Tax\Service\V1\Data\TaxDetails;
 
-class AppliedTaxRate extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+class AppliedTaxRate extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     /**#@+
      * Constants defined for keys of array, makes typos less likely
diff --git a/app/code/Magento/Tax/Service/V1/Data/TaxDetails/AppliedTaxRateBuilder.php b/app/code/Magento/Tax/Service/V1/Data/TaxDetails/AppliedTaxRateBuilder.php
index a194002298c..eb6c94c6464 100644
--- a/app/code/Magento/Tax/Service/V1/Data/TaxDetails/AppliedTaxRateBuilder.php
+++ b/app/code/Magento/Tax/Service/V1/Data/TaxDetails/AppliedTaxRateBuilder.php
@@ -28,7 +28,7 @@ namespace Magento\Tax\Service\V1\Data\TaxDetails;
  *
  * @method AppliedTaxRate create()
  */
-class AppliedTaxRateBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder
+class AppliedTaxRateBuilder extends \Magento\Framework\Api\ExtensibleObjectBuilder
 {
     /**
      * Set code
diff --git a/app/code/Magento/Tax/Service/V1/Data/TaxDetails/Item.php b/app/code/Magento/Tax/Service/V1/Data/TaxDetails/Item.php
index 2ad971b0e15..7018f26bd9d 100644
--- a/app/code/Magento/Tax/Service/V1/Data/TaxDetails/Item.php
+++ b/app/code/Magento/Tax/Service/V1/Data/TaxDetails/Item.php
@@ -24,7 +24,7 @@
 
 namespace Magento\Tax\Service\V1\Data\TaxDetails;
 
-class Item extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+class Item extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     /**#@+
      * Constants defined for keys of array, makes typos less likely
diff --git a/app/code/Magento/Tax/Service/V1/Data/TaxDetails/ItemBuilder.php b/app/code/Magento/Tax/Service/V1/Data/TaxDetails/ItemBuilder.php
index 1d7b840c967..d61795ea390 100644
--- a/app/code/Magento/Tax/Service/V1/Data/TaxDetails/ItemBuilder.php
+++ b/app/code/Magento/Tax/Service/V1/Data/TaxDetails/ItemBuilder.php
@@ -23,8 +23,8 @@
  */
 namespace Magento\Tax\Service\V1\Data\TaxDetails;
 
-use Magento\Framework\Service\Data\AttributeValueBuilder;
-use Magento\Framework\Service\Data\MetadataServiceInterface;
+use Magento\Framework\Api\AttributeValueBuilder;
+use Magento\Framework\Api\MetadataServiceInterface;
 use Magento\Tax\Service\V1\Data\TaxDetails;
 
 /**
@@ -33,7 +33,7 @@ use Magento\Tax\Service\V1\Data\TaxDetails;
  * @method Item create()
  */
 
-class ItemBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder
+class ItemBuilder extends \Magento\Framework\Api\ExtensibleObjectBuilder
 {
     /**
      * Applied Tax data object builder
@@ -45,13 +45,13 @@ class ItemBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleObje
     /**
      * Initialize dependencies
      *
-     * @param \Magento\Framework\Service\Data\ObjectFactory $objectFactory
+     * @param \Magento\Framework\Api\ObjectFactory $objectFactory
      * @param AttributeValueBuilder $valueBuilder
      * @param MetadataServiceInterface $metadataService
      * @param AppliedTaxBuilder $appliedTaxBuilder
      */
     public function __construct(
-        \Magento\Framework\Service\Data\ObjectFactory $objectFactory,
+        \Magento\Framework\Api\ObjectFactory $objectFactory,
         AttributeValueBuilder $valueBuilder,
         MetadataServiceInterface $metadataService,
         \Magento\Tax\Service\V1\Data\TaxDetails\AppliedTaxBuilder $appliedTaxBuilder
diff --git a/app/code/Magento/Tax/Service/V1/Data/TaxDetailsBuilder.php b/app/code/Magento/Tax/Service/V1/Data/TaxDetailsBuilder.php
index 8a8cecc50b5..3d52a7ab547 100644
--- a/app/code/Magento/Tax/Service/V1/Data/TaxDetailsBuilder.php
+++ b/app/code/Magento/Tax/Service/V1/Data/TaxDetailsBuilder.php
@@ -24,15 +24,15 @@
 
 namespace Magento\Tax\Service\V1\Data;
 
-use Magento\Framework\Service\Data\AttributeValueBuilder;
-use Magento\Framework\Service\Data\MetadataServiceInterface;
+use Magento\Framework\Api\AttributeValueBuilder;
+use Magento\Framework\Api\MetadataServiceInterface;
 
 /**
  * Builder for the TaxDetails Data Object
  *
  * @method TaxDetails create()
  */
-class TaxDetailsBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder
+class TaxDetailsBuilder extends \Magento\Framework\Api\ExtensibleObjectBuilder
 {
     /**
      * Applied Tax data object builder
@@ -51,14 +51,14 @@ class TaxDetailsBuilder extends \Magento\Framework\Service\Data\AbstractExtensib
     /**
      * Initialize dependencies
      *
-     * @param \Magento\Framework\Service\Data\ObjectFactory $objectFactory
+     * @param \Magento\Framework\Api\ObjectFactory $objectFactory
      * @param AttributeValueBuilder $valueBuilder
      * @param MetadataServiceInterface $metadataService
      * @param TaxDetails\AppliedTaxBuilder $appliedTaxBuilder
      * @param TaxDetails\ItemBuilder $taxDetailsItemBuilder
      */
     public function __construct(
-        \Magento\Framework\Service\Data\ObjectFactory $objectFactory,
+        \Magento\Framework\Api\ObjectFactory $objectFactory,
         AttributeValueBuilder $valueBuilder,
         MetadataServiceInterface $metadataService,
         \Magento\Tax\Service\V1\Data\TaxDetails\AppliedTaxBuilder $appliedTaxBuilder,
diff --git a/app/code/Magento/Tax/Service/V1/Data/TaxRate.php b/app/code/Magento/Tax/Service/V1/Data/TaxRate.php
index 392f7972fe4..cafe4fd0a6e 100644
--- a/app/code/Magento/Tax/Service/V1/Data/TaxRate.php
+++ b/app/code/Magento/Tax/Service/V1/Data/TaxRate.php
@@ -27,7 +27,7 @@ namespace Magento\Tax\Service\V1\Data;
 /**
  * Service data object for a tax percentage rate associated with a location.
  */
-class TaxRate extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+class TaxRate extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     /**#@+
      * Constants defined for keys of array, makes typos less likely
diff --git a/app/code/Magento/Tax/Service/V1/Data/TaxRateBuilder.php b/app/code/Magento/Tax/Service/V1/Data/TaxRateBuilder.php
index ace17cc49ab..0a541e6d09e 100644
--- a/app/code/Magento/Tax/Service/V1/Data/TaxRateBuilder.php
+++ b/app/code/Magento/Tax/Service/V1/Data/TaxRateBuilder.php
@@ -23,16 +23,16 @@
  */
 namespace Magento\Tax\Service\V1\Data;
 
-use Magento\Framework\Service\Data\AttributeValueBuilder;
-use Magento\Framework\Service\Data\MetadataServiceInterface;
-use Magento\Framework\Service\Data\ObjectFactory;
+use Magento\Framework\Api\AttributeValueBuilder;
+use Magento\Framework\Api\MetadataServiceInterface;
+use Magento\Framework\Api\ObjectFactory;
 
 /**
  * Builder for the TaxRate Service Data Object
  *
  * @method TaxRate create()
  */
-class TaxRateBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder
+class TaxRateBuilder extends \Magento\Framework\Api\ExtensibleObjectBuilder
 {
     /**
      * ZipRange builder
diff --git a/app/code/Magento/Tax/Service/V1/Data/TaxRateSearchResults.php b/app/code/Magento/Tax/Service/V1/Data/TaxRateSearchResults.php
index f753577e6c1..b8d5846be35 100644
--- a/app/code/Magento/Tax/Service/V1/Data/TaxRateSearchResults.php
+++ b/app/code/Magento/Tax/Service/V1/Data/TaxRateSearchResults.php
@@ -24,7 +24,7 @@
 
 namespace Magento\Tax\Service\V1\Data;
 
-use Magento\Framework\Service\V1\Data\SearchResults;
+use Magento\Framework\Api\SearchResults;
 
 /**
  * TaxRateSearchResults Service Data Object used for the search service requests
diff --git a/app/code/Magento/Tax/Service/V1/Data/TaxRateSearchResultsBuilder.php b/app/code/Magento/Tax/Service/V1/Data/TaxRateSearchResultsBuilder.php
index 6abb1948555..47aac3fbd86 100644
--- a/app/code/Magento/Tax/Service/V1/Data/TaxRateSearchResultsBuilder.php
+++ b/app/code/Magento/Tax/Service/V1/Data/TaxRateSearchResultsBuilder.php
@@ -24,11 +24,11 @@
 
 namespace Magento\Tax\Service\V1\Data;
 
-use Magento\Framework\Service\Data\AttributeValueBuilder;
-use Magento\Framework\Service\Data\MetadataServiceInterface;
-use Magento\Framework\Service\Data\ObjectFactory;
-use Magento\Framework\Service\V1\Data\AbstractSearchResultsBuilder;
-use Magento\Framework\Service\V1\Data\SearchCriteriaBuilder;
+use Magento\Framework\Api\AttributeValueBuilder;
+use Magento\Framework\Api\MetadataServiceInterface;
+use Magento\Framework\Api\ObjectFactory;
+use Magento\Framework\Api\AbstractSearchResultsBuilder;
+use Magento\Framework\Api\SearchCriteriaBuilder;
 
 /**
  * Builder for the TaxRateSearchResults Service Data Object
diff --git a/app/code/Magento/Tax/Service/V1/Data/TaxRateTitle.php b/app/code/Magento/Tax/Service/V1/Data/TaxRateTitle.php
index ee60eeca7c6..eedf443864d 100644
--- a/app/code/Magento/Tax/Service/V1/Data/TaxRateTitle.php
+++ b/app/code/Magento/Tax/Service/V1/Data/TaxRateTitle.php
@@ -27,7 +27,7 @@ namespace Magento\Tax\Service\V1\Data;
 /**
  * A localized tax rate title associated with a store view.
  */
-class TaxRateTitle extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+class TaxRateTitle extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     /**#@+
      *
diff --git a/app/code/Magento/Tax/Service/V1/Data/TaxRateTitleBuilder.php b/app/code/Magento/Tax/Service/V1/Data/TaxRateTitleBuilder.php
index a5121077eef..98f0233da78 100644
--- a/app/code/Magento/Tax/Service/V1/Data/TaxRateTitleBuilder.php
+++ b/app/code/Magento/Tax/Service/V1/Data/TaxRateTitleBuilder.php
@@ -29,7 +29,7 @@ namespace Magento\Tax\Service\V1\Data;
  *
  * @method TaxRateTitle create()
  */
-class TaxRateTitleBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder
+class TaxRateTitleBuilder extends \Magento\Framework\Api\ExtensibleObjectBuilder
 {
     /**
      * Set store id
diff --git a/app/code/Magento/Tax/Service/V1/Data/TaxRule.php b/app/code/Magento/Tax/Service/V1/Data/TaxRule.php
index 187d8558799..0687a096ef4 100644
--- a/app/code/Magento/Tax/Service/V1/Data/TaxRule.php
+++ b/app/code/Magento/Tax/Service/V1/Data/TaxRule.php
@@ -24,7 +24,7 @@
 
 namespace Magento\Tax\Service\V1\Data;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObject;
+use Magento\Framework\Api\AbstractExtensibleObject;
 
 /**
  * Class TaxRule
diff --git a/app/code/Magento/Tax/Service/V1/Data/TaxRuleBuilder.php b/app/code/Magento/Tax/Service/V1/Data/TaxRuleBuilder.php
index e4df9c04b9d..6499999341d 100644
--- a/app/code/Magento/Tax/Service/V1/Data/TaxRuleBuilder.php
+++ b/app/code/Magento/Tax/Service/V1/Data/TaxRuleBuilder.php
@@ -23,17 +23,17 @@
  */
 namespace Magento\Tax\Service\V1\Data;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder;
-use Magento\Framework\Service\Data\AttributeValueBuilder;
-use Magento\Framework\Service\Data\MetadataServiceInterface;
-use Magento\Framework\Service\Data\ObjectFactory;
+use Magento\Framework\Api\ExtensibleObjectBuilder;
+use Magento\Framework\Api\AttributeValueBuilder;
+use Magento\Framework\Api\MetadataServiceInterface;
+use Magento\Framework\Api\ObjectFactory;
 
 /**
  * Builder for the TaxRule Service Data Object
  *
  * @method \Magento\Tax\Service\V1\Data\TaxRule create()
  */
-class TaxRuleBuilder extends AbstractExtensibleObjectBuilder
+class TaxRuleBuilder extends ExtensibleObjectBuilder
 {
     /**
      * TaxRate builder
diff --git a/app/code/Magento/Tax/Service/V1/Data/TaxRuleSearchResults.php b/app/code/Magento/Tax/Service/V1/Data/TaxRuleSearchResults.php
index e67aef7bf7d..cc218c0181b 100644
--- a/app/code/Magento/Tax/Service/V1/Data/TaxRuleSearchResults.php
+++ b/app/code/Magento/Tax/Service/V1/Data/TaxRuleSearchResults.php
@@ -24,7 +24,7 @@
 
 namespace Magento\Tax\Service\V1\Data;
 
-use Magento\Framework\Service\V1\Data\SearchResults;
+use Magento\Framework\Api\SearchResults;
 
 /**
  * TaxRuleSearchResults Service Data Object used for the search service requests
diff --git a/app/code/Magento/Tax/Service/V1/Data/TaxRuleSearchResultsBuilder.php b/app/code/Magento/Tax/Service/V1/Data/TaxRuleSearchResultsBuilder.php
index 6992b3aa897..41c16cbd6fd 100644
--- a/app/code/Magento/Tax/Service/V1/Data/TaxRuleSearchResultsBuilder.php
+++ b/app/code/Magento/Tax/Service/V1/Data/TaxRuleSearchResultsBuilder.php
@@ -24,11 +24,11 @@
 
 namespace Magento\Tax\Service\V1\Data;
 
-use Magento\Framework\Service\Data\AttributeValueBuilder;
-use Magento\Framework\Service\Data\MetadataServiceInterface;
-use Magento\Framework\Service\Data\ObjectFactory;
-use Magento\Framework\Service\V1\Data\SearchCriteriaBuilder;
-use Magento\Framework\Service\V1\Data\AbstractSearchResultsBuilder;
+use Magento\Framework\Api\AttributeValueBuilder;
+use Magento\Framework\Api\MetadataServiceInterface;
+use Magento\Framework\Api\ObjectFactory;
+use Magento\Framework\Api\SearchCriteriaBuilder;
+use Magento\Framework\Api\AbstractSearchResultsBuilder;
 
 /**
  * Builder for the TaxRuleSearchResults Service Data Object
diff --git a/app/code/Magento/Tax/Service/V1/Data/ZipRange.php b/app/code/Magento/Tax/Service/V1/Data/ZipRange.php
index be136de70c6..c000f69eb39 100644
--- a/app/code/Magento/Tax/Service/V1/Data/ZipRange.php
+++ b/app/code/Magento/Tax/Service/V1/Data/ZipRange.php
@@ -23,7 +23,7 @@
  */
 namespace Magento\Tax\Service\V1\Data;
 
-class ZipRange extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+class ZipRange extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     /**#@+
      * Constants defined for keys of array, makes typos less likely
diff --git a/app/code/Magento/Tax/Service/V1/Data/ZipRangeBuilder.php b/app/code/Magento/Tax/Service/V1/Data/ZipRangeBuilder.php
index 8899b747040..401e182ec7f 100644
--- a/app/code/Magento/Tax/Service/V1/Data/ZipRangeBuilder.php
+++ b/app/code/Magento/Tax/Service/V1/Data/ZipRangeBuilder.php
@@ -28,7 +28,7 @@ namespace Magento\Tax\Service\V1\Data;
  *
  * @method ZipRange create()
  */
-class ZipRangeBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder
+class ZipRangeBuilder extends \Magento\Framework\Api\ExtensibleObjectBuilder
 {
     /**
      * Set zip range starting point
diff --git a/app/code/Magento/Tax/Service/V1/TaxClassService.php b/app/code/Magento/Tax/Service/V1/TaxClassService.php
index 17fead87ae0..e7a0eae8fe9 100644
--- a/app/code/Magento/Tax/Service/V1/TaxClassService.php
+++ b/app/code/Magento/Tax/Service/V1/TaxClassService.php
@@ -26,10 +26,10 @@ namespace Magento\Tax\Service\V1;
 
 use Magento\Framework\Exception\InputException;
 use Magento\Framework\Model\Exception as ModelException;
-use Magento\Framework\Service\V1\Data\Search\FilterGroup;
-use Magento\Framework\Service\V1\Data\FilterBuilder;
-use Magento\Framework\Service\V1\Data\SearchCriteria;
-use Magento\Framework\Service\V1\Data\SearchCriteriaBuilder;
+use Magento\Framework\Api\Search\FilterGroup;
+use Magento\Framework\Api\FilterBuilder;
+use Magento\Framework\Api\SearchCriteria;
+use Magento\Framework\Api\SearchCriteriaBuilder;
 use Magento\Tax\Model\ClassModelRegistry;
 use Magento\Tax\Model\Converter;
 use Magento\Tax\Model\Resource\TaxClass\Collection as TaxClassCollection;
@@ -39,7 +39,7 @@ use Magento\Tax\Service\V1\Data\TaxClassSearchResultsBuilder;
 use Magento\Tax\Service\V1\Data\TaxClass as TaxClassDataObject;
 use Magento\Tax\Service\V1\Data\TaxClassKey;
 use Magento\Framework\Exception\CouldNotDeleteException;
-use Magento\Framework\Service\V1\Data\SortOrder;
+use Magento\Framework\Api\SortOrder;
 
 /**
  * Tax class service.
@@ -233,11 +233,11 @@ class TaxClassService implements TaxClassServiceInterface
     /**
      * Retrieve tax classes which match a specific criteria.
      *
-     * @param \Magento\Framework\Service\V1\Data\SearchCriteria $searchCriteria
+     * @param \Magento\Framework\Api\SearchCriteria $searchCriteria
      * @return \Magento\Tax\Service\V1\Data\TaxClassSearchResults containing Data\TaxClass
      * @throws \Magento\Framework\Exception\InputException
      */
-    public function searchTaxClass(\Magento\Framework\Service\V1\Data\SearchCriteria $searchCriteria)
+    public function searchTaxClass(\Magento\Framework\Api\SearchCriteria $searchCriteria)
     {
         $this->searchResultsBuilder->setSearchCriteria($searchCriteria);
         /** @var TaxClassCollection $collection */
diff --git a/app/code/Magento/Tax/Service/V1/TaxClassServiceInterface.php b/app/code/Magento/Tax/Service/V1/TaxClassServiceInterface.php
index 3e0fecaec15..8f0458f26b2 100644
--- a/app/code/Magento/Tax/Service/V1/TaxClassServiceInterface.php
+++ b/app/code/Magento/Tax/Service/V1/TaxClassServiceInterface.php
@@ -79,11 +79,11 @@ interface TaxClassServiceInterface
     /**
      * Retrieve tax classes which match a specific criteria.
      *
-     * @param \Magento\Framework\Service\V1\Data\SearchCriteria $searchCriteria
+     * @param \Magento\Framework\Api\SearchCriteria $searchCriteria
      * @return \Magento\Tax\Service\V1\Data\TaxClassSearchResults containing Data\TaxClass
      * @throws \Magento\Framework\Exception\InputException
      */
-    public function searchTaxClass(\Magento\Framework\Service\V1\Data\SearchCriteria $searchCriteria);
+    public function searchTaxClass(\Magento\Framework\Api\SearchCriteria $searchCriteria);
 
     /**
      * Get tax class id
diff --git a/app/code/Magento/Tax/Service/V1/TaxRateService.php b/app/code/Magento/Tax/Service/V1/TaxRateService.php
index 8c3ff014ee0..53153be278f 100644
--- a/app/code/Magento/Tax/Service/V1/TaxRateService.php
+++ b/app/code/Magento/Tax/Service/V1/TaxRateService.php
@@ -28,8 +28,8 @@ use Magento\Directory\Model\CountryFactory;
 use Magento\Directory\Model\RegionFactory;
 use Magento\Framework\Exception\InputException;
 use Magento\Framework\Model\Exception as ModelException;
-use Magento\Framework\Service\V1\Data\Search\FilterGroup;
-use Magento\Framework\Service\V1\Data\SearchCriteria;
+use Magento\Framework\Api\Search\FilterGroup;
+use Magento\Framework\Api\SearchCriteria;
 use Magento\Tax\Model\Calculation\Rate as RateModel;
 use Magento\Tax\Model\Calculation\Rate\Converter;
 use Magento\Tax\Model\Calculation\RateFactory;
@@ -37,7 +37,7 @@ use Magento\Tax\Model\Calculation\RateRegistry;
 use Magento\Tax\Model\Resource\Calculation\Rate\Collection;
 use Magento\Tax\Service\V1\Data\TaxRate as TaxRateDataObject;
 use Magento\Tax\Service\V1\Data\TaxRateBuilder;
-use Magento\Framework\Service\V1\Data\SortOrder;
+use Magento\Framework\Api\SortOrder;
 
 /**
  * Handles tax rate CRUD operations
@@ -296,8 +296,9 @@ class TaxRateService implements TaxRateServiceInterface
         }
 
         $regionCode = $taxRate->getRegionId();
+        // if regionCode eq 0 (all regions *), do not validate with existing region list
         if (\Zend_Validate::is($regionCode, 'NotEmpty') &&
-            !\Zend_Validate::is($this->regionFactory->create()->load($regionCode)->getId(), 'NotEmpty')) {
+            ($regionCode != "0" && !\Zend_Validate::is($this->regionFactory->create()->load($regionCode)->getId(), 'NotEmpty'))) {
             $exception->addError(InputException::INVALID_FIELD_VALUE, ['fieldName' => 'region_id', 'value' => $regionCode]);
         }
 
diff --git a/app/code/Magento/Tax/Service/V1/TaxRateServiceInterface.php b/app/code/Magento/Tax/Service/V1/TaxRateServiceInterface.php
index 6d123f0a17b..a59786f8997 100644
--- a/app/code/Magento/Tax/Service/V1/TaxRateServiceInterface.php
+++ b/app/code/Magento/Tax/Service/V1/TaxRateServiceInterface.php
@@ -69,9 +69,9 @@ interface TaxRateServiceInterface
     /**
      * Search TaxRates
      *
-     * @param \Magento\Framework\Service\V1\Data\SearchCriteria $searchCriteria
+     * @param \Magento\Framework\Api\SearchCriteria $searchCriteria
      * @return \Magento\Tax\Service\V1\Data\TaxRateSearchResults containing Data\TaxRate objects
      * @throws \Magento\Framework\Exception\InputException If there is a problem with the input
      */
-    public function searchTaxRates(\Magento\Framework\Service\V1\Data\SearchCriteria $searchCriteria);
+    public function searchTaxRates(\Magento\Framework\Api\SearchCriteria $searchCriteria);
 }
diff --git a/app/code/Magento/Tax/Service/V1/TaxRuleService.php b/app/code/Magento/Tax/Service/V1/TaxRuleService.php
index dc20b4eb17e..53e60b4850e 100644
--- a/app/code/Magento/Tax/Service/V1/TaxRuleService.php
+++ b/app/code/Magento/Tax/Service/V1/TaxRuleService.php
@@ -27,10 +27,10 @@ namespace Magento\Tax\Service\V1;
 use Magento\Framework\Exception\InputException;
 use Magento\Framework\Exception\NoSuchEntityException;
 use Magento\Framework\Model\Exception as ModelException;
-use Magento\Framework\Service\V1\Data\FilterBuilder;
-use Magento\Framework\Service\V1\Data\Search\FilterGroup;
-use Magento\Framework\Service\V1\Data\SearchCriteria;
-use Magento\Framework\Service\V1\Data\SearchCriteriaBuilder;
+use Magento\Framework\Api\FilterBuilder;
+use Magento\Framework\Api\Search\FilterGroup;
+use Magento\Framework\Api\SearchCriteria;
+use Magento\Framework\Api\SearchCriteriaBuilder;
 use Magento\Tax\Model\ClassModel as TaxClassModel;
 use Magento\Tax\Model\Calculation\Rule as TaxRuleModel;
 use Magento\Tax\Model\Calculation\RuleFactory as TaxRuleModelFactory;
@@ -39,7 +39,7 @@ use Magento\Tax\Model\Calculation\TaxRuleRegistry;
 use Magento\Tax\Model\Resource\Calculation\Rule\Collection;
 use Magento\Tax\Service\V1\Data\TaxRule;
 use Magento\Tax\Service\V1\Data\TaxRuleBuilder;
-use Magento\Framework\Service\V1\Data\SortOrder;
+use Magento\Framework\Api\SortOrder;
 
 /**
  * TaxRuleService implementation.
diff --git a/app/code/Magento/Tax/Service/V1/TaxRuleServiceInterface.php b/app/code/Magento/Tax/Service/V1/TaxRuleServiceInterface.php
index 92a5f66116c..4ba9513fe80 100644
--- a/app/code/Magento/Tax/Service/V1/TaxRuleServiceInterface.php
+++ b/app/code/Magento/Tax/Service/V1/TaxRuleServiceInterface.php
@@ -71,11 +71,11 @@ interface TaxRuleServiceInterface
     /**
      * Search TaxRules
      *
-     * @param \Magento\Framework\Service\V1\Data\SearchCriteria $searchCriteria
+     * @param \Magento\Framework\Api\SearchCriteria $searchCriteria
      * @return \Magento\Tax\Service\V1\Data\TaxRuleSearchResults containing Data\TaxRule objects
      * @throws \Magento\Framework\Exception\InputException If there is a problem with the input
      */
-    public function searchTaxRules(\Magento\Framework\Service\V1\Data\SearchCriteria $searchCriteria);
+    public function searchTaxRules(\Magento\Framework\Api\SearchCriteria $searchCriteria);
 
     /**
      * Get rates by customerTaxClassId and productTaxClassId
diff --git a/app/code/Magento/Tax/composer.json b/app/code/Magento/Tax/composer.json
index dcc259ffc1e..817f2a38a57 100644
--- a/app/code/Magento/Tax/composer.json
+++ b/app/code/Magento/Tax/composer.json
@@ -3,23 +3,23 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-catalog": "0.1.0-alpha102",
-        "magento/module-customer": "0.1.0-alpha102",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/module-directory": "0.1.0-alpha102",
-        "magento/module-checkout": "0.1.0-alpha102",
-        "magento/module-shipping": "0.1.0-alpha102",
-        "magento/module-eav": "0.1.0-alpha102",
-        "magento/module-sales": "0.1.0-alpha102",
-        "magento/module-reports": "0.1.0-alpha102",
-        "magento/module-configurable-product": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-catalog": "0.1.0-alpha103",
+        "magento/module-customer": "0.1.0-alpha103",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/module-directory": "0.1.0-alpha103",
+        "magento/module-checkout": "0.1.0-alpha103",
+        "magento/module-shipping": "0.1.0-alpha103",
+        "magento/module-eav": "0.1.0-alpha103",
+        "magento/module-sales": "0.1.0-alpha103",
+        "magento/module-reports": "0.1.0-alpha103",
+        "magento/module-configurable-product": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Tax/data/tax_setup/data-install-1.6.0.0.php b/app/code/Magento/Tax/data/tax_setup/data-install-1.6.0.0.php
index fa59896796d..908fad931ed 100644
--- a/app/code/Magento/Tax/data/tax_setup/data-install-1.6.0.0.php
+++ b/app/code/Magento/Tax/data/tax_setup/data-install-1.6.0.0.php
@@ -21,6 +21,7 @@
  * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
+
 /** @var $installer \Magento\Tax\Model\Resource\Setup */
 $installer = $this;
 
diff --git a/app/code/Magento/Tax/data/tax_setup/data-upgrade-1.6.0.0-1.6.0.1.php b/app/code/Magento/Tax/data/tax_setup/data-upgrade-1.6.0.0-1.6.0.1.php
index 34f36f1e584..37e6e859b2d 100644
--- a/app/code/Magento/Tax/data/tax_setup/data-upgrade-1.6.0.0-1.6.0.1.php
+++ b/app/code/Magento/Tax/data/tax_setup/data-upgrade-1.6.0.0-1.6.0.1.php
@@ -21,13 +21,14 @@
  * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
+
 /** @var $installer \Magento\Tax\Model\Resource\Setup */
 $installer = $this;
 
-//New attributes order and properties
+// New attributes order and properties
 $properties = array('is_required', 'default_value');
 $attributesOrder = array(
-    //Product Details tab
+    // Product Details tab
     'tax_class_id' => array('Product Details' => 40, 'is_required' => 0, 'default_value' => 2),
 );
 
diff --git a/app/code/Magento/Tax/sql/tax_setup/install-1.6.0.0.php b/app/code/Magento/Tax/sql/tax_setup/install-1.6.0.0.php
index 2a533edbc3f..1e707729791 100644
--- a/app/code/Magento/Tax/sql/tax_setup/install-1.6.0.0.php
+++ b/app/code/Magento/Tax/sql/tax_setup/install-1.6.0.0.php
@@ -21,10 +21,11 @@
  * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
-/** @var $installer \Magento\Tax\Model\Resource\Setup */
+
+/** @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 $installer->startSetup();
-//
+
 /**
  * Create table 'tax/class'
  */
diff --git a/app/code/Magento/Tax/sql/tax_setup/upgrade-1.6.0.0-1.6.0.1.php b/app/code/Magento/Tax/sql/tax_setup/upgrade-1.6.0.0-1.6.0.1.php
index be126bcc895..4c4276f51b5 100644
--- a/app/code/Magento/Tax/sql/tax_setup/upgrade-1.6.0.0-1.6.0.1.php
+++ b/app/code/Magento/Tax/sql/tax_setup/upgrade-1.6.0.0-1.6.0.1.php
@@ -22,8 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-$installer = $this;
-/** @var $installer \Magento\Tax\Model\Resource\Setup */
+/** @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 $connection = $installer->getConnection();
 $connection->createTable(
diff --git a/app/code/Magento/Tax/sql/tax_setup/upgrade-1.6.0.1-1.6.0.2.php b/app/code/Magento/Tax/sql/tax_setup/upgrade-1.6.0.1-1.6.0.2.php
index 05307b452d9..18ef18d6db6 100644
--- a/app/code/Magento/Tax/sql/tax_setup/upgrade-1.6.0.1-1.6.0.2.php
+++ b/app/code/Magento/Tax/sql/tax_setup/upgrade-1.6.0.1-1.6.0.2.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/** @var $installer \Magento\Tax\Model\Resource\Setup */
+/** @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 /**
diff --git a/app/code/Magento/Tax/sql/tax_setup/upgrade-1.6.0.2-1.6.0.3.php b/app/code/Magento/Tax/sql/tax_setup/upgrade-1.6.0.2-1.6.0.3.php
index c8a5ae6014e..e92cfba3ba4 100644
--- a/app/code/Magento/Tax/sql/tax_setup/upgrade-1.6.0.2-1.6.0.3.php
+++ b/app/code/Magento/Tax/sql/tax_setup/upgrade-1.6.0.2-1.6.0.3.php
@@ -22,8 +22,8 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
-/* @var $installer \Magento\Tax\Model\Resource\Setup */
 
 /**
  * Add new field to 'sales_order_tax_item'
diff --git a/app/code/Magento/Tax/sql/tax_setup/upgrade-1.6.0.4-1.6.0.5.php b/app/code/Magento/Tax/sql/tax_setup/upgrade-1.6.0.4-1.6.0.5.php
index dcaa10f21c2..6b158569525 100644
--- a/app/code/Magento/Tax/sql/tax_setup/upgrade-1.6.0.4-1.6.0.5.php
+++ b/app/code/Magento/Tax/sql/tax_setup/upgrade-1.6.0.4-1.6.0.5.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/** @var $installer \Magento\Tax\Model\Resource\Setup */
+/** @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 $connection = $installer->getConnection();
diff --git a/app/code/Magento/Tax/sql/tax_setup/upgrade-1.6.0.5-1.6.0.6.php b/app/code/Magento/Tax/sql/tax_setup/upgrade-1.6.0.5-1.6.0.6.php
index b054b82c416..badd905bc68 100644
--- a/app/code/Magento/Tax/sql/tax_setup/upgrade-1.6.0.5-1.6.0.6.php
+++ b/app/code/Magento/Tax/sql/tax_setup/upgrade-1.6.0.5-1.6.0.6.php
@@ -24,7 +24,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/** @var $installer \Magento\Tax\Model\Resource\Setup */
+/** @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 $connection = $installer->getConnection();
diff --git a/app/code/Magento/Tax/sql/tax_setup/upgrade-1.6.0.6-1.6.0.7.php b/app/code/Magento/Tax/sql/tax_setup/upgrade-1.6.0.6-1.6.0.7.php
index ee47d2d9956..557166c02d8 100644
--- a/app/code/Magento/Tax/sql/tax_setup/upgrade-1.6.0.6-1.6.0.7.php
+++ b/app/code/Magento/Tax/sql/tax_setup/upgrade-1.6.0.6-1.6.0.7.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/** @var \Magento\Tax\Model\Resource\Setup $installer */
+/** @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 $connection = $installer->getConnection();
 
diff --git a/app/code/Magento/TaxImportExport/composer.json b/app/code/Magento/TaxImportExport/composer.json
index 47930195b40..c84e9abf1d8 100644
--- a/app/code/Magento/TaxImportExport/composer.json
+++ b/app/code/Magento/TaxImportExport/composer.json
@@ -3,15 +3,15 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-tax": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/module-directory": "0.1.0-alpha102",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-tax": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/module-directory": "0.1.0-alpha103",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Theme/composer.json b/app/code/Magento/Theme/composer.json
index d9480153a73..6d93b9068ee 100644
--- a/app/code/Magento/Theme/composer.json
+++ b/app/code/Magento/Theme/composer.json
@@ -3,17 +3,17 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-customer": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/module-cms": "0.1.0-alpha102",
-        "magento/module-translation": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-customer": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/module-cms": "0.1.0-alpha103",
+        "magento/module-translation": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Theme/view/adminhtml/web/css/theme.css b/app/code/Magento/Theme/view/adminhtml/web/css/theme.css
index 72f6a1e1837..e829101e787 100644
--- a/app/code/Magento/Theme/view/adminhtml/web/css/theme.css
+++ b/app/code/Magento/Theme/view/adminhtml/web/css/theme.css
@@ -57,7 +57,6 @@
     height: 15px;
     left: 0;
     margin: 2px 5px;
-    outline: medium none;
     overflow: hidden;
     position: absolute;
     top: -1px;
diff --git a/app/code/Magento/Theme/view/base/templates/root.phtml b/app/code/Magento/Theme/view/base/templates/root.phtml
index 69698b5ae3b..c7cf97ce4f0 100644
--- a/app/code/Magento/Theme/view/base/templates/root.phtml
+++ b/app/code/Magento/Theme/view/base/templates/root.phtml
@@ -27,6 +27,7 @@
     <head <?php echo $headAttributes ?>>
         <?php echo $requireJs ?>
         <?php echo $headContent ?>
+        <?php echo $headAdditional ?>
     </head>
     <body data-container="body" data-mage-init='{"loaderAjax": {}, "loader": {}}' <?php echo $bodyAttributes ?>>
         <?php echo $layoutContent ?>
diff --git a/app/code/Magento/Theme/view/frontend/layout/default.xml b/app/code/Magento/Theme/view/frontend/layout/default.xml
index ec9999cd068..a2e2a6548a7 100644
--- a/app/code/Magento/Theme/view/frontend/layout/default.xml
+++ b/app/code/Magento/Theme/view/frontend/layout/default.xml
@@ -40,11 +40,18 @@
                 </arguments>
             </block>
         </referenceBlock>
+        <referenceContainer name="main.content">
+            <block class="Magento\Framework\View\Element\Template" name="skip_to_content.target" before="-" template="Magento_Theme::html/skiptarget.phtml">
+                <arguments>
+                    <argument name="target_id" xsi:type="string">contentarea</argument>
+                </arguments>
+            </block>
+        </referenceContainer>
         <referenceContainer name="header.container">
             <container name="header.panel" label="Page Header Panel" htmlTag="div" htmlClass="panel header">
                 <block class="Magento\Framework\View\Element\Template" name="skip_to_content" template="Magento_Theme::html/skip.phtml">
                     <arguments>
-                        <argument name="target" xsi:type="string">maincontent</argument>
+                        <argument name="target" xsi:type="string">contentarea</argument>
                         <argument name="label" translate="true" xsi:type="string">Skip to content</argument>
                     </arguments>
                 </block>
@@ -66,7 +73,7 @@
         </referenceContainer>
         <referenceContainer name="columns.top">
             <block class="Magento\Theme\Block\Html\Title" name="page.main.title" template="html/title.phtml"/>
-            <container name="page.messages" label="invisible" htmlTag="div" htmlClass="page messages">
+            <container name="page.messages" htmlTag="div" htmlClass="page messages">
                 <block class="Magento\Framework\View\Element\Messages" name="global_messages" as="global_messages"/>
                 <block class="Magento\Framework\View\Element\Messages" name="messages" as="messages"/>
             </container>
diff --git a/app/code/Magento/Theme/view/frontend/templates/html/pager.phtml b/app/code/Magento/Theme/view/frontend/templates/html/pager.phtml
index ee47a3ae122..79d58b9baf8 100644
--- a/app/code/Magento/Theme/view/frontend/templates/html/pager.phtml
+++ b/app/code/Magento/Theme/view/frontend/templates/html/pager.phtml
@@ -128,20 +128,20 @@
         </div>
         <?php endif; ?>
 
-        <?php if($this->isShowPerPage()): ?>
-            <div class="limiter">
-                <strong class="limiter-label"><?php echo __('Show') ?></strong>
-                <select id="limiter" data-mage-redirect="{'event':'change'}" class="limiter-options">
-                    <?php foreach ($this->getAvailableLimit() as $_key => $_limit): ?>
+    <?php if($this->isShowPerPage()): ?>
+        <div class="limiter">
+            <strong class="limiter-label"><?php echo __('Show') ?></strong>
+            <select id="limiter" data-mage-redirect="{'event':'change'}" class="limiter-options">
+                <?php foreach ($this->getAvailableLimit() as $_key => $_limit): ?>
                     <option value="<?php echo $this->getLimitUrl($_key) ?>"<?php if ($this->isLimitCurrent($_key)): ?>
-                            selected="selected"<?php endif ?>>
+                        selected="selected"<?php endif ?>>
                         <?php echo $_limit ?>
                     </option>
-                    <?php endforeach; ?>
-                </select>
-                <span class="limiter-text"><?php echo __('per page') ?></span>
-            </div>
-        <?php endif ?>
+                <?php endforeach; ?>
+            </select>
+            <span class="limiter-text"><?php echo __('per page') ?></span>
+        </div>
+    <?php endif ?>
 
     <?php if($this->getUseContainer()): ?>
     </div>
diff --git a/app/design/install/Magento/basic/web/bootstrap.js b/app/code/Magento/Theme/view/frontend/templates/html/skiptarget.phtml
similarity index 87%
rename from app/design/install/Magento/basic/web/bootstrap.js
rename to app/code/Magento/Theme/view/frontend/templates/html/skiptarget.phtml
index 03eeff549bd..8cccadf1ebf 100644
--- a/app/design/install/Magento/basic/web/bootstrap.js
+++ b/app/code/Magento/Theme/view/frontend/templates/html/skiptarget.phtml
@@ -1,5 +1,5 @@
+<?php
 /**
- *
  * Magento
  *
  * NOTICE OF LICENSE
@@ -21,9 +21,6 @@
  * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
- require([
-    "jquery",
-    "jquery/jquery-migrate"
- ], function(jQuery){
-    jQuery.migrateMute = true;
- })
\ No newline at end of file
+$target_id = $this->getTargetId();
+?>
+<a id="<?php echo $target_id?>" name="<?php echo $target_id?>" tabindex="0"></a>
diff --git a/app/code/Magento/Translation/composer.json b/app/code/Magento/Translation/composer.json
index d1b8ab8ea65..1ab6d63afbd 100644
--- a/app/code/Magento/Translation/composer.json
+++ b/app/code/Magento/Translation/composer.json
@@ -3,14 +3,14 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Translation/sql/translation_setup/install-1.0.0.0.php b/app/code/Magento/Translation/sql/translation_setup/install-1.0.0.0.php
index 64112cae78f..13b36844926 100644
--- a/app/code/Magento/Translation/sql/translation_setup/install-1.0.0.0.php
+++ b/app/code/Magento/Translation/sql/translation_setup/install-1.0.0.0.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* @var $installer \Magento\Framework\Module\Setup */
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 $installer->startSetup();
diff --git a/app/code/Magento/Ui/composer.json b/app/code/Magento/Ui/composer.json
index 45d8eceb726..313b30b38c4 100644
--- a/app/code/Magento/Ui/composer.json
+++ b/app/code/Magento/Ui/composer.json
@@ -3,13 +3,13 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Ups/composer.json b/app/code/Magento/Ups/composer.json
index 04b84901b25..81119a2bf50 100644
--- a/app/code/Magento/Ups/composer.json
+++ b/app/code/Magento/Ups/composer.json
@@ -3,18 +3,18 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/module-sales": "0.1.0-alpha102",
-        "magento/module-shipping": "0.1.0-alpha102",
-        "magento/module-directory": "0.1.0-alpha102",
-        "magento/module-catalog-inventory": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/module-sales": "0.1.0-alpha103",
+        "magento/module-shipping": "0.1.0-alpha103",
+        "magento/module-directory": "0.1.0-alpha103",
+        "magento/module-catalog-inventory": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/UrlRewrite/Service/V1/Data/UrlRewrite.php b/app/code/Magento/UrlRewrite/Service/V1/Data/UrlRewrite.php
index 3367b44794d..6e75a582538 100644
--- a/app/code/Magento/UrlRewrite/Service/V1/Data/UrlRewrite.php
+++ b/app/code/Magento/UrlRewrite/Service/V1/Data/UrlRewrite.php
@@ -23,7 +23,7 @@
  */
 namespace Magento\UrlRewrite\Service\V1\Data;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObject;
+use Magento\Framework\Api\AbstractExtensibleObject;
 
 /**
  * Data abstract class for url storage
diff --git a/app/code/Magento/UrlRewrite/Service/V1/Data/UrlRewriteBuilder.php b/app/code/Magento/UrlRewrite/Service/V1/Data/UrlRewriteBuilder.php
index 54bd4a3185d..a9ba3784fdf 100644
--- a/app/code/Magento/UrlRewrite/Service/V1/Data/UrlRewriteBuilder.php
+++ b/app/code/Magento/UrlRewrite/Service/V1/Data/UrlRewriteBuilder.php
@@ -23,12 +23,12 @@
  */
 namespace Magento\UrlRewrite\Service\V1\Data;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder;
+use Magento\Framework\Api\ExtensibleObjectBuilder;
 
 /**
  * Data builder class for url rewrite
  */
-class UrlRewriteBuilder extends AbstractExtensibleObjectBuilder
+class UrlRewriteBuilder extends ExtensibleObjectBuilder
 {
     /**
      * @var array
@@ -45,7 +45,7 @@ class UrlRewriteBuilder extends AbstractExtensibleObjectBuilder
      */
     public function getData()
     {
-        return array_merge($this->defaultValues, $this->_data);
+        return array_merge($this->defaultValues, $this->data);
     }
 
     /**
diff --git a/app/code/Magento/UrlRewrite/composer.json b/app/code/Magento/UrlRewrite/composer.json
index 4e321ab1b9b..7d14b5527fd 100644
--- a/app/code/Magento/UrlRewrite/composer.json
+++ b/app/code/Magento/UrlRewrite/composer.json
@@ -3,18 +3,18 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-catalog": "0.1.0-alpha102",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/module-catalog-url-rewrite": "0.1.0-alpha102",
-        "magento/module-cms": "0.1.0-alpha102",
-        "magento/module-cms-url-rewrite": "0.1.0-alpha102",
+        "magento/module-catalog": "0.1.0-alpha103",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/module-catalog-url-rewrite": "0.1.0-alpha103",
+        "magento/module-cms": "0.1.0-alpha103",
+        "magento/module-cms-url-rewrite": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/UrlRewrite/sql/urlrewrite_setup/install-1.0.0.0.php b/app/code/Magento/UrlRewrite/sql/urlrewrite_setup/install-1.0.0.0.php
index ff6c4a26e0f..3005fa86793 100644
--- a/app/code/Magento/UrlRewrite/sql/urlrewrite_setup/install-1.0.0.0.php
+++ b/app/code/Magento/UrlRewrite/sql/urlrewrite_setup/install-1.0.0.0.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* @var $installer \Magento\Core\Model\Resource\Setup */
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 $installer->startSetup();
diff --git a/app/code/Magento/User/composer.json b/app/code/Magento/User/composer.json
index a5af18ba552..34af5709eb0 100644
--- a/app/code/Magento/User/composer.json
+++ b/app/code/Magento/User/composer.json
@@ -3,16 +3,16 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-authorization": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-integration": "0.1.0-alpha102",
-        "magento/module-theme": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-authorization": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-integration": "0.1.0-alpha103",
+        "magento/module-theme": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/User/sql/user_setup/install-1.6.0.0.php b/app/code/Magento/User/sql/user_setup/install-1.6.0.0.php
index 78272f107d2..5765c3d1dbd 100644
--- a/app/code/Magento/User/sql/user_setup/install-1.6.0.0.php
+++ b/app/code/Magento/User/sql/user_setup/install-1.6.0.0.php
@@ -22,8 +22,8 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
-/* @var $installer \Magento\Framework\Module\Setup */
 
 $installer->startSetup();
 
diff --git a/app/code/Magento/User/sql/user_setup/upgrade-1.6.0.0-1.6.1.0.php b/app/code/Magento/User/sql/user_setup/upgrade-1.6.0.0-1.6.1.0.php
index 58db217b95a..5223b80b6b0 100644
--- a/app/code/Magento/User/sql/user_setup/upgrade-1.6.0.0-1.6.1.0.php
+++ b/app/code/Magento/User/sql/user_setup/upgrade-1.6.0.0-1.6.1.0.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/** @var $installer \Magento\Framework\Module\Setup */
+/** @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 $installer->startSetup();
 
diff --git a/app/code/Magento/User/sql/user_setup/upgrade-1.6.1.0-1.6.1.1.php b/app/code/Magento/User/sql/user_setup/upgrade-1.6.1.0-1.6.1.1.php
index 61e9fb37c27..b090b204ee1 100644
--- a/app/code/Magento/User/sql/user_setup/upgrade-1.6.1.0-1.6.1.1.php
+++ b/app/code/Magento/User/sql/user_setup/upgrade-1.6.1.0-1.6.1.1.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/** @var $installer \Magento\Framework\Module\Setup */
+/** @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 $installer->startSetup();
 
diff --git a/app/code/Magento/User/sql/user_setup/upgrade-1.6.1.3-1.6.1.4.php b/app/code/Magento/User/sql/user_setup/upgrade-1.6.1.3-1.6.1.4.php
index 499d748d464..9a4c3e6ce52 100644
--- a/app/code/Magento/User/sql/user_setup/upgrade-1.6.1.3-1.6.1.4.php
+++ b/app/code/Magento/User/sql/user_setup/upgrade-1.6.1.3-1.6.1.4.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* @var $installer \Magento\Framework\Module\Setup */
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 $installer->startSetup();
diff --git a/app/code/Magento/User/sql/user_setup/upgrade-1.6.1.5-1.6.1.6.php b/app/code/Magento/User/sql/user_setup/upgrade-1.6.1.5-1.6.1.6.php
index a9139152218..cd3451caea0 100644
--- a/app/code/Magento/User/sql/user_setup/upgrade-1.6.1.5-1.6.1.6.php
+++ b/app/code/Magento/User/sql/user_setup/upgrade-1.6.1.5-1.6.1.6.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* @var $installer \Magento\Framework\Module\Setup */
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 $connection = $installer->getConnection();
diff --git a/app/code/Magento/Usps/composer.json b/app/code/Magento/Usps/composer.json
index fc50c5cb50e..414c0721039 100644
--- a/app/code/Magento/Usps/composer.json
+++ b/app/code/Magento/Usps/composer.json
@@ -3,19 +3,19 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-shipping": "0.1.0-alpha102",
-        "magento/module-directory": "0.1.0-alpha102",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-catalog": "0.1.0-alpha102",
-        "magento/module-sales": "0.1.0-alpha102",
-        "magento/module-catalog-inventory": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-shipping": "0.1.0-alpha103",
+        "magento/module-directory": "0.1.0-alpha103",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-catalog": "0.1.0-alpha103",
+        "magento/module-sales": "0.1.0-alpha103",
+        "magento/module-catalog-inventory": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "lib-libxml": "*",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Usps/data/usps_setup/data-install-2.0.0.0.php b/app/code/Magento/Usps/data/usps_setup/data-install-2.0.0.0.php
index 1e8e68561d3..364c60c6ed5 100644
--- a/app/code/Magento/Usps/data/usps_setup/data-install-2.0.0.0.php
+++ b/app/code/Magento/Usps/data/usps_setup/data-install-2.0.0.0.php
@@ -22,6 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
+/* @var $installer \Magento\Framework\Module\Setup */
 $installer = $this;
 $configDataTable = $installer->getTable('core_config_data');
 $connection = $installer->getConnection();
diff --git a/app/code/Magento/Webapi/Controller/Rest.php b/app/code/Magento/Webapi/Controller/Rest.php
index 56a19d27bb1..8160f5d95ed 100644
--- a/app/code/Magento/Webapi/Controller/Rest.php
+++ b/app/code/Magento/Webapi/Controller/Rest.php
@@ -175,7 +175,7 @@ class Rest implements \Magento\Framework\App\FrontControllerInterface
             $inputData = $this->overrideParams($inputData, $route->getParameters());
             $inputParams = $this->_serializer->getInputData($serviceClassName, $serviceMethodName, $inputData);
             $service = $this->_objectManager->get($serviceClassName);
-            /** @var \Magento\Framework\Service\Data\AbstractExtensibleObject $outputData */
+            /** @var \Magento\Framework\Api\AbstractExtensibleObject $outputData */
             $outputData = call_user_func_array([$service, $serviceMethodName], $inputParams);
             $outputData = $this->dataObjectConverter->processServiceOutput(
                 $outputData,
diff --git a/app/code/Magento/Webapi/Controller/Rest/Request.php b/app/code/Magento/Webapi/Controller/Rest/Request.php
index 367bb8e83c5..e94c5a81338 100644
--- a/app/code/Magento/Webapi/Controller/Rest/Request.php
+++ b/app/code/Magento/Webapi/Controller/Rest/Request.php
@@ -26,7 +26,7 @@
 
 namespace Magento\Webapi\Controller\Rest;
 
-use Magento\Framework\Service\SimpleDataObjectConverter;
+use Magento\Framework\Api\SimpleDataObjectConverter;
 use Magento\Webapi\Model\Rest\Config as RestConfig;
 
 class Request extends \Magento\Webapi\Controller\Request
diff --git a/app/code/Magento/Webapi/Controller/Rest/Request/Deserializer/Json.php b/app/code/Magento/Webapi/Controller/Rest/Request/Deserializer/Json.php
index 5de26717913..dc840e49664 100644
--- a/app/code/Magento/Webapi/Controller/Rest/Request/Deserializer/Json.php
+++ b/app/code/Magento/Webapi/Controller/Rest/Request/Deserializer/Json.php
@@ -25,7 +25,7 @@
  */
 namespace Magento\Webapi\Controller\Rest\Request\Deserializer;
 
-use \Magento\Framework\App\State;
+use Magento\Framework\App\State;
 
 class Json implements \Magento\Webapi\Controller\Rest\Request\DeserializerInterface
 {
@@ -55,7 +55,7 @@ class Json implements \Magento\Webapi\Controller\Rest\Request\DeserializerInterf
      * @param string $encodedBody Posted content from request.
      * @return array|null Return NULL if content is invalid.
      * @throws \InvalidArgumentException
-     * @throws \Magento\Webapi\Exception If decoding error was encountered.
+     * @throws \Magento\Webapi\Exception If decoding error occurs or in case of empty argument type
      */
     public function deserialize($encodedBody)
     {
@@ -64,6 +64,9 @@ class Json implements \Magento\Webapi\Controller\Rest\Request\DeserializerInterf
                 sprintf('"%s" data type is invalid. String is expected.', gettype($encodedBody))
             );
         }
+        if (empty($encodedBody)) {
+            throw new \Magento\Webapi\Exception(__('Request body should not be empty.'));
+        }
         try {
             $decodedBody = $this->_helper->jsonDecode($encodedBody);
         } catch (\Zend_Json_Exception $e) {
diff --git a/app/code/Magento/Webapi/Controller/Rest/Request/Deserializer/Xml.php b/app/code/Magento/Webapi/Controller/Rest/Request/Deserializer/Xml.php
index e5f234d5eb0..4c91e51e1a8 100644
--- a/app/code/Magento/Webapi/Controller/Rest/Request/Deserializer/Xml.php
+++ b/app/code/Magento/Webapi/Controller/Rest/Request/Deserializer/Xml.php
@@ -60,7 +60,7 @@ class Xml implements \Magento\Webapi\Controller\Rest\Request\DeserializerInterfa
      * @param string $xmlRequestBody XML document
      * @return array Data converted from XML document to array. Root node is excluded from response.
      * @throws \InvalidArgumentException In case of invalid argument type.
-     * @throws \Magento\Webapi\Exception If decoding error occurs.
+     * @throws \Magento\Webapi\Exception If decoding error occurs or in case of empty argument type
      */
     public function deserialize($xmlRequestBody)
     {
@@ -69,6 +69,9 @@ class Xml implements \Magento\Webapi\Controller\Rest\Request\DeserializerInterfa
                 sprintf('"%s" data type is invalid. String is expected.', gettype($xmlRequestBody))
             );
         }
+        if (empty($xmlRequestBody)) {
+            throw new \Magento\Webapi\Exception(__('Request body is expected.'));
+        }
         /** Disable external entity loading to prevent possible vulnerability */
         $previousLoaderState = libxml_disable_entity_loader(true);
         set_error_handler(array($this, 'handleErrors'));
diff --git a/app/code/Magento/Webapi/Controller/Rest/Response/DataObjectConverter.php b/app/code/Magento/Webapi/Controller/Rest/Response/DataObjectConverter.php
index 5b8db14e58c..8fb3242d983 100644
--- a/app/code/Magento/Webapi/Controller/Rest/Response/DataObjectConverter.php
+++ b/app/code/Magento/Webapi/Controller/Rest/Response/DataObjectConverter.php
@@ -24,9 +24,9 @@
 
 namespace Magento\Webapi\Controller\Rest\Response;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObject;
-use Magento\Framework\Service\ExtensibleDataObjectConverter;
-use Magento\Webapi\Model\DataObjectProcessor;
+use Magento\Framework\Api\AbstractExtensibleObject;
+use Magento\Framework\Api\ExtensibleDataObjectConverter;
+use Magento\Framework\Reflection\DataObjectProcessor;
 
 /**
  * Data object converter for REST
diff --git a/app/code/Magento/Webapi/Controller/ServiceArgsSerializer.php b/app/code/Magento/Webapi/Controller/ServiceArgsSerializer.php
index c0a91eb2dc4..7af9aec600d 100644
--- a/app/code/Magento/Webapi/Controller/ServiceArgsSerializer.php
+++ b/app/code/Magento/Webapi/Controller/ServiceArgsSerializer.php
@@ -27,15 +27,17 @@ namespace Magento\Webapi\Controller;
 
 use Magento\Framework\ObjectManager;
 use Magento\Framework\ObjectManager\Config as ObjectManagerConfig;
-use Magento\Framework\Service\Config\Reader as ServiceConfigReader;
-use Magento\Framework\Service\Data\AttributeValue;
-use Magento\Framework\Service\Data\AttributeValueBuilder;
-use Magento\Webapi\Model\Config\ClassReflector\TypeProcessor;
-use Magento\Webapi\Model\DataObjectProcessor;
+use Magento\Framework\Api\Config\Reader as ServiceConfigReader;
+use Magento\Framework\Api\AttributeValue;
+use Magento\Framework\Api\AttributeValueBuilder;
+use Magento\Framework\Reflection\TypeProcessor;
 use Zend\Code\Reflection\ClassReflection;
 use Zend\Code\Reflection\MethodReflection;
 use Zend\Code\Reflection\ParameterReflection;
-use Magento\Framework\Service\SimpleDataObjectConverter;
+use Magento\Framework\Api\SimpleDataObjectConverter;
+use Magento\Framework\Exception\SerializationException;
+use Magento\Webapi\Exception as WebapiException;
+use Magento\Framework\Serialization\DataBuilderFactory;
 
 /**
  * Deserializes arguments from API requests.
@@ -44,11 +46,11 @@ use Magento\Framework\Service\SimpleDataObjectConverter;
  */
 class ServiceArgsSerializer
 {
-    /** @var \Magento\Webapi\Model\Config\ClassReflector\TypeProcessor */
-    protected $_typeProcessor;
+    /** @var \Magento\Framework\Reflection\TypeProcessor */
+    protected $typeProcessor;
 
-    /** @var ObjectManager */
-    protected $_objectManager;
+    /** @var DataBuilderFactory */
+    protected $builderFactory;
 
     /** @var ServiceConfigReader */
     protected $serviceConfigReader;
@@ -56,30 +58,24 @@ class ServiceArgsSerializer
     /** @var AttributeValueBuilder */
     protected $attributeValueBuilder;
 
-    /** @var \Magento\Framework\ObjectManager\Config */
-    protected $objectManagerConfig;
-
     /**
      * Initialize dependencies.
      *
      * @param TypeProcessor $typeProcessor
-     * @param ObjectManager $objectManager
+     * @param DataBuilderFactory $builderFactory
      * @param ServiceConfigReader $serviceConfigReader
      * @param AttributeValueBuilder $attributeValueBuilder
-     * @param ObjectManagerConfig $objectManagerConfig
      */
     public function __construct(
         TypeProcessor $typeProcessor,
-        ObjectManager $objectManager,
+        DataBuilderFactory $builderFactory,
         ServiceConfigReader $serviceConfigReader,
-        AttributeValueBuilder $attributeValueBuilder,
-        ObjectManagerConfig $objectManagerConfig
+        AttributeValueBuilder $attributeValueBuilder
     ) {
-        $this->_typeProcessor = $typeProcessor;
-        $this->_objectManager = $objectManager;
+        $this->typeProcessor = $typeProcessor;
+        $this->builderFactory = $builderFactory;
         $this->serviceConfigReader = $serviceConfigReader;
         $this->attributeValueBuilder = $attributeValueBuilder;
-        $this->objectManagerConfig = $objectManagerConfig;
     }
 
     /**
@@ -166,7 +162,7 @@ class ServiceArgsSerializer
         $data = is_array($data) ? $data : [];
         $class = new ClassReflection($className);
 
-        $builder = $this->getBuilder($className);
+        $builder = $this->builderFactory->getDataBuilder($className);
 
         foreach ($data as $propertyName => $value) {
             // Converts snake_case to uppercase CamelCase to help form getter/setter method names
@@ -175,7 +171,7 @@ class ServiceArgsSerializer
             $methodName = $this->_processGetterMethod($class, $camelCaseProperty);
             $methodReflection = $class->getMethod($methodName);
             if ($methodReflection->isPublic()) {
-                $returnType = $this->_typeProcessor->getGetterReturnType($methodReflection)['type'];
+                $returnType = $this->typeProcessor->getGetterReturnType($methodReflection)['type'];
                 $setterName = 'set' . $camelCaseProperty;
                 if ($camelCaseProperty === 'CustomAttributes') {
                     $setterValue = $this->convertCustomAttributeValue($value, $returnType, $className);
@@ -188,25 +184,6 @@ class ServiceArgsSerializer
         return $builder->create();
     }
 
-    /**
-     * Returns a builder for a given classname.
-     *
-     * @param string $className
-     * @return object a builder instance
-     */
-    protected function getBuilder($className)
-    {
-        $paramInstanceClassName = $this->objectManagerConfig->getPreference($className);
-        if (is_subclass_of($paramInstanceClassName, '\\' . DataObjectProcessor::BASE_MODEL_CLASS)) {
-            // By convention, need to lookup the concrete class preference for the data interface type and
-            // gets its builder.
-            return $this->_objectManager->create($paramInstanceClassName . "DataBuilder");
-        }
-        // By convention, for complex parameters that don't inherit from the data interface,
-        // create the name of the builder type by appending Builder to the end
-        return $this->_objectManager->create($className . "Builder");
-    }
-
     /**
      * Convert custom attribute data array to array of AttributeValue Data Object
      *
@@ -290,21 +267,26 @@ class ServiceArgsSerializer
      * @param mixed $value
      * @param string $type Convert given value to the this type
      * @return mixed
+     * @SuppressWarnings(PHPMD.CyclomaticComplexity)
      */
     protected function _convertValue($value, $type)
     {
-        $isArrayType = $this->_typeProcessor->isArrayType($type);
+        $isArrayType = $this->typeProcessor->isArrayType($type);
         if ($isArrayType && isset($value['item'])) {
             $value = $this->_removeSoapItemNode($value);
         }
-        if ($this->_typeProcessor->isTypeSimple($type) || $this->_typeProcessor->isTypeAny($type)) {
-            $result = $this->_typeProcessor->processSimpleAndAnyType($value, $type);
+        if ($this->typeProcessor->isTypeSimple($type) || $this->typeProcessor->isTypeAny($type)) {
+            try {
+                $result = $this->typeProcessor->processSimpleAndAnyType($value, $type);
+            } catch (SerializationException $e) {
+                throw new WebapiException($e->getMessage());
+            }
         } else {
             /** Complex type or array of complex types */
             if ($isArrayType) {
                 // Initializing the result for array type else it will return null for empty array
                 $result = is_array($value) ? [] : null;
-                $itemType = $this->_typeProcessor->getArrayItemType($type);
+                $itemType = $this->typeProcessor->getArrayItemType($type);
                 if (is_array($value)) {
                     foreach ($value as $key => $item) {
                         $result[$key] = $this->_createFromArray($itemType, $item);
diff --git a/app/code/Magento/Webapi/Controller/Soap/Request/Handler.php b/app/code/Magento/Webapi/Controller/Soap/Request/Handler.php
index d687f7fa50d..aa5e525823f 100644
--- a/app/code/Magento/Webapi/Controller/Soap/Request/Handler.php
+++ b/app/code/Magento/Webapi/Controller/Soap/Request/Handler.php
@@ -23,11 +23,11 @@
  */
 namespace Magento\Webapi\Controller\Soap\Request;
 
-use Magento\Framework\Api\Data\ExtensibleDataInterface;
+use Magento\Framework\Api\ExtensibleDataInterface;
 use Magento\Framework\AuthorizationInterface;
 use Magento\Framework\Exception\AuthorizationException;
-use Magento\Webapi\Model\DataObjectProcessor;
-use Magento\Framework\Service\SimpleDataObjectConverter;
+use Magento\Framework\Reflection\DataObjectProcessor;
+use Magento\Framework\Api\SimpleDataObjectConverter;
 use Magento\Webapi\Controller\ServiceArgsSerializer;
 use Magento\Webapi\Controller\Soap\Request as SoapRequest;
 use Magento\Webapi\Exception as WebapiException;
diff --git a/app/code/Magento/Webapi/Helper/Data.php b/app/code/Magento/Webapi/Helper/Data.php
index 53dec2cb713..f177aac385b 100644
--- a/app/code/Magento/Webapi/Helper/Data.php
+++ b/app/code/Magento/Webapi/Helper/Data.php
@@ -24,7 +24,7 @@
 namespace Magento\Webapi\Helper;
 
 use Magento\Integration\Controller\Adminhtml\Integration as IntegrationController;
-use Magento\Framework\Service\Data\AbstractExtensibleObject;
+use Magento\Framework\Api\AbstractExtensibleObject;
 
 class Data extends \Magento\Framework\App\Helper\AbstractHelper
 {
@@ -108,6 +108,20 @@ class Data extends \Magento\Framework\App\Helper\AbstractHelper
                 $serviceNameParts[] = $serviceVersion;
             }
             return $serviceNameParts;
+        } elseif (preg_match(\Magento\Webapi\Model\Config::API_PATTERN, $className, $matches)) {
+            $moduleNamespace = $matches[1];
+            $moduleName = $matches[2];
+            $moduleNamespace = ($moduleNamespace == 'Magento') ? '' : $moduleNamespace;
+            $serviceNameParts = explode('\\', trim($matches[3], '\\'));
+            if ($moduleName == $serviceNameParts[0]) {
+                /** Avoid duplication of words in service name */
+                $moduleName = '';
+            }
+            $parentServiceName = $moduleNamespace . $moduleName . array_shift($serviceNameParts);
+            array_unshift($serviceNameParts, $parentServiceName);
+            //Add temporary dummy version
+            $serviceNameParts[] = 'V1';
+            return $serviceNameParts;
         }
         throw new \InvalidArgumentException(sprintf('The service interface name "%s" is invalid.', $className));
     }
diff --git a/app/code/Magento/Webapi/Model/Config.php b/app/code/Magento/Webapi/Model/Config.php
index 065fcea3c77..6605b5391d8 100644
--- a/app/code/Magento/Webapi/Model/Config.php
+++ b/app/code/Magento/Webapi/Model/Config.php
@@ -42,6 +42,8 @@ class Config
      */
     const SERVICE_CLASS_PATTERN = '/^(.+?)\\\\(.+?)\\\\Service\\\\(V\d+)+(\\\\.+)Interface$/';
 
+    const API_PATTERN = '/^(.+?)\\\\(.+?)\\\\Api(\\\\.+)Interface$/';
+
     /**
      * @var WebapiCache
      */
diff --git a/app/code/Magento/Webapi/Model/Config/ClassReflector.php b/app/code/Magento/Webapi/Model/Config/ClassReflector.php
index bb736f6a21c..f96676c0e7b 100644
--- a/app/code/Magento/Webapi/Model/Config/ClassReflector.php
+++ b/app/code/Magento/Webapi/Model/Config/ClassReflector.php
@@ -31,15 +31,17 @@ use Zend\Server\Reflection\ReflectionMethod;
  */
 class ClassReflector
 {
-    /** @var \Magento\Webapi\Model\Config\ClassReflector\TypeProcessor */
+    /**
+     * @var \Magento\Framework\Reflection\TypeProcessor
+     */
     protected $_typeProcessor;
 
     /**
      * Construct reflector.
      *
-     * @param \Magento\Webapi\Model\Config\ClassReflector\TypeProcessor $typeProcessor
+     * @param \Magento\Framework\Reflection\TypeProcessor $typeProcessor
      */
-    public function __construct(\Magento\Webapi\Model\Config\ClassReflector\TypeProcessor $typeProcessor)
+    public function __construct(\Magento\Framework\Reflection\TypeProcessor $typeProcessor)
     {
         $this->_typeProcessor = $typeProcessor;
     }
diff --git a/app/code/Magento/Webapi/Model/Soap/Server.php b/app/code/Magento/Webapi/Model/Soap/Server.php
index 750cfef9b62..2551b604200 100644
--- a/app/code/Magento/Webapi/Model/Soap/Server.php
+++ b/app/code/Magento/Webapi/Model/Soap/Server.php
@@ -51,19 +51,29 @@ class Server
      */
     protected $_configScope;
 
-    /** @var \Magento\Framework\DomDocument\Factory */
+    /**
+     * @var \Magento\Framework\DomDocument\Factory
+     */
     protected $_domDocumentFactory;
 
-    /** @var \Magento\Webapi\Controller\Soap\Request */
+    /**
+     * @var \Magento\Webapi\Controller\Soap\Request
+     */
     protected $_request;
 
-    /** @var \Magento\Framework\StoreManagerInterface */
+    /**
+     * @var \Magento\Framework\StoreManagerInterface
+     */
     protected $_storeManager;
 
-    /** @var \Magento\Webapi\Model\Soap\Server\Factory */
+    /**
+     * @var \Magento\Webapi\Model\Soap\Server\Factory
+     */
     protected $_soapServerFactory;
 
-    /** @var \Magento\Webapi\Model\Config\ClassReflector\TypeProcessor */
+    /**
+     * @var \Magento\Framework\Reflection\TypeProcessor
+     */
     protected $_typeProcessor;
 
     /**
@@ -80,7 +90,7 @@ class Server
      * @param \Magento\Framework\DomDocument\Factory $domDocumentFactory
      * @param \Magento\Framework\StoreManagerInterface $storeManager
      * @param \Magento\Webapi\Model\Soap\Server\Factory $soapServerFactory
-     * @param \Magento\Webapi\Model\Config\ClassReflector\TypeProcessor $typeProcessor
+     * @param \Magento\Framework\Reflection\TypeProcessor $typeProcessor
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
      * @throws \Magento\Webapi\Exception
      */
@@ -91,7 +101,7 @@ class Server
         \Magento\Framework\DomDocument\Factory $domDocumentFactory,
         \Magento\Framework\StoreManagerInterface $storeManager,
         \Magento\Webapi\Model\Soap\Server\Factory $soapServerFactory,
-        \Magento\Webapi\Model\Config\ClassReflector\TypeProcessor $typeProcessor,
+        \Magento\Framework\Reflection\TypeProcessor $typeProcessor,
         \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
     ) {
         if (!extension_loaded('soap')) {
diff --git a/app/code/Magento/Webapi/Model/Soap/Wsdl/ComplexTypeStrategy.php b/app/code/Magento/Webapi/Model/Soap/Wsdl/ComplexTypeStrategy.php
index 5cf87b1c11c..7b1057b8915 100644
--- a/app/code/Magento/Webapi/Model/Soap/Wsdl/ComplexTypeStrategy.php
+++ b/app/code/Magento/Webapi/Model/Soap/Wsdl/ComplexTypeStrategy.php
@@ -41,7 +41,7 @@ class ComplexTypeStrategy extends AbstractComplexTypeStrategy
      */
     const APP_INF_NS = 'inf';
 
-    /** @var \Magento\Webapi\Model\Config\ClassReflector\TypeProcessor */
+    /** @var \Magento\Framework\Reflection\TypeProcessor */
     protected $_typeProcessor;
 
     /**
@@ -54,9 +54,9 @@ class ComplexTypeStrategy extends AbstractComplexTypeStrategy
     /**
      * Construct strategy with config helper.
      *
-     * @param \Magento\Webapi\Model\Config\ClassReflector\TypeProcessor $typeProcessor
+     * @param \Magento\Framework\Reflection\TypeProcessor $typeProcessor
      */
-    public function __construct(\Magento\Webapi\Model\Config\ClassReflector\TypeProcessor $typeProcessor)
+    public function __construct(\Magento\Framework\Reflection\TypeProcessor $typeProcessor)
     {
         $this->_typeProcessor = $typeProcessor;
     }
diff --git a/app/code/Magento/Webapi/Model/Soap/Wsdl/Generator.php b/app/code/Magento/Webapi/Model/Soap/Wsdl/Generator.php
index 0b68461418b..815aa42ee4e 100644
--- a/app/code/Magento/Webapi/Model/Soap/Wsdl/Generator.php
+++ b/app/code/Magento/Webapi/Model/Soap/Wsdl/Generator.php
@@ -51,7 +51,7 @@ class Generator
      */
     protected $_apiConfig;
 
-    /** @var \Magento\Webapi\Model\Config\ClassReflector\TypeProcessor */
+    /** @var \Magento\Framework\Reflection\TypeProcessor */
     protected $_typeProcessor;
 
     /**
@@ -72,14 +72,14 @@ class Generator
      * @param \Magento\Webapi\Model\Soap\Config $apiConfig
      * @param Factory $wsdlFactory
      * @param \Magento\Webapi\Model\Cache\Type $cache
-     * @param \Magento\Webapi\Model\Config\ClassReflector\TypeProcessor $typeProcessor
+     * @param \Framework\Magento\Reflection\TypeProcessor $typeProcessor
      * @param \Magento\Framework\StoreManagerInterface $storeManager
      */
     public function __construct(
         \Magento\Webapi\Model\Soap\Config $apiConfig,
         Factory $wsdlFactory,
         \Magento\Webapi\Model\Cache\Type $cache,
-        \Magento\Webapi\Model\Config\ClassReflector\TypeProcessor $typeProcessor,
+        \Magento\Framework\Reflection\TypeProcessor $typeProcessor,
         \Magento\Framework\StoreManagerInterface $storeManager
     ) {
         $this->_apiConfig = $apiConfig;
diff --git a/app/code/Magento/Webapi/composer.json b/app/code/Magento/Webapi/composer.json
index 8cd768b4e04..25cede30adf 100644
--- a/app/code/Magento/Webapi/composer.json
+++ b/app/code/Magento/Webapi/composer.json
@@ -3,17 +3,17 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-authorization": "0.1.0-alpha102",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-integration": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/module-user": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-authorization": "0.1.0-alpha103",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-integration": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/module-user": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Webapi/etc/di.xml b/app/code/Magento/Webapi/etc/di.xml
index 6f433e19756..21f0547d276 100644
--- a/app/code/Magento/Webapi/etc/di.xml
+++ b/app/code/Magento/Webapi/etc/di.xml
@@ -65,4 +65,9 @@
             </argument>
         </arguments>
     </type>
+    <type name="Magento\Framework\Reflection\DataObjectProcessor">
+        <arguments>
+            <argument name="cache" xsi:type="object">Magento\Webapi\Model\Cache\Type</argument>
+        </arguments>
+    </type>
 </config>
diff --git a/app/code/Magento/Webapi/sql/webapi_setup/install-1.0.0.0.php b/app/code/Magento/Webapi/sql/webapi_setup/install-1.0.0.0.php
index b647a6132b6..f82f378e0bc 100644
--- a/app/code/Magento/Webapi/sql/webapi_setup/install-1.0.0.0.php
+++ b/app/code/Magento/Webapi/sql/webapi_setup/install-1.0.0.0.php
@@ -24,7 +24,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* @var $installer \Magento\Framework\Module\Setup */
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 $installer->startSetup();
diff --git a/app/code/Magento/Webapi/sql/webapi_setup/upgrade-1.0.0.0-1.0.0.1.php b/app/code/Magento/Webapi/sql/webapi_setup/upgrade-1.0.0.0-1.0.0.1.php
index 0c8b235061c..ef1b64d31cf 100644
--- a/app/code/Magento/Webapi/sql/webapi_setup/upgrade-1.0.0.0-1.0.0.1.php
+++ b/app/code/Magento/Webapi/sql/webapi_setup/upgrade-1.0.0.0-1.0.0.1.php
@@ -24,7 +24,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* @var \Magento\Framework\Module\Setup $installer */
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 $installer->startSetup();
 $connection = $installer->getConnection();
diff --git a/app/code/Magento/Webapi/sql/webapi_setup/upgrade-1.0.0.1-1.0.0.2.php b/app/code/Magento/Webapi/sql/webapi_setup/upgrade-1.0.0.1-1.0.0.2.php
index 13894ac9c4d..382ba191354 100644
--- a/app/code/Magento/Webapi/sql/webapi_setup/upgrade-1.0.0.1-1.0.0.2.php
+++ b/app/code/Magento/Webapi/sql/webapi_setup/upgrade-1.0.0.1-1.0.0.2.php
@@ -24,7 +24,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* @var \Magento\Framework\Module\Setup $installer */
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 $installer->startSetup();
 $connection = $installer->getConnection();
diff --git a/app/code/Magento/Webapi/sql/webapi_setup/upgrade-1.0.0.2-1.0.0.3.php b/app/code/Magento/Webapi/sql/webapi_setup/upgrade-1.0.0.2-1.0.0.3.php
index 7bb63515a7c..7712580225e 100644
--- a/app/code/Magento/Webapi/sql/webapi_setup/upgrade-1.0.0.2-1.0.0.3.php
+++ b/app/code/Magento/Webapi/sql/webapi_setup/upgrade-1.0.0.2-1.0.0.3.php
@@ -24,7 +24,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* @var \Magento\Framework\Module\Setup $installer */
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 $installer->startSetup();
 $connection = $installer->getConnection();
diff --git a/app/code/Magento/Webapi/sql/webapi_setup/upgrade-1.0.0.3-1.0.0.4.php b/app/code/Magento/Webapi/sql/webapi_setup/upgrade-1.0.0.3-1.0.0.4.php
index ed311385098..3c7f9082934 100644
--- a/app/code/Magento/Webapi/sql/webapi_setup/upgrade-1.0.0.3-1.0.0.4.php
+++ b/app/code/Magento/Webapi/sql/webapi_setup/upgrade-1.0.0.3-1.0.0.4.php
@@ -24,7 +24,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* @var \Magento\Framework\Module\Setup $installer */
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 $installer->startSetup();
 $connection = $installer->getConnection();
diff --git a/app/code/Magento/Weee/Model/Tax.php b/app/code/Magento/Weee/Model/Tax.php
index 664502c7239..3f983cde38f 100644
--- a/app/code/Magento/Weee/Model/Tax.php
+++ b/app/code/Magento/Weee/Model/Tax.php
@@ -28,6 +28,7 @@ use Magento\Framework\Pricing\PriceCurrencyInterface;
 use Magento\Store\Model\Website;
 use Magento\Customer\Model\Converter as CustomerConverter;
 use Magento\Tax\Model\Calculation;
+use Magento\Customer\Service\V1\CustomerAddressServiceInterface as AddressServiceInterface;
 
 class Tax extends \Magento\Framework\Model\AbstractModel
 {
@@ -105,6 +106,11 @@ class Tax extends \Magento\Framework\Model\AbstractModel
      */
     protected $priceCurrency;
 
+    /**
+     * @var AddressServiceInterface
+     */
+    protected $_addressService;
+
     /**
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
@@ -112,6 +118,7 @@ class Tax extends \Magento\Framework\Model\AbstractModel
      * @param \Magento\Framework\StoreManagerInterface $storeManager
      * @param \Magento\Tax\Model\CalculationFactory $calculationFactory
      * @param \Magento\Customer\Model\Session $customerSession
+     * @param AddressServiceInterface $addressService
      * @param \Magento\Tax\Helper\Data $taxData
      * @param Resource\Tax $resource
      * @param CustomerConverter $customerConverter
@@ -127,6 +134,7 @@ class Tax extends \Magento\Framework\Model\AbstractModel
         \Magento\Framework\StoreManagerInterface $storeManager,
         \Magento\Tax\Model\CalculationFactory $calculationFactory,
         \Magento\Customer\Model\Session $customerSession,
+        AddressServiceInterface $addressService,
         \Magento\Tax\Helper\Data $taxData,
         \Magento\Weee\Model\Resource\Tax $resource,
         CustomerConverter $customerConverter,
@@ -139,6 +147,7 @@ class Tax extends \Magento\Framework\Model\AbstractModel
         $this->_storeManager = $storeManager;
         $this->_calculationFactory = $calculationFactory;
         $this->_customerSession = $customerSession;
+        $this->_addressService = $addressService;
         $this->_taxData = $taxData;
         $this->customerConverter = $customerConverter;
         $this->weeeConfig = $weeeConfig;
@@ -247,9 +256,14 @@ class Tax extends \Magento\Framework\Model\AbstractModel
         /** @var \Magento\Tax\Model\Calculation $calculator */
         $calculator = $this->_calculationFactory->create();
 
-        if ($shipping) {
+        if ($shipping && $shipping->getCountryId()) {
             $customerTaxClass = $shipping->getQuote()->getCustomerTaxClassId();
         } else {
+            // if customer logged use it default shipping and billing address
+            if ($customerId = $this->_customerSession->getCustomerId()) {
+                $shipping = $this->_addressService->getDefaultShippingAddress($customerId);
+                $billing = $this->_addressService->getDefaultBillingAddress($customerId);
+            }
             $customerTaxClass = null;
         }
 
diff --git a/app/code/Magento/Weee/composer.json b/app/code/Magento/Weee/composer.json
index 8c696bf9f40..d455549da8f 100644
--- a/app/code/Magento/Weee/composer.json
+++ b/app/code/Magento/Weee/composer.json
@@ -3,21 +3,21 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-catalog": "0.1.0-alpha102",
-        "magento/module-tax": "0.1.0-alpha102",
-        "magento/module-sales": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/module-directory": "0.1.0-alpha102",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-eav": "0.1.0-alpha102",
-        "magento/module-customer": "0.1.0-alpha102",
-        "magento/module-bundle": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-catalog": "0.1.0-alpha103",
+        "magento/module-tax": "0.1.0-alpha103",
+        "magento/module-sales": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/module-directory": "0.1.0-alpha103",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-eav": "0.1.0-alpha103",
+        "magento/module-customer": "0.1.0-alpha103",
+        "magento/module-bundle": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Weee/sql/weee_setup/install-1.6.0.0.php b/app/code/Magento/Weee/sql/weee_setup/install-1.6.0.0.php
index 18f4680e81c..842fc4fb4bb 100644
--- a/app/code/Magento/Weee/sql/weee_setup/install-1.6.0.0.php
+++ b/app/code/Magento/Weee/sql/weee_setup/install-1.6.0.0.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/** @var $installer \Magento\Sales\Model\Resource\Setup */
+/** @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 $installer->startSetup();
 /**
diff --git a/app/code/Magento/Widget/Model/NamespaceResolver.php b/app/code/Magento/Widget/Model/NamespaceResolver.php
index d0ad316e2f1..aa0f58b4855 100644
--- a/app/code/Magento/Widget/Model/NamespaceResolver.php
+++ b/app/code/Magento/Widget/Model/NamespaceResolver.php
@@ -66,8 +66,8 @@ class NamespaceResolver
 
         $explodeString = strpos(
             $name,
-            \Magento\Framework\Autoload\IncludePath::NS_SEPARATOR
-        ) === false ? '_' : \Magento\Framework\Autoload\IncludePath::NS_SEPARATOR;
+            '\\'
+        ) === false ? '_' : '\\';
         $name = explode($explodeString, strtolower($name));
 
         $partsNum = count($name);
diff --git a/app/code/Magento/Widget/composer.json b/app/code/Magento/Widget/composer.json
index fba71ba0cca..7e6a5e30b44 100644
--- a/app/code/Magento/Widget/composer.json
+++ b/app/code/Magento/Widget/composer.json
@@ -3,16 +3,16 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-cms": "0.1.0-alpha102",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/module-catalog": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-cms": "0.1.0-alpha103",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/module-catalog": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Widget/data/widget_setup/data-upgrade-1.6.0.0-1.6.0.1.php b/app/code/Magento/Widget/data/widget_setup/data-upgrade-1.6.0.0-1.6.0.1.php
index b37f109a62f..a6891755ce3 100644
--- a/app/code/Magento/Widget/data/widget_setup/data-upgrade-1.6.0.0-1.6.0.1.php
+++ b/app/code/Magento/Widget/data/widget_setup/data-upgrade-1.6.0.0-1.6.0.1.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/** @var $installer \Magento\Framework\Module\Setup\Migration */
+/** @var $this \Magento\Framework\Module\Setup */
 $installer = $this->createMigrationSetup();
 $installer->startSetup();
 
diff --git a/app/code/Magento/Widget/sql/widget_setup/install-1.6.0.0.php b/app/code/Magento/Widget/sql/widget_setup/install-1.6.0.0.php
index 189db7d90bc..2f38c10d4aa 100644
--- a/app/code/Magento/Widget/sql/widget_setup/install-1.6.0.0.php
+++ b/app/code/Magento/Widget/sql/widget_setup/install-1.6.0.0.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* @var $installer \Magento\Framework\Module\Setup */
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 $installer->startSetup();
diff --git a/app/code/Magento/Widget/sql/widget_setup/upgrade-1.6.0.1-1.6.0.2.php b/app/code/Magento/Widget/sql/widget_setup/upgrade-1.6.0.1-1.6.0.2.php
index 604925dda45..fa0c7005404 100644
--- a/app/code/Magento/Widget/sql/widget_setup/upgrade-1.6.0.1-1.6.0.2.php
+++ b/app/code/Magento/Widget/sql/widget_setup/upgrade-1.6.0.1-1.6.0.2.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* @var $installer \Magento\Framework\Module\Setup */
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
 
 $installer->startSetup();
diff --git a/app/code/Magento/Wishlist/Block/Item/Configure.php b/app/code/Magento/Wishlist/Block/Item/Configure.php
index 5d8f40d8375..fe762e92b3b 100644
--- a/app/code/Magento/Wishlist/Block/Item/Configure.php
+++ b/app/code/Magento/Wishlist/Block/Item/Configure.php
@@ -63,6 +63,16 @@ class Configure extends \Magento\Framework\View\Element\Template
         parent::__construct($context, $data);
     }
 
+    /**
+     * Return wishlist widget options
+     *
+     * @return array
+     */
+    public function getWishlistOptions()
+    {
+        return ['productType' => $this->getProduct()->getTypeId()];
+    }
+
     /**
      * Returns product being edited
      *
diff --git a/app/code/Magento/Wishlist/Block/Rss/EmailLink.php b/app/code/Magento/Wishlist/Block/Rss/EmailLink.php
index 0b9ef0a96aa..ad360b004cc 100644
--- a/app/code/Magento/Wishlist/Block/Rss/EmailLink.php
+++ b/app/code/Magento/Wishlist/Block/Rss/EmailLink.php
@@ -34,4 +34,18 @@ class EmailLink extends Link
      * @var string
      */
     protected $_template = 'rss/email.phtml';
+
+    /**
+     * @return string
+     */
+    protected function getLinkParams()
+    {
+        $params = parent::getLinkParams();
+        $wishlist = $this->wishlistHelper->getWishlist();
+        $sharingCode = $wishlist->getSharingCode();
+        if ($sharingCode) {
+            $params['sharing_code'] = $sharingCode;
+        }
+        return $params;
+    }
 }
diff --git a/app/code/Magento/Wishlist/Model/Rss/Wishlist.php b/app/code/Magento/Wishlist/Model/Rss/Wishlist.php
index 7d9632b68c2..00da15cb568 100644
--- a/app/code/Magento/Wishlist/Model/Rss/Wishlist.php
+++ b/app/code/Magento/Wishlist/Model/Rss/Wishlist.php
@@ -77,6 +77,16 @@ class Wishlist implements DataProviderInterface
      */
     protected $wishlistBlock;
 
+    /**
+     * @var \Magento\Framework\App\RequestInterface
+     */
+    protected $request;
+
+    /**
+     * @var \Magento\Customer\Model\CustomerFactory
+     */
+    protected $customerFactory;
+
     /**
      * @param \Magento\Wishlist\Helper\Rss $wishlistHelper
      * @param \Magento\Wishlist\Block\Customer\Wishlist $wishlistBlock
@@ -85,7 +95,11 @@ class Wishlist implements DataProviderInterface
      * @param \Magento\Framework\UrlInterface $urlBuilder
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
      * @param \Magento\Framework\Event\ManagerInterface $eventManager
+     * @param \Magento\Customer\Model\CustomerFactory $customerFactory
      * @param \Magento\Framework\View\LayoutInterface $layout
+     * @param \Magento\Framework\App\RequestInterface $request
+     *
+     * @SuppressWarnings(PHPMD.ExcessiveParameterList)
      */
     public function __construct(
         \Magento\Wishlist\Helper\Rss $wishlistHelper,
@@ -95,7 +109,9 @@ class Wishlist implements DataProviderInterface
         \Magento\Framework\UrlInterface $urlBuilder,
         \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
         \Magento\Framework\Event\ManagerInterface $eventManager,
-        \Magento\Framework\View\LayoutInterface $layout
+        \Magento\Customer\Model\CustomerFactory $customerFactory,
+        \Magento\Framework\View\LayoutInterface $layout,
+        \Magento\Framework\App\RequestInterface $request
     ) {
         $this->wishlistHelper = $wishlistHelper;
         $this->wishlistBlock = $wishlistBlock;
@@ -104,7 +120,9 @@ class Wishlist implements DataProviderInterface
         $this->urlBuilder = $urlBuilder;
         $this->scopeConfig = $scopeConfig;
         $this->eventManager = $eventManager;
+        $this->customerFactory = $customerFactory;
         $this->layout = $layout;
+        $this->request = $request;
     }
 
     /**
@@ -173,7 +191,7 @@ class Wishlist implements DataProviderInterface
                 $description .= '</td></tr></table>';
 
                 $data['entries'][] = (array(
-                    'title' => $this->outputHelper->productAttribute($product, $product->getName(), 'name'),
+                    'title' => $product->getName(),
                     'link' => $productUrl,
                     'description' => $description
                 ));
@@ -213,7 +231,9 @@ class Wishlist implements DataProviderInterface
      */
     public function getHeader()
     {
-        $title = __('%1\'s Wishlist', $this->wishlistHelper->getCustomerName());
+        $customerId = $this->getWishlist()->getCustomerId();
+        $customer = $this->customerFactory->create()->load($customerId);
+        $title = __('%1\'s Wishlist', $customer->getName());
         $newUrl = $this->urlBuilder->getUrl(
             'wishlist/shared/index',
             array('code' => $this->getWishlist()->getSharingCode())
@@ -230,12 +250,6 @@ class Wishlist implements DataProviderInterface
     protected function getWishlist()
     {
         $wishlist = $this->wishlistHelper->getWishlist();
-        $currentCustomer = $this->wishlistHelper->getCustomer();
-        if (!$wishlist->getVisibility() && $currentCustomer
-            && ($wishlist->getCustomerId() != $currentCustomer->getId())
-        ) {
-            $wishlist->unsetData();
-        }
         return $wishlist;
     }
 
@@ -274,4 +288,15 @@ class Wishlist implements DataProviderInterface
     {
         return array();
     }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function isAuthRequired()
+    {
+        if ($this->request->getParam('sharing_code') == $this->getWishlist()->getSharingCode()) {
+            return false;
+        }
+        return true;
+    }
 }
diff --git a/app/code/Magento/Wishlist/composer.json b/app/code/Magento/Wishlist/composer.json
index a244ab1d6fc..cd936a1bca3 100644
--- a/app/code/Magento/Wishlist/composer.json
+++ b/app/code/Magento/Wishlist/composer.json
@@ -3,25 +3,25 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/module-store": "0.1.0-alpha102",
-        "magento/module-customer": "0.1.0-alpha102",
-        "magento/module-catalog": "0.1.0-alpha102",
-        "magento/module-core": "0.1.0-alpha102",
-        "magento/module-checkout": "0.1.0-alpha102",
-        "magento/module-theme": "0.1.0-alpha102",
-        "magento/module-catalog-inventory": "0.1.0-alpha102",
-        "magento/module-rss": "0.1.0-alpha102",
-        "magento/module-backend": "0.1.0-alpha102",
-        "magento/module-bundle": "0.1.0-alpha102",
-        "magento/module-sales": "0.1.0-alpha102",
-        "magento/module-grouped-product": "0.1.0-alpha102",
-        "magento/module-configurable-product": "0.1.0-alpha102",
-        "magento/module-downloadable": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/module-store": "0.1.0-alpha103",
+        "magento/module-customer": "0.1.0-alpha103",
+        "magento/module-catalog": "0.1.0-alpha103",
+        "magento/module-core": "0.1.0-alpha103",
+        "magento/module-checkout": "0.1.0-alpha103",
+        "magento/module-theme": "0.1.0-alpha103",
+        "magento/module-catalog-inventory": "0.1.0-alpha103",
+        "magento/module-rss": "0.1.0-alpha103",
+        "magento/module-backend": "0.1.0-alpha103",
+        "magento/module-bundle": "0.1.0-alpha103",
+        "magento/module-sales": "0.1.0-alpha103",
+        "magento/module-grouped-product": "0.1.0-alpha103",
+        "magento/module-configurable-product": "0.1.0-alpha103",
+        "magento/module-downloadable": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/code/Magento/Wishlist/sql/wishlist_setup/install-1.6.0.0.php b/app/code/Magento/Wishlist/sql/wishlist_setup/install-1.6.0.0.php
index 31fec1759bb..3334dab095f 100644
--- a/app/code/Magento/Wishlist/sql/wishlist_setup/install-1.6.0.0.php
+++ b/app/code/Magento/Wishlist/sql/wishlist_setup/install-1.6.0.0.php
@@ -22,8 +22,8 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
+/* @var $installer \Magento\Setup\Module\SetupModule */
 $installer = $this;
-/* @var $installer \Magento\Framework\Module\Setup */
 
 $installer->startSetup();
 
diff --git a/app/code/Magento/Wishlist/view/frontend/layout/wishlist_index_configure_type_bundle.xml b/app/code/Magento/Wishlist/view/frontend/layout/wishlist_index_configure_type_bundle.xml
index f275f2e67b0..29bfe1698be 100644
--- a/app/code/Magento/Wishlist/view/frontend/layout/wishlist_index_configure_type_bundle.xml
+++ b/app/code/Magento/Wishlist/view/frontend/layout/wishlist_index_configure_type_bundle.xml
@@ -65,7 +65,7 @@
             </action>
         </referenceBlock>
         <referenceContainer name="content">
-            <container name="bundle.options.container" label="invisible" htmlTag="div" htmlClass="bundle-options-container" after="product.info.main"/>
+            <container name="bundle.options.container" htmlTag="div" htmlClass="bundle-options-container" after="product.info.main"/>
         </referenceContainer>
         <referenceContainer name="product.info.type">
             <block class="Magento\Bundle\Block\Catalog\Product\View\Type\Bundle" name="product.info.bundle" as="product_type_data" template="catalog/product/view/type/bundle.phtml"/>
diff --git a/app/code/Magento/Wishlist/view/frontend/templates/item/column/comment.phtml b/app/code/Magento/Wishlist/view/frontend/templates/item/column/comment.phtml
index 4e793ba41d3..06451c891ef 100644
--- a/app/code/Magento/Wishlist/view/frontend/templates/item/column/comment.phtml
+++ b/app/code/Magento/Wishlist/view/frontend/templates/item/column/comment.phtml
@@ -27,4 +27,11 @@
 $item = $this->getItem();
 ?>
 
-<textarea placeholder="<?php echo $this->helper('Magento\Wishlist\Helper\Data')->defaultCommentString() ?>" name="description[<?php echo $item->getWishlistItemId() ?>]" title="<?php echo __('Comment') ?>" class="product-item-comment"><?php echo($this->escapeHtml($item->getDescription())) ?></textarea>
+<div class="field comment-box">
+    <label class="label" for="product-item-comment-<?php echo $item->getWishlistItemId() ?>">
+        <span><?php echo __('Comment') ?></span>
+    </label>
+    <div class="control">
+        <textarea id="product-item-comment-<?php echo $item->getWishlistItemId() ?>" placeholder="<?php echo $this->helper('Magento\Wishlist\Helper\Data')->defaultCommentString() ?>" name="description[<?php echo $item->getWishlistItemId() ?>]" title="<?php echo __('Comment') ?>" class="product-item-comment"><?php echo($this->escapeHtml($item->getDescription())) ?></textarea>
+    </div>
+</div>
diff --git a/app/code/Magento/Wishlist/view/frontend/templates/item/list.phtml b/app/code/Magento/Wishlist/view/frontend/templates/item/list.phtml
index 91c76686427..60b463609a7 100644
--- a/app/code/Magento/Wishlist/view/frontend/templates/item/list.phtml
+++ b/app/code/Magento/Wishlist/view/frontend/templates/item/list.phtml
@@ -32,7 +32,7 @@ $columns = $this->getColumns();
     <?php if (count($this->getItems())): ?>
     <ol class="product-items">
         <?php foreach ($this->getItems() as $item): ?>
-        <?php echo ($iterator++==1) ? '<li class="product-item" id="item_<?php echo $item->getId();?>">' : '</li><li class="product-item" id="item_<?php echo $item->getId();?>">' ?>
+        <?php echo ($iterator++==1) ? '<li class="product-item" id="item_' . $item->getId() . '">' : '</li><li class="product-item" id="item_' . $item->getId() .'">' ?>
             <div class="product-item-info">
                 <?php foreach ($columns as $column): ?>
                     <?php $column->setItem($item); echo $column->toHtml($item);?>
diff --git a/app/code/Magento/Wishlist/view/frontend/templates/shared.phtml b/app/code/Magento/Wishlist/view/frontend/templates/shared.phtml
index 95031f47d86..8342b8aba91 100644
--- a/app/code/Magento/Wishlist/view/frontend/templates/shared.phtml
+++ b/app/code/Magento/Wishlist/view/frontend/templates/shared.phtml
@@ -101,5 +101,5 @@ $imageBlock =  $this->getLayout()->createBlock('Magento\Catalog\Block\Product\Im
         </div>
     </form>
 <?php else: ?>
-    <p><?php echo __('Wish List is empty now.') ?></p>
+    <div class="message info empty"><div><?php echo __('Wish List is empty now.') ?></div></div>
 <?php endif ?>
diff --git a/app/code/Magento/Wishlist/view/frontend/templates/sidebar.phtml b/app/code/Magento/Wishlist/view/frontend/templates/sidebar.phtml
index f95a99dc897..6a055b7cfd7 100644
--- a/app/code/Magento/Wishlist/view/frontend/templates/sidebar.phtml
+++ b/app/code/Magento/Wishlist/view/frontend/templates/sidebar.phtml
@@ -29,27 +29,31 @@ $wishlistHelper = $this->helper('Magento\Wishlist\Helper\Data');
 ?>
 <?php if ($wishlistHelper->isAllow()) : ?>
     <?php $imageBlock =  $this->getLayout()->createBlock('Magento\Catalog\Block\Product\Image');?>
-    <div class="block wishlist">
-        <div class="title">
+    <div class="block block-wishlist">
+        <div class="block-title">
             <strong><?php echo $this->getTitle(); ?></strong>
             <?php if($count > 0): ?>
-            <span class="counter qty"><?php echo ($count == 1) ? __('1 item') : __('%1 items',$count) ?></span>
+                <span class="counter"><?php echo ($count == 1) ? __('1 item') : __('%1 items',$count) ?></span>
             <?php endif; ?>
         </div>
-        <div class="content">
+        <div class="block-content">
             <strong class="subtitle"><?php echo __('Last Added Items') ?></strong>
             <?php if ($this->hasWishlistItems()): ?>
-                <ol class="items minilist products" id="wishlist-sidebar">
+                <ol class="product-items" id="wishlist-sidebar">
                     <?php $iterator = 1; ?>
                     <?php foreach ($this->getWishlistItems() as $item): ?>
                         <?php $product = $item->getProduct(); ?>
-                        <?php echo ($iterator++ == 1) ? '<li class="item product">' : '</li><li class="item product">' ?>
-                        <div class="product">
-                            <a class="product photo" href="<?php echo $this->getProductUrl($item) ?>" title="<?php echo $this->escapeHtml($product->getName()) ?>">
+                        <?php echo ($iterator++ == 1) ? '<li class="product-item">' : '</li><li class="product-item">' ?>
+                        <div class="product-item-info">
+                            <a class="product-item-photo" href="<?php echo $this->getProductUrl($item) ?>"
+                               title="<?php echo $this->escapeHtml($product->getName()) ?>">
                                 <?php echo $imageBlock->init($product, 'wishlist_sidebar_block')->toHtml() ?>
                             </a>
-                            <div class="product details">
-                                <strong class="product name"><a href="<?php echo $this->getProductUrl($item) ?>"><?php echo $this->escapeHtml($product->getName()) ?></a></strong>
+                            <div class="product-item-details">
+                                <strong class="product-item-name">
+                                    <a href="<?php echo $this->getProductUrl($item) ?>"
+                                       class="product-item-link"><?php echo $this->escapeHtml($product->getName()) ?></a>
+                                </strong>
                                 <?php
                                     echo $this->getProductPriceHtml(
                                         $product,
@@ -58,20 +62,25 @@ $wishlistHelper = $this->helper('Magento\Wishlist\Helper\Data');
                                         ['item' => $item]
                                     );
                                 ?>
-                                <div class="product actions">
+                                <div class="product-item-actions">
                                     <?php if ($product->isSaleable() && $product->isVisibleInSiteVisibility()): ?>
-                                        <?php if ($product->getTypeInstance()->hasRequiredOptions($product)): ?>
-                                            <div class="primary"><a href="<?php echo $this->getItemAddToCartUrl($item) ?>" class="action tocart primary"><span><?php echo __('Add to Cart') ?></span></a></div>
-                                        <?php else: ?>
-                                            <?php
-                                                $postDataHelper = $this->helper('Magento\Core\Helper\PostData');
-                                                $postData = $postDataHelper->getPostData($this->getItemAddToCartUrl($item), ['product' => $product->getEntityId()])
-                                            ?>
-                                            <div class="primary"><button type="button" class="action tocart primary" data-post='<?php echo $postData; ?>'><span><?php echo __('Add to Cart') ?></span></button></div>
+                                    <div class="actions-primary">
+                                    <?php if ($product->getTypeInstance()->hasRequiredOptions($product)): ?>
+                                        <a href="<?php echo $this->getItemAddToCartUrl($item) ?>"
+                                           class="action tocart primary"><span><?php echo __('Add to Cart') ?></span></a>
+                                    <?php else: ?>
+                                        <?php
+                                            $postDataHelper = $this->helper('Magento\Core\Helper\PostData');
+                                            $postData = $postDataHelper->getPostData($this->getItemAddToCartUrl($item), ['product' => $product->getEntityId()])
+                                        ?>
+                                            <button type="button" class="action tocart primary" data-post='<?php echo $postData; ?>'><span><?php echo __('Add to Cart') ?></span></button>
                                         <?php endif; ?>
+                                    </div>
                                     <?php endif; ?>
-                                    <div class="secondary">
-                                        <a href="#" data-post='<?php echo $this->getItemRemoveParams($item) ?>' title="<?php echo __('Remove This Item') ?>" class="btn-remove action delete">
+                                    <div class="actions-secondary">
+                                        <a href="#" data-post='<?php echo $this->getItemRemoveParams($item) ?>'
+                                           title="<?php echo __('Remove This Item') ?>"
+                                           class="btn-remove action delete">
                                             <span><?php echo __('Remove This Item') ?></span>
                                         </a>
                                     </div>
@@ -81,11 +90,15 @@ $wishlistHelper = $this->helper('Magento\Wishlist\Helper\Data');
                         <?php echo ($iterator == count($this->getWishlistItems()) + 1) ? '</li>' : '' ?>
                     <?php endforeach; ?>
                 </ol>
-                <div class="actions">
-                    <a class="action details" href="<?php echo $this->helper('Magento\Wishlist\Helper\Data')->getListUrl() ?>"><span><?php echo __('Go to Wish List') ?></span></a>
+                <div class="actions-toolbar">
+                    <div class="primary">
+                        <a class="action details"
+                           href="<?php echo $this->helper('Magento\Wishlist\Helper\Data')->getListUrl() ?>"
+                           title="<?php echo __('Go to Wish List') ?>"><span><?php echo __('Go to Wish List') ?></span></a>
+                    </div>
                 </div>
             <?php else: ?>
-                <p class="message info empty"><?php echo __('You have no items in your wish list.') ?></p>
+                <div class="empty"><?php echo __('You have no items in your wish list.') ?></div>
             <?php endif ?>
         </div>
     </div>
diff --git a/app/code/Magento/Wishlist/view/frontend/web/js/add-to-wishlist.js b/app/code/Magento/Wishlist/view/frontend/web/js/add-to-wishlist.js
index 4156bc37f06..a8f81505c12 100644
--- a/app/code/Magento/Wishlist/view/frontend/web/js/add-to-wishlist.js
+++ b/app/code/Magento/Wishlist/view/frontend/web/js/add-to-wishlist.js
@@ -56,6 +56,8 @@ define([
             var self = this;
             $('[data-action="add-to-wishlist"]').each(function(index, element) {
                 var params = $(element).data('post');
+                if (!params)
+                    params = {};
                 params.data = $.extend({}, params.data, dataToAdd, {'qty': $(self.options.qtyInfo).val()});
                 $(element).data('post', params);
             });
diff --git a/app/design/adminhtml/Magento/backend/Magento_Ui/web/css/source/module.less b/app/design/adminhtml/Magento/backend/Magento_Ui/web/css/source/module.less
index 6f705d63f3c..b207acdbc27 100644
--- a/app/design/adminhtml/Magento/backend/Magento_Ui/web/css/source/module.less
+++ b/app/design/adminhtml/Magento/backend/Magento_Ui/web/css/source/module.less
@@ -167,7 +167,6 @@
             margin-left: -3px;
         }
         &.active {
-            outline: 0;
             &:after {
                 content: @icon-pointer-up;
             }
@@ -365,7 +364,6 @@
         }
         &:active,
         &.active {
-            outline: 0;
             &:before {
                 content: @icon-pointer-up;
             }
diff --git a/app/design/adminhtml/Magento/backend/composer.json b/app/design/adminhtml/Magento/backend/composer.json
index 857fbb7947e..ef648d9f878 100644
--- a/app/design/adminhtml/Magento/backend/composer.json
+++ b/app/design/adminhtml/Magento/backend/composer.json
@@ -3,11 +3,11 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-theme",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/design/adminhtml/Magento/backend/theme.xml b/app/design/adminhtml/Magento/backend/theme.xml
index b02fedb1371..480251aaa9d 100644
--- a/app/design/adminhtml/Magento/backend/theme.xml
+++ b/app/design/adminhtml/Magento/backend/theme.xml
@@ -24,5 +24,5 @@
 -->
 <theme xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/Config/etc/theme.xsd">
     <title>Magento 2 backend</title>
-    <version>0.1.0-alpha102</version>
+    <version>0.1.0-alpha103</version>
 </theme>
diff --git a/app/design/adminhtml/Magento/backend/web/css/admin.less b/app/design/adminhtml/Magento/backend/web/css/admin.less
index 7fc011493c8..b79253b0f6c 100644
--- a/app/design/adminhtml/Magento/backend/web/css/admin.less
+++ b/app/design/adminhtml/Magento/backend/web/css/admin.less
@@ -637,7 +637,6 @@ input[type=tel]:focus,
 input[type=color]:focus,
 textarea:focus,
 select:focus {
-    outline: 0;
     border-color: #75b9f0;
     box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
 }
@@ -1848,9 +1847,6 @@ address {
     button:not(.primary):active {
       background-color: #cac3b4;
       border: 1px solid #989287;
-      outline: thin dotted;
-      outline: 5px auto -webkit-focus-ring-color;
-      outline-offset: -2px;
     }
     button:not(.primary):hover {
       background-color: #cac3b4;
@@ -1883,9 +1879,6 @@ address {
     button.primary:active {
       background-color: #026294;
       border: 1px solid #004c74;
-      outline: thin dotted;
-      outline: 5px auto -webkit-focus-ring-color;
-      outline-offset: -2px;
       color: #ffffff;
     }
     button.primary:hover {
@@ -2493,44 +2486,45 @@ address {
     text-shadow: 0 1px 0 #fff;
 }
 
-/*
-    Universal Sidebar Tabs
--------------------------------------- */
+//
+//    Universal Sidebar Tabs
+// --------------------------------------
 // TODO: for "Product" page only while refactoring */
-
 .side-col .ui-tabs .ui-accordion-header {
-    position: relative;
     margin: 10px 0 0;
-    padding: 5px 20px;
-    cursor: pointer;
-    color: #524c44;
-    text-shadow: 0 1px 0 #fff;
-}
-
-.side-col .ui-tabs .ui-accordion-header:focus {
-    outline: none;
-}
-
-.side-col .ui-accordion-header:before {
-    position: absolute;
-    left: 4px;
-    top: 7px;
-    font-family: 'MUI-Icons';
-    font-style: normal;
-    speak: none;
-    font-weight: normal;
-    -webkit-font-smoothing: antialiased;
-    content: '\e02a'; /* arrow right icon */
-    font-size: 14px;
-    color: #ada79e;
-}
-
-.side-col .ui-accordion-header:hover:before {
-    color: #777;
-}
-
-.side-col .ui-accordion-header-active:before {
-    content: '\e02c'; /* arrow down icon */
+    padding: 0;
+    &:focus {
+        outline: none;
+    }
+    span {
+        color: #524c44;
+        cursor: pointer;
+        display: block;
+        position: relative;
+        padding: 5px 20px;
+        text-shadow: 0 1px 0 #fff;
+        &:before {
+            position: absolute;
+            left: 4px;
+            top: 7px;
+            font-family: 'MUI-Icons';
+            font-style: normal;
+            speak: none;
+            font-weight: normal;
+            -webkit-font-smoothing: antialiased;
+            content: '\e02a'; // arrow right icon
+            font-size: 14px;
+            color: #ada79e;
+        }
+    }
+    &:hover {
+        span:before {
+            color: #777;
+        }
+    }
+    &-active span:before {
+        content: '\e02c'; // arrow down icon
+    }
 }
 
 .side-col .tabs {
@@ -2563,11 +2557,6 @@ address {
     transition: background 0.3s ease-in-out;
 }
 
-.side-col .tabs > li a:active,
-.side-col .tabs > li a:focus {
-    outline: none;
-}
-
 .side-col .tabs > li a:hover {
     background: #fff;
 }
diff --git a/app/design/adminhtml/Magento/backend/web/css/source/navigation.less b/app/design/adminhtml/Magento/backend/web/css/source/navigation.less
index 3ef24330dad..cd8a963a0cb 100644
--- a/app/design/adminhtml/Magento/backend/web/css/source/navigation.less
+++ b/app/design/adminhtml/Magento/backend/web/css/source/navigation.less
@@ -127,10 +127,6 @@
     font-weight: @baseFontWeightBold;
 }
 
-.navigation .level-0 > a:focus {
-    outline: none;
-}
-
 .navigation .level-0 > .submenu {
     opacity: 0;
     visibility: hidden;
diff --git a/app/design/adminhtml/Magento/backend/web/js/theme.js b/app/design/adminhtml/Magento/backend/web/js/theme.js
index 9839f7fe2b0..45d64c5d896 100644
--- a/app/design/adminhtml/Magento/backend/web/js/theme.js
+++ b/app/design/adminhtml/Magento/backend/web/js/theme.js
@@ -23,13 +23,14 @@
 
 define([
     "jquery",
+    'mage/smart-keyboard-handler',
     "jquery/ui",
     "jquery/hover-intent",
     "jquery/jquery.details",
     "jquery/jquery.tabs",
     "mage/backend/floating-header",
     "jquery/farbtastic"  // $(..).farbtastic()
-],function($) {
+],function($, keyboardHandler) {
     'use strict';
 
     $.widget('mage.globalSearch', {
@@ -430,6 +431,8 @@ define([
                 toggleColorPickerPosition();
             });
         switcherForIe8();
+
+        keyboardHandler.init();
     });
 
     $(document).on('ajaxComplete', function() {
diff --git a/app/design/adminhtml/Magento/backend/web/less/lib/buttons.less b/app/design/adminhtml/Magento/backend/web/less/lib/buttons.less
index e8993ab3e1a..f5c5cf88b70 100644
--- a/app/design/adminhtml/Magento/backend/web/less/lib/buttons.less
+++ b/app/design/adminhtml/Magento/backend/web/less/lib/buttons.less
@@ -107,9 +107,6 @@
 //     position: relative;
 //     z-index: 1;
 //     padding: 0;
-//     &:focus {
-//         outline: none;
-//     }
 //     > span {
 //         text-indent: -999em;
 //         display: block;
@@ -144,16 +141,10 @@
         .action-default.primary {
             //&:extend(.PrimaryAddButton all);
             border-radius: 2px 0 0 2px;
-            &:focus {
-                outline: none;
-            }
         }
     }
     > .action-default.primary {
        border-radius: 2px 0 0 2px;
-        &:focus {
-            outline: none;
-        }
     }
     > .action-toggle.primary {
         &:extend(.PrimaryButton all);
@@ -169,9 +160,6 @@
         position: relative;
         z-index: 2;
         filter: none;
-        &:focus {
-            outline: none;
-        }
         &:before {
             text-align: center;
         }
diff --git a/app/design/adminhtml/Magento/backend/web/mui/base.css b/app/design/adminhtml/Magento/backend/web/mui/base.css
index 210ff9cd67c..3730b65e174 100644
--- a/app/design/adminhtml/Magento/backend/web/mui/base.css
+++ b/app/design/adminhtml/Magento/backend/web/mui/base.css
@@ -163,26 +163,6 @@ select[size] {
     height: auto;
 }
 
-input[type=text]:focus,
-input[type=password]:focus,
-input[type=datetime]:focus,
-input[type=datetime-local]:focus,
-input[type=date]:focus,
-input[type=month]:focus,
-input[type=time]:focus,
-input[type=week]:focus,
-input[type=number]:focus,
-input[type=range]:focus,
-input[type=email]:focus,
-input[type=url]:focus,
-input[type=search]:focus,
-input.search:focus,
-input[type=tel]:focus,
-input[type=color]:focus,
-textarea:focus {
-    outline: 0;
-}
-
 input[type="radio"],
 input[type="checkbox"] {
     margin: 3px 0;
diff --git a/app/design/adminhtml/Magento/backend/web/mui/reset.css b/app/design/adminhtml/Magento/backend/web/mui/reset.css
index bef14e456b0..c833fdb6697 100644
--- a/app/design/adminhtml/Magento/backend/web/mui/reset.css
+++ b/app/design/adminhtml/Magento/backend/web/mui/reset.css
@@ -123,19 +123,10 @@ a:hover {
     color: #06e;
 }
 
-a:focus {
-    outline: thin dotted;
-}
-
 /**
  * Improve readability when focused and also mouse hovered in all browsers.
  */
 
-a:active,
-a:hover {
-    outline: 0;
-}
-
 /* ==========================================================================
    Typography
    ========================================================================== */
diff --git a/app/design/frontend/Magento/blank/Magento_Catalog/web/css/source/listings.less b/app/design/frontend/Magento/blank/Magento_Catalog/web/css/source/listings.less
index 093fc88ccf3..61dee9410de 100644
--- a/app/design/frontend/Magento/blank/Magento_Catalog/web/css/source/listings.less
+++ b/app/design/frontend/Magento/blank/Magento_Catalog/web/css/source/listings.less
@@ -45,10 +45,10 @@
 .products {
     margin: @indent-l-base 0;
 }
+
 .product {
     &-items {
         &:extend(.abstract-reset-list all);
-        margin-left: -20px;
     }
     &-item {
         vertical-align: top;
@@ -56,8 +56,7 @@
             width: 100%/2;
             display: inline-block;
         }
-        .box-sizing();
-        padding-left: 20px;
+        &:extend(.abstract-add-box-sizing all);
 
         &-name {
             .product-name();
@@ -192,6 +191,17 @@
     }
 }
 
+.column.main {
+    .product {
+        &-items {
+            margin-left: -20px;
+        }
+        &-item {
+            padding-left: 20px;
+        }
+    }
+}
+
 .price-container {
     .price {
         .font-size(14);
@@ -304,7 +314,7 @@
     .page-products.layout-3 .products-grid .product-item { width: 100%/3 }
 }
 .responsive(@break) when (@break = @screen-m) {
-    .page-products .products-grid .product-item{ width: 100%/3 }
+    .page-products .products-grid .product-item { width: 100%/3 }
     .page-products.layout-1 .products-grid .product-item { width: 100%/4 }
     .page-products.layout-3 .products-grid .product-item { width: 100%/2 }
 }
@@ -316,7 +326,6 @@
     .page-products .products-grid .product-item {
         width: 100%/4;
         width: 200px;
-        //margin: 0;
         margin-left: calc(~"(100% - 4 * 200px) / 3");
         padding: 0;
         &:nth-child(4n+1) {
diff --git a/app/design/frontend/Magento/blank/Magento_Catalog/web/css/source/module.less b/app/design/frontend/Magento/blank/Magento_Catalog/web/css/source/module.less
index f3b185bd801..1947f63b131 100644
--- a/app/design/frontend/Magento/blank/Magento_Catalog/web/css/source/module.less
+++ b/app/design/frontend/Magento/blank/Magento_Catalog/web/css/source/module.less
@@ -103,9 +103,8 @@
 }
 
 //
-//    Product grid and list item
+//    Product images general container
 //--------------------------------------
-
 .product-image {
     &-container {
         display: inline-block;
@@ -157,7 +156,6 @@
         .active {
             display: block;
             line-height: 1;
-            outline: @border-width-base solid @link-color-active;
         }
     }
 }
@@ -306,6 +304,95 @@
     .button-as-link();
 }
 
+//
+//    Sidebar product view
+//--------------------------------------
+.sidebar {
+    .product-items {
+        .product-item {
+            margin-bottom: @indent-base;
+            position: relative;
+            &-info {
+                position: relative;
+                width: auto;
+                .product-item-photo {
+                    position: absolute;
+                    left: 0;
+                    top: 0;
+                }
+            }
+            &-name {
+                margin-top: 0;
+            }
+            &-details {
+                margin: 0 0 0 85px;
+            }
+            &-actions {
+                display: block;
+                margin-top: @indent-s-base;
+            }
+        }
+        .price-box {
+            display: block;
+            font-weight: @font-weight-semibold;
+            margin: 7px 0;
+        }
+        .text {
+            margin-right: 8px;
+        }
+        .counter {
+            color: @color-primary-lighter;
+            font-size: 12px;
+            white-space: nowrap;
+        }
+        .minilist {
+            .price {
+                display: inline;
+                padding: 0;
+            }
+            .weee:before {
+                display: inline-block;
+            }
+        }
+    }
+    .action {
+        &.delete {
+            &:extend(.abstract-remove-button-for-blocks all);
+            position: absolute;
+            right: 0;
+            top: 0;
+        }
+    }
+    .subtitle {
+        &:extend(.abstract-no-display all);
+    }
+
+    //
+    //    Product images only
+    //--------------------------------------
+    .product-items-images {
+        &:extend(.abstract-add-clearfix all);
+        margin-left: -@indent-xs-base;
+        .product-item {
+            &:extend(.abstract-add-box-sizing all);
+            float: left;
+            padding-left: @indent-xs-base;
+        }
+    }
+
+    //
+    //    Product names only
+    //--------------------------------------
+    .product-items-names {
+        .product-item {
+            margin-bottom: @indent-s-base;
+        }
+        .product-item-name {
+            margin: 0;
+        }
+    }
+}
+
 //
 //    Mobile
 //--------------------------------------
@@ -338,6 +425,59 @@
             }
         }
     }
+    .sidebar {
+        .product-items {
+            .product-item {
+                &-info {
+                    .product-item-photo {
+                        position: relative;
+                        left: auto;
+                        top: auto;
+                        float: left;
+                        margin: 0 @indent-s-base  @indent-s-base 0;
+                    }
+                }
+                &-details {
+                    margin: 0;
+                }
+                &-actions {
+                    clear: left;
+                }
+            }
+        }
+    }
+
+    .product-add-form {
+        &:extend(.abstract-revert-field-type-desktop all);
+    }
+
+    .table-wrapper.comparison {
+        .table-overflow();
+    }
+}
+
+//
+//    Desktop large
+//--------------------------------------
+.responsive(@break) when (@break = @screen-xl) {
+    .sidebar {
+        .product-items {
+            .product-item {
+                &-info {
+                    .product-item-photo {
+                        float: none;
+                        margin: 0;
+                        position: absolute;
+                        left: 0;
+                        top: 0;
+                    }
+                }
+                &-details {
+                    margin-left: 85px;
+                }
+            }
+        }
+    }
 }
 
 //
@@ -402,15 +542,6 @@
     }
 }
 
-//
-//    Desktop
-//--------------------------------------
-.responsive(@break) when (@break = @screen-m) {
-    .product-add-form {
-        &:extend(.abstract-revert-field-type-desktop all);
-    }
-}
-
 //
 //    Compare Products Page
 //--------------------------------------
@@ -526,41 +657,31 @@ body.catalog-product-compare-index {
     top: 0;
     left: 0;
     width: auto;
-    background: #fff;
+    background: @page-bg-color;
 }
 
-.block.compare {
-    .item {
-        position: relative;
-        .product.name {
-            margin-left: 22px;
-        }
-        .action.delete {
+.block-compare {
+    .block-title {
+        &:extend(.abstract-block-title all);
+    }
+    .product-item .product-item-name {
+        margin-left: 22px;
+    }
+    .action {
+        &.delete {
             &:extend(.abstract-remove-button-for-blocks all);
             position: absolute;
             left: -6px;
             top: 0;
         }
+        &.compare {
+            &:extend(.abstract-revert-secondary-color all);
+        }
     }
-    .text {
-        margin-right: 8px;
-    }
-    .counter.qty {
-        color: #999999;
-        font-size: 12px;
-        white-space: nowrap;
+    .counter {
+        &:extend(.abstract-block-items-counter all);
     }
     .actions-toolbar {
-        margin: 17px 0;
-        max-width: 178px;
-    }
-}
-
-//
-//    Desktop
-//--------------------------------------
-.responsive(@break) when (@break = @screen-m) {
-    .table-wrapper.comparison {
-        .table-overflow();
+        margin: 17px 0 0;
     }
 }
diff --git a/app/design/frontend/Magento/blank/Magento_Catalog/web/css/source/toolbar.less b/app/design/frontend/Magento/blank/Magento_Catalog/web/css/source/toolbar.less
index 23b02a0b1ce..16e29bb4d4c 100644
--- a/app/design/frontend/Magento/blank/Magento_Catalog/web/css/source/toolbar.less
+++ b/app/design/frontend/Magento/blank/Magento_Catalog/web/css/source/toolbar.less
@@ -58,6 +58,9 @@
         }
         .limiter {
             display: none;
+            .control {
+                display: inline-block;
+            }
         }
     }
 }
diff --git a/app/design/frontend/Magento/blank/Magento_Catalog/web/css/source/widgets.less b/app/design/frontend/Magento/blank/Magento_Catalog/web/css/source/widgets.less
index ce46bfbe127..bc2266339ac 100644
--- a/app/design/frontend/Magento/blank/Magento_Catalog/web/css/source/widgets.less
+++ b/app/design/frontend/Magento/blank/Magento_Catalog/web/css/source/widgets.less
@@ -33,16 +33,50 @@ div.widget.category.link {
     &:extend(.abstract-margin-for-blocks-and-widgets all);
 }
 
-.block.widget.new {
+.block.widget {
+    .product-item-info {
+        width: auto;
+    }
     .pager {
-        padding: @indent-s-base;
-        background: @panel-bg;
-        margin-bottom: @indent-xl-base;
-        text-align: center;
-        .pages {
+        padding: 0;
+        .toolbar-amount {
+            float: none;
+            .font-size(12);
+        }
+        .pages-item-previous {
+            padding-left: 0;
+        }
+        .pages-item-next {
+            position: relative;
         }
-        .amount {
-            margin: 0 0 7px;
+        .items {
+            white-space: nowrap;
+        }
+    }
+}
+
+.responsive(@break) when (@break = @screen-s) {
+    .block.widget .products-grid .product-item,
+    .layout-1 .block.widget .products-grid .product-item,
+    .layout-3 .block.widget .products-grid .product-item { width: 100%/3 }
+}
+.responsive(@break) when (@break = @screen-m) {
+    .block.widget .products-grid .product-item{ width: 100%/3 }
+    .layout-1 .block.widget .products-grid .product-item { width: 100%/4 }
+    .layout-3 .block.widget .products-grid .product-item { width: 100%/2 }
+}
+.responsive(@break) when (@break = @screen-l) {
+    .block.widget .products-grid .product-item { width: 100%/5 }
+    .layout-1 .block.widget .products-grid .product-item { width: 100%/6 }
+    .layout-3 .block.widget .products-grid .product-item { width: 100%/4 }
+    .block.widget .products-grid .product-items { margin: 0; }
+    .block.widget .products-grid .product-item {
+        width: 100%/4;
+        width: 200px;
+        margin-left: calc(~"(100% - 4 * 200px) / 3");
+        padding: 0;
+        &:nth-child(4n+1) {
+            margin-left: 0;
         }
     }
 }
@@ -51,12 +85,14 @@ div.widget.category.link {
 //    Desktop
 //--------------------------------------
 .responsive(@break) when (@break = @screen-m) {
-    .block.widget.new {
-        .pager {
-            text-align: left;
-            .amount {
-                float: right;
-                margin: 7px 0 0;
+    .sidebar .block.widget .pager {
+        .item:not(.pages-item-next):not(.pages-item-previous) {
+            &:extend(.abstract-no-display-desktop all);
+        }
+        .pages-item-next {
+            padding: 0;
+            .action {
+                margin: 0;
             }
         }
     }
diff --git a/app/design/frontend/Magento/blank/Magento_CatalogSearch/web/css/source/module.less b/app/design/frontend/Magento/blank/Magento_CatalogSearch/web/css/source/module.less
index 1d5e06c29b0..2f16064257d 100644
--- a/app/design/frontend/Magento/blank/Magento_CatalogSearch/web/css/source/module.less
+++ b/app/design/frontend/Magento/blank/Magento_CatalogSearch/web/css/source/module.less
@@ -44,10 +44,6 @@
             );
         display: inline-block;
         float: right;
-        &:active,
-        &:focus {
-            outline: none !important;
-        }
     }
     .action.search {
         display: none;
@@ -196,7 +192,6 @@
             );
             .button-reset();
             &:focus {
-                outline: none;
                 &:before {
                     color: #333;
                 }
diff --git a/app/design/frontend/Magento/blank/Magento_Checkout/layout/checkout_cart_index.xml b/app/design/frontend/Magento/blank/Magento_Checkout/layout/checkout_cart_index.xml
index 00c4f37dc87..116127da266 100644
--- a/app/design/frontend/Magento/blank/Magento_Checkout/layout/checkout_cart_index.xml
+++ b/app/design/frontend/Magento/blank/Magento_Checkout/layout/checkout_cart_index.xml
@@ -26,7 +26,7 @@
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <body>
         <referenceContainer name="checkout.cart.items">
-            <container name="checkout.cart.container" label="invisible" htmlTag="div" htmlClass="cart-container" before="-">
+            <container name="checkout.cart.container" htmlTag="div" htmlClass="cart-container" before="-">
                 <container name="cart.summary" label="Cart Summary Container" htmlTag="div" htmlClass="cart-summary" after="-">
                     <block class="Magento\Framework\View\Element\Template" name="checkout.cart.summary.title" before="-" template="Magento_Core::text.phtml">
                         <arguments>
diff --git a/app/design/frontend/Magento/blank/Magento_Checkout/web/css/source/cart.less b/app/design/frontend/Magento/blank/Magento_Checkout/web/css/source/cart.less
index 91735dce9d3..83685ab682c 100644
--- a/app/design/frontend/Magento/blank/Magento_Checkout/web/css/source/cart.less
+++ b/app/design/frontend/Magento/blank/Magento_Checkout/web/css/source/cart.less
@@ -99,6 +99,14 @@
                     }
                 }
             }
+            .fieldset.estimate {
+                >.legend {
+                    &:extend(.abstract-visually-hidden all);
+                }
+                >.legend + br {
+                    &:extend(.abstract-no-display all);
+                }
+            }
         }
         .actions-toolbar {
             > .primary {
@@ -203,9 +211,12 @@
             }
             &.qty {
                 .input-text {
-                    margin-top: -3px;
+                    margin-top: -5px;
                     width: 45px;
                 }
+                .label {
+                    &:extend(.abstract-visually-hidden all);
+                }
             }
         }
         .item {
@@ -217,7 +228,7 @@
             .col {
                 &.item {
                     display: block;
-                    padding: 25px 70px 10px 75px;
+                    padding: 25px 0 10px 75px;
                     position: relative;
                     min-height: 75px;
                 }
@@ -256,10 +267,7 @@
                 width: 100%;
             }
             &-item-details {
-                display: table-cell;
-                vertical-align: top;
                 white-space: normal;
-                width: 99%;
             }
             &-item-name {
                 display: inline-block;
@@ -272,55 +280,26 @@
         // Product options
         .item-options {
             font-size: @font-size-s;
-            margin-top: @indent-s-base;
             margin-bottom: @indent-s-base;
             &:extend(.abstract-product-options-list all);
             &:extend(.abstract-add-clearfix all);
         }
+
+        .product-item-name + .item-options {
+            margin-top: @indent-s-base;
+        }
+
         .product-image-wrapper {
             &:extend(.abstract-reset-image-wrapper all);
         }
+        .action.configure {
+            display: inline-block;
+            margin: 0 0 @indent-base;
+        }
     }
     &-container {
-        .form.cart {
-            .actions.main {
-                text-align: center;
-            }
-            .action {
-                &.continue {
-                    .link-as-button();
-                    .button(
-                        @_button-padding: 7px 15px 7px 0,
-                        @_button-icon-use: true,
-                        @_button-font-content: @icon-prev,
-                        @_button-icon-font-size: 32px,
-                        @_button-icon-font-line-height: 16px,
-                        @_button-icon-font-position: before
-                    );
-                    border-radius: 3px;
-                    font-weight: bold;
-                    &:active {
-                        box-shadow: inset 0 3px 1px rgba(0,0,0,.29);
-                    }
-                }
-                &.update {
-                    .button-icon(
-                        @icon-update,
-                        @_icon-font-size: 32px,
-                        @_icon-font-line-height: 16px
-                    );
-                    padding-left: 5px;
-                }
-                &.update,
-                &.continue,
-                &.clear {
-                    margin: 0 auto 10px;
-                }
-                &.update,
-                &.clear {
-                    display: block;
-                }
-            }
+        .form-cart {
+            &:extend(.abstract-shopping-cart-items all);
         }
         .checkout-methods-items {
             &:extend(.abstract-reset-list all);
@@ -394,25 +373,8 @@
     .cart {
         &-container {
             &:extend(.abstract-add-clearfix-desktop all);
-            .form.cart {
-                float: left;
-                width: 73%;
-                position: relative;
-                .actions {
-                    text-align: left;
-                }
-                .action {
-                    &.continue {
-                        float: left;
-                    }
-                    &.update {
-                        float: right;
-                    }
-                    &.clear {
-                        float: right;
-                        margin-right: 10px;
-                    }
-                }
+            .form-cart {
+                &:extend(.abstract-shopping-cart-items-desktop all);
             }
             .widget {
                 float: left;
@@ -451,13 +413,21 @@
                     text-align: right;
                 }
             }
-            .product-item-photo {
-                display: table-cell;
-                padding-right: 20px;
-                vertical-align: top;
-                width: 1%;
-                position: static;
-                max-width: 100%;
+            .product {
+                &-item-photo {
+                    display: table-cell;
+                    padding-right: 20px;
+                    vertical-align: top;
+                    width: 1%;
+                    position: static;
+                    max-width: 100%;
+                }
+                &-item-details {
+                    display: table-cell;
+                    vertical-align: top;
+                    white-space: normal;
+                    width: 99%;
+                }
             }
         }
     }
diff --git a/app/design/frontend/Magento/blank/Magento_Checkout/web/css/source/minicart.less b/app/design/frontend/Magento/blank/Magento_Checkout/web/css/source/minicart.less
index 22e40949327..00cbefcc616 100644
--- a/app/design/frontend/Magento/blank/Magento_Checkout/web/css/source/minicart.less
+++ b/app/design/frontend/Magento/blank/Magento_Checkout/web/css/source/minicart.less
@@ -160,7 +160,7 @@
         &:extend(.abstract-reset-image-wrapper all);
     }
     .product {
-        &.photo {
+        &-item-photo {
             float: left;
         }
         &-item-name {
@@ -174,7 +174,7 @@
                 color: @link-color;
             }
         }
-        &.details {
+        &-item-details {
             padding-left: 88px;
             .price {
                 font-weight: @font-weight-bold;
diff --git a/app/design/frontend/Magento/blank/Magento_Checkout/web/css/source/module.less b/app/design/frontend/Magento/blank/Magento_Checkout/web/css/source/module.less
index b3aaeb64795..6242519ebf8 100644
--- a/app/design/frontend/Magento/blank/Magento_Checkout/web/css/source/module.less
+++ b/app/design/frontend/Magento/blank/Magento_Checkout/web/css/source/module.less
@@ -90,6 +90,30 @@
                         margin: 0;
                     }
                 }
+                .legend.payments-title {
+                    &:extend(.abstract-visually-hidden all);
+                }
+            }
+            .methods-shipping {
+                .item-content {
+                    .fieldset {
+                        > .legend {
+                            &:extend(.abstract-visually-hidden all);
+                        }
+                        > .legend + br {
+                            &:extend(.abstract-no-display all);
+                        }
+                        > .field {
+                            margin: 20px 0 0;
+                            &:before {
+                                display: none;
+                            }
+                            .control {
+                                display: inline-block;
+                            }
+                        }
+                    }
+                }
             }
             .form {
                 .form-hasrequired(bottom);
@@ -118,6 +142,16 @@
         }
     }
 
+    .step-content {
+        .field.street {
+            .field.additional {
+                .label {
+                  &:extend(.abstract-visually-hidden all);
+                }
+            }
+        }
+    }
+
     .opc-payment-additional {
         margin: 0 0 5px;
         + .opc-payment {
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 b39de5b6008..2b68a660324 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
@@ -98,6 +98,11 @@
                 width: auto;
             }
         }
+        .limiter {
+            >.label {
+                &:extend(.abstract-visually-hidden all);
+            }
+        }
         .block:not(.widget) {
             &:extend(.abstract-account-blocks all);
         }
@@ -124,6 +129,16 @@
     }
 }
 
+// checkout address (create shipping address)
+.field.street {
+    .field.additional {
+        .label {
+            &:extend(.abstract-visually-hidden all);
+        }
+    }
+}
+
+
 //
 //    Blocks & Widgets
 //--------------------------------------
diff --git a/app/design/frontend/Magento/blank/Magento_Downloadable/web/css/source/module.less b/app/design/frontend/Magento/blank/Magento_Downloadable/web/css/source/module.less
index 9668329f830..8578b578204 100644
--- a/app/design/frontend/Magento/blank/Magento_Downloadable/web/css/source/module.less
+++ b/app/design/frontend/Magento/blank/Magento_Downloadable/web/css/source/module.less
@@ -71,6 +71,13 @@
             display: none!important;
         }
     }
+    .product-options-wrapper {
+        .fieldset {
+            .legend.links-title {
+                &:extend(.abstract-visually-hidden all);
+            }
+        }
+    }
 }
 
 //
diff --git a/app/design/frontend/Magento/blank/Magento_Multishipping/web/css/source/module.less b/app/design/frontend/Magento/blank/Magento_Multishipping/web/css/source/module.less
index 3a25ffa50c9..7fc6c502bcc 100644
--- a/app/design/frontend/Magento/blank/Magento_Multishipping/web/css/source/module.less
+++ b/app/design/frontend/Magento/blank/Magento_Multishipping/web/css/source/module.less
@@ -42,6 +42,14 @@
                     text-align: center;
                     width: 45px;
                 }
+                .label {
+                    &:extend(.abstract-visually-hidden all);
+                }
+            }
+            &.address {
+                .label {
+                    &:extend(.abstract-visually-hidden all);
+                }
             }
             &.item {
                 .action.edit {
@@ -100,6 +108,27 @@
 
     .block {
         &:extend(.abstract-add-clearfix all);
+
+        .methods-shipping {
+            .item-content {
+                .fieldset {
+                    > .legend {
+                        &:extend(.abstract-visually-hidden all);
+                    }
+                    > .legend + br {
+                        &:extend(.abstract-no-display all);
+                    }
+                    > .field {
+                        &:before {
+                            display: none;
+                        }
+                        .control {
+                            display: inline-block;
+                        }
+                    }
+                }
+            }
+        }
     }
 
     .block-title,
@@ -154,6 +183,15 @@
         }
     }
 
+    .box-billing-method {
+        .fieldset {
+            margin: 0;
+            .legend.box-title {
+                margin: 0 0 5px;
+            }
+        }
+    }
+
     .hidden {
         &:extend(.abstract-no-display all);
     }
diff --git a/app/design/frontend/Magento/blank/Magento_RecurringPayment/web/css/source/module.less b/app/design/frontend/Magento/blank/Magento_RecurringPayment/web/css/source/module.less
index a82b30a271c..3b4a30ec9cb 100644
--- a/app/design/frontend/Magento/blank/Magento_RecurringPayment/web/css/source/module.less
+++ b/app/design/frontend/Magento/blank/Magento_RecurringPayment/web/css/source/module.less
@@ -28,3 +28,74 @@
         margin: 0 0 5px;
     }
 }
+
+.items-info-tabs {
+    border-bottom: @border-width-base solid @border-color-base;
+    margin-bottom: 10px;
+    .item {
+        display: inline-block;
+        margin-right: 20px;
+    }
+}
+
+.order-recurring-details {
+    > .actions-toolbar {
+        margin: 0 0 @indent-base;
+    }
+}
+
+.order-recurring-details-item {
+    margin-bottom: 40px;
+    padding: 10px;
+    .table.data {
+        .table-resize(
+            @_td-padding-left: 0,
+            @_td-padding-right: 0
+        );
+    }
+}
+
+
+//
+//    Mobile
+//--------------------------------------
+.responsive-smaller(@break) when (@break = @screen-xs) {
+    .table-recurring-payments {
+        td {
+            &:first-child {
+                span {
+                    display: block;
+                }
+            }
+        }
+    }
+}
+
+.responsive-smaller(@break) when (@break = @screen-s) {
+    .table-wrapper.recurring-payments {
+        &:extend(.abstract-account-table-border all);
+    }
+    .order-recurring-details {
+        .order-recurring-details-item {
+            padding: 10px 0;
+            .table.data {
+                .table-resize(
+                    @_td-padding-left: 0,
+                    @_td-padding-right: 0
+                );
+                th,
+                td {
+                    &:before {
+                        padding-right: 0;
+                    }
+                }
+            }
+        }
+    }
+}
+
+//
+//    Desktop
+//--------------------------------------
+.responsive(@break) when (@break = @screen-m) {
+}
\ No newline at end of file
diff --git a/app/design/frontend/Magento/blank/Magento_Sales/web/css/source/module.less b/app/design/frontend/Magento/blank/Magento_Sales/web/css/source/module.less
index 6f647382de2..fe6d03ac1c8 100644
--- a/app/design/frontend/Magento/blank/Magento_Sales/web/css/source/module.less
+++ b/app/design/frontend/Magento/blank/Magento_Sales/web/css/source/module.less
@@ -130,13 +130,25 @@
     }
 }
 
-.block.reorder {
-    .item {
+.block-reorder {
+    .block-title {
+        &:extend(.abstract-block-title all);
+    }
+    .product-item {
         .checkbox {
             position: relative;
             top: 2px;
             vertical-align: baseline;
         }
+        .label {
+            &:extend(.abstract-visually-hidden all);
+        }
+        .field.item {
+            display: inline-block;
+        }
+    }
+    .product-item-name {
+        display: inline-block;
     }
     .actions-toolbar {
         margin: 17px 0;
@@ -144,7 +156,7 @@
     }
     .sidebar-main & .subtitle,
     .sidebar-additional & .subtitle {
-        display: none;
+        &:extend(.abstract-no-display all);
     }
 }
 
diff --git a/app/design/frontend/Magento/blank/Magento_Theme/web/css/source/module.less b/app/design/frontend/Magento/blank/Magento_Theme/web/css/source/module.less
index 180d1f20051..1315cd91a95 100644
--- a/app/design/frontend/Magento/blank/Magento_Theme/web/css/source/module.less
+++ b/app/design/frontend/Magento/blank/Magento_Theme/web/css/source/module.less
@@ -218,12 +218,7 @@ body {
         max-width: 100%;
     }
     .block-title {
-        strong {
-            display: inline-block;
-            font-size: ceil((@font-size-base * 1.28)); // 18px
-            font-weight: @font-weight-light;
-            margin: 0 0 @indent-base;
-        }
+        &:extend(.abstract-block-title all);
     }
 }
 
diff --git a/app/design/frontend/Magento/blank/Magento_Wishlist/web/css/source/module.less b/app/design/frontend/Magento/blank/Magento_Wishlist/web/css/source/module.less
index 7ab662f7366..210b3551cac 100644
--- a/app/design/frontend/Magento/blank/Magento_Wishlist/web/css/source/module.less
+++ b/app/design/frontend/Magento/blank/Magento_Wishlist/web/css/source/module.less
@@ -92,60 +92,15 @@
     }
 }
 
-.block.wishlist {
-    .item.product {
-        margin-bottom: 14px;
-        > .product {
-            position: relative;
-            .product.photo {
-                position: absolute;
-                left: 0;
-                top: 0;
-            }
-            .product.details {
-                margin: 0 25px 0 64px;
-                padding: 0;
-            }
-        }
-    }
-    .price-box {
-        display: block;
-        margin: 7px 0;
-    }
-    .actions {
-        margin: 7px 0;
-        .action.delete {
-            &:extend(.abstract-remove-button-for-blocks all);
-            position: absolute;
-            right: 0;
-            top: 0;
-        }
-        a.action.tocart {
-            .link-as-button();
-        }
+.block-wishlist {
+    .block-title {
+        &:extend(.abstract-block-title all);
     }
-    .text {
-        margin-right: 8px;
+    .counter {
+        &:extend(.abstract-block-items-counter all);
     }
-    .counter.qty {
-        color: #999;
-        font-size: 12px;
-        white-space: nowrap;
-    }
-    .sidebar-main &,
-    .sidebar-additional & {
-        .subtitle {
-            display: none;
-        }
-    }
-    .minilist {
-        .price {
-            display: inline;
-            padding: 0;
-        }
-        .weee:before {
-            display: inline-block;
-        }
+    .product-item-name {
+        margin-right: @indent-m-base;
     }
 }
 
@@ -166,6 +121,11 @@
             }
             &-tooltip {
             }
+            .comment-box {
+                .label {
+                    &:extend(.abstract-visually-hidden all);
+                }
+            }
             &-comment {
                 display: block;
                 margin: @indent-s-base 0;
@@ -188,6 +148,7 @@
         }
     }
 }
+
 //
 //    Mobile
 //--------------------------------------
@@ -201,7 +162,7 @@
                 position: relative;
                 border-bottom: 1px solid @color-secondary;
                 &:first-child {
-                   border-top: 1px solid @color-secondary; 
+                    border-top: 1px solid @color-secondary;
                 }
                 &-info {
                 }
@@ -258,7 +219,22 @@
             }
         }
     }
+
+    //
+    //    Grid view for wishlist
+    //--------------------------------------
+    .wishlist-index-index {
+        .product {
+            &-item {
+                width: 100%;
+                &-info {
+                    width: auto;
+                }
+            }
+        } 
+    }
 }
+
 //
 //    Desktop
 //--------------------------------------
@@ -300,32 +276,6 @@
             }
         }
     }
-}
-
-//
-//    Grid view for wishlist
-//--------------------------------------
-//
-//    Mobile
-//--------------------------------------
-.responsive-smaller(@break) when (@break = @screen-m) {
-    .wishlist-index-index {
-        .product {
-            &-item {
-                width: 100%;
-                &-info {
-                    width: auto;
-                }
-            }
-        } 
-    }
-
-}
-
-//
-//    Desktop
-//--------------------------------------
-.responsive(@break) when (@break = @screen-m) {
     .wishlist-index-index  {
         .product {
             &-item {
diff --git a/app/design/frontend/Magento/blank/composer.json b/app/design/frontend/Magento/blank/composer.json
index 4bd7756956f..08082d03c50 100644
--- a/app/design/frontend/Magento/blank/composer.json
+++ b/app/design/frontend/Magento/blank/composer.json
@@ -3,11 +3,11 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-theme",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/design/frontend/Magento/blank/etc/view.xml b/app/design/frontend/Magento/blank/etc/view.xml
index 687d5e3514b..a1df13023b5 100644
--- a/app/design/frontend/Magento/blank/etc/view.xml
+++ b/app/design/frontend/Magento/blank/etc/view.xml
@@ -85,29 +85,29 @@
         <var name="product_page_more_views:height">90</var>
 
         <var name="side_column_widget_product_thumbnail:type">thumbnail</var>
-        <var name="side_column_widget_product_thumbnail:width">50</var>
-        <var name="side_column_widget_product_thumbnail:ratio">1</var>
-        <var name="side_column_widget_product_thumbnail:height">50</var>
+        <var name="side_column_widget_product_thumbnail:width">75</var>
+        <var name="side_column_widget_product_thumbnail:ratio">0.8</var>
+        <var name="side_column_widget_product_thumbnail:height">90</var>
 
         <var name="new_products_content_widget_list:type">small_image</var>
-        <var name="new_products_content_widget_list:width">166</var>
+        <var name="new_products_content_widget_list:width">270</var>
         <var name="new_products_content_widget_list:ratio">1</var>
-        <var name="new_products_content_widget_list:height">166</var>
+        <var name="new_products_content_widget_list:height">270</var>
 
         <var name="new_products_content_widget_grid:type">small_image</var>
-        <var name="new_products_content_widget_grid:width">166</var>
+        <var name="new_products_content_widget_grid:width">220</var>
         <var name="new_products_content_widget_grid:ratio">1</var>
-        <var name="new_products_content_widget_grid:height">166</var>
+        <var name="new_products_content_widget_grid:height">220</var>
 
         <var name="recently_compared_products_images_names_widget:type">thumbnail</var>
-        <var name="recently_compared_products_images_names_widget:width">50</var>
-        <var name="recently_compared_products_images_names_widget:ratio">1</var>
-        <var name="recently_compared_products_images_names_widget:height">50</var>
+        <var name="recently_compared_products_images_names_widget:width">75</var>
+        <var name="recently_compared_products_images_names_widget:ratio">0.8</var>
+        <var name="recently_compared_products_images_names_widget:height">90</var>
 
         <var name="recently_viewed_products_images_names_widget:type">small_image</var>
-        <var name="recently_viewed_products_images_names_widget:width">50</var>
-        <var name="recently_viewed_products_images_names_widget:ratio">1</var>
-        <var name="recently_viewed_products_images_names_widget:height">50</var>
+        <var name="recently_viewed_products_images_names_widget:width">75</var>
+        <var name="recently_viewed_products_images_names_widget:ratio">0.8</var>
+        <var name="recently_viewed_products_images_names_widget:height">90</var>
 
         <var name="recently_compared_products_images_only_widget:type">thumbnail</var>
         <var name="recently_compared_products_images_only_widget:width">76</var>
@@ -125,24 +125,24 @@
         <var name="bundled_product_customization_page:height">140</var>
 
         <var name="recently_compared_products_grid_content_widget:type">small_image</var>
-        <var name="recently_compared_products_grid_content_widget:width">135</var>
+        <var name="recently_compared_products_grid_content_widget:width">220</var>
         <var name="recently_compared_products_grid_content_widget:ratio">1</var>
-        <var name="recently_compared_products_grid_content_widget:height">135</var>
+        <var name="recently_compared_products_grid_content_widget:height">220</var>
 
         <var name="recently_compared_products_list_content_widget:type">small_image</var>
-        <var name="recently_compared_products_list_content_widget:width">166</var>
+        <var name="recently_compared_products_list_content_widget:width">270</var>
         <var name="recently_compared_products_list_content_widget:ratio">1</var>
-        <var name="recently_compared_products_list_content_widget:height">166</var>
+        <var name="recently_compared_products_list_content_widget:height">207</var>
 
         <var name="recently_viewed_products_grid_content_widget:type">small_image</var>
-        <var name="recently_viewed_products_grid_content_widget:width">135</var>
+        <var name="recently_viewed_products_grid_content_widget:width">220</var>
         <var name="recently_viewed_products_grid_content_widget:ratio">1</var>
-        <var name="recently_viewed_products_grid_content_widget:height">135</var>
+        <var name="recently_viewed_products_grid_content_widget:height">220</var>
 
         <var name="recently_viewed_products_list_content_widget:type">small_image</var>
-        <var name="recently_viewed_products_list_content_widget:width">166</var>
+        <var name="recently_viewed_products_list_content_widget:width">270</var>
         <var name="recently_viewed_products_list_content_widget:ratio">1</var>
-        <var name="recently_viewed_products_list_content_widget:height">166</var>
+        <var name="recently_viewed_products_list_content_widget:height">270</var>
 
         <var name="customer_shared_wishlist:type">small_image</var>
         <var name="customer_shared_wishlist:width">113</var>
@@ -155,9 +155,9 @@
         <var name="wishlist_thumbnail:height">200</var>
 
         <var name="wishlist_sidebar_block:type">thumbnail</var>
-        <var name="wishlist_sidebar_block:width">50</var>
-        <var name="wishlist_sidebar_block:ratio">1</var>
-        <var name="wishlist_sidebar_block:height">50</var>
+        <var name="wishlist_sidebar_block:width">75</var>
+        <var name="wishlist_sidebar_block:ratio">0.8</var>
+        <var name="wishlist_sidebar_block:height">90</var>
 
         <var name="shared_wishlist_email:type">small_image</var>
         <var name="shared_wishlist_email:width">135</var>
@@ -194,9 +194,9 @@
         <var name="new_products_images_only_widget:ratio">1</var>
         <var name="new_products_images_only_widget:height">78</var>
 
-        <var name="cart_page_product_thumbnail:type">thumbnail</var>
+        <var name="cart_page_product_thumbnail:type">small_image</var>
         <var name="cart_page_product_thumbnail:width">110</var>
-        <var name="cart_page_product_thumbnail:ratio">1</var>
+        <var name="cart_page_product_thumbnail:ratio">0.7</var>
         <var name="cart_page_product_thumbnail:height">160</var>
 
         <var name="product_stock_alert_email_product_image:type">small_image</var>
diff --git a/app/design/frontend/Magento/blank/theme.xml b/app/design/frontend/Magento/blank/theme.xml
index c0df4cc5bb4..777b5718e97 100644
--- a/app/design/frontend/Magento/blank/theme.xml
+++ b/app/design/frontend/Magento/blank/theme.xml
@@ -24,7 +24,7 @@
 -->
 <theme xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/Config/etc/theme.xsd">
     <title>Magento Blank</title>
-    <version>0.1.0-alpha102</version>
+    <version>0.1.0-alpha103</version>
     <media>
         <preview_image>media/preview.jpg</preview_image>
     </media>
diff --git a/app/design/frontend/Magento/blank/web/css/source/abstract.less b/app/design/frontend/Magento/blank/web/css/source/abstract.less
index e64e35a527d..28af6540686 100644
--- a/app/design/frontend/Magento/blank/web/css/source/abstract.less
+++ b/app/design/frontend/Magento/blank/web/css/source/abstract.less
@@ -802,6 +802,12 @@
     }
 }
 
+.responsive(@break) when (@break = @screen-m) {
+    .abstract-no-display-desktop {
+        display: none;
+    }
+}
+
 //
 //    Status
 //--------------------------------------
@@ -863,3 +869,79 @@
         }
     }
 }
+
+//
+//    Items counter in blocks
+//--------------------------------------
+.abstract-block-items-counter {
+    color: @color-primary-lighter;
+    .font-size(12px);
+    white-space: nowrap;
+}
+
+//
+//    Shopping cart items
+//--------------------------------------
+.abstract-shopping-cart-items {
+    .actions.main {
+        text-align: center;
+    }
+    .action {
+        &.continue {
+            .link-as-button();
+            .button(
+                @_button-padding: 7px 15px 7px 0,
+                @_button-icon-use: true,
+                @_button-font-content: @icon-prev,
+                @_button-icon-font-size: 32px,
+                @_button-icon-font-line-height: 16px,
+                @_button-icon-font-position: before
+            );
+            border-radius: 3px;
+            font-weight: bold;
+            &:active {
+                box-shadow: inset 0 3px 1px rgba(0,0,0,.29);
+            }
+        }
+        &.update {
+            .button-icon(
+                @icon-update,
+            @_icon-font-size: 32px,
+            @_icon-font-line-height: 16px
+            );
+            padding-left: 5px;
+        }
+        &.update,
+        &.continue,
+        &.clear {
+            margin: 0 auto 10px;
+        }
+        &.update,
+        &.clear {
+            display: block;
+        }
+    }
+}
+
+.responsive(@break) when (@break = @screen-m) {
+    .abstract-shopping-cart-items-desktop {
+        float: left;
+        width: 73%;
+        position: relative;
+        .actions {
+            text-align: left;
+        }
+        .action {
+            &.continue {
+                float: left;
+            }
+            &.update {
+                float: right;
+            }
+            &.clear {
+                float: right;
+                margin-right: 10px;
+            }
+        }
+    }
+}
diff --git a/app/design/frontend/Magento/blank/web/js/theme.js b/app/design/frontend/Magento/blank/web/js/theme.js
index ac65a67ce49..decc93e7ecb 100644
--- a/app/design/frontend/Magento/blank/web/js/theme.js
+++ b/app/design/frontend/Magento/blank/web/js/theme.js
@@ -22,8 +22,9 @@
  */
 define([
     "jquery",
+    'mage/smart-keyboard-handler',
     "jquery/ui"
-],function($) {
+],function($, keyboardHandler) {
     'use strict';
 
     $(function() {
@@ -42,6 +43,8 @@ define([
         }
 
         $( ".panel.header > .header.links" ).clone().appendTo( "#store\\.links" );
+
+        keyboardHandler.init();
     });
 
 });
diff --git a/app/design/frontend/Magento/plushe/composer.json b/app/design/frontend/Magento/plushe/composer.json
index 128997e1ad1..c2612610890 100644
--- a/app/design/frontend/Magento/plushe/composer.json
+++ b/app/design/frontend/Magento/plushe/composer.json
@@ -3,12 +3,12 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0",
-        "magento/theme-frontend-blank": "0.1.0-alpha102",
-        "magento/framework": "0.1.0-alpha102",
+        "magento/theme-frontend-blank": "0.1.0-alpha103",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-theme",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "extra": {
         "map": [
             [
diff --git a/app/design/frontend/Magento/plushe/theme.xml b/app/design/frontend/Magento/plushe/theme.xml
index 3e51f53e2a1..2bafb85bb0e 100644
--- a/app/design/frontend/Magento/plushe/theme.xml
+++ b/app/design/frontend/Magento/plushe/theme.xml
@@ -24,7 +24,7 @@
 -->
 <theme xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/Config/etc/theme.xsd">
     <title>Magento Plushe</title>
-    <version>0.1.0-alpha102</version>
+    <version>0.1.0-alpha103</version>
     <parent>Magento/blank</parent>
     <media>
         <preview_image>media/preview.jpg</preview_image>
diff --git a/app/design/install/Magento/basic/theme.xml b/app/design/install/Magento/basic/theme.xml
deleted file mode 100644
index f9a39ea7107..00000000000
--- a/app/design/install/Magento/basic/theme.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<!--
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Academic Free License (AFL 3.0)
- * that is bundled with this package in the file LICENSE_AFL.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/afl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
- */
--->
-<theme xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/Config/etc/theme.xsd">
-    <title>Magento Basic</title>
-    <version>0.1.0-alpha102</version>
-</theme>
diff --git a/app/design/install/Magento/basic/web/css/boxes.css b/app/design/install/Magento/basic/web/css/boxes.css
deleted file mode 100644
index 534558699b8..00000000000
--- a/app/design/install/Magento/basic/web/css/boxes.css
+++ /dev/null
@@ -1,372 +0,0 @@
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Academic Free License (AFL 3.0)
- * that is bundled with this package in the file LICENSE_AFL.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/afl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright  Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license    http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
- */
-
-/*******************************************************/
-/***********[ Magento_CSS_B Common Elements ]***********/
-/*******************************************************/
-
-
-/********************** Columns */
-
-/* All */
-.col2-set, .col3-set, .col4-set, .col5-set { clear:both; }
-
-/* Col2 */
-.col2-set .col-1, .col2-set .col-2 { width:48.5%; }
-.col2-set .col-1 { float:left; }
-.col2-set .col-2 { float:right;}
-
-/* Col2-alt */
-.col2-alt-set .col-1 { width:32%; }
-.col2-alt-set .col-2 { width:65%; }
-.col2-alt-set .col-1 { float:left; }
-.col2-alt-set .col-2 { float:right;}
-
-/* Col3 */
-.col3-set .col-1, .col3-set .col-2, .col3-set .col-3 { float:left; width:31.3%; }
-.col3-set .col-1, .col3-set .col-2 { margin-right:3%; }
-
-/* Col4 */
-.col4-set .col-1, .col4-set .col-2, .col4-set .col-3, .col4-set .col-4 { float:left; width:22%; }
-.col4-set .col-1, .col4-set .col-2, .col4-set .col-3 { margin-right:4%; }
-
-/* Table Columns */
-table .col-1, table .col-2, table .col-3, table .col-4 { float:none !important; margin:0 !important; }
-.col3-set td.spacer { width:3%; }
-.col4-set td.spacer { width:4%; }
-
-
-
-/********************** Form */
-
-/* Form Elements */
-input.input-text, select, textarea { border:1px solid #b6b6b6; font:12px arial, helvetica, sans-serif; }
-option, optgroup { font:12px arial, helvetica, sans-serif; }
-optgroup { font-weight:bold; }
-input.input-text, textarea { padding:2px; }
-input.radio,
-input.checkbox { margin-right:5px; }
-.qty { width:2.5em; }
-.group-select label, .form-list label, .payment-methods label { font-weight:bold;}
-.button-set { /* Container for form buttons*/
-    clear:both;
-    margin-top:4em;
-    border-top:1px solid #e4e4e4;
-    padding-top:8px;
-    text-align:right;
-    }
-.form-button, .form-button-alt {
-    overflow:visible;
-    width:auto;
-    padding:1px 8px;
-    background:#f18200;
-    color:#fff;
-    border:1px solid #de5400;
-    font:bold 12px arial, sans-serif !important;
-    cursor:pointer;
-    text-align:center;
-    vertical-align:middle;
-    }
-.form-button span, .form-button-alt span {
-    white-space:nowrap;
-    }
-.form-button-alt {
-    border:1px solid #406a83;
-    background-color:#618499;
-    }
-
-
-/* Form lists */
-.form-list li { margin-bottom:6px; }
-.form-list li .input-box .input-text, .form-list li .input-box textarea { width:250px; }
-.form-list li .input-box select { width:256px;}
-
-.group-select {
-    margin:28px 0;
-    border:1px solid #bbafa0;
-    padding:22px 25px 12px 25px;
-    background:#fbfaf6;
-    }
-.group-select .legend {
-    margin-top:-33px;
-    float:left;
-    border:1px solid #f19900;
-    background:#F9F3E3;
-    padding:0 8px;
-    color:#E76200;
-    font-weight:bold;
-    font-size:1.1em;
-    }
-.group-select li { padding:4px 8px !important; }
-.group-select li .input-box { float:left; width:275px; }
-.group-select li .input-text, .group-select li select, .group-select li textarea { width:525px; }
-.group-select li .input-box .input-text, .group-select li .input-box textarea { width:250px; }
-.group-select li .input-box select { width:256px;}
-
-
-/* Form Messages */
-.validation-advice, .required { color:#EB340A; }
-.validation-advice {
-    clear:both;
-    min-height:15px;
-    margin-top:3px;
-    background:url(../images/validation_advice_bg.gif) no-repeat 2px 1px;
-    padding-left:17px;
-    font-size:.95em;
-    font-weight:bold;
-    line-height:1.25em;
-    }
-.validation-failed {
-    border:1px dashed #EB340A !important;
-    background:#faebe7 !important;
-    }
-label.required {
-    font-weight:bold;
-    }
-p.required {
-    font-size:.95em;
-    text-align:right;
-    }
-
-
-/********************** Messages  */
-.messages { width:100%; overflow:hidden; text-align:left; margin-top:10px; }
-.messages .message { padding:10px 17px; position:relative; }
-.messages .message a { text-decoration:underline; }
-.messages .message a:hover { text-decoration:none; }
-
-.messages .message.error,
-.messages .message.success,
-.messages .message.note,
-.messages .message.notice { border-style:solid !important; border-width:1px !important; font-size:12px !important; }
-
-.messages .message.error { border-color:#e9581f; background-color:#fff5f3; color:#d91a00; }
-.messages .message.error a { color:#d91a00; }
-
-.messages .message.success { border-color:#446423; background-color:#eff5ea; color:#3d6611; }
-.messages .message.success a { color:#3d6611; }
-
-.messages .message.note,
-.messages .message.notice { border-color:#fcd344; background-color:#fafaec; color:#3d6611; }
-.messages .message.note a,
-.messages .message.notice a { color:#3d6611; }
-
-
-/********************** Headings */
-
-.head, .inner-head { line-height:1.25em; text-align:right; }
-.head h1,.head h2, .head h3, .head h4, .head h5,
-.inner-head h1,.inner-head h2, .inner-head h3, .inner-head h4, .inner-head h5{ margin:0; float:left; }
-
-
-/* Page heading */
-.page-head { margin:0 0 25px 0; border-bottom:1px solid #ccc; }
-.page-head-alt { margin:0 0 12px 0; }
-.page-head, .page-head-alt { text-align:right; }
-.page-head h3, .page-head-alt h3 {
-    margin:0;
-    font-size:1.7em !important;
-    font-weight:normal !important;
-    text-transform:none  !important;
-    text-align:left;
-    }
-.button-level h3 { /* heading level with buttons */
-    float:left;
-    width:60%;
-    }
-
-
-/* Category list heading */
-.category-head {
-    margin-bottom:7px;
-    }
-.category-head h2 {
-    margin:0;
-    padding:3px 0;
-    color:#0a263c;
-    font-size:1.6em;
-    line-height:1.3em;
-    font-weight:normal;
-    }
-
-
-
-
-/********************** Lists */
-.disc { margin-bottom:10px; }
-.disc li { margin-left:20px; list-style:disc; }
-
-
-/* Bare List */ /* Unstyled list */
-.bare-list { margin:5px 0; }
-.bare-list li { margin:3px 0; }
-
-
-
-/********************** Space Creators */
-
-.no-show { display:none; }
-.no-wrap { white-space:nowrap; }
-.content-box { min-height:250px; } /* Set minimum height for visual presentation */
-.content { padding:12px 12px 12px 15px; } /* Sets default padding */
-.actions { line-height:1.3em; }
-.separator { padding:0 5px;}
-.pipe { padding:0 4px; font-size:.95em; }
-.divider {
-    margin:10px 0;
-    height:1px;
-    font-size:1px;
-    line-height:1em;
-    overflow:hidden;
-    }
-
-
-
-
-/***************************************************************/
-/********************[ Magento_CSS_C Layout]********************/
-/***************************************************************/
-
-
-/********************** Base Layout */
-
-/* Structure */
-.header { text-align:left; }
-.header-top { width:930px; margin:0 auto; }
-.header-nav { width:950px; margin:0 auto; }
-.middle { min-height:400px; width:900px; margin:0 auto; text-align:left; position:relative; }
-.side-col { width:195px; }
-.col-left { float:left; }
-.col-main { float:left; }
-.col-right { float:right; }
-.col-1-layout .col-main { float:none; margin:0; }
-.col-2-right-layout .col-main { float:left; width:685px;  }
-.col-2-left-layout .col-main { float:right; width:685px; }
-.col-3-layout .col-main { width:475px; margin-left:17px; }
-
-/* Style */
-.header { border-top:5px solid #0d2131; }
-.header-top-container { border-bottom:1px solid #415966; background:url(../images/header_top_container_bg.jpg) repeat-x 50% 0; }
-.header-top { padding:10px 10px 20px; }
-.header-nav-container { background:#0a263d; }
-.middle-container { background:url(../images/main_container_bg.gif) no-repeat 50% 0 #fbfaf6; }
-.middle { background:url(../images/main_bg.gif) no-repeat #fffffe;  padding:25px 25px 80px 25px; }
-
-
-
-/********************** Header */
-
-/* Logo */
-h1#logo { float:left; width:202px; margin:3px 0 0 12px; }
-.page-popup h1#logo { display:none; }
-
-
-/* Quick Access*/
-.quick-access {
-    width:390px;
-    float:right;
-    margin-top:28px;
-    text-align:right;
-    padding:0 10px;
-    color:#fff;
-    }
-.quick-access p { margin-bottom:4px; }
-.quick-access li {
-    display:inline;
-    padding-right:7px;
-    padding-left:3px;
-    }
-.quick-access li.first { padding-left:0;}
-.quick-access li.last { padding-right:0; background:none;}
-.account-access p, .account-access ul, .account-access li { display:inline; color:#fff; }
-.account-access a, .account-access a:hover { color:#e1f1fb; }
-.account-access ul { padding-left:10px; font-size:.95em; }
-.shop-access a, .shop-access a:hover { color:#ebbc58; font-size:.95em; }
-
-
-/* Breadcrumbs */
-.breadcrumbs {  margin-bottom:13px; font-size:.95em; line-height:1.25em; }
-.breadcrumbs li { display:inline; }
-
-
-
-/********************** Footer */
-.footer-container { border-top:15px solid #B6D1E2; }
-.footer {
-    width:930px;
-    margin:0 auto;
-    padding:1em 1em 4em 1em;
-    position:relative;
-    }
-.footer .store-switcher { display:inline; padding:0 10px 0 0; vertical-align:middle; }
-.footer .informational label { color:#fff; font-weight:bold; padding-right:3px; }
-.footer .informational ul {
-    display:inline;
-    }
-.footer .informational li {
-    display:inline;
-    background:url(../images/footer_info_separator.gif) no-repeat 100% 50%;
-    padding-right:8px;
-    padding-left:4px;
-    }
-.footer .informational li.last { background:none; padding-right:0; }
-.footer .informational a, .footer .informational a:hover { color:#fff; }
-.footer .informational a { text-decoration:none; }
-.footer .legality {
-    padding:13px 0;
-    color:#ecf3f6;
-    text-align:center;
-    }
-.footer .legality a, .footer .legality a:hover { color:#ecf3f6; }
-
-
-/***************************************************************/
-/******************[ Magento_CSS_F Overrides]*******************/
-/***************************************************************/
-
-
-/* Alignment */
-.v-top { vertical-align:top; }
-.v-middle { vertical-align:middle; }
-.v-bottom { vertical-align:bottom; }
-.a-left { text-align:left; }
-.a-center { text-align:center; }
-.a-right { text-align:right; }
-.left { float:left; }
-.right { float:right !important; }
-
-.normal-weight { font-weight:normal; }
-.auto-width { width:auto;}
-
-/* Link highlights */
-.link-cart { color:#DC6809 !important; font-weight:bold !important;}
-.link-remove { color:#646464 !important;}
-.link-print { padding-left:23px; }
-
-/* Noscript Notice */
-.noscript { border:1px solid #000; border-width:0 0 1px; background:#ffff90; font-size:12px; line-height:1.25; text-align:center; color:#2f2f2f; }
-.noscript .noscript-inner { width:950px; margin:0 auto; padding:12px 0 12px; background:url(../images/i_notice.gif) 20px 50% no-repeat; }
-.noscript p { margin:0; }
-
-/* For Demo store only */
-.demo-notice { margin:0; background:#d75f07; padding:5px 10px 6px 10px; color:#fff; line-height:1em; text-align:center; }
diff --git a/app/design/install/Magento/basic/web/css/clears.css b/app/design/install/Magento/basic/web/css/clears.css
deleted file mode 100644
index 89ecab747a4..00000000000
--- a/app/design/install/Magento/basic/web/css/clears.css
+++ /dev/null
@@ -1,69 +0,0 @@
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Academic Free License (AFL 3.0)
- * that is bundled with this package in the file LICENSE_AFL.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/afl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright  Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license    http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
- */
-
-/*******************************************************/
-/****************[ Magento_CSS_B Clears ]***************/
-/*******************************************************/
-
-.page-head:after,
-.page-head-alt:after,
-.clear:after,
-.col2-set:after,
-.col3-set:after,
-.col4-set:after,
-.col2-alt-set:after,
-.head:after,
-.inner-head:after,
-.header-top:after,
-.quick-access:after,
-.header-nav:after,
-#nav:after,
-.middle:after,
-.product-essential:after,
-.button-set:after,
-.actions:after,
-.legend:after,
-.form-list li:after,
-.button-container:after,
-.ratings:after,
-.page-head:after,
-.page-head-alt:after,
-.group-select li:after,
-.search-autocomplete li:after,
-.side-col li:after,
-.account-box li:after,
-.address-list li:after,
-.generic-product-list li:after,
-.listing-type-list .listing-item:after,
-.listing-type-list .product-info .product-reviews:after,
-.my-review-detail:after {
-	content:".";
-	display:block;
-	clear:both;
-	height:0;
-	font-size:0;
-	line-height:0em;
-	visibility:hidden;
-	overflow:hidden;
-	}
-.middle {display:inline-block;}
diff --git a/app/design/install/Magento/basic/web/css/ie7minus.css b/app/design/install/Magento/basic/web/css/ie7minus.css
deleted file mode 100644
index 0fa184f70f3..00000000000
--- a/app/design/install/Magento/basic/web/css/ie7minus.css
+++ /dev/null
@@ -1,38 +0,0 @@
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Academic Free License (AFL 3.0)
- * that is bundled with this package in the file LICENSE_AFL.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/afl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright  Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license    http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
- */
-
-h1#logo { display:inline; }
-.form-button, .form-button-alt { margin-bottom:1px; }
-.group-select .legend { position:relative; zoom:1; }
-
-/* Min-height for IE */
-.login-box .content { height:180px; }
-.content-box { height:250px; }
-#main { height:400px; }
-
-.validation-advice { height:15px; }
-.error-msg, .success-msg, .note-msg { height:23px; }
-.currency-switcher h4 { height:21px; }
-.base-mini .head h4, .shopping-cart-collaterals h4 { height:16px; }
-.login-box h4 { height:16px; }
-.login-box .content { height:230px; }
diff --git a/app/design/install/Magento/basic/web/css/iestyles.css b/app/design/install/Magento/basic/web/css/iestyles.css
deleted file mode 100644
index f6c642ca2f7..00000000000
--- a/app/design/install/Magento/basic/web/css/iestyles.css
+++ /dev/null
@@ -1,72 +0,0 @@
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Academic Free License (AFL 3.0)
- * that is bundled with this package in the file LICENSE_AFL.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/afl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright  Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license    http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
- */
-.col2-set,
-.col3-set,
-.col4-set,
-.col2-alt-set,
-.head,
-.page-head,
-.page-head-alt,
-.header-top-container,
-.header-top,
-.header-nav-container,
-.header-nav,
-.quick-access,
-#nav,
-#nav li,
-#nav a,
-.middle,
-.product-essential,
-.button-set,
-.actions,
-.form-list li,
-.button-container,
-.ratings,
-.page-head,
-.page-head-alt,
-.group-select li,
-.search-autocomplete li,
-.side-col li,
-.account-box li,
-.address-list li,
-.listing-type-list .listing-item,
-.listing-type-list .product-info .product-reviews,
-.account-nav a,
-.account-box,
-.my-review-detail,
-.generic-product-list li { zoom:1; }
-
-.clear { display:block; clear:both; height:0; font-size:0; line-height:0; overflow:hidden; }
-
-input.radio,
-input.checkbox { width:13px; height:13px; }
-.multi-address-checkout-box .box { zoom:1; }
-.multi-address-checkout-box .legend { zoom:1; position:relative; margin-left:8px;}
-.quick-access li { padding-right:4px; padding-left:6px;}
-.search-autocomplete { left:39px !important; }
-.mini-search  { padding-top:-1px; line-height:1em;}
-.home-spot { display:inline; }
-.mini-related-items .product-details { margin-left:76px; }
-.mini-related-items .product-images input { float:left; margin:-4px 2px 0 -4px; }
-.mini-related-items .product-images img { float:left; }
-#nav ul li.parent { margin-bottom:-3px;}
diff --git a/app/design/install/Magento/basic/web/css/reset.css b/app/design/install/Magento/basic/web/css/reset.css
deleted file mode 100644
index 2ebaf16548d..00000000000
--- a/app/design/install/Magento/basic/web/css/reset.css
+++ /dev/null
@@ -1,72 +0,0 @@
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Academic Free License (AFL 3.0)
- * that is bundled with this package in the file LICENSE_AFL.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/afl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright  Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license    http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
- */
-/*********************************************/
-/***********[ Magento_CSS_A Reset ]***********/
-/*********************************************/
-
-* { margin:0; padding:0; }
-
-body { background-color:#496778; color:#2f2f2f; font:12px/1.5 arial, helvetica, sans-serif; text-align:center; }
-
-a { color:#1e7ec8; text-decoration:underline; }
-a:hover { color:#1e7ec8; text-decoration:underline; }
-:focus { outline: 0; }
-
-img { border:0; }
-
-/* Heading */
-h1, h2, h3, h4, h5, h6, .head { margin-bottom:.4em; line-height:1.3em; color:#0A263C; }
-h2 { font-size:1.5em; }
-h3 { font-size:1.35em; }
-h4 { font-size:1.05em; }
-h5 { font-size:1.05em; }
-h6 { font-size:.95em; }
-
-/* Table */
-th { padding:0; text-align:left; vertical-align:top; }
-td {padding:0;vertical-align:top;}
-
-/* Paragraph */
-p { margin-bottom:.8em; }
-address { margin-bottom:.4em; }
-address { font-style:normal; line-height:1.4em;}
-cite { font-style:normal; font-size:10px;}
-q:before, q:after{content:'';}
-
-/* Form */
-form { display:inline;}
-fieldset { border:none; }
-legend { display:none; display:block !important; height:0; line-height:0; margin:0; overflow:hidden; padding:0; width:0; visibility:hidden; }
-label { color:#666; /*font-size:.95em;*/  font-weight:bold; }
-input, select, button { vertical-align:middle; }
-
-/* Lists */
-dt { display:block; font-weight:bold; }
-ul,ol { list-style:none; }
-
-/* Size */
-small { font-size:.9em; }
-big { font-size:1.1em; }
-
-.nowrap { white-space:nowrap; }
-.bold { font-weight:bold; }
diff --git a/app/design/install/Magento/basic/web/images/error_msg_icon.gif b/app/design/install/Magento/basic/web/images/error_msg_icon.gif
deleted file mode 100644
index 9db2351303341d36bef063d1ca7a926be5981aac..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1013
zcmZ?wbhEHb6krfw_};+qrXc!NPUO4dn9nr{uk)gQ?_K#kJ^VvO{QI)luT9C1;)7pg
zMtrP_|6G^&W6OePsbSwbv!5n~e!F?;*U5dKR?h#tY~ruG*S<6)J?(40Gri+(ZT=xI
z!>5~9e7bV(>xRWwQi2Zq7{8fR|E;U&Q&-WsSf4L5TRyIs|Ejn8O?Um{meP-tn_kvt
zT#a{oRT}eh>9lWKmYhxWei$3{Yv;-j)0^MyTK}Lp;n&T}Z)S9UIlSZ9mX$wlU-`9X
z#moHo$7#`z6GPtAr+=I~;pfg}PYWZSPi+0MsPkfCz~`&yzBXrmTsrehPsx+?n7esl
zXW~6SUOw}#Iq!RG_EA66*PXR*Cv|>Vv+(2emWM@AZ|6^a)=}~4;I^L=E8ne}eKFDV
zOsMs-DCg%nv3Cn%zi(c0EY$Aa%<dlxJ3h?sI~-*FV{zAywwxbZm;UT2dDUL~dHu47
zbNentIJ~G&|J0EBZo$;MHTgfbE&SS;^kvzkw^a!rSImCXm~$gH?9HT(=M!3fY+d$l
z&&KbY7kp_+|NsC0uh-8RM!~>^fZ|UUMh1ok1|5(SKzV|J;}QcSr;Nvj1V?V8O*WR3
zp0x5cH>fQsbUNPH%%xrTK*Qo8&s3%~1qX#q$}Ivq%(@*j0u>ya?CYg?IEof^u{2h{
z+cKw^QLUMo<3dfLVu4Gmp?Jz67X^lfF6j!EYZD)*AMl^Sz`^n$ae40nvD$kKq6v@v
z8(7))C_GfUz&lgOmy;nf`GI4LhI0bPl_2JxYpe#!KLQ*Uc1Sb|O^f*$5bh<%YN(OH
zaXC>zUQBb@f`CiTy`2`)MIuW!K5dq>2s4<VahP$DpqbBth8L3-avr(O%FM)I4FCc!
BP(A<v

diff --git a/app/design/install/Magento/basic/web/images/footer_bg.gif b/app/design/install/Magento/basic/web/images/footer_bg.gif
deleted file mode 100644
index 5c40b5aaa578d3abf145f5528861af27e9e02c13..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 73
zcmZ?wbhEHbWMWWfSj51P&@$7rq&KQznsY%{VAaILmYED-p!kyoOzVJ1kXi<2J_}(-
S6{ZHK)q5>opSAX7um%9FJQ39Z

diff --git a/app/design/install/Magento/basic/web/images/footer_container_bg.gif b/app/design/install/Magento/basic/web/images/footer_container_bg.gif
deleted file mode 100644
index d280dcad8ab94b5ff49944f6a83b218a5f126dda..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 85
zcmZ?wbhEHbWM*h$Sj50!9+6`Zl&0mI<Pcxvo?7OaUcmqcia%Mvv<`>_sbyf6(vae@
en{dKu^<InDXLtWk(CACaoR_g`-I`ep4AuZ@Y8TA_

diff --git a/app/design/install/Magento/basic/web/images/footer_info_separator.gif b/app/design/install/Magento/basic/web/images/footer_info_separator.gif
deleted file mode 100644
index 81d13b63be184806527c970812b7fb292dd47a5e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 51
zcmZ?wbhEHbWMtrCn8?8J;>C-XK=kq@0|SHNPZl7_z@P&nK=KSsEK~Fa0~o9Ur1T9d

diff --git a/app/design/install/Magento/basic/web/images/footer_informational_bg.gif b/app/design/install/Magento/basic/web/images/footer_informational_bg.gif
deleted file mode 100644
index a4161dad9279a1ec40406b21fdd5c84b1f10cbd7..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 155
zcmZ?wbhEHbWMq(KIKsdX?B|!3nCS226&4Vf92XZK6%`W}7U1n28xi5-?jGdpn-Cox
z6&jkJloTEmloB5w;_sgr6BFp;6Bilj=jj<87Uu2d77-krnvf6~9Fi0p>+9jcfCLnO
qvVeIyAQEIJ1FJ-Wa035AS8qc_x1%Z3jU5`4WSO?+c8W4FSOWk$Gbhjh

diff --git a/app/design/install/Magento/basic/web/images/footer_left.gif b/app/design/install/Magento/basic/web/images/footer_left.gif
deleted file mode 100644
index 2019017a9ef0aede78e181899835703f45c09d15..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 486
zcmZ?wbhEHbWMhbDxXQrbkWgeFUuYLsU>lq7mRjbTQtFmcW*wd9o?7OfR&EfKW)+od
z6O-?pRO}F6=$usIo?31jTi}vh>Y7|?A6Mv-Tw)hnU>TWX9+BgbR^gIVVjoxF5MSh&
zSmcpjVH1<5<(uS~SZo=UYZ{(y8<TGpovY)YY#ozl5t*awpJEc0Wf_&DADC(too5=B
zWgd}j9GYnqlA#xn>YP~Ykyh@QP~?<Y?3rG{fCDK0WC6?QfJl&^7})+h2%MNQX`{#q
z6*l9bgGn-cnT>^t0-Mi1EZyzPz!S2aVP6j;^XIbx-sLx&L#JO5JDV-|o3}B(MA1~N
z&Rjr|shQKPJ=UbFxtB?`r%QKoRIHqt2z#vgtU0l~j0?;cEm<~~pHY3T6r=oHQN9ha
zLVP@Pg=BWb#_ust*`LBZx8P{*+>#^Zf^%!m);G@Oloh+&HFv_z8<UylN}5T}ohdSR
z-qX2ejL#N5TlMbs+K;iDo^5+3%=awiH^Vcwe_gD5lKc8B?bx$tFsJm*vXoMkyEVb%
z<87B>@yjzmZ`pY87`wcA){Th7#Vx(UW?}(5FFKs=Wl6|$*&ul67>l|2r3)uNKRm|F
J<H*2Z4FI%}u0Q|)

diff --git a/app/design/install/Magento/basic/web/images/footer_legality_bg.gif b/app/design/install/Magento/basic/web/images/footer_legality_bg.gif
deleted file mode 100644
index 2c1cc68d0a48cc241c62894b5616d4fe31e6bf70..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 92
zcmZ?wbhEHbWMtrG*v!E2@#DwezkmPu{{6-C=TDzJ`T6tbqlXXQyng-R{rkUv{(SlJ
gg#i^P{$v3Q=zvI&84N6(7bX-61T1P1VPvod0JV}PZvX%Q

diff --git a/app/design/install/Magento/basic/web/images/footer_right.gif b/app/design/install/Magento/basic/web/images/footer_right.gif
deleted file mode 100644
index 665f8099f8f6ba562bb209d5d1e6cc419fd328e2..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 489
zcmZ?wbhEHbWMhbDxXQrbkWgeFUuYLsU>lq7mRjbTQtFmcW*wd9o?7OfR&EfKW)+od
z6O-?pRO}F6=$usIo?31jTi}vh>Y7|?A6Mv-Tw)hnU>TWX9+BgbR^gIVVjoxF5MSh&
zSmcpjVH1<5<(uS~SZo=UYZ{(y8<TGpovY)YY#ozl5t*awpJEc0Wf_&DADC(too5=B
zWgd}j9GYnqlA#xn>YP~Ykyh@QP~?<Y?3rG{fCDK0WC6?QfJl&^7})+hOw&naY7{w<
z!m~^&(LnD^(~*aJ_-0EoH6}5rZNGgqnj@aAVN*qbaZ7m4ci$swEv^%1{oQs#`4G35
zsXzmhVoME^8E31RNup|3zq#(D#E8D>B4%>4%o5Gn8F?2hS~7j{0(D0I1@eqi>-a<$
z@bC$3mD!OPm#`;uK}ME&;lbQv)#jBa>lQS1n2X8wBz9dfpLTWTt;y!nW|9kL&rO`Y
zz?^aZf|ak=zJ0#o`Q}f%6Z!Tf9$4_}XVKs1RSaso10VCRXku7+cSf0>%XaD8hg@2I
z2;8wOU0~p4Q~p>)qg>wdn3enMn7sx+4)Fw^ycjPr-JI>%lMI0=hor9`da~!^1oh)=
N^K1{#<z`~A1^^xpvycD)

diff --git a/app/design/install/Magento/basic/web/images/header_bg.gif b/app/design/install/Magento/basic/web/images/header_bg.gif
deleted file mode 100644
index 5ec714c9c94ad8b10788e544390199fdefd4fab0..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 471
zcmZ?wbhEHbyui-JaD;(j$>N2_j_i5-=*Fs*OE+&?w{6SXv!@Tun>Y8&=_9*$Y}~MJ
z<>JMQ_U_)ge*Kz-3+CUvaem+49V=HXd-dY(r3=UQ?cRLi*?$JSK=CIFSY8K2g6w2q
z{hy%Pmy$UzW7WEx*ZT@|&X?rguUPlK=KcQz3kp1Rr20=RDLR>BHUGkj60fyU>u;<n
zJN>q5|AP$`K6<myzt~cBHgEU+4?Al7*57{rV^7`r_rL!)G&VK2w6?W(bar+3^s0(X
zm^f+jl&RCE&zL!D_MEx%<}X;dXz`Mz%a*TLxoY*AwM#fzxtJN)*KOOrW9P2jd-m?z
zf8gMu!$*!DJAUHisrl>-%v`LTr!QZ*dhPm+o7aTz+`V`I!NW(7pFDl`{Kd;xuiw0V
z_x{7jPoKYh{r3IG&kt;jJS>8IUpQqvHY_;U%pt55b7I57!|ejfUUNJ)E;?GurzDUd
zaNxkveg)?)8P82iJUBIiLsrF{+_d!cbc5tmb38XMJ3HH=_|=`0o0p%T@6gO8>$OG0
zpOIg{A!EaV6_=L>EcTk~wRP3i)e)Ps?w;DZ`uh5W!(DrKE?{I~;b-ZIJ-u!1?d=7R
KckwbZSOWkKKlii%

diff --git a/app/design/install/Magento/basic/web/images/header_nav_bg.gif b/app/design/install/Magento/basic/web/images/header_nav_bg.gif
deleted file mode 100644
index 479af3cfceee40fb7b3eba0a5754cbaa1d1df59f..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 49
zcmZ?wbhEHbWMp7wn8?7e?efcuPrn|z^PYi$LGdRGkYr%c0TCd11}3JKAO>pycvcKc

diff --git a/app/design/install/Magento/basic/web/images/header_top_bg.jpg b/app/design/install/Magento/basic/web/images/header_top_bg.jpg
deleted file mode 100644
index 6375f3ffdd8ec43f86d3e2fa0c729cad079d9dd8..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 32536
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
D|6wZb

diff --git a/app/design/install/Magento/basic/web/images/header_top_container_bg.jpg b/app/design/install/Magento/basic/web/images/header_top_container_bg.jpg
deleted file mode 100644
index 02f969177aea73618ee8f61e23d85923cb72dfd6..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 40972
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
M{F^;R{%H7r0qH~cb^rhX

diff --git a/app/design/install/Magento/basic/web/images/i_notice.gif b/app/design/install/Magento/basic/web/images/i_notice.gif
deleted file mode 100644
index 17733eff3fa73171ffbce8254fa0b368d940b74d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 802
zcmcJM|1Z>W9LHbp<2c`rJ9KE|IG-Fg*CdBp<VNMPaxvN}cSs^%65BPCyVFtJY2GV0
zj%dSL{6PBTSesKK>(*uKkgc;TvRP8X(&pli==sC*r|09B$1~|vB0pNp0e@Hmuv+i$
zSP=ktd(*!zqKF94>#rLOH%IkoVxpw96h52LI|HIpZRm86NPteKi9}#BNhOjfv$-lc
z8AviOKOag<<0>l?x3=ovOdua0;Br|@OLBtn)D0tofL1N4tc3RVOo4zH(xIfJV38<X
z-G~|+&j|!jRRxPnXnR}r(X`9D&dj2UiiF5W=<P!zBiAA${dBskn_H-_PeP@FuP?N<
zBPJ7mt)t~-g~d|c+bfnz;W>%;d?+j19k_XV!q`~R#wKcMMXjwF#l`S_6-7lIsIO09
zFd!=nl(k4I70k||?(R#gtIG8BL$!5?!Eh7`L-~Av8V%k~p@oGi7RzPV%zq90kL{j)
z2-~Z@Pr%+<4RS@z9XKAJ7N=}bso~^h3MF%2W3$SShp`J&)1mOjXJfHfXNSF(plKbR
zG`nL4LasQdUu~zoNQTGY=#hpa*pVc;I5B;^hJ)!&Q;5&TAx61}8$N0x6WSgbML5DT
z6^h-BPcdzU+^@A84<00i)E#PSAy+e)JL8h#T$r}NS&;Wp>B_F@HSshp*C{%Buq%h@
z?ArNIXfaX(U#VsW9429Ep5tSB%*zoQY<p}pJYhh9nwr3{1PF(3a8ZxcB;eVy)%ur7
zLBz2Pd%3uw`~)#qk|S<XvsNTL;Q-yjVKxM(oQ{8Q-xK)zHf2p?E0eQ5amC@g^VzAg
zA#_C>!s*l}kJdfVwbYau!%(Q3^{<mxGk7R&o%vL)VM}^&5iLd*)}Qw}kSH$^p9faR
z-R#f;y*O2M5Z`l~HH^IYVIJ)lHhpO6{P|@P&)daa(5-)?q&p3C<W_I2%swkHuL_hb
IkO9R0132Fp3;+NC

diff --git a/app/design/install/Magento/basic/web/images/main_bg.gif b/app/design/install/Magento/basic/web/images/main_bg.gif
deleted file mode 100644
index 5a358b5e10a7ced8eb0bf2b3fd495d00761f38fc..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 32524
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

diff --git a/app/design/install/Magento/basic/web/images/main_container_bg.gif b/app/design/install/Magento/basic/web/images/main_container_bg.gif
deleted file mode 100644
index 65664ffa9be41fd80bf34777b734302611556c97..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 7629
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
Sugm-@9L<)D5ds1MivI_n6u}w*

diff --git a/app/design/install/Magento/basic/web/images/note_msg_icon.gif b/app/design/install/Magento/basic/web/images/note_msg_icon.gif
deleted file mode 100644
index c9cacc27ae2553a59993d9702953dc19c53c679b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1022
zcmeH`YfDpM0DzBkkdc+9Nk~LWQPC(861$LTZQW~8P@{xdX{KRXb|K7M>hiM8YL$aT
z(;O;dSXP!|qm@owTJu^?-R3sucJ%Ce?(bXp2l@p)pPx?;Jo^p^Vzwm)AwdXHi9i;^
zjaj(y8g97y2U5iJ=Mf3drISP2;u%o7bx-Cxb84R62IQFC?(huO0%{PgIZRr5AvGot
z@LBvj!28Lm7J%yjVYGj|G~1R285B2U64;2P;R=K405!~dyMZMRPzL=#2QfQ{s<J1t
z!>o13?265d`Z(4s9xaM;yo|BExyX9Euy-k5a~IKZ$k~+S(~C%->Ga-B?w&H-oQk!a
zC$QgI?RUsJy%Wu(a}?l{@$tLMi?<7p@Xwq&YFFKBYj4MT^2-$!tY^g4*NCZKj6dDw
z8EdjMXECmx66sAyn(%Su+_yV_z${_vg^UBTbExt#Y5u_aG>og2^$tK<Z-1L+e4SqT
zvc{>&VV$FpGBB<dVBIGc32l$U2;)s_g@AQ_Wn6WnMGAZ>(*CUEq1-**PR(@tObNtP
zHg3G`Gd5pNI#pe(bZQGm@_2w4hO~n)-=nD+!upwUe*)AbZfS#1e<NM|yL8(?;Z96b
z;+sezELTa_@RVNjJTF=P;4UDBXos40_d^y1l*uYx=ou2snEHU%1Zgu(*&XJew4<1u
ze9xd=)zx)0VU^w8O4BIvpMMsJptybrQi<^9t@$UAfH5R?AuC^BCilPfWu<FNhIn19
zD0*#o5MQQT9G(-1p6EKhX4wN?VQ%obrKO?K+_2W%DoO1sZUCa%EiHZ?$yuITjufhw
zBS@p{*Bb#RM6xJ1rM~KZZ_T<?*cx}TzCg7hbG0^69VuPH%TB$}5Wim>vZw4vT~&yo
z3_0+GdnY5(sViELaF(lyxTsP@A9SNDY(_pO+>aY*3rZ~Vi&-42ARi|S6u}#Xp^t+_
vt84jz`M1Ke{7+0vgmW43?oREDL?(+d_;vQBNs0@F0a35M&Q5atImnK`#|6+T

diff --git a/app/design/install/Magento/basic/web/images/success_msg_icon.gif b/app/design/install/Magento/basic/web/images/success_msg_icon.gif
deleted file mode 100644
index 611faffbc5f4254d54bd031f87470be3b32b28cf..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1024
zcmZ?wbhEHb6krfw_&$$e!nyi&ca}DvE8lo}{oEUqicVzw`TKkO!}VJquB$qen|~-V
zcYFA{>kHRkU$EuYvMo24?ti=^??}?h+tYof+unV3%edNL`kB_^T`}wLEXzBRXi{&O
zzcr#@e|Yv`uj1orDI0t;4|#05vLR%XN$b(lt=Bf}d%UgkU`om16u;SyTW_zp{q)wH
zb3M17-<)-&cka3FzyJOQZqwE5S5a$Lo_}fL-g_H&-r7)iFtc!H^!A4vG%8ip>Xg-r
zRML)k%sktbwKJgfL`K|7kIgri#%!_e+tZzYEM@Jz+0)K;<ZKI@cD(u8yGsQJlb7F^
z?6E=p?f2K6N6L;p-&L|b+N96WX@QaR0wcQ~t1b7})bGeF*b({o!@X&z+ZJA%8gs~I
z@%3p1$5ZpRM)dCJsy|g=*JV|9D(mCV4`nAaYj&lS?@8ErcloU+H~Y4BfBE(4-s@Z4
zCn~nwU3K%#m08EzgBCay?TlV{ed?@J?RCfV8_pCJ9!W0Q9#gn4e)Z+qt1r!d{PAA?
z*2qn_SJduF+j@V^!*{nUPiAYBso2f1o_&2{?e?^iLy<8DtPVWc*>I}ZdZF5k(`_Xu
zGHUmwN9{9jKUvwlFL&m}?#$z!$Di-AYq6Seq&x3u^2`f8GtRUZo(y^R<#GF=qWr^&
z|NsC0@%=l)C?FI9ia%Kx85rg<=ztW0@&p6NT?SiD8IKJK2W?%AWQ$mmI2D@bsd*Y5
zQFUO@wR5?k@gs%1ftiJcL!qIecaaqH#t#e)3XL<Edg@qKJ#yh<Z4|PQ@d#MZy_BQO
z>%vdwC6f;D6>&^doYXj($z`sIYmuRcLXUB&%>$1`EKcgo({l_aC{EyHGw3{4lJ)88
ziC#C}5)Kig#Ya2cv#j=>*rd?cYM#il?#G2=Eb|2Os$@PE9cS#)XS(il^UCovt=cta
z4xCA@&0UQuNe*6(C;ex-@^ihF2rzIFu_*rZ!qI3UQ+BgXTfj-hjvy%$fo5?Y4hCxg
DT8Vgm

diff --git a/app/design/install/Magento/basic/web/images/validation_advice_bg.gif b/app/design/install/Magento/basic/web/images/validation_advice_bg.gif
deleted file mode 100644
index 46b1a2267ba5ad31f59a9c6cd8eaac9ee3b0f8ce..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 134
zcmZ?wbhEHb<YeGw*v!N5efR3Gi+Vq|<$PN`<DHe@&&Rhu1nT^HdiR|<-?uG`-<fiM
zKd|xluWt-6p!k!8k%57SK?fuNGJ}D|c!FoxGGCR*X%n1gT@mDBG-62NIhCN$kRa2&
gNv2Ie#%HfV`++0dU*7CG;(KY+91%8APZkDi0Dg`$ivR!s

diff --git a/app/etc/di.xml b/app/etc/di.xml
index a8f3e14e5a9..e8440ff4a4b 100644
--- a/app/etc/di.xml
+++ b/app/etc/di.xml
@@ -92,17 +92,17 @@
     <preference for="Magento\Framework\Mview\View\SubscriptionInterface" type="Magento\Framework\Mview\View\Subscription" />
     <preference for="Magento\Framework\Mview\View\ChangelogInterface" type="Magento\Framework\Mview\View\Changelog" />
     <preference for="Magento\Framework\View\Design\FileResolution\Fallback\CacheDataInterface" type="Magento\Framework\View\Design\FileResolution\Fallback\CacheData\Flat"/>
-    <preference for="Magento\Framework\Service\Data\AttributeMetadataBuilderInterface" type="Magento\Framework\Service\Data\AttributeMetadataBuilder"/>
-    <preference for="Magento\Framework\Service\Data\MetadataServiceInterface" type="Magento\Framework\Service\Config\MetadataConfig"/>
+    <preference for="Magento\Framework\Api\AttributeMetadataBuilderInterface" type="Magento\Framework\Api\AttributeMetadataBuilder"/>
+    <preference for="Magento\Framework\Api\MetadataServiceInterface" type="Magento\Framework\Api\Config\MetadataConfig"/>
     <preference for="Magento\Framework\App\Rss\UrlBuilderInterface" type="Magento\Framework\App\Rss\UrlBuilder"/>
     <type name="Magento\Framework\Model\Context">
         <arguments>
             <argument name="actionValidator" xsi:type="object">Magento\Framework\Model\ActionValidator\RemoveAction\Proxy</argument>
         </arguments>
     </type>
-    <type name="Magento\Framework\Service\V1\Data\FilterBuilder" shared="false" />
-    <type name="Magento\Framework\Service\V1\Data\SearchCriteriaBuilder" shared="false" />
-    <type name="Magento\Framework\Service\Data\AttributeValueBuilder" shared="false" />
+    <type name="Magento\Framework\Api\FilterBuilder" shared="false" />
+    <type name="Magento\Framework\Api\SearchCriteriaBuilder" shared="false" />
+    <type name="Magento\Framework\Api\AttributeValueBuilder" shared="false" />
     <type name="Magento\Framework\View\Layout\Builder" shared="false" />
     <type name="Magento\Framework\View\Page\Builder" shared="false" />
     <type name="Magento\Framework\Message\Manager">
diff --git a/app/i18n/magento/de_de/composer.json b/app/i18n/magento/de_de/composer.json
index a26529f6fa3..04c5fa37ffb 100644
--- a/app/i18n/magento/de_de/composer.json
+++ b/app/i18n/magento/de_de/composer.json
@@ -1,9 +1,9 @@
 {
     "name": "magento/language-de_de",
     "description": "German (Germany) language",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "require": {
-        "magento/framework": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-language",
diff --git a/app/i18n/magento/en_us/composer.json b/app/i18n/magento/en_us/composer.json
index dce772e9fd5..2da87721ec0 100644
--- a/app/i18n/magento/en_us/composer.json
+++ b/app/i18n/magento/en_us/composer.json
@@ -1,9 +1,9 @@
 {
     "name": "magento/language-en_us",
     "description": "English (United States) language",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "require": {
-        "magento/framework": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-language",
diff --git a/app/i18n/magento/es_es/composer.json b/app/i18n/magento/es_es/composer.json
index 2e2c1cefdfc..2d4801b4d25 100644
--- a/app/i18n/magento/es_es/composer.json
+++ b/app/i18n/magento/es_es/composer.json
@@ -1,9 +1,9 @@
 {
     "name": "magento/language-es_es",
     "description": "Spanish (Spain) language",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "require": {
-        "magento/framework": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-language",
diff --git a/app/i18n/magento/fr_fr/composer.json b/app/i18n/magento/fr_fr/composer.json
index 1e96fab82da..dbbea826ea6 100644
--- a/app/i18n/magento/fr_fr/composer.json
+++ b/app/i18n/magento/fr_fr/composer.json
@@ -1,9 +1,9 @@
 {
     "name": "magento/language-fr_fr",
     "description": "French (France) language",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "require": {
-        "magento/framework": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-language",
diff --git a/app/i18n/magento/nl_nl/composer.json b/app/i18n/magento/nl_nl/composer.json
index 63b823e5d54..7e8220b3a6d 100644
--- a/app/i18n/magento/nl_nl/composer.json
+++ b/app/i18n/magento/nl_nl/composer.json
@@ -1,9 +1,9 @@
 {
     "name": "magento/language-nl_nl",
     "description": "Dutch (Netherlands) language",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "require": {
-        "magento/framework": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-language",
diff --git a/app/i18n/magento/pt_br/composer.json b/app/i18n/magento/pt_br/composer.json
index adb63f32172..ea16345b323 100644
--- a/app/i18n/magento/pt_br/composer.json
+++ b/app/i18n/magento/pt_br/composer.json
@@ -1,9 +1,9 @@
 {
     "name": "magento/language-pt_br",
     "description": "Portuguese (Brazil) language",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "require": {
-        "magento/framework": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-language",
diff --git a/app/i18n/magento/zh_cn/composer.json b/app/i18n/magento/zh_cn/composer.json
index ec0e7ec71a8..38e1cdcc023 100644
--- a/app/i18n/magento/zh_cn/composer.json
+++ b/app/i18n/magento/zh_cn/composer.json
@@ -1,9 +1,9 @@
 {
     "name": "magento/language-zh_cn",
     "description": "Chinese (China) language",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "require": {
-        "magento/framework": "0.1.0-alpha102",
+        "magento/framework": "0.1.0-alpha103",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-language",
diff --git a/composer.json b/composer.json
index f0bf973c266..6e91b7b16cc 100644
--- a/composer.json
+++ b/composer.json
@@ -2,7 +2,7 @@
     "name": "magento/project-community-edition",
     "description": "Magento project (Community Edition)",
     "type": "project",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "require": {
         "php": "~5.4.11|~5.5.0",
         "zendframework/zend-stdlib": "2.0.3"
@@ -53,7 +53,6 @@
         "magento/module-grouped-product": "self.version",
         "magento/module-import-export": "self.version",
         "magento/module-indexer": "self.version",
-        "magento/module-install": "self.version",
         "magento/module-integration": "self.version",
         "magento/module-layered-navigation": "self.version",
         "magento/module-log": "self.version",
@@ -175,6 +174,49 @@
             "tinymce/tinymce": "lib/web/tiny_mce"
         }
     },
+    "config": {
+        "use-include-path": true
+    },
+    "autoload": {
+        "psr-0": {
+            "Apache_": "lib/internal/",
+            "Cm_": "lib/internal/",
+            "Credis_": "lib/internal/",
+            "Less_": "lib/internal/",
+            "Symfony\\": "lib/internal/",
+            "Zend_Date": "app/code/",
+            "Zend_Mime": "app/code/",
+            "Zend_": "lib/internal/",
+            "Zend\\": "lib/internal/"
+        },
+        "psr-4": {
+            "Magento\\Framework\\": "lib/internal/Magento/Framework/",
+            "Magento\\": [
+                "var/generation/Magento/",
+                "app/code/Magento/"
+            ],
+            "Zend\\Soap\\": "app/code/Zend/Soap/",
+            "Zend\\": "lib/internal/Zend/"
+        },
+        "classmap": [
+            "app/code/"
+        ]
+    },
+    "include-path": [
+        "/lib/internal/",
+        "/app/code/"
+    ],
+    "autoload-dev": {
+        "psr-4": {
+            "Magento\\Sniffs\\": "dev/tests/static/framework/Magento/Sniffs/",
+            "Magento\\Tools\\": "dev/tools/Magento/Tools/",
+            "Magento\\Tools\\License\\": "dev/build/publication/license/",
+            "Magento\\Tools\\Sanity\\": "dev/build/publication/sanity/Magento/Tools/Sanity/",
+            "Magento\\TestFramework\\Inspection\\": "dev/tests/static/framework/Magento/TestFramework/Inspection/",
+            "Magento\\TestFramework\\Utility\\": "dev/tests/static/framework/Magento/TestFramework/Utility/",
+            "Magento\\ToolkitFramework\\": "dev/tools/performance-toolkit/framework/Magento/ToolkitFramework/"
+        }
+    },
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/dev/shell/cache.php b/dev/shell/cache.php
index 65e129bb1a8..c88ea03f2f7 100644
--- a/dev/shell/cache.php
+++ b/dev/shell/cache.php
@@ -27,6 +27,7 @@
 namespace Magento\Framework\App;
 
 use Magento\Framework\App\Cache\ManagerApp;
+use Magento\Framework\Shell\ComplexParameter;
 
 require __DIR__ . '/../../app/bootstrap.php';
 
@@ -34,7 +35,7 @@ $usage = 'Usage: php -f cache.php -- [--' . ManagerApp::KEY_SET . '=1|0]'
     . ' [--' . ManagerApp::KEY_CLEAN . ']'
     . ' [--' . ManagerApp::KEY_FLUSH . ']'
     . ' [--' . ManagerApp::KEY_TYPES . '=<type1>,<type2>,...]'
-    . ' [--bootstrap=<json>]
+    . ' [--bootstrap='. escapeshellarg('INIT_PARAM=foo&ANOTHER_PARAM[key]=bar') . ']
     --' . ManagerApp::KEY_TYPES . ' - list of cache types, comma-separated. If omitted, all caches will be affected
     --' . ManagerApp::KEY_SET . ' - enable or disable the specified cache types
     --' . ManagerApp::KEY_CLEAN . ' - clean data of the specified cache types
@@ -53,14 +54,8 @@ if (empty($opt)) {
 }
 
 try {
-    $params = $_SERVER;
-    if (isset($opt['bootstrap'])) {
-        $extra = json_decode($opt['bootstrap'], true);
-        if (!is_array($extra)) {
-            throw new \Exception("Unable to decode JSON in the parameter 'bootstrap'");
-        }
-        $params = array_replace_recursive($params, $extra);
-    }
+    $bootstrapParam = new ComplexParameter('bootstrap');
+    $params = $bootstrapParam->mergeFromArgv($_SERVER, $_SERVER);
     $params[Bootstrap::PARAM_REQUIRE_MAINTENANCE] = null;
     $bootstrap = Bootstrap::create(BP, $params);
     /** @var ManagerApp $app */
diff --git a/dev/shell/install.php b/dev/shell/install.php
deleted file mode 100644
index 02783cc5d09..00000000000
--- a/dev/shell/install.php
+++ /dev/null
@@ -1,107 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright  Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-
-use Magento\Framework\App\State as AppState;
-use Magento\Framework\App\Bootstrap;
-
-/**
- * Parse command line arguments
- */
-$currentArgName = false;
-$args = array();
-foreach ($_SERVER['argv'] as $argNameOrValue) {
-    if (substr($argNameOrValue, 0, 2) == '--') {
-        // argument name
-        $currentArgName = substr($argNameOrValue, 2);
-        // in case if argument doesn't need a value
-        $args[$currentArgName] = true;
-    } else {
-        // argument value
-        if ($currentArgName) {
-            $args[$currentArgName] = $argNameOrValue;
-        }
-        $currentArgName = false;
-    }
-}
-
-if (empty($args)) {
-    $detailedOptions = array('show_locales', 'show_currencies', 'show_timezones', 'show_install_options');
-    echo 'Detailed info:' . PHP_EOL;
-    foreach ($detailedOptions as $option) {
-        echo '  php -f ' . $_SERVER['argv'][0] . ' -- --' . $option . PHP_EOL;
-    }
-    echo "php -f {$_SERVER['argv'][0]} -- [--<install_option_name> \"<option_value>\" ...]\n";
-
-    $exampleOptions = array(
-        'license_agreement_accepted' => 'yes',
-        'locale' => 'en_US',
-        'timezone' => '"America/Los_Angeles"',
-        'default_currency' => 'USD',
-        'db_host' => 'localhost',
-        'db_name' => 'magento',
-        'db_user' => 'root',
-        'url' => '"http://magento.local/"',
-        'use_rewrites' => 'no',
-        'use_secure_admin' => 'yes',
-        'admin_lastname' => 'Smith',
-        'admin_firstname' => 'John',
-        'admin_email' => '"john.smith@some-email.com"',
-        'admin_username' => 'admin',
-        'admin_password' => '1234qasd',
-        'use_secure' => 'no',
-        'secure_base_url' => '"https://magento.local"',
-        'cleanup_database' => '',
-        'bootstrap' => '{"extra":{"key":"value"}}',
-    );
-    echo 'Example of installation:' . PHP_EOL;
-    echo '  php -f ' . $_SERVER['argv'][0] . ' --';
-    foreach ($exampleOptions as $option => $value) {
-        if (!empty($value)) {
-            echo ' --' . $option . ' ' . $value;
-        } else {
-            echo ' --' . $option;
-        }
-    }
-    echo PHP_EOL;
-    exit(1);
-}
-
-require __DIR__ . '/../../app/bootstrap.php';
-
-$params = $_SERVER;
-$params[Bootstrap::PARAM_REQUIRE_IS_INSTALLED] = false;
-if (!isset($params[AppState::PARAM_MODE])) {
-    $params[AppState::PARAM_MODE] = AppState::MODE_DEVELOPER;
-}
-if (isset($args['bootstrap'])) {
-    $extra = json_decode($args['bootstrap'], true);
-    if (!is_array($extra)) {
-        throw new \Exception("Unable to decode JSON in the parameter 'bootstrap'");
-    }
-    $params = array_replace_recursive($params, $extra);
-}
-$bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $params);
-/** @var \Magento\Install\App\Console $app */
-$app = $bootstrap->createApplication('Magento\Install\App\Console', ['arguments' => $args]);
-$bootstrap->run($app);
diff --git a/dev/shell/maintenance.php b/dev/shell/maintenance.php
deleted file mode 100644
index ce0c850cc8e..00000000000
--- a/dev/shell/maintenance.php
+++ /dev/null
@@ -1,77 +0,0 @@
-<?php
-/**
- * Maintenance mode tool
- *
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright  Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-
-define(
-    'USAGE',
-    "Usage: php -f maintenance.php -- [--set=1|0] [--addresses=127.0.0.1,...|none'] [--bootstrap=<json>]
-        --set - enable or disable maintenance mode
-        --addresses - list of allowed IP addresses, comma-separated
-        --bootstrap - add or override parameters of the bootstrap\n"
-);
-$opt = getopt('', ['set::', 'addresses::', 'bootstrap::']);
-if (empty($opt)) {
-    echo USAGE;
-}
-
-require __DIR__ . '/../../app/bootstrap.php';
-try {
-    $params = $_SERVER;
-    if (isset($opt['bootstrap'])) {
-        $extra = json_decode($opt['bootstrap'], true);
-        if (!is_array($extra)) {
-            throw new \Exception("Unable to decode JSON in the parameter 'bootstrap'");
-        }
-        $params = array_replace_recursive($params, $extra);
-    }
-    $bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $params);
-    /** @var \Magento\Framework\App\MaintenanceMode $maintenance */
-    $maintenance = $bootstrap->getObjectManager()->get('Magento\Framework\App\MaintenanceMode');
-    if (isset($opt['set'])) {
-        if (1 === (int)$opt['set']) {
-            echo "Enabling maintenance mode...\n";
-            $maintenance->set(true);
-        } else {
-            echo "Disabling maintenance mode...\n";
-            $maintenance->set(false);
-        }
-    }
-    if (isset($opt['addresses'])) {
-        $addresses = ('none' == $opt['addresses']) ? '' : $opt['addresses'];
-        $maintenance->setAddresses($addresses);
-    }
-    echo 'Status: maintenance mode is ' . ($maintenance->isOn() ? 'active' : 'not active') . ".\n";
-    $addresses = implode(', ', $maintenance->getAddressInfo());
-    echo "List of exempt IP-addresses:";
-    if ($addresses) {
-        echo " {$addresses}\n";
-    } else {
-        echo " none.\n";
-    }
-    exit(0);
-} catch (Exception $e) {
-    echo $e;
-    exit(1);
-}
diff --git a/dev/shell/run_data_fixtures.php b/dev/shell/run_data_fixtures.php
index 2841bec11d7..240c1552e76 100644
--- a/dev/shell/run_data_fixtures.php
+++ b/dev/shell/run_data_fixtures.php
@@ -23,9 +23,11 @@
  */
 
 use Magento\Framework\App\State as AppState;
+use Magento\Framework\Shell\ComplexParameter;
 
 require __DIR__ . '/../../app/bootstrap.php';
-$params = $_SERVER;
+$bootstrapParam = new ComplexParameter('bootstrap');
+$params = $bootstrapParam->mergeFromArgv($_SERVER, $_SERVER);
 if (!isset($params[AppState::PARAM_MODE])) {
     $params[AppState::PARAM_MODE] = AppState::MODE_DEVELOPER;
 }
diff --git a/dev/shell/uninstall.php b/dev/shell/uninstall.php
deleted file mode 100644
index 1d7538276ac..00000000000
--- a/dev/shell/uninstall.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?php
-/**
- * Uninstall utility
- *
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright  Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-
-define('USAGE', "Usage: php -f uninstall.php -- [--bootstrap=<json>]\n");
-$opt = getopt('', ['bootstrap::']);
-
-require __DIR__ . '/../../app/bootstrap.php';
-try {
-    $params = $_SERVER;
-    if (isset($opt['bootstrap'])) {
-        $extra = json_decode($opt['bootstrap'], true);
-        if (!is_array($extra)) {
-            throw new \Exception("Unable to decode JSON in the parameter 'bootstrap'");
-        }
-        $params = array_replace_recursive($params, $extra);
-    }
-    $bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $params);
-    $log = new  \Zend_Log(new \Zend_Log_Writer_Stream('php://stdout'));
-    /** @var \Magento\Install\Model\Uninstaller $uninstall */
-    $uninstall = $bootstrap->getObjectManager()->create('\Magento\Install\Model\Uninstaller', ['log' => $log]);
-    $uninstall->uninstall();
-    exit(0);
-} catch (\Exception $e) {
-    echo $e;
-    exit(1);
-}
diff --git a/dev/tests/functional/.gitignore b/dev/tests/functional/.gitignore
index e559b0dd179..f12c1a57910 100755
--- a/dev/tests/functional/.gitignore
+++ b/dev/tests/functional/.gitignore
@@ -5,3 +5,4 @@
 /config/*
 !/config/*.dist
 phpunit.xml
+/lib/Mtf/Util/Generate/testcase.xml
diff --git a/dev/tests/functional/bootstrap.php b/dev/tests/functional/bootstrap.php
index 61b94c8a78c..3ce476da9b4 100644
--- a/dev/tests/functional/bootstrap.php
+++ b/dev/tests/functional/bootstrap.php
@@ -25,5 +25,7 @@
 session_start();
 defined('MTF_BOOT_FILE') || define('MTF_BOOT_FILE', __FILE__);
 require_once __DIR__ . '/../../../app/bootstrap.php';
+$includePath = new \Magento\Framework\Autoload\IncludePath();
+spl_autoload_register([$includePath, 'load']);
 restore_error_handler();
 require_once __DIR__ . '/vendor/autoload.php';
diff --git a/dev/tests/functional/tests/app/Magento/Backend/Test/Block/Widget/Form.php b/dev/tests/functional/tests/app/Magento/Backend/Test/Block/Widget/Form.php
index ec1bfc0801e..7d897aa35c8 100644
--- a/dev/tests/functional/tests/app/Magento/Backend/Test/Block/Widget/Form.php
+++ b/dev/tests/functional/tests/app/Magento/Backend/Test/Block/Widget/Form.php
@@ -34,6 +34,7 @@ use Mtf\Block\Form as FormInstance;
  * Class Form
  * Is used to represent any form on the page
  *
+ * @SuppressWarnings(PHPMD.NumberOfChildren)
  */
 class Form extends FormInstance
 {
diff --git a/dev/tests/functional/tests/app/Magento/Bundle/Test/Constraint/AssertBundleItemsOnProductPage.php b/dev/tests/functional/tests/app/Magento/Bundle/Test/Constraint/AssertBundleItemsOnProductPage.php
index ed1aa93767d..b1bbc548972 100755
--- a/dev/tests/functional/tests/app/Magento/Bundle/Test/Constraint/AssertBundleItemsOnProductPage.php
+++ b/dev/tests/functional/tests/app/Magento/Bundle/Test/Constraint/AssertBundleItemsOnProductPage.php
@@ -96,6 +96,11 @@ class AssertBundleItemsOnProductPage extends AbstractAssertForm
                     ? $assignedProduct['data']['selection_price_value']
                     : $bundleSelections['products'][$optionKey][$productKey]->getPrice();
 
+                if ($product->hasData('group_price')) {
+                    $groupedPrice = $product->getGroupPrice();
+                    $price -= $price / 100 * reset($groupedPrice)['price'];
+                }
+
                 $optionData['options'][$productKey] = [
                     'title' => $assignedProduct['search_data']['name'],
                     'price' => number_format($price, 2)
diff --git a/dev/tests/functional/tests/app/Magento/Bundle/Test/Fixture/BundleProduct/Price.php b/dev/tests/functional/tests/app/Magento/Bundle/Test/Fixture/BundleProduct/Price.php
index dc2b8ceac32..87281821efc 100644
--- a/dev/tests/functional/tests/app/Magento/Bundle/Test/Fixture/BundleProduct/Price.php
+++ b/dev/tests/functional/tests/app/Magento/Bundle/Test/Fixture/BundleProduct/Price.php
@@ -165,7 +165,7 @@ class Price implements FixtureInterface
                 'cart_price' => '100.00'
             ],
             'dynamic-50' => [
-                'price_from' => 'As low as $50.00',
+                'price_from' => '50.00',
             ],
             'fixed-115' => [
                 'price_from' => '115.00',
diff --git a/dev/tests/functional/tests/app/Magento/Bundle/Test/Handler/BundleProduct/Curl.php b/dev/tests/functional/tests/app/Magento/Bundle/Test/Handler/BundleProduct/Curl.php
index 05ed1f8a4ab..daaecc57e42 100644
--- a/dev/tests/functional/tests/app/Magento/Bundle/Test/Handler/BundleProduct/Curl.php
+++ b/dev/tests/functional/tests/app/Magento/Bundle/Test/Handler/BundleProduct/Curl.php
@@ -27,16 +27,22 @@ namespace Magento\Bundle\Test\Handler\BundleProduct;
 use Mtf\System\Config;
 use Mtf\Fixture\FixtureInterface;
 use Magento\Catalog\Test\Handler\CatalogProductSimple\Curl as ProductCurl;
+use Magento\Bundle\Test\Fixture\BundleProduct;
 
 /**
- * Class Curl
- * Create new bundle product via curl
+ * Create new bundle product via curl.
  */
 class Curl extends ProductCurl implements BundleProductInterface
 {
     /**
-     * Constructor
+     * Fixture product.
      *
+     * @var BundleProduct
+     */
+    protected $fixture;
+
+    /**
+     * @constructor
      * @param Config $configuration
      */
     public function __construct(Config $configuration)
@@ -78,7 +84,19 @@ class Curl extends ProductCurl implements BundleProductInterface
     }
 
     /**
-     * Prepare POST data for creating product request
+     * Post request for creating bundle product product.
+     *
+     * @param FixtureInterface|null $fixture [optional]
+     * @return array
+     */
+    public function persist(FixtureInterface $fixture = null)
+    {
+        $this->fixture = $fixture;
+        return parent::persist($fixture);
+    }
+
+    /**
+     * Prepare POST data for creating product request.
      *
      * @param FixtureInterface $fixture
      * @param string|null $prefix [optional]
@@ -115,4 +133,54 @@ class Curl extends ProductCurl implements BundleProductInterface
 
         return $this->replaceMappingData($data);
     }
+
+    /**
+     * Parse response.
+     *
+     * @param string $response
+     * @return array
+     */
+    protected function parseResponse($response)
+    {
+        return array_replace_recursive(parent::parseResponse($response), $this->parseResponseSelections($response));
+    }
+
+    /**
+     * Parse bundle selections in response.
+     *
+     * @param string $response
+     * @return array
+     */
+    protected function parseResponseSelections($response)
+    {
+        $selectionIdKey = 1;
+        $optionIdKey = 2;
+        $productNameKey = 3;
+        $responseSelections = [];
+        $bundleSelections = $this->fixture->getBundleSelections();
+
+        preg_match_all(
+            '/{.*"selection_id":"(\d+)".*"option_id":"(\d+)".*"name":"([^"]+)".*}/',
+            $response,
+            $matches,
+            PREG_SET_ORDER
+        );
+        foreach ($matches as $match) {
+            $productName = $match[$productNameKey];
+            $responseSelections[$productName] = [
+                'selection_id' => $match[$selectionIdKey],
+                'option_id' => $match[$optionIdKey],
+            ];
+        }
+
+        foreach ($bundleSelections['bundle_options'] as $optionKey => $option) {
+            foreach ($option['assigned_products'] as $assignedKey => $optionValue) {
+                $productName = $optionValue['search_data']['name'];
+                $bundleSelections['bundle_options'][$optionKey]['assigned_products'][$assignedKey] +=
+                    $responseSelections[$productName];
+            }
+        }
+
+        return ['bundle_selections' => $bundleSelections];
+    }
 }
diff --git a/dev/tests/functional/tests/app/Magento/Bundle/Test/TestCase/CreateBundleProductEntityTest/test.csv b/dev/tests/functional/tests/app/Magento/Bundle/Test/TestCase/CreateBundleProductEntityTest/test.csv
index f30fdc9c267..a5cb3ad71d7 100644
--- a/dev/tests/functional/tests/app/Magento/Bundle/Test/TestCase/CreateBundleProductEntityTest/test.csv
+++ b/dev/tests/functional/tests/app/Magento/Bundle/Test/TestCase/CreateBundleProductEntityTest/test.csv
@@ -1,15 +1,15 @@
 "product/data/name";"product/data/sku_type";"product/data/sku";"product/data/status";"product/data/price_type";"product/data/price/value";"product/data/price/preset";"product/data/tax_class_id/dataSet";"product/data/quantity_and_stock_status/is_in_stock";"product/data/weight_type";"product/data/weight";"product/data/category";"product/data/description";"product/data/group_price/preset";"product/data/special_price";"product/data/special_from_date/pattern";"product/data/special_to_date/pattern";"product/data/tier_price/preset";"product/data/price_view";"product/data/stock_data/use_config_manage_stock";"product/data/stock_data/manage_stock";"product/data/shipment_type";"product/data/bundle_selections/preset";"product/data/bundle_selections/products";"product/data/checkout_data/preset";"product/data/custom_options/preset";"product/data/custom_options/import_products";"product/data/visibility";"product/data/use_config_gift_message_available";"product/data/gift_message_available";"constraint";"issue"
 "BundleProduct %isolation%";"-";"bundle_sku_%isolation%";"-";"-";"-";"-";"-";"-";"-";"-";"-";"Bundle Product Dynamic Required";"-";"-";"-";"-";"-";"-";"No";"No";"-";"default_dynamic";"catalogProductSimple::100_dollar_product,catalogProductVirtual::50_dollar_product";"default";"-";"-";"-";"-";"-";"assertProductSaveMessage, assertProductInGrid, assertBundleItemsOnProductPage";""
 "BundleProduct %isolation%";"Fixed";"bundle_sku_%isolation%";"Product offline";"Dynamic";"-";"-";"-";"Out of Stock";"Dynamic";"-";"category_%isolation%";"-";"-";"-";"-";"-";"-";"-";"-";"-";"Separately";"default_dynamic";"catalogProductSimple::100_dollar_product,catalogProductVirtual::50_dollar_product";"default";"-";"-";"Catalog, Search";"No";"Yes";"assertProductSaveMessage,  assertProductNotSearchableBySku";""
-"BundleProduct %isolation%";"Dynamic";"bundle_sku_%isolation%";"Product online";"Dynamic";"-";"dynamic-200";"-";"In Stock";"Dynamic";"-";"category_%isolation%";"Bundle Product Dynamic";"-";"-";"-";"-";"-";"Price Range";"-";"-";"Together";"all_types_dynamic";"catalogProductSimple::100_dollar_product,catalogProductVirtual::50_dollar_product|catalogProductSimple::100_dollar_product,catalogProductVirtual::50_dollar_product|catalogProductSimple::100_dollar_product,catalogProductVirtual::50_dollar_product|catalogProductSimple::100_dollar_product,catalogProductVirtual::50_dollar_product";"all_types_bundle_options";"-";"-";"Catalog, Search";"No";"Yes";"assertProductSaveMessage, assertProductInGrid, assertBundleProductForm, assertProductSearchableBySku, assertBundleProductPage, assertProductInStock, assertBundleItemsOnProductPage, assertProductVisibleInCategory, assertBundlePriceView, assertBundlePriceType";"Bug: MAGETWO-26969"
+"BundleProduct %isolation%";"Dynamic";"bundle_sku_%isolation%";"Product online";"Dynamic";"-";"dynamic-200";"-";"In Stock";"Dynamic";"-";"category_%isolation%";"Bundle Product Dynamic";"-";"-";"-";"-";"-";"Price Range";"-";"-";"Together";"all_types_dynamic";"catalogProductSimple::100_dollar_product,catalogProductVirtual::50_dollar_product|catalogProductSimple::100_dollar_product,catalogProductVirtual::50_dollar_product|catalogProductSimple::100_dollar_product,catalogProductVirtual::50_dollar_product|catalogProductSimple::100_dollar_product,catalogProductVirtual::50_dollar_product";"all_types_bundle_options";"-";"-";"Catalog, Search";"No";"Yes";"assertProductSaveMessage, assertProductInGrid, assertBundleProductForm, assertProductSearchableBySku, assertBundleProductPage, assertProductInStock, assertBundleItemsOnProductPage, assertProductVisibleInCategory, assertBundlePriceView, assertBundlePriceType";""
 "BundleProduct %isolation%";"Fixed";"bundle_sku_%isolation%";"-";"Fixed";"10";"fixed-15";"None";"-";"Fixed";"10";"-";"Bundle Product Fixed Required";"-";"-";"-";"-";"-";"-";"-";"-";"-";"default_fixed";"catalogProductSimple::100_dollar_product,catalogProductVirtual::50_dollar_product";"default";"-";"-";"-";"-";"-";"assertProductSaveMessage, assertProductInGrid, assertBundleProductForm, assertProductSearchableBySku, assertBundleProductPage, assertBundleItemsOnProductPage";""
-"BundleProduct %isolation%";"Fixed";"bundle_sku_%isolation%";"Product online";"Fixed";"100";"fixed-24";"Taxable Goods";"In Stock";"Fixed";"10";"category_%isolation%";"Bundle Product Fixed";"default";"-";"-";"-";"-";"As Low as";"-";"-";"Separately";"all_types_fixed";"catalogProductSimple::100_dollar_product,catalogProductVirtual::50_dollar_product|catalogProductSimple::100_dollar_product,catalogProductVirtual::50_dollar_product|catalogProductSimple::100_dollar_product,catalogProductVirtual::50_dollar_product|catalogProductSimple::100_dollar_product,catalogProductVirtual::50_dollar_product";"all_types_bundle_fixed_and_custom_options";"all_types";"-";"Catalog, Search";"No";"No";"assertProductSaveMessage, assertProductInGrid, assertBundleProductForm, assertProductVisibleInCategory, assertBundleProductPage, assertProductInStock, assertGroupedPriceOnBundleProductPage, assertBundleItemsOnProductPage, assertBundlePriceView, assertBundlePriceType";"Bug: MAGETWO-26969"
+"BundleProduct %isolation%";"Fixed";"bundle_sku_%isolation%";"Product online";"Fixed";"100";"fixed-24";"Taxable Goods";"In Stock";"Fixed";"10";"category_%isolation%";"Bundle Product Fixed";"default";"-";"-";"-";"-";"As Low as";"-";"-";"Separately";"all_types_fixed";"catalogProductSimple::100_dollar_product,catalogProductVirtual::50_dollar_product|catalogProductSimple::100_dollar_product,catalogProductVirtual::50_dollar_product|catalogProductSimple::100_dollar_product,catalogProductVirtual::50_dollar_product|catalogProductSimple::100_dollar_product,catalogProductVirtual::50_dollar_product";"all_types_bundle_fixed_and_custom_options";"all_types";"-";"Catalog, Search";"No";"No";"assertProductSaveMessage, assertProductInGrid, assertBundleProductForm, assertProductVisibleInCategory, assertBundleProductPage, assertProductInStock, assertGroupedPriceOnBundleProductPage, assertBundleItemsOnProductPage, assertBundlePriceView, assertBundlePriceType";""
 "BundleProduct %isolation%";"Fixed";"bundle_sku_%isolation%";"Product online";"Fixed";"10";"fixed-1";"Taxable Goods";"Out of Stock";"Fixed";"10";"category_%isolation%";"-";"-";"10";"m/d/Y";"m/d/Y +3 days";"-";"Price Range";"No";"Yes";"Together";"with_not_required_options";"catalogProductSimple::100_dollar_product,catalogProductVirtual::50_dollar_product|catalogProductSimple::100_dollar_product,catalogProductVirtual::50_dollar_product";"with_not_required_options";"-";"-";"Catalog";"No";"No";"assertProductSaveMessage, assertProductInGrid, assertBundleProductForm,  assertBundleProductPage, assertProductOutOfStock, assertBundlePriceView";"Bug: MAGETWO-26980"
-"BundleProduct %isolation%";"Dynamic";"bundle_sku_%isolation%";"-";"Dynamic";"-";"dynamic-50";"-";"-";"Fixed";"10";"-";"-";"-";"-";"-";"-";"default";"As Low as";"No";"No";"Together";"default_dynamic";"catalogProductSimple::100_dollar_product,catalogProductVirtual::50_dollar_product";"default";"-";"-";"Search";"-";"-";"assertProductSaveMessage, assertProductInGrid, assertBundleProductForm, assertProductSearchableBySku, assertBundleProductPage, assertBundleItemsOnProductPage, assertTierPriceOnBundleProductPage";"Bug: MAGETWO-28914"
+"BundleProduct %isolation%";"Dynamic";"bundle_sku_%isolation%";"-";"Dynamic";"-";"dynamic-50";"-";"-";"Fixed";"10";"-";"-";"-";"-";"-";"-";"default";"As Low as";"No";"No";"Together";"default_dynamic";"catalogProductSimple::100_dollar_product,catalogProductVirtual::50_dollar_product";"default";"-";"-";"Search";"-";"-";"assertProductSaveMessage, assertProductInGrid, assertBundleProductForm, assertProductSearchableBySku, assertBundleProductPage, assertBundleItemsOnProductPage, assertTierPriceOnBundleProductPage";""
 "Bundle Dynamic %isolation%";"Dynamic";"sku_bundle_dynamic_%isolation%";"-";"Dynamic";"-";"dynamic-8";"-";"-";"-";"-";"-";"-";"-";"20";"-";"-";"-";"-";"-";"-";"-";"default_dynamic";"catalogProductSimple::100_dollar_product,catalogProductSimple::40_dollar_product";"default";"-";"-";"-";"-";"-";"assertProductSaveMessage, assertBundleInCategory";""
 "Bundle Dynamic %isolation%";"Dynamic";"sku_bundle_dynamic_%isolation%";"-";"Dynamic";"-";"dynamic-32";"-";"-";"-";"-";"-";"-";"MAGETWO-23061";"-";"-";"-";"-";"-";"-";"-";"-";"default_dynamic";"catalogProductSimple::100_dollar_product,catalogProductSimple::40_dollar_product";"default";"-";"-";"-";"-";"-";"assertProductSaveMessage, assertBundleInCategory, assertBundlePriceView, assertBundlePriceType";""
 "Bundle Dynamic %isolation%";"Dynamic";"sku_bundle_dynamic_%isolation%";"-";"Dynamic";"-";"dynamic-40";"-";"-";"-";"-";"-";"-";"-";"-";"-";"-";"-";"-";"-";"-";"-";"default_dynamic";"catalogProductSimple::100_dollar_product,catalogProductSimple::40_dollar_product";"default";"-";"-";"-";"-";"-";"assertProductSaveMessage, assertBundleInCategory, assertBundlePriceView, assertBundlePriceType";""
-"Bundle Fixed %isolation%";"Fixed";"sku_bundle_fixed_%isolation%";"-";"Fixed";"110";"fixed-115";"-";"-";"-";"-";"-";"-";"-";"-";"-";"-";"-";"-";"-";"-";"-";"second";"catalogProductSimple::100_dollar_product,catalogProductSimple::40_dollar_product";"with_custom_options_1";"drop_down_with_one_option_fixed_price";"catalogProductSimple::with_two_custom_option,catalogProductSimple::with_all_custom_option";"-";"-";"-";"assertProductSaveMessage, assertBundleInCategory, assertBundlePriceView, assertBundlePriceType, assertProductCustomOptionsOnBundleProductPage";"Bug: MAGETWO-28905, MAGETWO-28913"
+"Bundle Fixed %isolation%";"Fixed";"sku_bundle_fixed_%isolation%";"-";"Fixed";"110";"fixed-115";"-";"-";"-";"-";"-";"-";"-";"-";"-";"-";"-";"-";"-";"-";"-";"second";"catalogProductSimple::100_dollar_product,catalogProductSimple::40_dollar_product";"with_custom_options_1";"drop_down_with_one_option_fixed_price";"catalogProductSimple::with_two_custom_option,catalogProductSimple::with_all_custom_option";"-";"-";"-";"assertProductSaveMessage, assertBundleInCategory, assertBundlePriceView, assertBundlePriceType, assertProductCustomOptionsOnBundleProductPage";""
 "Bundle Fixed %isolation%";"Fixed";"sku_bundle_fixed_%isolation%";"-";"Fixed";"110";"fixed-159";"-";"-";"-";"-";"-";"-";"-";"-";"-";"-";"-";"-";"-";"-";"-";"second";"catalogProductSimple::100_dollar_product,catalogProductSimple::40_dollar_product";"with_custom_options_2";"drop_down_with_one_option_percent_price";"-";"-";"-";"-";"assertProductSaveMessage, assertBundleInCategory, assertBundlePriceView, assertBundlePriceType";""
 "Bundle Dynamic %isolation%";"Dynamic";"sku_bundle_dynamic_%isolation%";"-";"Dynamic";"-";"-";"-";"-";"-";"-";"-";"-";"-";"-";"-";"-";"-";"-";"-";"-";"-";"default_dynamic";"catalogProductSimple::100_dollar_product,catalogProductSimple::40_dollar_product";"default";"-";"-";"-";"-";"-";"assertProductSaveMessage";""
 "Bundle Fixed %isolation%";"Fixed";"sku_bundle_fixed_%isolation%";"-";"Fixed";"10";"-";"-";"-";"-";"-";"-";"-";"-";"-";"-";"-";"-";"-";"-";"-";"-";"second";"catalogProductSimple::100_dollar_product,catalogProductSimple::40_dollar_product";"default";"-";"-";"-";"-";"-";"assertProductSaveMessage";""
diff --git a/dev/tests/functional/tests/app/Magento/Catalog/Test/Block/Adminhtml/Product/Edit/Tab/ProductDetails/CategoryIds.php b/dev/tests/functional/tests/app/Magento/Catalog/Test/Block/Adminhtml/Product/Edit/Tab/ProductDetails/CategoryIds.php
index 2ffcee808d0..822ecf09c94 100644
--- a/dev/tests/functional/tests/app/Magento/Catalog/Test/Block/Adminhtml/Product/Edit/Tab/ProductDetails/CategoryIds.php
+++ b/dev/tests/functional/tests/app/Magento/Catalog/Test/Block/Adminhtml/Product/Edit/Tab/ProductDetails/CategoryIds.php
@@ -25,6 +25,7 @@
 namespace Magento\Catalog\Test\Block\Adminhtml\Product\Edit\Tab\ProductDetails;
 
 use Mtf\Client\Driver\Selenium\Element\MultisuggestElement;
+use Mtf\Client\Element\Locator;
 
 /**
  * Class CategoryIds
@@ -45,4 +46,23 @@ class CategoryIds extends MultisuggestElement
      * @var string
      */
     protected $resultItem = './/li/a/span[@class="category-label"][text()="%s"]';
+
+    /**
+     * Selector for click on top page.
+     *
+     * @var string
+     */
+    protected $top = './ancestor::body//form[@data-form="edit-product"]';
+
+    /**
+     * Set value
+     *
+     * @param array|string $values
+     * @return void
+     */
+    public function setValue($values)
+    {
+        $this->find($this->top, Locator::SELECTOR_XPATH)->click();
+        parent::setValue($values);
+    }
 }
diff --git a/dev/tests/functional/tests/app/Magento/Catalog/Test/Block/Product/Compare/ListCompare.php b/dev/tests/functional/tests/app/Magento/Catalog/Test/Block/Product/Compare/ListCompare.php
index e1a681048cc..4e34ab73f16 100644
--- a/dev/tests/functional/tests/app/Magento/Catalog/Test/Block/Product/Compare/ListCompare.php
+++ b/dev/tests/functional/tests/app/Magento/Catalog/Test/Block/Product/Compare/ListCompare.php
@@ -90,6 +90,13 @@ class ListCompare extends Block
      */
     protected $isEmpty = 'p.empty';
 
+    /**
+     * Selector for message block
+     *
+     * @var string
+     */
+    protected $messageBlock = '#messages';
+
     /**
      * Get product info
      *
@@ -166,14 +173,22 @@ class ListCompare extends Block
     }
 
     /**
-     * Remove all products from compare product list
+     * Remove all products from compare product list.
      *
      * @return void
      */
     public function removeAllProducts()
     {
+        $this->waitForElementVisible(sprintf($this->removeButton, 1), Locator::SELECTOR_XPATH);
+        /** @var \Magento\Core\Test\Block\Messages $messageBlock */
+        $messageBlock = $this->blockFactory->create(
+            'Magento\Core\Test\Block\Messages',
+            ['element' => $this->browser->find($this->messageBlock)]
+        );
+
         while ($this->isProductVisible()) {
             $this->removeProduct();
+            $messageBlock->waitSuccessMessage();
             $this->reinitRootElement();
         }
     }
diff --git a/dev/tests/functional/tests/app/Magento/Catalog/Test/Constraint/AssertPriceOnProductPageInterface.php b/dev/tests/functional/tests/app/Magento/Catalog/Test/Constraint/AssertPriceOnProductPageInterface.php
index 9447928dc4c..659703b1092 100644
--- a/dev/tests/functional/tests/app/Magento/Catalog/Test/Constraint/AssertPriceOnProductPageInterface.php
+++ b/dev/tests/functional/tests/app/Magento/Catalog/Test/Constraint/AssertPriceOnProductPageInterface.php
@@ -25,7 +25,7 @@
 namespace Magento\Catalog\Test\Constraint;
 
 use Mtf\Fixture\FixtureInterface;
-use Magento\Catalog\Test\Page\Product\CatalogProductView;
+use Magento\Catalog\Test\Block\Product\View;
 
 /**
  * Interface AssertPriceOnProductPageInterface
@@ -37,11 +37,10 @@ interface AssertPriceOnProductPageInterface
      * Verify product price on product view page
      *
      * @param FixtureInterface $product
-     * @param CatalogProductView $catalogProductView
-     * @param string $block
+     * @param View $productViewBlock
      * @return void
      */
-    public function assertPrice(FixtureInterface $product, CatalogProductView $catalogProductView, $block);
+    public function assertPrice(FixtureInterface $product, View $productViewBlock);
 
     /**
      * Set $errorMessage for constraint
diff --git a/dev/tests/functional/tests/app/Magento/Catalog/Test/Constraint/AssertProductGroupedPriceOnProductPage.php b/dev/tests/functional/tests/app/Magento/Catalog/Test/Constraint/AssertProductGroupedPriceOnProductPage.php
index 0ac953636b0..077e6297b04 100644
--- a/dev/tests/functional/tests/app/Magento/Catalog/Test/Constraint/AssertProductGroupedPriceOnProductPage.php
+++ b/dev/tests/functional/tests/app/Magento/Catalog/Test/Constraint/AssertProductGroupedPriceOnProductPage.php
@@ -69,7 +69,7 @@ class AssertProductGroupedPriceOnProductPage extends AbstractConstraint implemen
         $browser->open($_ENV['app_frontend_url'] . $product->getUrlKey() . '.html');
 
         //Process assertions
-        $this->assertPrice($product, $catalogProductView);
+        $this->assertPrice($product, $catalogProductView->getViewBlock());
     }
 
     /**
@@ -87,19 +87,14 @@ class AssertProductGroupedPriceOnProductPage extends AbstractConstraint implemen
      * Verify product special price on product view page
      *
      * @param FixtureInterface $product
-     * @param CatalogProductView $catalogProductView
-     * @param string $block [optional]
+     * @param View $productViewBlock
      * @param string $customerGroup [optional]
      * @return void
      */
-    public function assertPrice(
-        FixtureInterface $product,
-        CatalogProductView $catalogProductView,
-        $block = '',
-        $customerGroup = 'NOT LOGGED IN'
-    ) {
+    public function assertPrice(FixtureInterface $product, View $productViewBlock, $customerGroup = 'NOT LOGGED IN')
+    {
         $this->customerGroup = $customerGroup;
-        $groupPrice = $this->getGroupedPrice($catalogProductView->{'get' . $block . 'ViewBlock'}(), $product);
+        $groupPrice = $this->getGroupedPrice($productViewBlock, $product);
         \PHPUnit_Framework_Assert::assertEquals($groupPrice['fixture'], $groupPrice['onPage'], $this->errorMessage);
     }
 
diff --git a/dev/tests/functional/tests/app/Magento/Catalog/Test/Constraint/AssertProductPage.php b/dev/tests/functional/tests/app/Magento/Catalog/Test/Constraint/AssertProductPage.php
index 9ea6b1e13d3..f88c701f2d5 100755
--- a/dev/tests/functional/tests/app/Magento/Catalog/Test/Constraint/AssertProductPage.php
+++ b/dev/tests/functional/tests/app/Magento/Catalog/Test/Constraint/AssertProductPage.php
@@ -129,6 +129,10 @@ class AssertProductPage extends AbstractAssertForm
      */
     protected function verifyPrice()
     {
+        if ($this->product->hasData('price') == false) {
+            return null;
+        }
+
         $fixtureProductPrice = number_format($this->product->getPrice(), 2);
         $formProductPrice = $this->productView->getPriceBlock()->getRegularPrice();
 
diff --git a/dev/tests/functional/tests/app/Magento/Catalog/Test/Constraint/AssertProductSpecialPriceOnProductPage.php b/dev/tests/functional/tests/app/Magento/Catalog/Test/Constraint/AssertProductSpecialPriceOnProductPage.php
index ddf0b535713..5be5ea84a0a 100755
--- a/dev/tests/functional/tests/app/Magento/Catalog/Test/Constraint/AssertProductSpecialPriceOnProductPage.php
+++ b/dev/tests/functional/tests/app/Magento/Catalog/Test/Constraint/AssertProductSpecialPriceOnProductPage.php
@@ -28,9 +28,10 @@ use Mtf\Client\Browser;
 use Mtf\Fixture\FixtureInterface;
 use Mtf\Constraint\AbstractConstraint;
 use Magento\Catalog\Test\Page\Product\CatalogProductView;
+use Magento\Catalog\Test\Block\Product\View;
 
 /**
- * Class AssertProductSpecialPriceOnProductPage
+ * Assert that displayed special price on product page equals passed from fixture.
  */
 class AssertProductSpecialPriceOnProductPage extends AbstractConstraint implements AssertPriceOnProductPageInterface
 {
@@ -61,7 +62,7 @@ class AssertProductSpecialPriceOnProductPage extends AbstractConstraint implemen
         $browser->open($_ENV['app_frontend_url'] . $product->getUrlKey() . '.html');
 
         //Process assertions
-        $this->assertPrice($product, $catalogProductView);
+        $this->assertPrice($product, $catalogProductView->getViewBlock());
     }
 
     /**
@@ -78,18 +79,14 @@ class AssertProductSpecialPriceOnProductPage extends AbstractConstraint implemen
     /**
      * Verify product special price on product view page
      *
-     * @param CatalogProductView $catalogProductView
      * @param FixtureInterface $product
-     * @param string $block [optional]
+     * @param View $productViewBlock
      * @return void
      */
-    public function assertPrice(
-        FixtureInterface $product,
-        CatalogProductView $catalogProductView,
-        $block = ''
-    ) {
+    public function assertPrice(FixtureInterface $product, View $productViewBlock)
+    {
         $fields = $product->getData();
-        $specialPrice = $catalogProductView->getViewBlock()->getPriceBlock()->getSpecialPrice();
+        $specialPrice = $productViewBlock->getPriceBlock()->getSpecialPrice();
         if (isset($fields['special_price'])) {
             \PHPUnit_Framework_Assert::assertEquals(
                 number_format($fields['special_price'], 2),
diff --git a/dev/tests/functional/tests/app/Magento/Catalog/Test/Constraint/AssertProductTierPriceOnProductPage.php b/dev/tests/functional/tests/app/Magento/Catalog/Test/Constraint/AssertProductTierPriceOnProductPage.php
index 39c86790468..805d0c67de2 100755
--- a/dev/tests/functional/tests/app/Magento/Catalog/Test/Constraint/AssertProductTierPriceOnProductPage.php
+++ b/dev/tests/functional/tests/app/Magento/Catalog/Test/Constraint/AssertProductTierPriceOnProductPage.php
@@ -31,7 +31,7 @@ use Magento\Catalog\Test\Block\Product\View;
 use Magento\Catalog\Test\Page\Product\CatalogProductView;
 
 /**
- * Class AssertProductTierPriceOnProductPage
+ * Assert that displayed tier price on product page equals passed from fixture.
  */
 class AssertProductTierPriceOnProductPage extends AbstractConstraint implements AssertPriceOnProductPageInterface
 {
@@ -74,7 +74,7 @@ class AssertProductTierPriceOnProductPage extends AbstractConstraint implements
         $browser->open($_ENV['app_frontend_url'] . $product->getUrlKey() . '.html');
 
         //Process assertions
-        $this->assertPrice($product, $catalogProductView);
+        $this->assertPrice($product, $catalogProductView->getViewBlock());
     }
 
     /**
@@ -92,21 +92,18 @@ class AssertProductTierPriceOnProductPage extends AbstractConstraint implements
      * Verify product tier price on product view page
      *
      * @param FixtureInterface $product
-     * @param CatalogProductView $catalogProductView
-     * @param string $block [optional]
+     * @param View $productViewBlock
      * @return void
      */
-    public function assertPrice(FixtureInterface $product, CatalogProductView $catalogProductView, $block = '')
+    public function assertPrice(FixtureInterface $product, View $productViewBlock)
     {
         $noError = true;
         $match = [];
         $index = 1;
-        /** @var View $viewBlock */
-        $viewBlock = $catalogProductView->{'get' . $block . 'ViewBlock'}();
         $tierPrices = $product->getTierPrice();
 
         foreach ($tierPrices as $tierPrice) {
-            $text = $viewBlock->getTierPrices($index++);
+            $text = $productViewBlock->getTierPrices($index++);
             $noError = (bool)preg_match('#^[^\d]+(\d+)[^\d]+(\d+(?:(?:,\d+)*)+(?:.\d+)*).*#i', $text, $match);
             if (!$noError) {
                 break;
diff --git a/dev/tests/functional/tests/app/Magento/Catalog/Test/Fixture/CatalogProductAttribute.php b/dev/tests/functional/tests/app/Magento/Catalog/Test/Fixture/CatalogProductAttribute.php
index ec87b10f042..d2c743eb773 100644
--- a/dev/tests/functional/tests/app/Magento/Catalog/Test/Fixture/CatalogProductAttribute.php
+++ b/dev/tests/functional/tests/app/Magento/Catalog/Test/Fixture/CatalogProductAttribute.php
@@ -372,7 +372,7 @@ class CatalogProductAttribute extends InjectableFixture
         'is_required' => '',
         'default_value' => '',
         'input' => '',
-        'source' => '\Magento\Catalog\Test\Fixture\CatalogProductAttribute\Options',
+        'source' => 'Magento\Catalog\Test\Fixture\CatalogProductAttribute\Options',
         'group' => 'manage-options'
     ];
 
diff --git a/dev/tests/functional/tests/app/Magento/Catalog/Test/Fixture/CatalogProductAttribute.xml b/dev/tests/functional/tests/app/Magento/Catalog/Test/Fixture/CatalogProductAttribute.xml
index d4ae55aa028..03fe5c0d756 100644
--- a/dev/tests/functional/tests/app/Magento/Catalog/Test/Fixture/CatalogProductAttribute.xml
+++ b/dev/tests/functional/tests/app/Magento/Catalog/Test/Fixture/CatalogProductAttribute.xml
@@ -293,7 +293,7 @@
             <is_required></is_required>
             <default_value></default_value>
             <input></input>
-            <source>\Magento\Catalog\Test\Fixture\CatalogProductAttribute\Options</source>
+            <source>Magento\Catalog\Test\Fixture\CatalogProductAttribute\Options</source>
             <group>manage-options</group>
         </options>
     </fields>
diff --git a/dev/tests/functional/tests/app/Magento/Catalog/Test/Fixture/CatalogProductSimple/CheckoutData.php b/dev/tests/functional/tests/app/Magento/Catalog/Test/Fixture/CatalogProductSimple/CheckoutData.php
index 07f6362e39d..cf3d05e77b9 100644
--- a/dev/tests/functional/tests/app/Magento/Catalog/Test/Fixture/CatalogProductSimple/CheckoutData.php
+++ b/dev/tests/functional/tests/app/Magento/Catalog/Test/Fixture/CatalogProductSimple/CheckoutData.php
@@ -57,11 +57,12 @@ class CheckoutData implements FixtureInterface
     public function __construct(array $params, array $data = [])
     {
         $this->params = $params;
-        $this->data = isset($data['preset']) ? $this->getPreset($data['preset']) : $data;
-
-        if (isset($data['data'])) {
-            $this->data = array_replace_recursive($this->data, $data['data']);
+        $preset = [];
+        if (isset($data['preset'])) {
+            $preset = $this->getPreset($data['preset']);
+            unset($data['preset']);
         }
+        $this->data = empty($preset) ? $data : array_replace_recursive($preset, $data);
     }
 
     /**
diff --git a/dev/tests/functional/tests/app/Magento/Catalog/Test/Handler/CatalogProductAttribute/Curl.php b/dev/tests/functional/tests/app/Magento/Catalog/Test/Handler/CatalogProductAttribute/Curl.php
index afd59f648f0..79d06a271e9 100644
--- a/dev/tests/functional/tests/app/Magento/Catalog/Test/Handler/CatalogProductAttribute/Curl.php
+++ b/dev/tests/functional/tests/app/Magento/Catalog/Test/Handler/CatalogProductAttribute/Curl.php
@@ -95,7 +95,7 @@ class Curl extends AbstractCurl implements CatalogProductAttributeInterface
         $curl->close();
 
         if (!strpos($response, 'data-ui-id="messages-message-success"')) {
-            throw new \Exception("Product Attribute creating by curl handler was not successful!");
+            throw new \Exception("Product Attribute creating by curl handler was not successful! \n" . $response);
         }
 
         $resultData = [];
diff --git a/dev/tests/functional/tests/app/Magento/Catalog/Test/Handler/CatalogProductSimple/Curl.php b/dev/tests/functional/tests/app/Magento/Catalog/Test/Handler/CatalogProductSimple/Curl.php
index b670528f8f5..f3223f12f5c 100755
--- a/dev/tests/functional/tests/app/Magento/Catalog/Test/Handler/CatalogProductSimple/Curl.php
+++ b/dev/tests/functional/tests/app/Magento/Catalog/Test/Handler/CatalogProductSimple/Curl.php
@@ -32,8 +32,7 @@ use Mtf\Handler\Curl as AbstractCurl;
 use Mtf\Util\Protocol\CurlTransport\BackendDecorator;
 
 /**
- * Class CreateProduct
- * Create new simple product via curl
+ * Create new simple product via curl.
  */
 class Curl extends AbstractCurl implements CatalogProductSimpleInterface
 {
@@ -117,7 +116,7 @@ class Curl extends AbstractCurl implements CatalogProductSimpleInterface
     ];
 
     /**
-     * Placeholder for price data sent Curl
+     * Placeholder for price data sent Curl.
      *
      * @var array
      */
@@ -139,14 +138,14 @@ class Curl extends AbstractCurl implements CatalogProductSimpleInterface
     ];
 
     /**
-     * Select custom options
+     * Select custom options.
      *
      * @var array
      */
     protected $selectOptions = ['Drop-down', 'Radio Buttons', 'Checkbox', 'Multiple Select'];
 
     /**
-     * Post request for creating simple product
+     * Post request for creating simple product.
      *
      * @param FixtureInterface|null $fixture [optional]
      * @return array
@@ -164,7 +163,7 @@ class Curl extends AbstractCurl implements CatalogProductSimpleInterface
     }
 
     /**
-     * Prepare POST data for creating product request
+     * Prepare POST data for creating product request.
      *
      * @param FixtureInterface $fixture
      * @param string|null $prefix [optional]
@@ -237,7 +236,7 @@ class Curl extends AbstractCurl implements CatalogProductSimpleInterface
     }
 
     /**
-     * Preparation of custom options data
+     * Preparation of custom options data.
      *
      * @param array $fields
      * @return array
@@ -265,7 +264,7 @@ class Curl extends AbstractCurl implements CatalogProductSimpleInterface
     }
 
     /**
-     * Convert option name
+     * Convert option name.
      *
      * @param string $optionName
      * @return string
@@ -281,7 +280,7 @@ class Curl extends AbstractCurl implements CatalogProductSimpleInterface
     }
 
     /**
-     * Preparation of stock data
+     * Preparation of stock data.
      *
      * @param array $fields
      * @return array
@@ -318,7 +317,7 @@ class Curl extends AbstractCurl implements CatalogProductSimpleInterface
     }
 
     /**
-     * Preparation of tier price data
+     * Preparation of tier price data.
      *
      * @param array $fields
      * @return array
@@ -339,7 +338,7 @@ class Curl extends AbstractCurl implements CatalogProductSimpleInterface
     }
 
     /**
-     * Remove items from a null
+     * Remove items from a null.
      *
      * @param array $data
      * @return array
@@ -357,7 +356,7 @@ class Curl extends AbstractCurl implements CatalogProductSimpleInterface
     }
 
     /**
-     * Create product via curl
+     * Create product via curl.
      *
      * @param array $data
      * @param array $config
@@ -376,13 +375,25 @@ class Curl extends AbstractCurl implements CatalogProductSimpleInterface
         if (!strpos($response, 'data-ui-id="messages-message-success"')) {
             throw new \Exception("Product creation by curl handler was not successful! Response: $response");
         }
-        preg_match("~Location: [^\s]*\/id\/(\d+)~", $response, $matches);
 
-        return ['id' => isset($matches[1]) ? $matches[1] : null];
+        return $this->parseResponse($response);
     }
 
     /**
-     * Retrieve URL for request with all necessary parameters
+     * Parse data in response.
+     *
+     * @param string $response
+     * @return array
+     */
+    protected function parseResponse($response)
+    {
+        preg_match('~Location: [^\s]*\/id\/(\d+)~', $response, $matches);
+        $id = isset($matches[1]) ? $matches[1] : null;
+        return ['id' => $id];
+    }
+
+    /**
+     * Retrieve URL for request with all necessary parameters.
      *
      * @param array $config
      * @return string
diff --git a/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/Product/CreateSimpleProductEntityTest/testCreate.csv b/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/Product/CreateSimpleProductEntityTest/testCreate.csv
index a375ddbadc6..bcce9e2518f 100644
--- a/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/Product/CreateSimpleProductEntityTest/testCreate.csv
+++ b/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/Product/CreateSimpleProductEntityTest/testCreate.csv
@@ -1,19 +1,19 @@
-"product/data/name";"product/data/sku";"product/data/tax_class_id/dataSet";"product/data/price/value";"product/data/special_price";"product/data/short_description";"product/data/description";"product/data/weight";"product/data/quantity_and_stock_status/qty";"product/data/quantity_and_stock_status/is_in_stock";"product/data/visibility";"product/data/custom_options/preset";"product/data/checkout_data/preset";"product/data/custom_options/import_products";"product/data/price/preset";"product/data/group_price/preset";"product/data/tier_price/preset";"constraint";"issue"
-"Simple Product %isolation%";"simple_sku_%isolation%";"-";"10000";"-";"Simple Product short_description %isolation%";"Simple Product description %isolation%";"50";"657";"-";"-";"drop_down_with_one_option_fixed_price";"drop_down_with_one_option_fixed_price";"-";"drop_down_with_one_option_fixed_price";"-";"-";"assertProductSaveMessage, assertProductInGrid, assertProductInCategory, assertProductPage, assertProductInCart";""
-"Simple Product %isolation%";"simple_sku_%isolation%";"-";"10001";"-";"Simple Product short_description %isolation%";"Simple Product description %isolation%";"51";"658";"-";"-";"drop_down_with_one_option_percent_price";"drop_down_with_one_option_percent_price";"-";"drop_down_with_one_option_percent_price";"-";"-";"assertProductSaveMessage, assertProductInGrid, assertProductInCategory, assertProductPage, assertProductInCart";""
-"Simple Product %isolation%";"simple_sku_%isolation%";"-";"10002";"90";"Simple Product short_description %isolation%";"Simple Product description %isolation%";"52";"659";"-";"-";"drop_down_with_one_option_fixed_price";"drop_down_with_one_option_fixed_price";"-";"MAGETWO-23029";"-";"-";"assertProductSaveMessage, assertProductInGrid, assertProductInCategory, assertProductPage, assertProductInCart";""
-"Simple Product %isolation%";"simple_sku_%isolation%";"-";"10003";"90";"Simple Product short_description %isolation%";"Simple Product description %isolation%";"53";"660";"-";"-";"drop_down_with_one_option_percent_price";"drop_down_with_one_option_percent_price";"-";"MAGETWO-23030";"-";"-";"assertProductSaveMessage, assertProductInGrid, assertProductInCategory, assertProductPage, assertProductInCart";""
-"Simple Product %isolation%";"simple_sku_%isolation%";"-";"10004";"-";"Simple Product short_description %isolation%";"Simple Product description %isolation%";"54";"661";"-";"-";"drop_down_with_one_option_percent_price";"drop_down_with_one_option_percent_price";"-";"MAGETWO-23030";"MAGETWO-23055";"-";"assertProductSaveMessage, assertProductInGrid, assertProductInCategory, assertProductPage, assertProductInCart";""
-"Simple Product %isolation%";"simple_sku_%isolation%";"-";"10005";"-";"Simple Product short_description %isolation%";"Simple Product description %isolation%";"55";"662";"-";"-";"drop_down_with_one_option_fixed_price";"drop_down_with_one_option_fixed_price";"-";"MAGETWO-23029";"MAGETWO-23055";"-";"assertProductSaveMessage, assertProductInGrid, assertProductInCategory, assertProductPage, assertProductInCart";""
-"Simple Product %isolation%";"simple_sku_%isolation%";"-";"10006";"-";"Simple Product short_description %isolation%";"Simple Product description %isolation%";"56";"663";"-";"-";"drop_down_with_one_option_percent_price";"drop_down_with_one_option_percent_price";"-";"MAGETWO-23030";"-";"MAGETWO-23002";"assertProductSaveMessage, assertProductInGrid, assertProductInCategory, assertProductPage, assertProductInCart";""
-"Simple Product %isolation%";"simple_sku_%isolation%";"-";"10007";"-";"Simple Product short_description %isolation%";"Simple Product description %isolation%";"57";"664";"-";"-";"drop_down_with_one_option_fixed_price";"drop_down_with_one_option_fixed_price";"-";"MAGETWO-23029";"-";"MAGETWO-23002";"assertProductSaveMessage, assertProductInGrid, assertProductInCategory, assertProductPage, assertProductInCart";""
-"Simple Product %isolation%";"simple_sku_%isolation%";"-";"10008";"-";"Simple Product short_description %isolation%";"Simple Product description %isolation%";"58";"665";"-";"-";"-";"-";"-";"-";"-";"-";"assertProductSaveMessage, assertProductInGrid, assertProductVisibleInCategory, assertProductPage";""
-"Simple Product %isolation%";"simple_sku_%isolation%";"-";"10009";"-";"Simple Product short_description %isolation%";"Simple Product description %isolation%";"59";"75";"In Stock";"-";"-";"-";"-";"-";"-";"-";"assertProductSaveMessage, assertProductInStock";""
-"Simple Product %isolation%";"simple_sku_%isolation%";"-";"10010";"-";"Simple Product short_description %isolation%";"Simple Product description %isolation%";"60";"0";"Out of Stock";"-";"-";"-";"-";"-";"-";"-";"assertProductSaveMessage, assertProductOutOfStock";""
-"Simple Product %isolation%";"simple_sku_%isolation%";"-";"10011";"-";"Simple Product short_description %isolation%";"Simple Product description %isolation%";"61";"138";"-";"Search";"-";"-";"-";"-";"-";"-";"assertProductSaveMessage, assertProductSearchableBySku";""
-"Simple Product %isolation%";"simple_sku_%isolation%";"-";"10012";"-";"Simple Product short_description %isolation%";"Simple Product description %isolation%";"62";"139";"-";"-";"-";"-";"-";"-";"-";"-";"assertProductSaveMessage, assertProductInGrid, assertProductForm, assertProductInStock, assertProductSearchableBySku, assertProductPage";""
-"Simple Product %isolation%";"simple_sku_%isolation%";"-";"10013";"-";"Simple Product short_description %isolation%";"Simple Product description %isolation%";"63";"140";"-";"-";"-";"-";"-";"-";"-";"-";"assertProductSaveMessage, assertProductInGrid, assertProductForm, assertProductInStock, assertProductVisibleInCategory, assertProductPage";""
-"Simple Product %isolation%";"simple_sku_%isolation%";"Taxable Goods";"10014";"-";"Simple Product short_description %isolation%";"Simple Product description %isolation%";"64";"141";"-";"-";"-";"-";"-";"-";"default";"-";"assertProductSaveMessage, assertProductInGrid, assertProductForm, assertProductInStock, assertProductVisibleInCategory, assertProductPage, assertProductGroupedPriceOnProductPage";""
-"Simple Product %isolation%";"simple_sku_%isolation%";"Taxable Goods";"10015";"-";"Simple Product short_description %isolation%";"Simple Product description %isolation%";"65";"142";"-";"-";"-";"-";"-";"-";"-";"-";"assertProductSaveMessage, assertProductInGrid, assertProductForm, assertProductInStock, assertProductVisibleInCategory, assertProductPage, assertProductSpecialPriceOnProductPage";""
-"Simple Product %isolation%";"simple_sku_%isolation%";"None";"10016";"-";"Simple Product short_description %isolation%";"Simple Product description %isolation%";"66";"143";"-";"-";"-";"-";"-";"-";"-";"default";"assertProductSaveMessage, assertProductInGrid, assertProductForm, assertProductInStock, assertProductVisibleInCategory, assertProductPage, assertProductTierPriceOnProductPage";""
-"Simple Product %isolation%";"simple_sku_%isolation%";"-";"10017";"-";"Simple Product short_description %isolation%";"Simple Product description %isolation%";"67";"144";"-";"-";"options-suite";"options-suite";"catalogProductSimple::with_two_custom_option,catalogProductSimple::with_all_custom_option";"-";"-";"-";"assertProductSaveMessage, assertProductInGrid, assertProductForm, assertProductInStock, assertProductVisibleInCategory, assertProductPage, assertProductCustomOptionsOnProductPage";"Bug: MAGETWO-28913"
+"product/data/name";"product/data/sku";"product/data/tax_class_id/dataSet";"product/data/price/value";"product/data/special_price";"product/data/short_description";"product/data/description";"product/data/weight";"product/data/quantity_and_stock_status/qty";"product/data/quantity_and_stock_status/is_in_stock";"product/data/visibility";"product/data/custom_options/preset";"product/data/checkout_data/preset";"product/data/custom_options/import_products";"product/data/price/preset";"product/data/group_price/preset";"product/data/tier_price/preset";"constraint"
+"Simple Product %isolation%";"simple_sku_%isolation%";"-";"10000";"-";"Simple Product short_description %isolation%";"Simple Product description %isolation%";"50";"657";"-";"-";"drop_down_with_one_option_fixed_price";"drop_down_with_one_option_fixed_price";"-";"drop_down_with_one_option_fixed_price";"-";"-";"assertProductSaveMessage, assertProductInGrid, assertProductInCategory, assertProductPage, assertProductInCart"
+"Simple Product %isolation%";"simple_sku_%isolation%";"-";"10001";"-";"Simple Product short_description %isolation%";"Simple Product description %isolation%";"51";"658";"-";"-";"drop_down_with_one_option_percent_price";"drop_down_with_one_option_percent_price";"-";"drop_down_with_one_option_percent_price";"-";"-";"assertProductSaveMessage, assertProductInGrid, assertProductInCategory, assertProductPage, assertProductInCart"
+"Simple Product %isolation%";"simple_sku_%isolation%";"-";"10002";"90";"Simple Product short_description %isolation%";"Simple Product description %isolation%";"52";"659";"-";"-";"drop_down_with_one_option_fixed_price";"drop_down_with_one_option_fixed_price";"-";"MAGETWO-23029";"-";"-";"assertProductSaveMessage, assertProductInGrid, assertProductInCategory, assertProductPage, assertProductInCart"
+"Simple Product %isolation%";"simple_sku_%isolation%";"-";"10003";"90";"Simple Product short_description %isolation%";"Simple Product description %isolation%";"53";"660";"-";"-";"drop_down_with_one_option_percent_price";"drop_down_with_one_option_percent_price";"-";"MAGETWO-23030";"-";"-";"assertProductSaveMessage, assertProductInGrid, assertProductInCategory, assertProductPage, assertProductInCart"
+"Simple Product %isolation%";"simple_sku_%isolation%";"-";"10004";"-";"Simple Product short_description %isolation%";"Simple Product description %isolation%";"54";"661";"-";"-";"drop_down_with_one_option_percent_price";"drop_down_with_one_option_percent_price";"-";"MAGETWO-23030";"MAGETWO-23055";"-";"assertProductSaveMessage, assertProductInGrid, assertProductInCategory, assertProductPage, assertProductInCart"
+"Simple Product %isolation%";"simple_sku_%isolation%";"-";"10005";"-";"Simple Product short_description %isolation%";"Simple Product description %isolation%";"55";"662";"-";"-";"drop_down_with_one_option_fixed_price";"drop_down_with_one_option_fixed_price";"-";"MAGETWO-23029";"MAGETWO-23055";"-";"assertProductSaveMessage, assertProductInGrid, assertProductInCategory, assertProductPage, assertProductInCart"
+"Simple Product %isolation%";"simple_sku_%isolation%";"-";"10006";"-";"Simple Product short_description %isolation%";"Simple Product description %isolation%";"56";"663";"-";"-";"drop_down_with_one_option_percent_price";"drop_down_with_one_option_percent_price";"-";"MAGETWO-23030";"-";"MAGETWO-23002";"assertProductSaveMessage, assertProductInGrid, assertProductInCategory, assertProductPage, assertProductInCart"
+"Simple Product %isolation%";"simple_sku_%isolation%";"-";"10007";"-";"Simple Product short_description %isolation%";"Simple Product description %isolation%";"57";"664";"-";"-";"drop_down_with_one_option_fixed_price";"drop_down_with_one_option_fixed_price";"-";"MAGETWO-23029";"-";"MAGETWO-23002";"assertProductSaveMessage, assertProductInGrid, assertProductInCategory, assertProductPage, assertProductInCart"
+"Simple Product %isolation%";"simple_sku_%isolation%";"-";"10008";"-";"Simple Product short_description %isolation%";"Simple Product description %isolation%";"58";"665";"-";"-";"-";"-";"-";"-";"-";"-";"assertProductSaveMessage, assertProductInGrid, assertProductVisibleInCategory, assertProductPage"
+"Simple Product %isolation%";"simple_sku_%isolation%";"-";"10009";"-";"Simple Product short_description %isolation%";"Simple Product description %isolation%";"59";"75";"In Stock";"-";"-";"-";"-";"-";"-";"-";"assertProductSaveMessage, assertProductInStock"
+"Simple Product %isolation%";"simple_sku_%isolation%";"-";"10010";"-";"Simple Product short_description %isolation%";"Simple Product description %isolation%";"60";"0";"Out of Stock";"-";"-";"-";"-";"-";"-";"-";"assertProductSaveMessage, assertProductOutOfStock"
+"Simple Product %isolation%";"simple_sku_%isolation%";"-";"10011";"-";"Simple Product short_description %isolation%";"Simple Product description %isolation%";"61";"138";"-";"Search";"-";"-";"-";"-";"-";"-";"assertProductSaveMessage, assertProductSearchableBySku"
+"Simple Product %isolation%";"simple_sku_%isolation%";"-";"10012";"-";"Simple Product short_description %isolation%";"Simple Product description %isolation%";"62";"139";"-";"-";"-";"-";"-";"-";"-";"-";"assertProductSaveMessage, assertProductInGrid, assertProductForm, assertProductInStock, assertProductSearchableBySku, assertProductPage"
+"Simple Product %isolation%";"simple_sku_%isolation%";"-";"10013";"-";"Simple Product short_description %isolation%";"Simple Product description %isolation%";"63";"140";"-";"-";"-";"-";"-";"-";"-";"-";"assertProductSaveMessage, assertProductInGrid, assertProductForm, assertProductInStock, assertProductVisibleInCategory, assertProductPage"
+"Simple Product %isolation%";"simple_sku_%isolation%";"Taxable Goods";"10014";"-";"Simple Product short_description %isolation%";"Simple Product description %isolation%";"64";"141";"-";"-";"-";"-";"-";"-";"default";"-";"assertProductSaveMessage, assertProductInGrid, assertProductForm, assertProductInStock, assertProductVisibleInCategory, assertProductPage, assertProductGroupedPriceOnProductPage"
+"Simple Product %isolation%";"simple_sku_%isolation%";"Taxable Goods";"10015";"-";"Simple Product short_description %isolation%";"Simple Product description %isolation%";"65";"142";"-";"-";"-";"-";"-";"-";"-";"-";"assertProductSaveMessage, assertProductInGrid, assertProductForm, assertProductInStock, assertProductVisibleInCategory, assertProductPage, assertProductSpecialPriceOnProductPage"
+"Simple Product %isolation%";"simple_sku_%isolation%";"None";"10016";"-";"Simple Product short_description %isolation%";"Simple Product description %isolation%";"66";"143";"-";"-";"-";"-";"-";"-";"-";"default";"assertProductSaveMessage, assertProductInGrid, assertProductForm, assertProductInStock, assertProductVisibleInCategory, assertProductPage, assertProductTierPriceOnProductPage"
+"Simple Product %isolation%";"simple_sku_%isolation%";"-";"10017";"-";"Simple Product short_description %isolation%";"Simple Product description %isolation%";"67";"144";"-";"-";"options-suite";"options-suite";"catalogProductSimple::with_two_custom_option,catalogProductSimple::with_all_custom_option";"-";"-";"-";"assertProductSaveMessage, assertProductInGrid, assertProductForm, assertProductInStock, assertProductVisibleInCategory, assertProductPage, assertProductCustomOptionsOnProductPage"
diff --git a/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/Product/CreateVirtualProductEntityTest/testCreate.csv b/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/Product/CreateVirtualProductEntityTest/testCreate.csv
index 00f470fea2c..cbc73ef8063 100644
--- a/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/Product/CreateVirtualProductEntityTest/testCreate.csv
+++ b/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/Product/CreateVirtualProductEntityTest/testCreate.csv
@@ -1,8 +1,8 @@
-"product/data/name";"product/data/sku";"product/data/price/value";"product/data/tax_class_id/dataSet";"product/data/quantity_and_stock_status/qty";"product/data/is_virtual";"product/data/category";"product/data/group_price/preset";"product/data/price/preset";"product/data/tier_price/preset";"product/data/inventory_manage_stock";"product/data/quantity_and_stock_status/is_in_stock";"product/data/custom_options/preset";"product/data/custom_options/import_products";"product/data/visibility";"constraint";"issue"
-"VirtualProduct %isolation%";"virtual_sku_%isolation%";"10";"-";"-";"Yes";"-";"-";"-";"-";"-";"-";"-";"-";"-";"assertProductSaveMessage, assertProductInGrid";""
-"VirtualProduct %isolation%";"virtual_sku_%isolation%";"10";"None";"999";"Yes";"category_%isolation%";"-";"-";"MAGETWO-23002";"Yes";"In Stock";"-";"-";"Catalog, Search";"assertProductSaveMessage, assertProductVisibleInCategory, assertProductForm, assertProductSearchableBySku";""
-"VirtualProduct %isolation%";"-";"10";"Taxable Goods";"999";"Yes";"-";"-";"MAGETWO-23030";"-";"-";"Out of Stock";"-";"-";"Search";"assertProductSaveMessage, assertProductForm, assertProductSkuAutoGenerated, assertProductSearchableBySku";""
-"VirtualProduct %isolation%";"virtual_sku_%isolation%";"10";"-";"-";"Yes";"category_%isolation%";"MAGETWO-23055";"-";"-";"-";"-";"-";"-";"Catalog";"assertProductSaveMessage, assertProductForm, assertProductVisibleInCategory";""
-"VirtualProduct %isolation%";"virtual_sku_%isolation%";"9000";"-";"-";"Yes";"-";"MAGETWO-23055";"-";"-";"-";"-";"options-suite";"catalogProductSimple::with_two_custom_option,catalogProductSimple::with_all_custom_option";"-";"assertProductSaveMessage, assertProductSearchableBySku, assertProductPage, assertProductGroupedPriceOnProductPage, assertProductCustomOptionsOnProductPage";"Bug: MAGETWO-28913"
-"VirtualProduct %isolation%";"virtual_sku_%isolation%";"10";"-";"999";"Yes";"-";"-";"MAGETWO-23030";"-";"No";"In Stock";"-";"-";"-";"assertProductSaveMessage, assertProductPage, assertProductSpecialPriceOnProductPage, assertProductInStock";""
-"VirtualProduct %isolation%";"virtual_sku_%isolation%";"9000";"-";"999";"Yes";"-";"-";"-";"default";"-";"Out of Stock";"-";"-";"-";"assertProductSaveMessage, assertProductPage, assertProductTierPriceOnProductPage, assertProductOutOfStock";""
+"product/data/name";"product/data/sku";"product/data/price/value";"product/data/tax_class_id/dataSet";"product/data/quantity_and_stock_status/qty";"product/data/is_virtual";"product/data/category";"product/data/group_price/preset";"product/data/price/preset";"product/data/tier_price/preset";"product/data/inventory_manage_stock";"product/data/quantity_and_stock_status/is_in_stock";"product/data/custom_options/preset";"product/data/custom_options/import_products";"product/data/visibility";"constraint"
+"VirtualProduct %isolation%";"virtual_sku_%isolation%";"10";"-";"-";"Yes";"-";"-";"-";"-";"-";"-";"-";"-";"-";"assertProductSaveMessage, assertProductInGrid"
+"VirtualProduct %isolation%";"virtual_sku_%isolation%";"10";"None";"999";"Yes";"category_%isolation%";"-";"-";"MAGETWO-23002";"Yes";"In Stock";"-";"-";"Catalog, Search";"assertProductSaveMessage, assertProductVisibleInCategory, assertProductForm, assertProductSearchableBySku"
+"VirtualProduct %isolation%";"-";"10";"Taxable Goods";"999";"Yes";"-";"-";"MAGETWO-23030";"-";"-";"Out of Stock";"-";"-";"Search";"assertProductSaveMessage, assertProductForm, assertProductSkuAutoGenerated, assertProductSearchableBySku"
+"VirtualProduct %isolation%";"virtual_sku_%isolation%";"10";"-";"-";"Yes";"category_%isolation%";"MAGETWO-23055";"-";"-";"-";"-";"-";"-";"Catalog";"assertProductSaveMessage, assertProductForm, assertProductVisibleInCategory"
+"VirtualProduct %isolation%";"virtual_sku_%isolation%";"9000";"-";"-";"Yes";"-";"MAGETWO-23055";"-";"-";"-";"-";"options-suite";"catalogProductSimple::with_two_custom_option,catalogProductSimple::with_all_custom_option";"-";"assertProductSaveMessage, assertProductSearchableBySku, assertProductPage, assertProductGroupedPriceOnProductPage, assertProductCustomOptionsOnProductPage"
+"VirtualProduct %isolation%";"virtual_sku_%isolation%";"10";"-";"999";"Yes";"-";"-";"MAGETWO-23030";"-";"No";"In Stock";"-";"-";"-";"assertProductSaveMessage, assertProductPage, assertProductSpecialPriceOnProductPage, assertProductInStock"
+"VirtualProduct %isolation%";"virtual_sku_%isolation%";"9000";"-";"999";"Yes";"-";"-";"-";"default";"-";"Out of Stock";"-";"-";"-";"assertProductSaveMessage, assertProductPage, assertProductTierPriceOnProductPage, assertProductOutOfStock"
diff --git a/dev/tests/functional/tests/app/Magento/Catalog/Test/TestStep/CreateProductStep.php b/dev/tests/functional/tests/app/Magento/Catalog/Test/TestStep/CreateProductStep.php
new file mode 100644
index 00000000000..9ceb04fdca5
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/Catalog/Test/TestStep/CreateProductStep.php
@@ -0,0 +1,79 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Catalog\Test\TestStep;
+
+use Mtf\Fixture\FixtureFactory;
+use Mtf\Fixture\FixtureInterface;
+use Mtf\TestStep\TestStepInterface;
+
+/**
+ * Create product using handler.
+ */
+class CreateProductStep implements TestStepInterface
+{
+    /**
+     * Product fixture from dataSet.
+     *
+     * @var string
+     */
+    protected $product;
+
+    /**
+     * Factory for Fixtures.
+     *
+     * @var FixtureFactory
+     */
+    protected $fixtureFactory;
+
+    /**
+     * Preparing step properties.
+     *
+     * @constructor
+     * @param FixtureFactory $fixtureFactory
+     * @param string $product
+     */
+    public function __construct(FixtureFactory $fixtureFactory, $product)
+    {
+        $this->product = $product;
+        $this->fixtureFactory = $fixtureFactory;
+    }
+
+    /**
+     * Create product.
+     *
+     * @return array
+     */
+    public function run()
+    {
+        list($fixtureClass, $dataSet) = explode('::', $this->product);
+        /** @var FixtureInterface $product */
+        $product = $this->fixtureFactory->createByCode(trim($fixtureClass), ['dataSet' => trim($dataSet)]);
+        if ($product->hasData('id') === false) {
+            $product->persist();
+        }
+
+        return ['product' => $product];
+    }
+}
diff --git a/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/InstallWizardConfigFilesTest.php b/dev/tests/functional/tests/app/Magento/Catalog/Test/TestStep/OpenProductOnBackendStep.php
similarity index 50%
rename from dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/InstallWizardConfigFilesTest.php
rename to dev/tests/functional/tests/app/Magento/Catalog/Test/TestStep/OpenProductOnBackendStep.php
index 7bcd1b96499..2220ea21bbd 100644
--- a/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/InstallWizardConfigFilesTest.php
+++ b/dev/tests/functional/tests/app/Magento/Catalog/Test/TestStep/OpenProductOnBackendStep.php
@@ -1,7 +1,5 @@
 <?php
 /**
- * Tests that existing install_wizard.xml files are valid to schema individually and merged.
- *
  * Magento
  *
  * NOTICE OF LICENSE
@@ -23,39 +21,51 @@
  * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
-namespace Magento\Test\Integrity\Modular;
 
-class InstallWizardConfigFilesTest extends \Magento\TestFramework\TestCase\AbstractConfigFiles
+namespace Magento\Catalog\Test\TestStep;
+
+use Magento\Catalog\Test\Page\Adminhtml\CatalogProductIndex;
+use Mtf\TestStep\TestStepInterface;
+use Mtf\Fixture\InjectableFixture;
+
+/**
+ * Open product on backend.
+ */
+class OpenProductOnBackendStep implements TestStepInterface
 {
     /**
-     * Returns the reader class name that will be instantiated via ObjectManager
+     * Product fixture.
      *
-     * @return string reader class name
+     * @var InjectableFixture
      */
-    protected function _getReaderClassName()
-    {
-        return 'Magento\Install\Model\Config\Reader';
-    }
+    protected $product;
 
     /**
-     * Returns a string that represents the path to the config file, starting in the app directory.
-     *
-     * Format is glob, so * is allowed.
+     * Catalog product index page.
      *
-     * @return string
+     * @var CatalogProductIndex
+     */
+    protected $catalogProductIndex;
+
+    /**
+     * @constructor
+     * @param InjectableFixture $product
+     * @param CatalogProductIndex $catalogProductIndex
      */
-    protected function _getConfigFilePathGlob()
+    public function __construct(InjectableFixture $product, CatalogProductIndex $catalogProductIndex)
     {
-        return '/*/*/etc/install_wizard.xml';
+        $this->product = $product;
+        $this->catalogProductIndex = $catalogProductIndex;
     }
 
     /**
-     * Returns a path to the per file XSD file, relative to the modules directory.
+     * Open products on backend.
      *
-     * @return string
+     * @return void
      */
-    protected function _getXsdPath()
+    public function run()
     {
-        return '/Magento/Install/etc/install_wizard_file.xsd';
+        $this->catalogProductIndex->open();
+        $this->catalogProductIndex->getProductGrid()->searchAndOpen(['sku' => $this->product->getSku()]);
     }
 }
diff --git a/app/code/Magento/Install/Model/Installer/Db/Factory.php b/dev/tests/functional/tests/app/Magento/Catalog/Test/TestStep/OpenProductsOnFrontendStep.php
similarity index 56%
rename from app/code/Magento/Install/Model/Installer/Db/Factory.php
rename to dev/tests/functional/tests/app/Magento/Catalog/Test/TestStep/OpenProductsOnFrontendStep.php
index ce08f2e2ef6..ad1e6887aad 100644
--- a/app/code/Magento/Install/Model/Installer/Db/Factory.php
+++ b/dev/tests/functional/tests/app/Magento/Catalog/Test/TestStep/OpenProductsOnFrontendStep.php
@@ -22,43 +22,52 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
+namespace Magento\Catalog\Test\TestStep;
+
+use Mtf\Client\Browser;
+use Mtf\TestStep\TestStepInterface;
+
 /**
- * Installer DB factory
+ * Open products on frontend via url.
  */
-namespace Magento\Install\Model\Installer\Db;
-
-class Factory
+class OpenProductsOnFrontendStep implements TestStepInterface
 {
     /**
+     * Products fixtures.
+     *
      * @var array
      */
-    protected $_types = array('mysql4' => 'Magento\Install\Model\Installer\Db\Mysql4');
+    protected $products = [];
 
     /**
-     * @var \Magento\Framework\ObjectManager
+     * Browser.
+     *
+     * @var Browser
      */
-    protected $_objectManager;
+    protected $browser;
 
     /**
-     * @param \Magento\Framework\ObjectManager $objectManager
+     * Preparing step properties.
+     *
+     * @constructor
+     * @param array $products
+     * @param Browser $browser
      */
-    public function __construct(\Magento\Framework\ObjectManager $objectManager)
+    public function __construct(array $products, Browser $browser)
     {
-        $this->_objectManager = $objectManager;
+        $this->products = $products;
+        $this->browser = $browser;
     }
 
     /**
-     * Get Installer Db type instance
+     * Open products on frontend via url.
      *
-     * @param string $type
-     * @return \Magento\Install\Model\Installer\Db\AbstractDb | bool
-     * @throws \InvalidArgumentException
+     * @return void
      */
-    public function get($type)
+    public function run()
     {
-        if (!empty($type) && isset($this->_types[(string)$type])) {
-            return $this->_objectManager->get($this->_types[(string)$type]);
+        foreach ($this->products as $product) {
+            $this->browser->open($_ENV['app_frontend_url'] . $product->getUrlKey() . '.html');
         }
-        return false;
     }
 }
diff --git a/dev/tests/functional/tests/app/Magento/Catalog/Test/TestStep/SaveProductStep.php b/dev/tests/functional/tests/app/Magento/Catalog/Test/TestStep/SaveProductStep.php
new file mode 100644
index 00000000000..e622de16f54
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/Catalog/Test/TestStep/SaveProductStep.php
@@ -0,0 +1,70 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Catalog\Test\TestStep;
+
+use Magento\Catalog\Test\Page\Adminhtml\CatalogProductEdit;
+use Mtf\TestStep\TestStepInterface;
+use Mtf\Fixture\InjectableFixture;
+
+/**
+ * Save product step.
+ */
+class SaveProductStep implements TestStepInterface
+{
+    /**
+     * Product fixture.
+     *
+     * @var InjectableFixture
+     */
+    protected $product;
+
+    /**
+     * Catalog product edit page.
+     *
+     * @var CatalogProductEdit
+     */
+    protected $catalogProductEdit;
+
+    /**
+     * @constructor
+     * @param InjectableFixture $product
+     * @param CatalogProductEdit $catalogProductEdit
+     */
+    public function __construct(InjectableFixture $product, CatalogProductEdit $catalogProductEdit)
+    {
+        $this->product = $product;
+        $this->catalogProductEdit = $catalogProductEdit;
+    }
+
+    /**
+     * Save product.
+     *
+     * @return void
+     */
+    public function run()
+    {
+        $this->catalogProductEdit->getFormPageActions()->save($this->product);
+    }
+}
diff --git a/dev/tests/functional/tests/app/Magento/Checkout/Test/Block/Cart/CartItem.php b/dev/tests/functional/tests/app/Magento/Checkout/Test/Block/Cart/CartItem.php
index 169854ace95..82edc1f49a0 100755
--- a/dev/tests/functional/tests/app/Magento/Checkout/Test/Block/Cart/CartItem.php
+++ b/dev/tests/functional/tests/app/Magento/Checkout/Test/Block/Cart/CartItem.php
@@ -51,7 +51,7 @@ class CartItem extends AbstractCartItem
      *
      * @var string
      */
-    protected $bundleOptions = './/dl[contains(@class, "cart-item-options")]/dd[%d]/span[@class="price"][%d]';
+    protected $bundleOptions = './/dl[contains(@class, "item-options")]/dd[%d]/span[@class="price"][%d]';
 
     /**
      * 'Move to Wishlist' button
@@ -79,7 +79,7 @@ class CartItem extends AbstractCartItem
      *
      * @return string
      */
-    protected function getProductName()
+    public function getProductName()
     {
         $this->_rootElement->find($this->productName)->getText();
     }
diff --git a/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Block/Adminhtml/Product/Edit/Tab/Super/Config.php b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Block/Adminhtml/Product/Edit/Tab/Super/Config.php
index 1291e96f4ff..f46d541ef61 100755
--- a/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Block/Adminhtml/Product/Edit/Tab/Super/Config.php
+++ b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Block/Adminhtml/Product/Edit/Tab/Super/Config.php
@@ -25,8 +25,10 @@
 namespace Magento\ConfigurableProduct\Test\Block\Adminhtml\Product\Edit\Tab\Super;
 
 use Magento\Backend\Test\Block\Widget\Tab;
+use Mtf\Client\Element\Locator;
 use Mtf\Client\Element;
 use Magento\Catalog\Test\Fixture\CatalogCategory;
+use Magento\Backend\Test\Block\Template;
 
 /**
  * Class Config
@@ -63,11 +65,11 @@ class Config extends Tab
     protected $variationsMatrix = '[data-role="product-variations-matrix"]';
 
     /**
-     * Selector for variations matrix row
+     * Selector for template block.
      *
      * @var string
      */
-    protected $variationsMatrixRow = '[data-role="product-variations-matrix"] [data-role="row"]';
+    protected $template = './ancestor::body';
 
     /**
      * Selector for variations tab wrapper
@@ -146,7 +148,7 @@ class Config extends Tab
     public function generateVariations()
     {
         $this->_rootElement->find($this->generateVariations)->click();
-        $this->waitForElementVisible($this->variationsMatrixRow);
+        $this->getTemplateBlock()->waitLoader();
     }
 
     /**
@@ -157,7 +159,7 @@ class Config extends Tab
     public function getAttributeBlock()
     {
         return $this->blockFactory->create(
-            '\Magento\ConfigurableProduct\Test\Block\Adminhtml\Product\Edit\Tab\Super\Config\Attribute',
+            'Magento\ConfigurableProduct\Test\Block\Adminhtml\Product\Edit\Tab\Super\Config\Attribute',
             ['element' => $this->_rootElement]
         );
     }
@@ -170,11 +172,24 @@ class Config extends Tab
     public function getVariationsBlock()
     {
         return $this->blockFactory->create(
-            '\Magento\ConfigurableProduct\Test\Block\Adminhtml\Product\Edit\Tab\Super\Config\Matrix',
+            'Magento\ConfigurableProduct\Test\Block\Adminhtml\Product\Edit\Tab\Super\Config\Matrix',
             ['element' => $this->_rootElement->find($this->variationsMatrix)]
         );
     }
 
+    /**
+     * Get template block.
+     *
+     * @return Template
+     */
+    public function getTemplateBlock()
+    {
+        return $this->blockFactory->create(
+            'Magento\Backend\Test\Block\Template',
+            ['element' => $this->_rootElement->find($this->template, Locator::SELECTOR_XPATH)]
+        );
+    }
+
     /**
      * Get data of tab
      *
diff --git a/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Block/Adminhtml/Product/Edit/Tab/Super/Config/Attribute.php b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Block/Adminhtml/Product/Edit/Tab/Super/Config/Attribute.php
index ea2cf5cfaa7..e75d5071129 100755
--- a/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Block/Adminhtml/Product/Edit/Tab/Super/Config/Attribute.php
+++ b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Block/Adminhtml/Product/Edit/Tab/Super/Config/Attribute.php
@@ -30,8 +30,7 @@ use Magento\Backend\Test\Block\Widget\Form;
 use Magento\ConfigurableProduct\Test\Block\Adminhtml\Product\Edit\Tab\Super\Config\Attribute\AttributeSelector;
 
 /**
- * Class Attribute
- * Attribute block in Variation section
+ * Attribute block in Variation section.
  */
 class Attribute extends Form
 {
@@ -158,6 +157,7 @@ class Attribute extends Form
 
             if (!$isExistAttribute && empty($attribute['attribute_id'])) {
                 $this->createNewVariationSet($attribute);
+                $this->waitBlock($this->newAttributeFrame);
                 $this->fillOptions($attribute);
             } else {
                 if (!$isExistAttribute) {
@@ -169,7 +169,7 @@ class Attribute extends Form
     }
 
     /**
-     * Create new variation set
+     * Create new variation set.
      *
      * @param array $attribute
      * @return void
@@ -183,7 +183,25 @@ class Attribute extends Form
         $newAttribute->getTabElement('properties')->fillFormTab($attribute);
         $newAttribute->_rootElement->find($this->saveAttribute)->click();
 
-        $this->browser->switchToFrame();
+        $this->browser->selectWindow();
+    }
+
+    /**
+     * Wait that element is not visible.
+     *
+     * @param string $selector
+     * @param mixed $browser [optional]
+     * @param string $strategy [optional]
+     * @return mixed
+     */
+    protected function waitBlock($selector, $browser = null, $strategy = Locator::SELECTOR_CSS)
+    {
+        $browser = ($browser != null) ? $browser : $this->browser;
+        return $browser->waitUntil(
+            function () use ($browser, $selector, $strategy) {
+                return $browser->find($selector, $strategy)->isVisible() == false ? true : null;
+            }
+        );
     }
 
     /**
@@ -242,7 +260,7 @@ class Attribute extends Form
                 Locator::SELECTOR_XPATH
             );
 
-            if (!$optionContainer->isVisible() && $this->isVisibleOption($attributeBlock, $count-1)) {
+            if (!$optionContainer->isVisible() && $this->isVisibleOption($attributeBlock, $count - 1)) {
                 $attributeBlock->find($this->addOption)->click();
             }
             $mapping = $this->dataMapping($option);
diff --git a/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Block/Adminhtml/Product/Edit/Tab/Super/Config/Matrix.php b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Block/Adminhtml/Product/Edit/Tab/Super/Config/Matrix.php
index 9892a82c763..5941ba377cf 100755
--- a/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Block/Adminhtml/Product/Edit/Tab/Super/Config/Matrix.php
+++ b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Block/Adminhtml/Product/Edit/Tab/Super/Config/Matrix.php
@@ -26,6 +26,7 @@ namespace Magento\ConfigurableProduct\Test\Block\Adminhtml\Product\Edit\Tab\Supe
 
 use Mtf\Client\Driver\Selenium\Element;
 use Mtf\Client\Element\Locator;
+use Magento\Backend\Test\Block\Template;
 use Magento\Backend\Test\Block\Widget\Form;
 
 /**
@@ -94,19 +95,35 @@ class Matrix extends Form
     // @codingStandardsIgnoreEnd
 
     /**
-     * Fill variations
+     * Title of variation matrix css selector.
+     *
+     * @var string
+     */
+    protected $matrixTitle = 'h3.title';
+
+    /**
+     * Selector for template block.
+     *
+     * @var string
+     */
+    protected $template = './ancestor::body';
+
+    /**
+     * Fill variations.
      *
      * @param array $matrix
      * @return void
      */
     public function fillVariations(array $matrix)
     {
+        $this->_rootElement->find($this->matrixTitle)->click();
         $count = 1;
         foreach ($matrix as $variation) {
             $variationRow = $this->_rootElement->find(
                 sprintf($this->variationRowByNumber, $count),
                 Locator::SELECTOR_XPATH
             );
+            ksort($variation);
             $mapping = $this->dataMapping($variation);
 
             $this->_fill($mapping, $variationRow);
@@ -128,6 +145,7 @@ class Matrix extends Form
     protected function assignProduct(Element $variationRow, $productId)
     {
         $variationRow->find($this->configurableAttribute)->click();
+        $this->getTemplateBlock()->waitLoader();
         $this->_rootElement->find(
             sprintf($this->selectAssociatedProduct, $productId),
             Locator::SELECTOR_XPATH
@@ -175,4 +193,17 @@ class Matrix extends Form
         }
         return $data;
     }
+
+    /**
+     * Get template block.
+     *
+     * @return Template
+     */
+    public function getTemplateBlock()
+    {
+        return $this->blockFactory->create(
+            'Magento\Backend\Test\Block\Template',
+            ['element' => $this->_rootElement->find($this->template, Locator::SELECTOR_XPATH)]
+        );
+    }
 }
diff --git a/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Constraint/AssertConfigurableAttributesAbsentOnProductPage.php b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Constraint/AssertConfigurableAttributesAbsentOnProductPage.php
new file mode 100644
index 00000000000..6f80540e34c
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Constraint/AssertConfigurableAttributesAbsentOnProductPage.php
@@ -0,0 +1,81 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\ConfigurableProduct\Test\Constraint;
+
+use Magento\ConfigurableProduct\Test\Fixture\ConfigurableProductInjectable;
+use Magento\Catalog\Test\Fixture\CatalogProductAttribute;
+use Magento\Catalog\Test\Page\Product\CatalogProductView;
+use Mtf\Constraint\AbstractConstraint;
+use Mtf\Client\Browser;
+
+/**
+ * Assert that deleted products attributes are absent on product page on frontend.
+ */
+class AssertConfigurableAttributesAbsentOnProductPage extends AbstractConstraint
+{
+    /**
+     * Constraint severeness.
+     *
+     * @var string
+     */
+    protected $severeness = 'low';
+
+    /**
+     * Assert that deleted products attributes are absent on product page on frontend.
+     *
+     * @param CatalogProductAttribute[] $deletedProductAttributes
+     * @param Browser $browser
+     * @param CatalogProductView $catalogProductView
+     * @param ConfigurableProductInjectable $product
+     * @return void
+     */
+    public function processAssert(
+        array $deletedProductAttributes,
+        Browser $browser,
+        CatalogProductView $catalogProductView,
+        ConfigurableProductInjectable $product
+    ) {
+        $browser->open($_ENV['app_frontend_url'] . $product->getUrlKey() . '.html');
+        $pageOptions = $catalogProductView->getViewBlock()->getOptions($product)['configurable_options'];
+
+        foreach ($deletedProductAttributes as $attribute) {
+            $attributeLabel = $attribute->getFrontendLabel();
+            \PHPUnit_Framework_Assert::assertFalse(
+                isset($pageOptions[$attributeLabel]),
+                "Product attribute '$attributeLabel' found on product page on frontend."
+            );
+        }
+    }
+
+    /**
+     * Returns a string representation of the object.
+     *
+     * @return string
+     */
+    public function toString()
+    {
+        return "Product attributes are absent on product page on frontend.";
+    }
+}
diff --git a/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Constraint/AssertConfigurableAttributesBlockIsAbsentOnProductPage.php b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Constraint/AssertConfigurableAttributesBlockIsAbsentOnProductPage.php
new file mode 100644
index 00000000000..5b89b2d82e7
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Constraint/AssertConfigurableAttributesBlockIsAbsentOnProductPage.php
@@ -0,0 +1,73 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\ConfigurableProduct\Test\Constraint;
+
+use Magento\ConfigurableProduct\Test\Fixture\ConfigurableProductInjectable;
+use Magento\Catalog\Test\Page\Product\CatalogProductView;
+use Mtf\Constraint\AbstractConstraint;
+use Mtf\Client\Browser;
+
+/**
+ * Assert that all configurable attributes is absent on product page on frontend.
+ */
+class AssertConfigurableAttributesBlockIsAbsentOnProductPage extends AbstractConstraint
+{
+    /**
+     * Constraint severeness.
+     *
+     * @var string
+     */
+    protected $severeness = 'low';
+
+    /**
+     * Assert that all products attributes is absent on product page on frontend.
+     *
+     * @param Browser $browser
+     * @param CatalogProductView $catalogProductView
+     * @param ConfigurableProductInjectable $product
+     * @return void
+     */
+    public function processAssert(
+        Browser $browser,
+        CatalogProductView $catalogProductView,
+        ConfigurableProductInjectable $product
+    ) {
+        $browser->open($_ENV['app_frontend_url'] . $product->getUrlKey() . '.html');
+        \PHPUnit_Framework_Assert::assertFalse(
+            $catalogProductView->getConfigurableAttributesBlock()->isVisible(),
+            "Product attributes are present on product page on frontend."
+        );
+    }
+
+    /**
+     * Returns a string representation of the object.
+     *
+     * @return string
+     */
+    public function toString()
+    {
+        return "All product attributes are absent on product page on frontend.";
+    }
+}
diff --git a/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Fixture/ConfigurableProductInjectable.php b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Fixture/ConfigurableProductInjectable.php
index 42ca5af842b..6c4fb042992 100644
--- a/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Fixture/ConfigurableProductInjectable.php
+++ b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Fixture/ConfigurableProductInjectable.php
@@ -32,7 +32,7 @@ use Mtf\Repository\RepositoryFactory;
 use Mtf\System\Event\EventManagerInterface;
 
 /**
- * Class ConfigurableProduct
+ * Configurable product fixture.
  *
  * @SuppressWarnings(PHPMD.ExcessivePublicCount)
  * @SuppressWarnings(PHPMD.TooManyFields)
@@ -99,13 +99,18 @@ class ConfigurableProductInjectable extends InjectableFixture
     ];
 
     protected $defaultDataSet = [
-        'type_id' => 'configurable',
-        'attribute_set_id' => ['dataSet' => 'Default'],
         'name' => 'Configurable Product %isolation%',
         'sku' => 'sku_configurable_product_%isolation%',
+        'type_id' => 'configurable',
+        'attribute_set_id' => ['dataSet' => 'default'],
+        'website_ids' => ['Main Website'],
         'price' => ['value' => 100.00],
         'weight' => 1,
+        'quantity_and_stock_status' => [
+            'is_in_stock' => 'In Stock',
+        ],
         'url_key' => 'configurable-product-%isolation%',
+        'configurable_attributes_data' => ['preset' => 'default'],
     ];
 
     protected $category_ids = [
diff --git a/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Fixture/ConfigurableProductInjectable/CheckoutData.php b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Fixture/ConfigurableProductInjectable/CheckoutData.php
index 1bf635fa875..95a00c2c4b9 100644
--- a/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Fixture/ConfigurableProductInjectable/CheckoutData.php
+++ b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Fixture/ConfigurableProductInjectable/CheckoutData.php
@@ -25,11 +25,10 @@
 namespace Magento\ConfigurableProduct\Test\Fixture\ConfigurableProductInjectable;
 
 /**
- * Class CheckoutData
- * Data for fill product form on frontend
+ * Data for fill product form on frontend.
  *
  * Data keys:
- *  - preset (Checkout data verification preset name)
+ *  - preset (Checkout data verification preset name).
  */
 class CheckoutData extends \Magento\Catalog\Test\Fixture\CatalogProductSimple\CheckoutData
 {
@@ -110,7 +109,45 @@ class CheckoutData extends \Magento\Catalog\Test\Fixture\CatalogProductSimple\Ch
                     'price' => 102,
                 ]
             ],
-            'two_new_options_with_special_price' =>[
+            'two_attributes' => [
+                'options' => [
+                    'configurable_options' => [
+                        [
+                            'title' => 'attribute_key_0',
+                            'value' => 'option_key_0',
+                        ],
+                        [
+                            'title' => 'attribute_key_1',
+                            'value' => 'option_key_0',
+                        ]
+                    ]
+                ],
+                'cartItem' => [
+                    'price' => 112,
+                ]
+            ],
+            'three_attributes' => [
+                'options' => [
+                    'configurable_options' => [
+                        [
+                            'title' => 'attribute_key_0',
+                            'value' => 'option_key_0',
+                        ],
+                        [
+                            'title' => 'attribute_key_1',
+                            'value' => 'option_key_0',
+                        ],
+                        [
+                            'title' => 'attribute_key_2',
+                            'value' => 'option_key_0',
+                        ]
+                    ]
+                ],
+                'cartItem' => [
+                    'price' => 112,
+                ]
+            ],
+            'two_new_options_with_special_price' => [
                 'options' => [
                     'configurable_options' => [
                         [
diff --git a/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Fixture/ConfigurableProductInjectable/ConfigurableAttributesData.php b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Fixture/ConfigurableProductInjectable/ConfigurableAttributesData.php
index 786bdbc5b5f..828e7c5d27c 100644
--- a/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Fixture/ConfigurableProductInjectable/ConfigurableAttributesData.php
+++ b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Fixture/ConfigurableProductInjectable/ConfigurableAttributesData.php
@@ -132,9 +132,7 @@ class ConfigurableAttributesData implements FixtureInterface
                     ]
                 ]
             ],
-            'products' => [
-
-            ],
+            'products' => [],
             'attributes' => [
                 'attribute_key_0' => 'catalogProductAttribute::attribute_type_dropdown',
                 'attribute_key_1' => 'catalogProductAttribute::attribute_type_dropdown'
@@ -304,6 +302,44 @@ class ConfigurableAttributesData implements FixtureInterface
                 ]
             ]
         ],
+        'one_new_options' => [
+            'attributes_data' => [
+                'attribute_key_0' => [
+                    'options' => [
+                        'option_key_0' => [
+                            'label' => 'option_key_1_%isolation%',
+                            'pricing_value' => 1,
+                            'is_percent' => 'No',
+                            'include' => 'Yes'
+                        ]
+                    ]
+                ]
+            ],
+            'attributes' => [],
+            'products' => [],
+            'matrix' => []
+        ],
+        'two_new_options_with_zero_products' => [
+            'attributes_data' => [
+                'attribute_key_0' => [
+                    'options' => [
+                        'option_key_0' => [
+                            'label' => 'option_key_1_%isolation%',
+                            'pricing_value' => 1,
+                            'is_percent' => 'No',
+                            'include' => 'Yes'
+                        ],
+                    ]
+                ]
+            ],
+            'attributes' => [
+                'attribute_key_0' => 'catalogProductAttribute::attribute_type_dropdown_one_option',
+            ],
+            'products' => [
+                'attribute_key_0:option_key_0' => 'catalogProductSimple::out_of_stock',
+            ],
+            'matrix' => []
+        ],
         'two_options_with_assigned_product' => [
             'attributes_data' => [
                 'attribute_key_0' => [
@@ -526,8 +562,7 @@ class ConfigurableAttributesData implements FixtureInterface
     ];
 
     /**
-     * Source constructor
-     *
+     * @constructor
      * @param FixtureFactory $fixtureFactory
      * @param array $data
      * @param array $params [optional]
@@ -536,15 +571,18 @@ class ConfigurableAttributesData implements FixtureInterface
     {
         $this->fixtureFactory = $fixtureFactory;
         $this->params = $params;
-        $this->data = !isset($data['preset']) ? $data : [];
-
-        $preset = isset($data['preset']) ? $this->getPreset($data['preset']) : [];
+        $preset = [];
+        if (isset($data['preset'])) {
+            $preset = $this->getPreset($data['preset']);
+            unset($data['preset']);
+        }
+        $data = array_replace_recursive($data, $preset);
 
-        if (!empty($preset)) {
-            $this->prepareAttributes($preset);
-            $this->prepareAttributesData($preset);
-            $this->prepareProducts($preset);
-            $this->prepareVariationsMatrix($preset);
+        if (!empty($data)) {
+            $this->prepareAttributes($data);
+            $this->prepareAttributesData($data);
+            $this->prepareProducts($data);
+            $this->prepareVariationsMatrix($data);
             $this->prepareData();
         }
     }
@@ -719,7 +757,9 @@ class ConfigurableAttributesData implements FixtureInterface
         foreach ($this->attributesData as $attributeKey => $attribute) {
             $variationsMatrix = $this->addVariationMatrix($variationsMatrix, $attribute, $attributeKey);
         }
-        $this->variationsMatrix = array_replace_recursive($variationsMatrix, $data['matrix']);
+        $this->variationsMatrix = isset($data['matrix'])
+            ? array_replace_recursive($variationsMatrix, $data['matrix'])
+            : $variationsMatrix;
 
         // assigned products
         foreach ($this->variationsMatrix as $key => $row) {
@@ -727,12 +767,30 @@ class ConfigurableAttributesData implements FixtureInterface
                 /** @var CatalogProductSimple $product */
                 $product = $this->products[$key];
                 $quantityAndStockStatus = $product->getQuantityAndStockStatus();
+                $productData = [
+                    'configurable_attribute' => $product->getId(),
+                    'name' => $product->getName(),
+                    'sku' => $product->getSku(),
+                    'quantity_and_stock_status' => [
+                        'qty' => $quantityAndStockStatus['qty']
+                    ],
+                    'weight' => $product->getWeight()
+                ];
+                $this->variationsMatrix[$key] = array_replace_recursive($this->variationsMatrix[$key], $productData);
+            } else {
+                $this->variationsMatrix[$key] = array_replace_recursive(
+                    $this->variationsMatrix[$key],
+                    [
+                        'weight' => 1,
+                        'quantity_and_stock_status' => [
+                            'qty' => 10
+                        ],
+                    ]
+                );
+            }
 
-                $this->variationsMatrix[$key]['configurable_attribute'] = $product->getId();
-                $this->variationsMatrix[$key]['name'] = $product->getName();
-                $this->variationsMatrix[$key]['sku'] = $product->getSku();
-                $this->variationsMatrix[$key]['quantity_and_stock_status']['qty'] = $quantityAndStockStatus['qty'];
-                $this->variationsMatrix[$key]['weight'] = $product->getWeight();
+            if (!isset($this->variationsMatrix[$key]['display'])) {
+                $this->variationsMatrix[$key]['display'] = 'Yes';
             }
         }
     }
@@ -762,16 +820,17 @@ class ConfigurableAttributesData implements FixtureInterface
         }
 
         foreach ($variationsMatrix as $rowKey => $row) {
+            $randIsolation = mt_rand(1, 100);
+            $row['name'] .= ' ' . $randIsolation;
+            $row['sku'] .= '_' . $randIsolation;
+            $index = 1;
             foreach ($attribute['options'] as $optionKey => $option) {
                 $compositeKey = "{$attributeKey}:{$optionKey}";
-                $optionId = $this->getAttributeOptionId($compositeKey);
-                $optionId = ($optionId !== null) ? $optionId : $rowKey . $optionKey;
-
-                $row['name'] .= '-' . $optionId;
-                $row['sku'] .= '_' . $optionId;
-
+                $row['name'] .= ' ' . $index;
+                $row['sku'] .= '_' . $index;
                 $newRowKey = $rowKey ? "{$rowKey} {$compositeKey}" : $compositeKey;
                 $result[$newRowKey] = $row;
+                $index++;
             }
         }
 
@@ -821,7 +880,9 @@ class ConfigurableAttributesData implements FixtureInterface
                 $option['label'] = isset($option['view']) ? $option['view'] : $option['label'];
                 $attribute['options'][$optionKey] = array_intersect_key($option, array_flip($optionFields));
             }
-            $attribute['label'] = isset($attribute['label']) ? $attribute['label'] : $attribute['frontend_label'];
+            $attribute['label'] = isset($attribute['label'])
+                ? $attribute['label']
+                : (isset($attribute['frontend_label']) ? $attribute['frontend_label'] : null);
             $attribute = array_intersect_key($attribute, array_flip($attributeFields));
 
             $this->data['attributes_data'][$attributeKey] = $attribute;
@@ -845,7 +906,7 @@ class ConfigurableAttributesData implements FixtureInterface
      * Return prepared data set
      *
      * @param string|null $key
-     * @return mixed
+     * @return array
      */
     public function getData($key = null)
     {
diff --git a/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Page/Product/CatalogProductView.xml b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Page/Product/CatalogProductView.xml
index af7e9ddc1bd..e33e77d4211 100644
--- a/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Page/Product/CatalogProductView.xml
+++ b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Page/Product/CatalogProductView.xml
@@ -32,5 +32,10 @@
                 </configurable>
             </renders>
         </viewBlock>
+        <configurableAttributesBlock>
+            <class>Magento\ConfigurableProduct\Test\Block\Product\View\ConfigurableOptions</class>
+            <locator>#product-options-wrapper</locator>
+            <strategy>css selector</strategy>
+        </configurableAttributesBlock>
     </blocks>
 </page>
diff --git a/app/code/Magento/Install/Model/Observer.php b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/TestCase/UpdateConfigurableProductEntityTest.php
similarity index 55%
rename from app/code/Magento/Install/Model/Observer.php
rename to dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/TestCase/UpdateConfigurableProductEntityTest.php
index 5de563e82de..0c3ba787fb0 100644
--- a/app/code/Magento/Install/Model/Observer.php
+++ b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/TestCase/UpdateConfigurableProductEntityTest.php
@@ -22,41 +22,39 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
+namespace Magento\ConfigurableProduct\Test\TestCase;
+
+use Mtf\TestCase\Scenario;
+
 /**
- * Installation event observer
+ * Test Flow:
+ *
+ * Preconditions:
+ * 1. Two simple products are created.
+ * 2. Configurable attribute with two options is created.
+ * 3. Configurable attribute added to default template.
+ * 4. Configurable product is created.
+ *
+ * Steps:
+ * 1. Log in to backend.
+ * 2. Open Products -> Catalog.
+ * 3. Search and open configurable product from preconditions.
+ * 4. Fill in data according to dataSet.
+ * 5. Save product.
+ * 6. Perform all assertions.
+ *
+ * @group Configurable_Product_(MX)
+ * @ZephyrId MAGETWO-29916
  */
-namespace Magento\Install\Model;
-
-class Observer
+class UpdateConfigurableProductEntityTest extends Scenario
 {
     /**
-     * Install Session
+     * Update configurable product.
      *
-     * @var \Magento\Framework\Session\Generic
-     */
-    protected $_session;
-
-    /**
-     * @param \Magento\Framework\Session\Generic $session
-     */
-    public function __construct(\Magento\Framework\Session\Generic $session)
-    {
-        $this->_session = $session;
-    }
-
-    /**
-     * @param \Magento\Framework\Event\Observer $observer
-     * @return $this
+     * @return array
      */
-    public function bindLocale($observer)
+    public function test()
     {
-        $locale = $observer->getEvent()->getLocale();
-        if ($locale) {
-            $choosedLocale = $this->_session->getLocale();
-            if ($choosedLocale) {
-                $locale->setLocaleCode($choosedLocale);
-            }
-        }
-        return $this;
+        $this->executeScenario();
     }
 }
diff --git a/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/TestCase/UpdateConfigurableProductEntityTest/test.csv b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/TestCase/UpdateConfigurableProductEntityTest/test.csv
new file mode 100644
index 00000000000..ed0c03fb590
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/TestCase/UpdateConfigurableProductEntityTest/test.csv
@@ -0,0 +1,5 @@
+"description";"attributeTypeAction";"updatedProduct/data/configurable_attributes_data/preset";"updatedProduct/data/checkout_data/preset";"updatedProduct/data/checkout_data/cartItem/price";"updatedProduct/data/name";"updatedProduct/data/sku";"updatedProduct/data/price/value";"updatedProduct/data/category_ids/presets";"updatedProduct/data/short_description";"updatedProduct/data/description";"updatedProduct/data/weight";"updatedProduct/data/quantity_and_stock_status/is_in_stock";"updatedProduct/data/affected_attribute_set";"constraint";"issue"
+"Add new option to existed Attribute";"addOptions";"one_new_options";"two_attributes";"153";"Configurable Product %isolation%";"configurable_sku_%isolation%";"99";"default_subcategory";"Configurable short description";"Configurable Product description %isolation%";"3";"In Stock";"-";"assertProductSaveMessage, assertProductInGrid, assertChildProductsInGrid, assertConfigurableProductForm, assertProductInCategory, assertConfigurableProductPage, assertProductInStock, assertConfigurableProductInCart, assertChildProductIsNotDisplayedSeparately";""
+"Add new variations";"";"two_new_options";"three_attributes";"159";"Configurable Product %isolation%";"configurable_sku_%isolation%";"99";"-";"Configurable short description";"Configurable Product description %isolation%";"3";"In Stock";"custom_attribute_set_%isolation%";"assertProductSaveMessage, assertProductInGrid, assertConfigurableProductForm, assertConfigurableProductPage, assertProductInStock, assertConfigurableProductInCart";"Bug: MAGETWO-29997"
+"Delete one attribute and add another";"deleteLast";"two_new_options";"two_attributes";"112";"Configurable Product %isolation%";"configurable_sku_%isolation%";"99";"default_subcategory";"Configurable short description";"Configurable Product description %isolation%";"3";"In Stock";"-";"assertProductSaveMessage, assertProductInGrid,  assertConfigurableProductForm, assertProductInCategory, assertProductInStock, assertConfigurableProductInCart, assertConfigurableAttributesAbsentOnProductPage";""
+"Delete attribute and add another with products qty = 0";"deleteAll";"two_new_options_with_zero_products";"two_attributes";"";"Configurable Product %isolation%";"configurable_sku_%isolation%";"99";"-";"Configurable short description";"Configurable Product description %isolation%";"3";"In Stock";"-";"assertProductSaveMessage, assertProductInGrid, assertConfigurableProductForm, assertConfigurableAttributesBlockIsAbsentOnProductPage, assertProductOutOfStock";""
diff --git a/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/TestStep/UpdateConfigurableProductStep.php b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/TestStep/UpdateConfigurableProductStep.php
new file mode 100644
index 00000000000..b97638a5eb7
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/TestStep/UpdateConfigurableProductStep.php
@@ -0,0 +1,215 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\ConfigurableProduct\Test\TestStep;
+
+use Mtf\Fixture\FixtureFactory;
+use Mtf\TestStep\TestStepInterface;
+use Magento\Catalog\Test\Fixture\CatalogProductAttribute;
+use Magento\Catalog\Test\Page\Adminhtml\CatalogProductEdit;
+use Magento\ConfigurableProduct\Test\Fixture\ConfigurableProductInjectable;
+
+/**
+ * Update configurable product step.
+ */
+class UpdateConfigurableProductStep implements TestStepInterface
+{
+    /**
+     * Catalog product edit page.
+     *
+     * @var CatalogProductEdit
+     */
+    protected $catalogProductEdit;
+
+    /**
+     * Fixture factory.
+     *
+     * @var FixtureFactory
+     */
+    protected $fixtureFactory;
+
+    /**
+     * Catalog product attributes.
+     *
+     * @var CatalogProductAttribute
+     */
+    protected $deletedAttributes = [];
+
+    /**
+     * Old configurable product fixture.
+     *
+     * @var ConfigurableProductInjectable
+     */
+    protected $initialProduct;
+
+    /**
+     * New configurable product fixture.
+     *
+     * @var ConfigurableProductInjectable
+     */
+    protected $product;
+
+    /**
+     * Action type for attribute
+     *
+     * @var string
+     */
+    protected $attributeTypeAction = '';
+
+    /**
+     * @constructor
+     * @param FixtureFactory $fixtureFactory
+     * @param CatalogProductEdit $catalogProductEdit
+     * @param ConfigurableProductInjectable $product
+     * @param ConfigurableProductInjectable $updatedProduct
+     * @param string $attributeTypeAction
+     */
+    public function __construct(
+        FixtureFactory $fixtureFactory,
+        CatalogProductEdit $catalogProductEdit,
+        ConfigurableProductInjectable $product,
+        ConfigurableProductInjectable $updatedProduct,
+        $attributeTypeAction
+    ) {
+        $this->fixtureFactory = $fixtureFactory;
+        $this->catalogProductEdit = $catalogProductEdit;
+        $this->initialProduct = $product;
+        $this->product = $updatedProduct;
+        $this->attributeTypeAction = $attributeTypeAction;
+    }
+
+    /**
+     * Update configurable product.
+     *
+     * @return array
+     */
+    public function run()
+    {
+        $product = $this->prepareProduct($this->initialProduct, $this->product, $this->attributeTypeAction);
+        $this->updateProduct($product);
+
+        return ['product' => $product, 'deletedProductAttributes' => $this->deletedAttributes];
+    }
+
+    /**
+     * Prepare new product for update.
+     *
+     * @param ConfigurableProductInjectable $initialProduct
+     * @param ConfigurableProductInjectable $product
+     * @param string $attributeTypeAction
+     * @return ConfigurableProductInjectable
+     */
+    protected function prepareProduct(
+        ConfigurableProductInjectable $initialProduct,
+        ConfigurableProductInjectable $product,
+        $attributeTypeAction
+    ) {
+        if ($attributeTypeAction == 'deleteAll') {
+            $this->deletedAttributes = $initialProduct->getDataFieldConfig('configurable_attributes_data')['source']
+                ->getAttributes();
+            return $product;
+        }
+
+        $dataProduct = $product->getData();
+        $dataInitialProduct = $initialProduct->getData();
+        $oldMatrix = [];
+
+        if ($attributeTypeAction == 'deleteLast') {
+            array_pop($dataInitialProduct['configurable_attributes_data']['attributes_data']);
+            $attributes = $initialProduct->getDataFieldConfig('configurable_attributes_data')['source']
+                ->getAttributes();
+            $this->deletedAttributes[] = array_pop($attributes);
+        }
+
+        $attributesData = $dataInitialProduct['configurable_attributes_data']['attributes_data'];
+        if ($attributeTypeAction == 'addOptions') {
+            $oldMatrix = $dataInitialProduct['configurable_attributes_data']['matrix'];
+            $this->addOptions($attributesData, $dataProduct['configurable_attributes_data']['attributes_data']);
+        } else {
+            $this->addAttributes($attributesData, $dataProduct['configurable_attributes_data']['attributes_data']);
+        }
+
+        $dataProduct['configurable_attributes_data'] = [
+            'attributes_data' => $attributesData,
+            'matrix' => $oldMatrix
+        ];
+
+        if ($product->hasData('category_ids')) {
+            $dataProduct['category_ids']['category'] = $product->getDataFieldConfig('category_ids')['source']
+                ->getCategories()[0];
+        }
+
+        return $this->fixtureFactory->createByCode('configurableProductInjectable', ['data' => $dataProduct]);
+    }
+
+    /**
+     * Add options.
+     *
+     * @param array $attributes
+     * @param array $data
+     * @return void
+     */
+    protected function addOptions(array &$attributes, array $data)
+    {
+        foreach ($attributes as $key => $attribute) {
+            if (isset($data[$key])) {
+                $index = count($attribute['options']);
+                foreach ($data[$key]['options'] as $newOption) {
+                    $attributes[$key]['options']['option_key_' . $index] = $newOption;
+                    $index++;
+                }
+            }
+        }
+    }
+
+    /**
+     * Add attributes.
+     *
+     * @param array $attributes
+     * @param array $data
+     * @return void
+     */
+    protected function addAttributes(array &$attributes, array $data)
+    {
+        $index = count($attributes);
+        foreach ($data as $attribute) {
+            $attributes['attribute_key_' . $index] = $attribute;
+            $index++;
+        }
+    }
+
+    /**
+     * Update product.
+     *
+     * @param ConfigurableProductInjectable $product
+     * @return void
+     */
+    protected function updateProduct(ConfigurableProductInjectable $product)
+    {
+        $productForm = $this->catalogProductEdit->getProductForm();
+        $productForm->openTab('variations');
+        $productForm->getTabElement('variations')->deleteAttributes();
+        $this->catalogProductEdit->getProductForm()->fill($product);
+    }
+}
diff --git a/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/etc/constraint.xml b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/etc/constraint.xml
index 96743be520f..01f9ee21112 100644
--- a/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/etc/constraint.xml
+++ b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/etc/constraint.xml
@@ -54,4 +54,10 @@
     <assertConfigurableProductInCustomerWishlistOnBackendGrid module="Magento_ConfigurableProduct">
         <severeness>low</severeness>
     </assertConfigurableProductInCustomerWishlistOnBackendGrid>
+    <assertConfigurableAttributesAbsentOnProductPage module="Magento_ConfigurableProduct">
+        <severeness>low</severeness>
+    </assertConfigurableAttributesAbsentOnProductPage>
+    <assertConfigurableAttributesBlockIsAbsentOnProductPage module="Magento_ConfigurableProduct">
+        <severeness>low</severeness>
+    </assertConfigurableAttributesBlockIsAbsentOnProductPage>
 </constraint>
diff --git a/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/etc/page.xml b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/etc/page.xml
deleted file mode 100644
index d9c92344d7d..00000000000
--- a/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/etc/page.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" ?>
-<!--
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Academic Free License (AFL 3.0)
- * that is bundled with this package in the file LICENSE_AFL.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/afl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
- */
--->
-<page module="Magento_ConfigurableProduct">
-    <catalogProductEdit>
-        <mca>catalog/product/edit</mca>
-        <area>adminhtml</area>
-        <class>Magento\Configurable\Test\Page\Adminhtml\CatalogProductEdit</class>
-    </catalogProductEdit>
-    <catalogProductNew>
-        <mca>catalog/product/edit</mca>
-        <area>adminhtml</area>
-        <class>Magento\Configurable\Test\Page\Adminhtml\CatalogProductNew</class>
-    </catalogProductNew>
-    <catalogProductView>
-        <mca>catalog/product/view</mca>
-        <area>product</area>
-        <class>Magento\Configurable\Test\Page\CatalogProductView</class>
-    </catalogProductView>
-</page>
diff --git a/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/etc/scenario.xml b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/etc/scenario.xml
new file mode 100644
index 00000000000..ec175616a73
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/etc/scenario.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0"?>
+<!--
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Academic Free License (AFL 3.0)
+ * that is bundled with this package in the file LICENSE_AFL.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/afl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
+ */
+-->
+<scenarios xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/Mtf/Config/etc/scenario.xsd">
+    <scenario name="UpdateConfigurableProductEntityTest" module="Magento_ConfigurableProduct">
+        <methods>
+            <method name="test">
+                <steps>
+                    <first>createProduct</first>
+                    <step name="createProduct" module="Magento_Catalog">
+                        <arguments>
+                            <item name="product">configurableProductInjectable::default</item>
+                        </arguments>
+                        <next>openProductOnBackend</next>
+                    </step>
+                    <step name="openProductOnBackend" module="Magento_Catalog">
+                        <next>updateConfigurableProduct</next>
+                    </step>
+                    <step name="updateConfigurableProduct" module="Magento_ConfigurableProduct">
+                        <next>saveProduct</next>
+                    </step>
+                    <step name="saveProduct" module="Magento_Catalog" />
+                </steps>
+            </method>
+        </methods>
+    </scenario>
+</scenarios>
diff --git a/dev/tests/functional/tests/app/Magento/Customer/Test/Block/Form/Register.xml b/dev/tests/functional/tests/app/Magento/Customer/Test/Block/Form/Register.xml
index cbef022f122..d20f43a1bdf 100644
--- a/dev/tests/functional/tests/app/Magento/Customer/Test/Block/Form/Register.xml
+++ b/dev/tests/functional/tests/app/Magento/Customer/Test/Block/Form/Register.xml
@@ -48,7 +48,7 @@
             <input>checkbox</input>
         </is_subscribed>
         <password_confirmation>
-            <selector>[name=confirmation]</selector>
+            <selector>[name=password_confirmation]</selector>
         </password_confirmation>
     </fields>
 </mapping>
diff --git a/dev/tests/functional/tests/app/Magento/Customer/Test/Fixture/AddressInjectable.php b/dev/tests/functional/tests/app/Magento/Customer/Test/Fixture/AddressInjectable.php
index 93821cb08bd..85e21522b00 100644
--- a/dev/tests/functional/tests/app/Magento/Customer/Test/Fixture/AddressInjectable.php
+++ b/dev/tests/functional/tests/app/Magento/Customer/Test/Fixture/AddressInjectable.php
@@ -139,7 +139,7 @@ class AddressInjectable extends InjectableFixture
     protected $postcode = [
         'attribute_code' => 'postcode',
         'backend_type' => 'varchar',
-        'is_required' => '1',
+        'is_required' => '0',
         'default_value' => '',
         'input' => 'text',
     ];
diff --git a/dev/tests/functional/tests/app/Magento/Customer/Test/Fixture/AddressInjectable.xml b/dev/tests/functional/tests/app/Magento/Customer/Test/Fixture/AddressInjectable.xml
index 9e99b6951f7..0935d5e55b1 100644
--- a/dev/tests/functional/tests/app/Magento/Customer/Test/Fixture/AddressInjectable.xml
+++ b/dev/tests/functional/tests/app/Magento/Customer/Test/Fixture/AddressInjectable.xml
@@ -81,7 +81,7 @@
         <postcode>
             <attribute_code>postcode</attribute_code>
             <backend_type>varchar</backend_type>
-            <is_required>1</is_required>
+            <is_required>0</is_required>
             <default_value></default_value>
             <input>text</input>
         </postcode>
diff --git a/dev/tests/functional/tests/app/Magento/Customer/Test/TestCase/ChangeCustomerPasswordTest/test.csv b/dev/tests/functional/tests/app/Magento/Customer/Test/TestCase/ChangeCustomerPasswordTest/test.csv
index b2504a64899..726c0a3d22d 100644
--- a/dev/tests/functional/tests/app/Magento/Customer/Test/TestCase/ChangeCustomerPasswordTest/test.csv
+++ b/dev/tests/functional/tests/app/Magento/Customer/Test/TestCase/ChangeCustomerPasswordTest/test.csv
@@ -1,4 +1,4 @@
-"initialCustomer/dataSet";"customer/data/current_password";"customer/data/password";"customer/data/confirmation";"constraint";"issue"
+"initialCustomer/dataSet";"customer/data/current_password";"customer/data/password";"customer/data/password_confirmation";"constraint";"issue"
 "default";"123123q";"123123a";"123123a";"assertCustomerInfoSuccessSavedMessage, assertCustomerPasswordChanged";"Bug: MAGETWO-29412"
 "default";"123123";"123123a";"123123a";"assertChangePasswordFailMessage";""
 "default";"123123q";"123123a";"123123";"assertWrongPassConfirmationMessage";""
diff --git a/dev/tests/functional/tests/app/Magento/Downloadable/Test/Fixture/DownloadableProductInjectable.php b/dev/tests/functional/tests/app/Magento/Downloadable/Test/Fixture/DownloadableProductInjectable.php
index b6f0fc765cc..2517b2646c3 100644
--- a/dev/tests/functional/tests/app/Magento/Downloadable/Test/Fixture/DownloadableProductInjectable.php
+++ b/dev/tests/functional/tests/app/Magento/Downloadable/Test/Fixture/DownloadableProductInjectable.php
@@ -910,4 +910,9 @@ class DownloadableProductInjectable extends InjectableFixture
     {
         return $this->getData('downloadable_sample');
     }
+
+    public function getIsVirtual()
+    {
+        return $this->getData('is_virtual');
+    }
 }
diff --git a/dev/tests/functional/tests/app/Magento/Downloadable/Test/Fixture/DownloadableProductInjectable.xml b/dev/tests/functional/tests/app/Magento/Downloadable/Test/Fixture/DownloadableProductInjectable.xml
index 87f68c2c92c..fc66c7cc8ef 100644
--- a/dev/tests/functional/tests/app/Magento/Downloadable/Test/Fixture/DownloadableProductInjectable.xml
+++ b/dev/tests/functional/tests/app/Magento/Downloadable/Test/Fixture/DownloadableProductInjectable.xml
@@ -471,6 +471,11 @@
             <group />
             <source>Magento\Downloadable\Test\Fixture\DownloadableProductInjectable\CheckoutData</source>
         </checkout_data>
+        <is_virtual>
+            <attribute_code>is_virtual</attribute_code>
+            <backend_type>virtual</backend_type>
+            <group>product-details</group>
+        </is_virtual>
     </fields>
     <data_set>
         <sku></sku>
diff --git a/dev/tests/functional/tests/app/Magento/Downloadable/Test/Fixture/DownloadableProductInjectable/CheckoutData.php b/dev/tests/functional/tests/app/Magento/Downloadable/Test/Fixture/DownloadableProductInjectable/CheckoutData.php
index ac30a17faed..f9b743f4eed 100644
--- a/dev/tests/functional/tests/app/Magento/Downloadable/Test/Fixture/DownloadableProductInjectable/CheckoutData.php
+++ b/dev/tests/functional/tests/app/Magento/Downloadable/Test/Fixture/DownloadableProductInjectable/CheckoutData.php
@@ -53,7 +53,7 @@ class CheckoutData extends \Magento\Catalog\Test\Fixture\CatalogProductSimple\Ch
                 ],
                 'cartItem' => [
                     'price' => 23,
-                    'subtotal' => 46
+                    'subtotal' => 23
                 ]
             ],
             'forUpdateMiniShoppingCart' => [
diff --git a/dev/tests/functional/tests/app/Magento/Downloadable/Test/TestCase/CreateDownloadableProductEntityTest/test.csv b/dev/tests/functional/tests/app/Magento/Downloadable/Test/TestCase/CreateDownloadableProductEntityTest/test.csv
index d92a96a09b3..1b875f13b36 100644
--- a/dev/tests/functional/tests/app/Magento/Downloadable/Test/TestCase/CreateDownloadableProductEntityTest/test.csv
+++ b/dev/tests/functional/tests/app/Magento/Downloadable/Test/TestCase/CreateDownloadableProductEntityTest/test.csv
@@ -3,13 +3,13 @@
 "DownloadableProduct_%isolation%";"DownloadableProduct_%isolation%";"1";"Taxable Goods";"10";"In Stock";"Yes";"category %isolation%";"-";"-";"-";"-";"-";"-";"default";"default";"-";"-";"-";"-";"-";"downloadableproduct-%isolation%";"assertProductSaveMessage, assertProductInGrid, assertDownloadableProductForm, assertProductVisibleInCategory, assertDownloadableSamplesData, assertDownloadableLinksData";""
 "DownloadableProduct_%isolation%";"DownloadableProduct_%isolation%";"33";"Taxable Goods";"10";"In Stock";"Yes";"category %isolation%";"-";"-";"-";"-";"-";"-";"-";"default";"default";"-";"-";"-";"-";"downloadableproduct-%isolation%";"assertProductSaveMessage, assertDownloadableProductForm, assertProductCustomOptionsOnProductPage, assertProductVisibleInCategory, assertProductPage, assertDownloadableLinksData";""
 "DownloadableProduct_%isolation%";"DownloadableProduct_%isolation%";"55";"Taxable Goods";"10";"In Stock";"Yes";"-";"-";"-";"-";"-";"-";"-";"with_three_samples";"with_three_links";"two_options";"-";"-";"-";"-";"downloadableproduct-%isolation%";"assertProductSaveMessage, assertProductCustomOptionsOnProductPage, assertProductInGrid, assertDownloadableProductForm, assertProductVisibleInCategory, assertProductPage, assertDownloadableLinksData, assertProductInStock, assertProductSearchableBySku";""
-"DownloadableProduct_%isolation%";"DownloadableProduct_%isolation%";"100";"Taxable Goods";"50";"Out of Stock";"Yes";"Default Category";"-";"-";"-";"-";"-";"-";"-";"default";"-";"-";"-";"-";"-";"downloadableproduct-%isolation%";"assertProductSaveMessage, assertProductOutOfStock, assertProductInGrid, assertDownloadableProductForm";"Bug: MAGETWO-28450"
+"DownloadableProduct_%isolation%";"DownloadableProduct_%isolation%";"100";"Taxable Goods";"50";"Out of Stock";"Yes";"Default Category";"-";"-";"-";"-";"-";"-";"-";"default";"-";"-";"-";"-";"-";"downloadableproduct-%isolation%";"assertProductSaveMessage, assertProductOutOfStock, assertProductInGrid, assertDownloadableProductForm";""
 "DownloadableProduct_%isolation%";"DownloadableProduct_%isolation%";"9999";"Taxable Goods";"-";"-";"Yes";"Default Category";"-";"-";"Yes";"123";"No";"123";"-";"default";"-";"-";"-";"-";"-";"downloadableproduct-%isolation%";"assertProductSaveMessage, assertProductInGrid, assertDownloadableProductForm, assertProductOutOfStock";""
 "DownloadableProduct_%isolation%";"DownloadableProduct_%isolation%";"98";"None";"5";"In Stock";"Yes";"Default Category";"This is description for downloadable product";"-";"-";"-";"-";"-";"-";"default";"-";"-";"-";"-";"-";"downloadableproduct-%isolation%";"assertProductSaveMessage, assertProductInGrid, assertDownloadableProductForm, assertProductPage";""
-"DownloadableProduct_%isolation%";"DownloadableProduct_%isolation%";"57";"Taxable Goods";"10";"In Stock";"Yes";"category %isolation%";"-";"This is short description for downloadable product";"-";"-";"-";"-";"default";"with_three_links";"default";"catalogProductSimple::with_two_custom_option,catalogProductSimple::with_all_custom_option";"-";"-";"-";"downloadableproduct-%isolation%";"assertProductSaveMessage, assertProductInGrid, assertDownloadableProductForm, assertProductPage, assertProductCustomOptionsOnProductPage, assertDownloadableSamplesData, assertDownloadableLinksData";"Bug: MAGETWO-28905, MAGETWO-28913"
+"DownloadableProduct_%isolation%";"DownloadableProduct_%isolation%";"57";"Taxable Goods";"10";"In Stock";"Yes";"category %isolation%";"-";"This is short description for downloadable product";"-";"-";"-";"-";"default";"with_three_links";"default";"catalogProductSimple::with_two_custom_option,catalogProductSimple::with_all_custom_option";"-";"-";"-";"downloadableproduct-%isolation%";"assertProductSaveMessage, assertProductInGrid, assertDownloadableProductForm, assertProductPage, assertProductCustomOptionsOnProductPage, assertDownloadableSamplesData, assertDownloadableLinksData";""
 "DownloadableProduct_%isolation%";"DownloadableProduct_%isolation%";"65";"Taxable Goods";"11";"In Stock";"Yes";"category %isolation%";"This is description for downloadable product";"This is short description for downloadable product";"-";"-";"-";"-";"default";"with_three_links";"default";"-";"-";"-";"-";"downloadableproduct-%isolation%";"assertProductSaveMessage, assertProductPage, assertProductInGrid, assertDownloadableProductForm, assertProductCustomOptionsOnProductPage, assertDownloadableSamplesData, assertDownloadableLinksData";""
 "DownloadableProduct_%isolation%";"DownloadableProduct_%isolation%";"65";"Taxable Goods";"11";"In Stock";"Yes";"category %isolation%";"-";"-";"-";"-";"-";"-";"default";"with_three_links";"default";"-";"-";"-";"-";"downloadableproduct-%isolation%";"assertProductSaveMessage, assertProductInGrid, assertDownloadableProductForm, assertProductPage, assertDownloadableLinksData, assertProductCustomOptionsOnProductPage";""
 "DownloadableProduct_%isolation%";"DownloadableProduct_%isolation%";"100";"Taxable Goods";"-";"-";"Yes";"Default Category";"-";"-";"-";"-";"-";"-";"-";"default";"-";"-";"-";"-";"-";"downloadableproduct-%isolation%";"assertProductSaveMessage, assertDownloadableProductForm, assertProductVisibleInCategory, assertProductPage";""
-"DownloadableProduct_%isolation%";"DownloadableProduct_%isolation%";"10";"Taxable Goods";"10";"In Stock";"Yes";"category %isolation%";"-";"-";"-";"-";"-";"-";"-";"-";"-";"-";"5";"-";"-";"downloadableproduct-%isolation%";"assertProductSaveMessage, assertProductInGrid, assertDownloadableProductForm, assertProductPage, assertProductSpecialPriceOnProductPage";""
-"DownloadableProduct_%isolation%";"DownloadableProduct_%isolation%";"365";"Taxable Goods";"23";"In Stock";"Yes";"category %isolation%";"-";"-";"-";"-";"-";"-";"-";"-";"-";"-";"-";"default";"-";"downloadableproduct-%isolation%";"assertProductSaveMessage, assertProductInGrid, assertDownloadableProductForm, assertProductPage, assertProductGroupedPriceOnProductPage";""
-"DownloadableProduct_%isolation%";"DownloadableProduct_%isolation%";"250";"Taxable Goods";"65";"In Stock";"Yes";"category %isolation%";"-";"-";"-";"-";"-";"-";"-";"-";"-";"-";"-";"-";"default";"downloadableproduct-%isolation%";"assertProductSaveMessage, assertProductInGrid, assertDownloadableProductForm, assertProductPage, assertProductTierPriceOnProductPage";""
+"DownloadableProduct_%isolation%";"DownloadableProduct_%isolation%";"10";"Taxable Goods";"10";"In Stock";"Yes";"category %isolation%";"-";"-";"-";"-";"-";"-";"-";"default";"-";"-";"5";"-";"-";"downloadableproduct-%isolation%";"assertProductSaveMessage, assertProductInGrid, assertDownloadableProductForm, assertProductPage, assertProductSpecialPriceOnProductPage";""
+"DownloadableProduct_%isolation%";"DownloadableProduct_%isolation%";"365";"Taxable Goods";"23";"In Stock";"Yes";"category %isolation%";"-";"-";"-";"-";"-";"-";"-";"default";"-";"-";"-";"default";"-";"downloadableproduct-%isolation%";"assertProductSaveMessage, assertProductInGrid, assertDownloadableProductForm, assertProductPage, assertProductGroupedPriceOnProductPage";""
+"DownloadableProduct_%isolation%";"DownloadableProduct_%isolation%";"250";"Taxable Goods";"65";"In Stock";"Yes";"category %isolation%";"-";"-";"-";"-";"-";"-";"-";"default";"-";"-";"-";"-";"default";"downloadableproduct-%isolation%";"assertProductSaveMessage, assertProductInGrid, assertDownloadableProductForm, assertProductPage, assertProductTierPriceOnProductPage";""
diff --git a/dev/tests/functional/tests/app/Magento/Downloadable/Test/TestCase/UpdateDownloadableProductEntityTest/test.csv b/dev/tests/functional/tests/app/Magento/Downloadable/Test/TestCase/UpdateDownloadableProductEntityTest/test.csv
index 76855f89835..c808ff7aad0 100644
--- a/dev/tests/functional/tests/app/Magento/Downloadable/Test/TestCase/UpdateDownloadableProductEntityTest/test.csv
+++ b/dev/tests/functional/tests/app/Magento/Downloadable/Test/TestCase/UpdateDownloadableProductEntityTest/test.csv
@@ -4,5 +4,4 @@
 "DownloadableProduct_%isolation%";"DownloadableProduct_%isolation%";"9999";"Taxable Goods";"123";"-";"Yes";"-";"Default Category";"-";"-";"Yes";"-";"No";"123";"-";"-";"-";"-";"No";"downloadableproduct-%isolation%";"assertProductSaveMessage, assertProductInGrid, assertDownloadableProductForm, assertProductOutOfStock"
 "DownloadableProduct_%isolation%";"DownloadableProduct_%isolation%";"48";"None";"5";"In Stock";"Yes";"-";"Default Category";"This is description for downloadable product";"-";"-";"-";"-";"-";"-";"default";"-";"-";"No";"downloadableproduct-%isolation%";"assertProductSaveMessage, assertProductInGrid, assertDownloadableProductForm, assertProductPage"
 "DownloadableProduct_%isolation%";"DownloadableProduct_%isolation%";"54";"Taxable Goods";"10";"In Stock";"Yes";"-";"category %isolation%";"-";"This is short description for downloadable product";"-";"-";"-";"-";"default";"with_three_links";"default";"-";"Yes";"downloadableproduct-%isolation%";"assertProductSaveMessage, assertProductInGrid, assertDownloadableProductForm, assertProductPage, assertProductCustomOptionsOnProductPage, assertDownloadableSamplesData, assertDownloadableLinksData, assertProductInCategory"
-"DownloadableProduct_%isolation%";"DownloadableProduct_%isolation%";"57";"Taxable Goods";"10";"In Stock";"No";"-";"-";"-";"-";"-";"-";"-";"-";"-";"-";"-";"-";"No";"downloadableproduct-%isolation%";"assertProductSaveMessage, assertProductInGrid"
-"DownloadableProduct_%isolation%";"DownloadableProduct_%isolation%";"43";"Taxable Goods";"10";"In Stock";"No";"10";"-";"-";"-";"-";"-";"-";"-";"-";"-";"-";"40";"No";"downloadableproduct-%isolation%";"assertProductSaveMessage, assertProductInGrid, assertProductSpecialPriceOnProductPage, assertProductPage"
+"DownloadableProduct_%isolation%";"DownloadableProduct_%isolation%";"43";"Taxable Goods";"10";"In Stock";"Yes";"10";"-";"-";"-";"-";"-";"-";"-";"-";"-";"-";"40";"No";"downloadableproduct-%isolation%";"assertProductSaveMessage, assertProductInGrid, assertProductSpecialPriceOnProductPage, assertProductPage"
diff --git a/dev/tests/functional/tests/app/Magento/GroupedProduct/Test/Constraint/AbstractAssertPriceOnGroupedProductPage.php b/dev/tests/functional/tests/app/Magento/GroupedProduct/Test/Constraint/AbstractAssertPriceOnGroupedProductPage.php
index 81f1ff42d66..edb4e6da7cc 100644
--- a/dev/tests/functional/tests/app/Magento/GroupedProduct/Test/Constraint/AbstractAssertPriceOnGroupedProductPage.php
+++ b/dev/tests/functional/tests/app/Magento/GroupedProduct/Test/Constraint/AbstractAssertPriceOnGroupedProductPage.php
@@ -25,15 +25,14 @@
 namespace Magento\GroupedProduct\Test\Constraint;
 
 use Mtf\Client\Browser;
-use Mtf\Fixture\InjectableFixture;
+use Magento\Catalog\Test\Fixture\CatalogProductSimple;
 use Mtf\Constraint\AbstractConstraint;
 use Magento\GroupedProduct\Test\Fixture\GroupedProductInjectable;
 use Magento\Catalog\Test\Page\Product\CatalogProductView;
 use Magento\Catalog\Test\Constraint\AssertPriceOnProductPageInterface;
 
 /**
- * Class AbstractAssertPriceOnGroupedProductPage
- * Assert that displayed price on grouped product page equals passed from fixture
+ * Assert that displayed grouped price on product page equals passed from fixture.
  */
 abstract class AbstractAssertPriceOnGroupedProductPage extends AbstractConstraint
 {
@@ -71,13 +70,12 @@ abstract class AbstractAssertPriceOnGroupedProductPage extends AbstractConstrain
         $browser->open($_ENV['app_frontend_url'] . $product->getUrlKey() . '.html');
 
         $groupedData = $product->getAssociated();
-        /** @var InjectableFixture $subProduct */
+        /** @var CatalogProductSimple $subProduct */
         foreach ($groupedData['products'] as $key => $subProduct) {
             //Process assertions
-            $catalogProductView->getViewBlock()
-                ->{'item' . $typePrice . 'PriceProductBlock'}(++$key);
+            $catalogProductView->getGroupedProductViewBlock()->{'item' . $typePrice . 'PriceProductBlock'}(++$key);
             $object->setErrorMessage(sprintf($this->errorMessage, $subProduct->getData('name')));
-            $object->assertPrice($subProduct, $catalogProductView, 'Grouped');
+            $object->assertPrice($subProduct, $catalogProductView->getGroupedProductViewBlock(), 'Grouped');
         }
     }
 
diff --git a/dev/tests/functional/tests/app/Magento/GroupedProduct/Test/Fixture/GroupedProductInjectable.php b/dev/tests/functional/tests/app/Magento/GroupedProduct/Test/Fixture/GroupedProductInjectable.php
index 2cf73584393..c785dbd1eb3 100644
--- a/dev/tests/functional/tests/app/Magento/GroupedProduct/Test/Fixture/GroupedProductInjectable.php
+++ b/dev/tests/functional/tests/app/Magento/GroupedProduct/Test/Fixture/GroupedProductInjectable.php
@@ -442,7 +442,7 @@ class GroupedProductInjectable extends InjectableFixture
         'is_required' => '0',
         'default_value' => '',
         'input' => 'text',
-        'group' => 'autosettings'
+        'group' => 'search-engine-optimization'
     ];
 
     protected $url_path = [
diff --git a/dev/tests/functional/tests/app/Magento/GroupedProduct/Test/Fixture/GroupedProductInjectable.xml b/dev/tests/functional/tests/app/Magento/GroupedProduct/Test/Fixture/GroupedProductInjectable.xml
index ce5b11fbd4a..e34dd624940 100644
--- a/dev/tests/functional/tests/app/Magento/GroupedProduct/Test/Fixture/GroupedProductInjectable.xml
+++ b/dev/tests/functional/tests/app/Magento/GroupedProduct/Test/Fixture/GroupedProductInjectable.xml
@@ -303,6 +303,7 @@
             <is_required>0</is_required>
             <default_value></default_value>
             <input>text</input>
+            <group>search-engine-optimization</group>
         </url_key>
         <url_path>
             <attribute_code>url_path</attribute_code>
diff --git a/dev/tests/functional/tests/app/Magento/GroupedProduct/Test/Page/Product/CatalogProductView.xml b/dev/tests/functional/tests/app/Magento/GroupedProduct/Test/Page/Product/CatalogProductView.xml
index f59d700538c..949633ecc2b 100755
--- a/dev/tests/functional/tests/app/Magento/GroupedProduct/Test/Page/Product/CatalogProductView.xml
+++ b/dev/tests/functional/tests/app/Magento/GroupedProduct/Test/Page/Product/CatalogProductView.xml
@@ -32,5 +32,10 @@
                 </grouped>
             </renders>
         </viewBlock>
+        <groupedProductViewBlock>
+            <class>Magento\GroupedProduct\Test\Block\Catalog\Product\View</class>
+            <locator>#maincontent</locator>
+            <strategy>css selector</strategy>
+        </groupedProductViewBlock>
     </blocks>
 </page>
diff --git a/dev/tests/functional/tests/app/Magento/ImportExport/Test/Constraint/AssertProductAttributeAbsenceForExport.php b/dev/tests/functional/tests/app/Magento/ImportExport/Test/Constraint/AssertProductAttributeAbsenceForExport.php
index 2aa5ed5a7c0..644d0d49fad 100644
--- a/dev/tests/functional/tests/app/Magento/ImportExport/Test/Constraint/AssertProductAttributeAbsenceForExport.php
+++ b/dev/tests/functional/tests/app/Magento/ImportExport/Test/Constraint/AssertProductAttributeAbsenceForExport.php
@@ -50,8 +50,7 @@ class AssertProductAttributeAbsenceForExport extends AbstractConstraint
      * @param ImportExport $export
      * @return void
      */
-    public function processAssert
-    (
+    public function processAssert(
         AdminExportIndex $exportIndex,
         CatalogProductAttribute $attribute,
         ImportExport $export
diff --git a/dev/tests/functional/utils/bootstrap.php b/dev/tests/functional/utils/bootstrap.php
index b7647311f5d..e750996917f 100644
--- a/dev/tests/functional/utils/bootstrap.php
+++ b/dev/tests/functional/utils/bootstrap.php
@@ -37,6 +37,8 @@ set_include_path($path);
 
 $appRoot = dirname(dirname(dirname(dirname(__DIR__))));
 require $appRoot . '/app/bootstrap.php';
+$includePath = new \Magento\Framework\Autoload\IncludePath();
+spl_autoload_register([$includePath, 'load']);
 
 $objectManagerFactory = \Magento\Framework\App\Bootstrap::createObjectManagerFactory(BP, $_SERVER);
 $objectManager = $objectManagerFactory->create($_SERVER);
diff --git a/dev/tests/functional/utils/generate/factory.php b/dev/tests/functional/utils/generate/factory.php
index 0b250cebc2e..6c5801a9e53 100644
--- a/dev/tests/functional/utils/generate/factory.php
+++ b/dev/tests/functional/utils/generate/factory.php
@@ -23,6 +23,8 @@
  */
 
 require __DIR__ . '/../../../../../app/bootstrap.php';
+$includePath = new \Magento\Framework\Autoload\IncludePath();
+spl_autoload_register([$includePath, 'load']);
 $bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $_SERVER);
 
 $mtfRoot = dirname(dirname(dirname(__FILE__)));
@@ -30,15 +32,15 @@ $mtfRoot = str_replace('\\', '/', $mtfRoot);
 define('MTF_BP', $mtfRoot);
 define('MTF_TESTS_PATH', MTF_BP . '/tests/app/');
 
-$path = get_include_path();
-$path = rtrim($path, PATH_SEPARATOR);
-$path .= PATH_SEPARATOR . MTF_BP;
-$path .= PATH_SEPARATOR . MTF_BP . '/lib';
-$path .= PATH_SEPARATOR . MTF_BP . '/tests/app';
-$path .= PATH_SEPARATOR . MTF_BP . '/generated';
-$path .= PATH_SEPARATOR . MTF_BP . '/vendor/magento/mtf';
-$path .= PATH_SEPARATOR . MTF_BP . '/vendor/phpunit/phpunit';
-set_include_path($path);
+$paths = [
+    MTF_BP,
+    MTF_BP . '/lib',
+    MTF_BP . '/tests/app',
+    MTF_BP . '/generated',
+    MTF_BP . '/vendor/magento/mtf',
+    MTF_BP . '/vendor/phpunit/phpunit'
+];
+$includePath->addIncludePath($paths);
 
 $om = $bootstrap->getObjectManager();
 /** @var \Mtf\Util\Generate\Factory $generator */
diff --git a/dev/tests/functional/utils/generate/page.php b/dev/tests/functional/utils/generate/page.php
index aef3f988c6c..b9f0ab521fa 100644
--- a/dev/tests/functional/utils/generate/page.php
+++ b/dev/tests/functional/utils/generate/page.php
@@ -22,6 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 require_once dirname(__DIR__) . '/' . 'bootstrap.php';
-
+$includePath = new \Magento\Framework\Autoload\IncludePath();
+spl_autoload_register([$includePath, 'load']);
 $objectManager->create('Mtf\Util\Generate\Page')->launch();
 \Mtf\Util\Generate\GenerateResult::displayResults();
diff --git a/dev/tests/integration/.gitignore b/dev/tests/integration/.gitignore
index 60ecdfd9ed8..7f8540b3c77 100644
--- a/dev/tests/integration/.gitignore
+++ b/dev/tests/integration/.gitignore
@@ -1,4 +1,4 @@
 /*.xml
-/etc/*.xml
 !/etc/integration-tests-config.xml
 /var/
+/etc/*.php
diff --git a/dev/shell/run_schema_updater.php b/dev/tests/integration/etc/install-config-mysql.php.dist
similarity index 62%
rename from dev/shell/run_schema_updater.php
rename to dev/tests/integration/etc/install-config-mysql.php.dist
index 1e4d4a97e6a..41d077531ec 100644
--- a/dev/shell/run_schema_updater.php
+++ b/dev/tests/integration/etc/install-config-mysql.php.dist
@@ -22,14 +22,16 @@
  * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-use Magento\Framework\App\State as AppState;
-
-require __DIR__ . '/../../app/bootstrap.php';
-$params = $_SERVER;
-if (!isset($params[AppState::PARAM_MODE])) {
-    $params[AppState::PARAM_MODE] = AppState::MODE_DEVELOPER;
-}
-$bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $params);
-/** @var \Magento\Framework\Module\Updater $updater */
-$updater = $bootstrap->getObjectManager()->create('\Magento\Framework\Module\Updater');
-$updater->updateScheme();
+return [
+    'db_host' => 'localhost',
+    'db_user' => 'root',
+    'db_pass' => '',
+    'db_name' => 'magento_integration_tests',
+    'db_prefix' => '',
+    'backend_frontname' => 'backend',
+    'admin_username' => \Magento\TestFramework\Bootstrap::ADMIN_NAME,
+    'admin_password' => \Magento\TestFramework\Bootstrap::ADMIN_PASSWORD,
+    'admin_email' => \Magento\TestFramework\Bootstrap::ADMIN_EMAIL,
+    'admin_firstname' => \Magento\TestFramework\Bootstrap::ADMIN_FIRSTNAME,
+    'admin_lastname' => \Magento\TestFramework\Bootstrap::ADMIN_LASTNAME,
+];
diff --git a/setup/module/Magento/Config/config/module.config.php b/dev/tests/integration/etc/install-config-mysql.travis.php.dist
similarity index 50%
rename from setup/module/Magento/Config/config/module.config.php
rename to dev/tests/integration/etc/install-config-mysql.travis.php.dist
index 0a0f0abd591..a6d3aedc4c8 100644
--- a/setup/module/Magento/Config/config/module.config.php
+++ b/dev/tests/integration/etc/install-config-mysql.travis.php.dist
@@ -18,10 +18,20 @@
  * versions in the future. If you wish to customize Magento for your
  * needs please refer to http://www.magentocommerce.com for more information.
  *
- * @copyright Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license   http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ * @copyright  Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
 return [
-
+    'db_host' => '127.0.0.1',
+    'db_user' => 'travis',
+    'db_pass' => '',
+    'db_name' => 'magento_integration_tests',
+    'db_prefix' => 'travis_',
+    'backend_frontname' => 'backend',
+    'admin_username' => \Magento\TestFramework\Bootstrap::ADMIN_NAME,
+    'admin_password' => \Magento\TestFramework\Bootstrap::ADMIN_PASSWORD,
+    'admin_email' => \Magento\TestFramework\Bootstrap::ADMIN_EMAIL,
+    'admin_firstname' => \Magento\TestFramework\Bootstrap::ADMIN_FIRSTNAME,
+    'admin_lastname' => \Magento\TestFramework\Bootstrap::ADMIN_LASTNAME,
 ];
diff --git a/dev/tests/integration/etc/local-mysql.travis.xml.dist b/dev/tests/integration/etc/local-mysql.travis.xml.dist
deleted file mode 100644
index cf27d833df6..00000000000
--- a/dev/tests/integration/etc/local-mysql.travis.xml.dist
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0"?>
-<!--
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Academic Free License (AFL 3.0)
- * that is bundled with this package in the file LICENSE_AFL.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/afl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
- */
--->
-<config>
-    <install>
-        <!-- Important: validity of installation date indicates whether an application is installed or not -->
-        <date><![CDATA[d-d-d-d-d]]></date>
-    </install>
-    <crypt>
-        <key><![CDATA[k-k-k-k-k]]></key>
-    </crypt>
-    <db>
-        <table_prefix><![CDATA[travis_]]></table_prefix>
-    </db>
-    <connection name="default">
-        <host><![CDATA[127.0.0.1]]></host>
-        <username><![CDATA[travis]]></username>
-        <password><![CDATA[]]></password>
-        <dbName><![CDATA[magento_integration_tests]]></dbName>
-        <initStatements><![CDATA[SET NAMES utf8]]></initStatements>
-        <model><![CDATA[mysql4]]></model>
-        <adapter>Magento\TestFramework\Db\ConnectionAdapter</adapter>
-        <active>1</active>
-    </connection>
-    <resource name="default_setup" connection="default"/>
-    <session_save><![CDATA[files]]></session_save>
-    <backend>
-        <frontName><![CDATA[backend]]></frontName>
-    </backend>
-</config>
diff --git a/dev/tests/integration/etc/local-mysql.xml.dist b/dev/tests/integration/etc/local-mysql.xml.dist
deleted file mode 100644
index a1f72f5ff0a..00000000000
--- a/dev/tests/integration/etc/local-mysql.xml.dist
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0"?>
-<!--
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Academic Free License (AFL 3.0)
- * that is bundled with this package in the file LICENSE_AFL.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/afl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
- */
--->
-<config>
-    <install>
-        <!-- Important: validity of installation date indicates whether an application is installed or not -->
-        <date><![CDATA[d-d-d-d-d]]></date>
-    </install>
-    <crypt>
-        <key><![CDATA[k-k-k-k-k]]></key>
-    </crypt>
-    <db>
-        <table_prefix><![CDATA[]]></table_prefix>
-    </db>
-    <connection name="default">
-        <host><![CDATA[localhost]]></host>
-        <username><![CDATA[root]]></username>
-        <password><![CDATA[]]></password>
-        <dbName><![CDATA[magento_integration_tests]]></dbName>
-        <initStatements><![CDATA[SET NAMES utf8]]></initStatements>
-        <model><![CDATA[mysql4]]></model>
-        <adapter>Magento\TestFramework\Db\ConnectionAdapter</adapter>
-        <active>1</active>
-    </connection>
-    <resource name="default_setup" connection="default"/>
-    <session_save><![CDATA[files]]></session_save>
-    <backend>
-        <frontName><![CDATA[backend]]></frontName>
-    </backend>
-</config>
diff --git a/dev/tests/integration/framework/Magento/TestFramework/Annotation/AppArea.php b/dev/tests/integration/framework/Magento/TestFramework/Annotation/AppArea.php
index 7e951befa35..ead0a031064 100644
--- a/dev/tests/integration/framework/Magento/TestFramework/Annotation/AppArea.php
+++ b/dev/tests/integration/framework/Magento/TestFramework/Annotation/AppArea.php
@@ -41,7 +41,6 @@ class AppArea
         \Magento\Framework\App\Area::AREA_GLOBAL,
         \Magento\Backend\App\Area\FrontNameResolver::AREA_CODE,
         \Magento\Framework\App\Area::AREA_FRONTEND,
-        'install',
         'webapi_rest',
         'webapi_soap',
         'cron'
diff --git a/dev/tests/integration/framework/Magento/TestFramework/Application.php b/dev/tests/integration/framework/Magento/TestFramework/Application.php
index efca4bf48e1..ee6bd6742fc 100644
--- a/dev/tests/integration/framework/Magento/TestFramework/Application.php
+++ b/dev/tests/integration/framework/Magento/TestFramework/Application.php
@@ -23,15 +23,13 @@
  */
 namespace Magento\TestFramework;
 
-use Magento\Authorization\Model\UserContextInterface;
+use Magento\Framework\Code\Generator\FileResolver;
 use Magento\Framework\Filesystem;
 use Magento\Framework\App\Filesystem\DirectoryList;
 
 /**
  * Encapsulates application installation, initialization and uninstall
  *
- * @todo Implement MAGETWO-1689: Standard Installation Method for Integration Tests
- *
  * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
  */
 class Application
@@ -49,9 +47,25 @@ class Application
     protected $_db;
 
     /**
-     * @var \Magento\Framework\Simplexml\Element
+     * Shell command executor
+     *
+     * @var \Magento\Framework\Shell
+     */
+    protected $_shell;
+
+    /**
+     * Configuration file that contains installation parameters
+     *
+     * @var string
      */
-    protected $_localXml;
+    private $installConfigFile;
+
+    /**
+     * The loaded installation parameters
+     *
+     * @var array
+     */
+    protected $installConfig;
 
     /**
      * Application *.xml configuration files
@@ -72,14 +86,14 @@ class Application
      *
      * @var string
      */
-    protected $_installDir;
+    protected $_tmpDir;
 
     /**
      * Installation destination directory with configuration files
      *
      * @var string
      */
-    protected $_installEtcDir;
+    protected $_configDir;
 
     /**
      * Application initialization parameters
@@ -110,58 +124,84 @@ class Application
     protected $_primaryConfigData = array();
 
     /**
+     * Object manager factory
+     *
      * @var \Magento\TestFramework\ObjectManagerFactory
      */
     protected $_factory;
 
+    /**
+     * A factory method
+     *
+     * @param string $installConfigFile
+     * @param string $globalConfigDir
+     * @param array $moduleConfigFiles
+     * @param string $appMode
+     * @param string $tmpDir
+     * @param \Magento\Framework\Shell $shell
+     * @return Application
+     */
+    public static function getInstance(
+        $installConfigFile,
+        $globalConfigDir,
+        array $moduleConfigFiles,
+        $appMode,
+        $tmpDir,
+        \Magento\Framework\Shell $shell
+    ) {
+        if (!file_exists($installConfigFile)) {
+            $installConfigFile = $installConfigFile . '.dist';
+        }
+        $sandboxUniqueId = md5(sha1_file($installConfigFile));
+        $installDir = "{$tmpDir}/sandbox-{$sandboxUniqueId}";
+        FileResolver::addIncludePath($installDir . '/var/generation/');
+        return new \Magento\TestFramework\Application(
+            $shell,
+            $installDir,
+            $installConfigFile,
+            $globalConfigDir,
+            $moduleConfigFiles,
+            $appMode
+        );
+    }
+
     /**
      * Constructor
      *
-     * @param \Magento\TestFramework\Db\AbstractDb $dbInstance
-     * @param string $installDir
-     * @param \Magento\Framework\Simplexml\Element $localXml
-     * @param $globalConfigDir
+     * @param \Magento\Framework\Shell $shell
+     * @param string $tmpDir
+     * @param array $installConfigFile
+     * @param string $globalConfigDir
      * @param array $moduleEtcFiles
      * @param string $appMode
      */
     public function __construct(
-        \Magento\TestFramework\Db\AbstractDb $dbInstance,
-        $installDir,
-        \Magento\Framework\Simplexml\Element $localXml,
+        \Magento\Framework\Shell $shell,
+        $tmpDir,
+        $installConfigFile,
         $globalConfigDir,
         array $moduleEtcFiles,
         $appMode
     ) {
-        $this->_db = $dbInstance;
-        $this->_localXml = $localXml;
+        $this->_shell = $shell;
+        $this->installConfigFile = $installConfigFile;
         $this->_globalConfigDir = realpath($globalConfigDir);
         $this->_moduleEtcFiles = $moduleEtcFiles;
         $this->_appMode = $appMode;
 
-        $this->_installDir = $installDir;
-        $this->_installEtcDir = "{$installDir}/etc";
+        $this->_tmpDir = $tmpDir;
+
+        $customDirs = $this->getCustomDirs();
+        $dirList = new \Magento\Framework\App\Filesystem\DirectoryList(BP, $customDirs);
 
-        $generationDir = "{$installDir}/generation";
-        $customDirs = array(
-            DirectoryList::CONFIG => array(DirectoryList::PATH => $this->_installEtcDir),
-            DirectoryList::VAR_DIR => array(DirectoryList::PATH => $installDir),
-            DirectoryList::MEDIA => array(DirectoryList::PATH => "{$installDir}/media"),
-            DirectoryList::STATIC_VIEW => array(DirectoryList::PATH => "{$installDir}/pub_static"),
-            DirectoryList::GENERATION => array(DirectoryList::PATH => $generationDir),
-            DirectoryList::CACHE => array(DirectoryList::PATH => $installDir . '/cache'),
-            DirectoryList::LOG => array(DirectoryList::PATH => $installDir . '/log'),
-            DirectoryList::THEMES => array(DirectoryList::PATH => BP . '/app/design'),
-            DirectoryList::SESSION => array(DirectoryList::PATH => $installDir . '/session'),
-            DirectoryList::TMP => array(DirectoryList::PATH => $installDir . '/tmp'),
-            DirectoryList::UPLOAD => array(DirectoryList::PATH => $installDir . '/upload'),
-        );
         $this->_initParams = array(
             \Magento\Framework\App\Bootstrap::INIT_PARAM_FILESYSTEM_DIR_PATHS => $customDirs,
             \Magento\Framework\App\State::PARAM_MODE => $appMode
         );
-        $dirList = new \Magento\Framework\App\Filesystem\DirectoryList(BP, $customDirs);
         $driverPool = new \Magento\Framework\Filesystem\DriverPool;
         $this->_factory = new \Magento\TestFramework\ObjectManagerFactory($dirList, $driverPool);
+
+        $this->_configDir = $dirList->getPath(DirectoryList::CONFIG);
     }
 
     /**
@@ -171,15 +211,64 @@ class Application
      */
     public function getDbInstance()
     {
+        if (null === $this->_db) {
+            if ($this->isInstalled()) {
+                $localConfigFile = $this->getLocalConfig();
+                $localConfig = simplexml_load_file($localConfigFile);
+                $host = (string)$localConfig->connection->host;
+                $user = (string)$localConfig->connection->username;
+                $password = (string)$localConfig->connection->password;
+                $dbName = (string)$localConfig->connection->dbName;
+            } else {
+                $installConfig = $this->getInstallConfig();
+                $host = $installConfig['db_host'];
+                $user = $installConfig['db_user'];
+                $password = $installConfig['db_pass'];
+                $dbName = $installConfig['db_name'];
+            }
+            $this->_db = new Db\Mysql(
+                $host,
+                $user,
+                $password,
+                $dbName,
+                $this->getTempDir(),
+                $this->_shell
+            );
+        }
         return $this->_db;
     }
 
     /**
-     * Get directory path with application instance custom data (cache, temporary directory, etc...)
+     * Gets installation parameters
+     *
+     * @return array
+     */
+    protected function getInstallConfig()
+    {
+        if (null === $this->installConfig) {
+            $this->installConfig = include $this->installConfigFile;
+        }
+        return $this->installConfig;
+    }
+
+    /**
+     * Gets deployment configuration path
+     *
+     * @return string
+     */
+    private function getLocalConfig()
+    {
+        return $this->_configDir . '/local.xml';
+    }
+
+    /**
+     * Get path to temporary directory
+     *
+     * @return string
      */
-    public function getInstallDir()
+    public function getTempDir()
     {
-        return $this->_installDir;
+        return $this->_tmpDir;
     }
 
     /**
@@ -199,13 +288,14 @@ class Application
      */
     public function isInstalled()
     {
-        return is_file($this->_installEtcDir . '/local.xml');
+        return is_file($this->getLocalConfig());
     }
 
     /**
      * Initialize application
      *
      * @param array $overriddenParams
+     * @return void
      */
     public function initialize($overriddenParams = array())
     {
@@ -267,6 +357,7 @@ class Application
      * Reset and initialize again an already installed application
      *
      * @param array $overriddenParams
+     * @return void
      */
     public function reinitialize(array $overriddenParams = array())
     {
@@ -276,6 +367,8 @@ class Application
 
     /**
      * Run application normally, but with encapsulated initialization options
+     *
+     * @return void
      */
     public function run()
     {
@@ -288,94 +381,123 @@ class Application
 
     /**
      * Cleanup both the database and the file system
+     *
+     * @return void
      */
     public function cleanup()
     {
-        $this->_db->cleanup();
-        $this->_cleanupFilesystem();
+        /**
+         * @see \Magento\Setup\Mvc\Bootstrap\InitParamListener::BOOTSTRAP_PARAM
+         */
+        $this->_shell->execute(
+            'php -f %s uninstall --magento_init_params=%s',
+            [BP . '/setup/index.php', $this->getInitParamsQuery()]
+        );
     }
 
     /**
      * Install an application
      *
-     * @param string $adminUserName
-     * @param string $adminPassword
-     * @param string $adminRoleName
+     * @return void
      * @throws \Magento\Framework\Exception
      */
-    public function install($adminUserName, $adminPassword, $adminRoleName)
+    public function install()
     {
-        $this->_ensureDirExists($this->_installDir);
-        $this->_ensureDirExists($this->_installEtcDir);
-        $this->_ensureDirExists($this->_installDir . '/media');
-        $this->_ensureDirExists($this->_installDir . '/static');
+        $dirs = \Magento\Framework\App\Bootstrap::INIT_PARAM_FILESYSTEM_DIR_PATHS;
+        $this->_ensureDirExists($this->_tmpDir);
+        $this->_ensureDirExists($this->_configDir);
+        $this->_ensureDirExists($this->_initParams[$dirs][DirectoryList::MEDIA][DirectoryList::PATH]);
+        $this->_ensureDirExists($this->_initParams[$dirs][DirectoryList::STATIC_VIEW][DirectoryList::PATH]);
+        $this->_ensureDirExists($this->_initParams[$dirs][DirectoryList::VAR_DIR][DirectoryList::PATH]);
+
+        $this->copyAppConfigFiles();
+
+        $installParams = $this->getInstallCliParams();
+
+        // performance optimization: restore DB from last good dump to make installation on top of it (much faster)
+        $db = $this->getDbInstance();
+        if ($db->isDbDumpExists()) {
+            $db->restoreFromDbDump();
+        }
+
+        // run install script
+        $this->_shell->execute(
+            'php -f %s install ' . implode(' ', array_keys($installParams)),
+            array_merge([BP . '/setup/index.php'], array_values($installParams))
+        );
+
+        // enable only specified list of caches
+        $cacheScript = BP . '/dev/shell/cache.php';
+        $initParamsQuery = $this->getInitParamsQuery();
+        $this->_shell->execute('php -f %s -- --set=0 --bootstrap=%s', [$cacheScript, $initParamsQuery]);
+        $cacheTypes = [
+            \Magento\Framework\App\Cache\Type\Config::TYPE_IDENTIFIER,
+            \Magento\Framework\App\Cache\Type\Layout::TYPE_IDENTIFIER,
+            \Magento\Framework\App\Cache\Type\Translate::TYPE_IDENTIFIER,
+            \Magento\Eav\Model\Cache\Type::TYPE_IDENTIFIER,
+        ];
+        $this->_shell->execute(
+            'php -f %s -- --set=1 --types=%s --bootstrap=%s',
+            [$cacheScript, implode(',', $cacheTypes), $initParamsQuery]
+        );
+
+        // right after a clean installation, store DB dump for future reuse in tests or running the test suite again
+        if (!$db->isDbDumpExists()) {
+            $this->getDbInstance()->storeDbDump();
+        }
+    }
 
-        // Copy configuration files
-        $globalConfigFiles = glob($this->_globalConfigDir . '/{*,*/*}.xml', GLOB_BRACE);
+    /**
+     * Copies configuration files from the main code base, so the installation could proceed in the tests directory
+     *
+     * @return void
+     */
+    private function copyAppConfigFiles()
+    {
+        $globalConfigFiles = glob($this->_globalConfigDir . '/{di.xml,local.xml.template,*/*.xml}', GLOB_BRACE);
         foreach ($globalConfigFiles as $file) {
-            $targetFile = $this->_installEtcDir . str_replace($this->_globalConfigDir, '', $file);
+            $targetFile = $this->_configDir . str_replace($this->_globalConfigDir, '', $file);
             $this->_ensureDirExists(dirname($targetFile));
             copy($file, $targetFile);
         }
 
         foreach ($this->_moduleEtcFiles as $file) {
-            $targetModulesDir = $this->_installEtcDir . '/modules';
+            $targetModulesDir = $this->_configDir . '/modules';
             $this->_ensureDirExists($targetModulesDir);
             copy($file, $targetModulesDir . '/' . basename($file));
         }
+    }
 
-        /* Make sure that local.xml does not contain an invalid installation date */
-        $installDate = (string)$this->_localXml->install->date;
-        if ($installDate && strtotime($installDate)) {
-            throw new \Magento\Framework\Exception('Local configuration must contain an invalid installation date.');
-        }
-
-        /* Replace local.xml */
-        $targetLocalXml = $this->_installEtcDir . '/local.xml';
-        $this->_localXml->asNiceXml($targetLocalXml);
-
-        /* Initialize an application in non-installed mode */
-        $this->initialize();
-
-        \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get('Magento\Framework\App\AreaList')
-            ->getArea('install')->load(\Magento\Framework\App\Area::PART_CONFIG);
-
-        /* Run all install and data-install scripts */
-        /** @var $updater \Magento\Framework\Module\Updater */
-        $updater = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get('Magento\Framework\Module\Updater');
-        $updater->updateScheme();
-        $updater->updateData();
-
-        /* Enable configuration cache by default in order to improve tests performance */
-        /** @var $cacheState \Magento\Framework\App\Cache\StateInterface */
-        $cacheState = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
-            'Magento\Framework\App\Cache\StateInterface'
-        );
-        $cacheState->setEnabled(\Magento\Framework\App\Cache\Type\Config::TYPE_IDENTIFIER, true);
-        $cacheState->setEnabled(\Magento\Framework\App\Cache\Type\Layout::TYPE_IDENTIFIER, true);
-        $cacheState->setEnabled(\Magento\Framework\App\Cache\Type\Translate::TYPE_IDENTIFIER, true);
-        $cacheState->setEnabled(\Magento\Eav\Model\Cache\Type::TYPE_IDENTIFIER, true);
-        $cacheState->persist();
-
-        /* Fill installation date in local.xml to indicate that application is installed */
-        $localXml = file_get_contents($targetLocalXml);
-        $localXml = str_replace($installDate, date('r'), $localXml, $replacementCount);
-        if ($replacementCount != 1) {
-            throw new \Magento\Framework\Exception(
-                "Unable to replace installation date properly in '{$targetLocalXml}' file."
-            );
+    /**
+     * Gets a list of CLI params for installation
+     *
+     * @return array
+     */
+    private function getInstallCliParams()
+    {
+        $params = $this->getInstallConfig();
+        /**
+         * Literal value is used instead of constant, because autoloader is not integrated with Magento Setup app
+         * @see \Magento\Setup\Mvc\Bootstrap\InitParamListener::BOOTSTRAP_PARAM
+         */
+        $params['magento_init_params'] = $this->getInitParamsQuery();
+        $result = [];
+        foreach ($params as $key => $value) {
+            if (!empty($value)) {
+                $result["--{$key}=%s"] = $value;
+            }
         }
-        file_put_contents($targetLocalXml, $localXml, LOCK_EX);
-
-        /* Add predefined admin user to the system */
-        $this->_createAdminUser($adminUserName, $adminPassword, $adminRoleName);
+        return $result;
+    }
 
-        /* Switch an application to installed mode */
-        $this->initialize();
-        //hot fix for \Magento\Catalog\Model\Product\Attribute\Backend\SkuTest::testGenerateUniqueLongSku
-        /** @var $appState \Magento\Framework\App\State */
-        $appState = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get('Magento\Framework\App\State');
-        $appState->setInstallDate(date('r', strtotime('now')));
+    /**
+     * Encodes init params into a query string
+     *
+     * @return string
+     */
+    private function getInitParamsQuery()
+    {
+        return urldecode(http_build_query($this->_initParams));
     }
 
     /**
@@ -384,7 +506,7 @@ class Application
      * @param array $params
      * @return array
      */
-    private function _customizeParams($params)
+    public function _customizeParams($params)
     {
         return array_replace_recursive($this->_initParams, $params);
     }
@@ -407,8 +529,9 @@ class Application
     /**
      * Create a directory with write permissions or don't touch existing one
      *
-     * @throws \Magento\Framework\Exception
      * @param string $dir
+     * @return void
+     * @throws \Magento\Framework\Exception
      */
     protected function _ensureDirExists($dir)
     {
@@ -421,68 +544,6 @@ class Application
         }
     }
 
-    /**
-     * Remove temporary files and directories from the filesystem
-     */
-    protected function _cleanupFilesystem()
-    {
-        if (!is_dir($this->_installDir)) {
-            return;
-        }
-        $iterator = new \RecursiveIteratorIterator(
-            new \RecursiveDirectoryIterator($this->_installDir, \FilesystemIterator::SKIP_DOTS),
-            \RecursiveIteratorIterator::CHILD_FIRST
-        );
-        foreach ($iterator as $path) {
-            $path->isFile() ? unlink($path->getPathname()) : rmdir($path->getPathname());
-        }
-        rmdir($this->_installDir);
-    }
-
-    /**
-     * Creates predefined admin user to be used by tests, where admin session is required
-     *
-     * @param string $adminUserName
-     * @param string $adminPassword
-     * @param string $adminRoleName
-     */
-    protected function _createAdminUser($adminUserName, $adminPassword, $adminRoleName)
-    {
-        /** @var $user \Magento\User\Model\User */
-        $user = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create('Magento\User\Model\User');
-        $user->setData(
-            array(
-                'firstname' => 'firstname',
-                'lastname' => 'lastname',
-                'email' => 'admin@example.com',
-                'username' => $adminUserName,
-                'password' => $adminPassword,
-                'is_active' => 1
-            )
-        );
-        $user->save();
-
-        /** @var $roleAdmin \Magento\Authorization\Model\Role */
-        $roleAdmin = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()
-            ->create('Magento\Authorization\Model\Role');
-        $roleAdmin->load($adminRoleName, 'role_name');
-
-        /** @var $roleUser \Magento\Authorization\Model\Role */
-        $roleUser = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()
-            ->create('Magento\Authorization\Model\Role');
-        $roleUser->setData(
-            array(
-                'parent_id' => $roleAdmin->getId(),
-                'tree_level' => $roleAdmin->getTreeLevel() + 1,
-                'role_type' => \Magento\Authorization\Model\Acl\Role\User::ROLE_TYPE,
-                'user_id' => $user->getId(),
-                'user_type' => UserContextInterface::USER_TYPE_ADMIN,
-                'role_name' => $user->getFirstname()
-            )
-        );
-        $roleUser->save();
-    }
-
     /**
      * Ge current application area
      *
@@ -496,7 +557,8 @@ class Application
     /**
      * Load application area
      *
-     * @param $areaCode
+     * @param string $areaCode
+     * @return void
      */
     public function loadArea($areaCode)
     {
@@ -517,4 +579,29 @@ class Application
             \Magento\TestFramework\Helper\Bootstrap::getInstance()->loadArea($areaCode);
         }
     }
+
+    /**
+     * Gets customized directory paths
+     *
+     * @return array
+     */
+    protected function getCustomDirs()
+    {
+        $path = DirectoryList::PATH;
+        $var = "{$this->_tmpDir}/var";
+        $customDirs = array(
+            DirectoryList::CONFIG => array($path => "{$this->_tmpDir}/etc"),
+            DirectoryList::VAR_DIR => array($path => $var),
+            DirectoryList::MEDIA => array($path => "{$this->_tmpDir}/media"),
+            DirectoryList::STATIC_VIEW => array($path => "{$this->_tmpDir}/pub_static"),
+            DirectoryList::GENERATION => array($path => "{$var}/generation"),
+            DirectoryList::CACHE => array($path => "{$var}/cache"),
+            DirectoryList::LOG => array($path => "{$var}/log"),
+            DirectoryList::THEMES => array($path => BP . '/app/design'),
+            DirectoryList::SESSION => array($path => "{$var}/session"),
+            DirectoryList::TMP => array($path => "{$var}/tmp"),
+            DirectoryList::UPLOAD => array($path => "{$var}/upload"),
+        );
+        return $customDirs;
+    }
 }
diff --git a/dev/tests/integration/framework/Magento/TestFramework/Bootstrap.php b/dev/tests/integration/framework/Magento/TestFramework/Bootstrap.php
index da44770f85f..19f09f15d99 100644
--- a/dev/tests/integration/framework/Magento/TestFramework/Bootstrap.php
+++ b/dev/tests/integration/framework/Magento/TestFramework/Bootstrap.php
@@ -29,12 +29,15 @@ namespace Magento\TestFramework;
 
 class Bootstrap
 {
-    /**
+    /**#@+
      * Predefined admin user credentials
      */
     const ADMIN_NAME = 'user';
-
     const ADMIN_PASSWORD = 'password1';
+    const ADMIN_EMAIL = 'admin@example.com';
+    const ADMIN_FIRSTNAME = 'firstname';
+    const ADMIN_LASTNAME = 'lastname';
+    /**#@- */
 
     /**
      * Predefined admin user role name
@@ -46,16 +49,6 @@ class Bootstrap
      */
     private $_settings;
 
-    /**
-     * @var string
-     */
-    private $_dbVendorName;
-
-    /**
-     * @var \Magento\Framework\Simplexml\Element
-     */
-    private $dbConfig;
-
     /**
      * @var \Magento\TestFramework\Application
      */
@@ -82,21 +75,21 @@ class Bootstrap
     private $_shell;
 
     /**
-     * Temporary directory to be used to host the application installation sandbox
-     *
-     * @var string
+     * @var \Magento\TestFramework\Bootstrap\MemoryFactory
      */
-    private $_tmpDir;
+    private $memoryFactory;
 
     /**
      * Constructor
      *
-     * @param \Magento\TestFramework\Bootstrap\Settings $settings,
-     * @param \Magento\TestFramework\Bootstrap\Environment $envBootstrap,
-     * @param \Magento\TestFramework\Bootstrap\DocBlock $docBlockBootstrap,
+     * @param \Magento\TestFramework\Bootstrap\Settings $settings
+     * @param \Magento\TestFramework\Bootstrap\Environment $envBootstrap
+     * @param \Magento\TestFramework\Bootstrap\DocBlock $docBlockBootstrap
      * @param \Magento\TestFramework\Bootstrap\Profiler $profilerBootstrap
      * @param \Magento\Framework\Shell $shell
-     * @param string $tmpDir
+     * @param Application $application
+     * @param Bootstrap\MemoryFactory $memoryFactory
+     * @internal param string $tmpDir
      */
     public function __construct(
         \Magento\TestFramework\Bootstrap\Settings $settings,
@@ -104,55 +97,28 @@ class Bootstrap
         \Magento\TestFramework\Bootstrap\DocBlock $docBlockBootstrap,
         \Magento\TestFramework\Bootstrap\Profiler $profilerBootstrap,
         \Magento\Framework\Shell $shell,
-        $tmpDir
+        \Magento\TestFramework\Application $application,
+        \Magento\TestFramework\Bootstrap\MemoryFactory $memoryFactory
     ) {
         $this->_settings = $settings;
         $this->_envBootstrap = $envBootstrap;
         $this->_docBlockBootstrap = $docBlockBootstrap;
         $this->_profilerBootstrap = $profilerBootstrap;
         $this->_shell = $shell;
-        $this->_tmpDir = $tmpDir;
-        $this->_application = $this->_createApplication(
-            array(
-                $this->_settings->getAsConfigFile('TESTS_LOCAL_CONFIG_FILE'),
-                $this->_settings->getAsConfigFile('TESTS_LOCAL_CONFIG_EXTRA_FILE')
-            ),
-            $this->_settings->get('TESTS_GLOBAL_CONFIG_DIR'),
-            $this->_settings->getAsMatchingPaths('TESTS_MODULE_CONFIG_FILES'),
-            $this->_settings->get('TESTS_MAGENTO_MODE')
-        );
+        $this->_application = $application;
+        $this->memoryFactory = $memoryFactory;
     }
 
     /**
      * Retrieve the application instance
      *
-     * @return \Magento\TestFramework\Application
+     * @return Application
      */
     public function getApplication()
     {
         return $this->_application;
     }
 
-    /**
-     * Retrieve the database vendor name
-     *
-     * @return string
-     */
-    public function getDbVendorName()
-    {
-        return $this->_dbVendorName;
-    }
-
-    /**
-     * Retrieve the database configuration
-     *
-     * @return \Magento\Framework\Simplexml\Element
-     */
-    public function getDbConfig()
-    {
-        return $this->dbConfig;
-    }
-
     /**
      * Perform bootstrap actions required to completely setup the testing environment
      */
@@ -166,13 +132,13 @@ class Bootstrap
             $this->_profilerBootstrap->registerFileProfiler($profilerOutputFile);
         }
 
-        $profilerOutputFile = $this->_settings->getAsFile('TESTS_BAMBOO_PROFILER_FILE');
-        $profilerMetricsFile = $this->_settings->getAsFile('TESTS_BAMBOO_PROFILER_METRICS_FILE');
-        if ($profilerOutputFile && $profilerMetricsFile) {
-            $this->_profilerBootstrap->registerBambooProfiler($profilerOutputFile, $profilerMetricsFile);
+        $profilerBambooOutputFile = $this->_settings->getAsFile('TESTS_BAMBOO_PROFILER_FILE');
+        $profilerBambooMetricsFile = $this->_settings->getAsFile('TESTS_BAMBOO_PROFILER_METRICS_FILE');
+        if ($profilerBambooOutputFile && $profilerBambooMetricsFile) {
+            $this->_profilerBootstrap->registerBambooProfiler($profilerBambooOutputFile, $profilerBambooMetricsFile);
         }
 
-        $memoryBootstrap = $this->_createMemoryBootstrap(
+        $memoryBootstrap = $this->memoryFactory->create(
             $this->_settings->get('TESTS_MEM_USAGE_LIMIT', 0),
             $this->_settings->get('TESTS_MEM_LEAK_LIMIT', 0)
         );
@@ -180,122 +146,5 @@ class Bootstrap
         $memoryBootstrap->activateLimitValidation();
 
         $this->_docBlockBootstrap->registerAnnotations($this->_application);
-
-        if ($this->_settings->getAsBoolean('TESTS_CLEANUP')) {
-            $this->_application->cleanup();
-        }
-        if ($this->_application->isInstalled()) {
-            $this->_application->initialize();
-        } else {
-            $this->_application->install(self::ADMIN_NAME, self::ADMIN_PASSWORD, self::ADMIN_ROLE_NAME);
-        }
-    }
-
-    /**
-     * Create and return new memory bootstrap instance
-     *
-     * @param int $memUsageLimit
-     * @param int $memLeakLimit
-     * @return \Magento\TestFramework\Bootstrap\Memory
-     */
-    protected function _createMemoryBootstrap($memUsageLimit, $memLeakLimit)
-    {
-        return new \Magento\TestFramework\Bootstrap\Memory(
-            new \Magento\TestFramework\MemoryLimit(
-                $memUsageLimit,
-                $memLeakLimit,
-                new \Magento\TestFramework\Helper\Memory($this->_shell)
-            )
-        );
-    }
-
-    /**
-     * Create and return new application instance
-     *
-     * @param array $localConfigFiles
-     * @param string $globalConfigDir
-     * @param array $moduleConfigFiles
-     * @param string $appMode
-     * @return \Magento\TestFramework\Application
-     */
-    protected function _createApplication(
-        array $localConfigFiles,
-        $globalConfigDir,
-        array $moduleConfigFiles,
-        $appMode
-    ) {
-        $localConfigXml = $this->_loadConfigFiles($localConfigFiles);
-        $this->dbConfig = $localConfigXml->connection;
-        $this->_dbVendorName = $this->_determineDbVendorName($this->dbConfig);
-        $sandboxUniqueId = $this->_calcConfigFilesHash($localConfigFiles);
-        $installDir = "{$this->_tmpDir}/sandbox-{$this->_dbVendorName}-{$sandboxUniqueId}";
-        $dbClass = 'Magento\TestFramework\Db\\' . ucfirst($this->_dbVendorName);
-        /** @var $dbInstance \Magento\TestFramework\Db\AbstractDb */
-        $dbInstance = new $dbClass(
-            (string)$this->dbConfig->host,
-            (string)$this->dbConfig->username,
-            (string)$this->dbConfig->password,
-            (string)$this->dbConfig->dbName,
-            $this->_tmpDir,
-            $this->_shell
-        );
-        return new \Magento\TestFramework\Application(
-            $dbInstance,
-            $installDir,
-            $localConfigXml,
-            $globalConfigDir,
-            $moduleConfigFiles,
-            $appMode
-        );
-    }
-
-    /**
-     * Calculate and return hash of config files' contents
-     *
-     * @param array $configFiles
-     * @return string
-     */
-    protected function _calcConfigFilesHash($configFiles)
-    {
-        $result = array();
-        foreach ($configFiles as $configFile) {
-            $result[] = sha1_file($configFile);
-        }
-        $result = md5(implode('_', $result));
-        return $result;
-    }
-
-    /**
-     * @param array $configFiles
-     * @return \Magento\Framework\Simplexml\Element
-     */
-    protected function _loadConfigFiles(array $configFiles)
-    {
-        /** @var $result \Magento\Framework\Simplexml\Element */
-        $result = simplexml_load_string('<config/>', 'Magento\Framework\Simplexml\Element');
-        foreach ($configFiles as $configFile) {
-            /** @var $configXml \Magento\Framework\Simplexml\Element */
-            $configXml = simplexml_load_file($configFile, 'Magento\Framework\Simplexml\Element');
-            $result->extend($configXml);
-        }
-        return $result;
-    }
-
-    /**
-     * Retrieve database vendor name from the database connection XML configuration
-     *
-     * @param \SimpleXMLElement $dbConfig
-     * @return string
-     * @throws \Magento\Framework\Exception
-     * @SuppressWarnings(PHPMD.UnusedFormalParameter)
-     */
-    protected function _determineDbVendorName(\SimpleXMLElement $dbConfig)
-    {
-        $dbVendorAlias = 'mysql4';
-        $dbVendorMap = array('mysql4' => 'mysql');
-        if (!array_key_exists($dbVendorAlias, $dbVendorMap)) {
-            throw new \Magento\Framework\Exception("Database vendor '{$dbVendorAlias}' is not supported.");
-        }
-        return $dbVendorMap[$dbVendorAlias];
     }
 }
diff --git a/dev/tests/integration/framework/Magento/TestFramework/Bootstrap/MemoryFactory.php b/dev/tests/integration/framework/Magento/TestFramework/Bootstrap/MemoryFactory.php
new file mode 100644
index 00000000000..cd3cc6c6c2d
--- /dev/null
+++ b/dev/tests/integration/framework/Magento/TestFramework/Bootstrap/MemoryFactory.php
@@ -0,0 +1,58 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\TestFramework\Bootstrap;
+
+class MemoryFactory
+{
+
+    /**
+     * @var \Magento\Framework\Shell
+     */
+    private $shell;
+
+    /**
+     * @param \Magento\Framework\Shell $shell
+     */
+    public function __construct(\Magento\Framework\Shell $shell)
+    {
+        $this->shell = $shell;
+    }
+
+    /**
+     * @param string $memUsageLimit
+     * @param string $memLeakLimit
+     * @return Memory
+     */
+    public function create($memUsageLimit, $memLeakLimit)
+    {
+        return new \Magento\TestFramework\Bootstrap\Memory(
+            new \Magento\TestFramework\MemoryLimit(
+                $memUsageLimit,
+                $memLeakLimit,
+                new \Magento\TestFramework\Helper\Memory($this->shell)
+            )
+        );
+    }
+}
diff --git a/dev/tests/integration/framework/Magento/TestFramework/Db/AbstractDb.php b/dev/tests/integration/framework/Magento/TestFramework/Db/AbstractDb.php
index 0b4c8fadc3b..9a0c04e5117 100644
--- a/dev/tests/integration/framework/Magento/TestFramework/Db/AbstractDb.php
+++ b/dev/tests/integration/framework/Magento/TestFramework/Db/AbstractDb.php
@@ -78,13 +78,9 @@ abstract class AbstractDb
      * @param string $schema
      * @param string $varPath
      * @param \Magento\Framework\Shell $shell
-     * @throws \Magento\Framework\Exception
      */
     public function __construct($host, $user, $password, $schema, $varPath, \Magento\Framework\Shell $shell)
     {
-        if (!is_dir($varPath) || !is_writable($varPath)) {
-            throw new \Magento\Framework\Exception("The specified '{$varPath}' is not a directory or not writable.");
-        }
         $this->_host = $host;
         $this->_user = $user;
         $this->_password = $password;
@@ -122,6 +118,43 @@ abstract class AbstractDb
      */
     abstract public function restoreFromDbDump();
 
+    /**
+     * @return string
+     */
+    abstract public function getVendorName();
+
+    /**
+     * @return string
+     */
+    public function getSchema()
+    {
+        return $this->_schema;
+    }
+
+    /**
+     * @return string
+     */
+    public function getHost()
+    {
+        return $this->_host;
+    }
+
+    /**
+     * @return string
+     */
+    public function getUser()
+    {
+        return $this->_user;
+    }
+
+    /**
+     * @return string
+     */
+    public function getPassword()
+    {
+        return $this->_password;
+    }
+
     /**
      * Create file with sql script content.
      * Utility method that is used in children classes
@@ -134,4 +167,14 @@ abstract class AbstractDb
     {
         return file_put_contents($file, $content);
     }
+
+    /**
+     * @throws \LogicException
+     */
+    protected function assertVarPathWritable()
+    {
+        if (!is_dir($this->_varPath) || !is_writable($this->_varPath)) {
+            throw new \LogicException("The specified '{$this->_varPath}' is not a directory or not writable.");
+        }
+    }
 }
diff --git a/dev/tests/integration/framework/Magento/TestFramework/Db/Mysql.php b/dev/tests/integration/framework/Magento/TestFramework/Db/Mysql.php
index ec614b438fc..d7d6b1859e7 100644
--- a/dev/tests/integration/framework/Magento/TestFramework/Db/Mysql.php
+++ b/dev/tests/integration/framework/Magento/TestFramework/Db/Mysql.php
@@ -35,20 +35,27 @@ class Mysql extends \Magento\TestFramework\Db\AbstractDb
     const DEFAULTS_EXTRA_FILE_NAME = 'defaults_extra.cnf';
 
     /**
-     * Set initial essential parameters
+     * MySQL DB dump file
      *
-     * @param string $host
-     * @param string $user
-     * @param string $password
-     * @param string $schema
-     * @param string $varPath
-     * @param \Magento\Framework\Shell $shell
-     * @throws \Magento\Framework\Exception
+     * @var string
+     */
+    private $_dbDumpFile;
+
+    /**
+     * A file that contains credentials to database, to obscure them from logs
+     *
+     * @var string
+     */
+    private $_defaultsExtraFile;
+
+    /**
+     * {@inheritdoc}
      */
     public function __construct($host, $user, $password, $schema, $varPath, \Magento\Framework\Shell $shell)
     {
         parent::__construct($host, $user, $password, $schema, $varPath, $shell);
-        $this->_createDefaultsExtra();
+        $this->_dbDumpFile = $this->_varPath . '/setup_dump_' . $this->_schema . '.sql';
+        $this->_defaultsExtraFile = rtrim($this->_varPath, '\\/') . '/' . self::DEFAULTS_EXTRA_FILE_NAME;
     }
 
     /**
@@ -56,10 +63,11 @@ class Mysql extends \Magento\TestFramework\Db\AbstractDb
      */
     public function cleanup()
     {
+        $this->ensureDefaultsExtraFile();
         $this->_shell->execute(
             'mysql --defaults-extra-file=%s --host=%s %s -e %s',
             array(
-                $this->_getDefaultsExtraFileName(),
+                $this->_defaultsExtraFile,
                 $this->_host,
                 $this->_schema,
                 "DROP DATABASE `{$this->_schema}`; CREATE DATABASE `{$this->_schema}`"
@@ -74,7 +82,7 @@ class Mysql extends \Magento\TestFramework\Db\AbstractDb
      */
     protected function getSetupDbDumpFilename()
     {
-        return $this->_varPath . '/setup_dump_' . $this->_schema . '.sql';
+        return $this->_dbDumpFile;
     }
 
     /**
@@ -92,40 +100,49 @@ class Mysql extends \Magento\TestFramework\Db\AbstractDb
      */
     public function storeDbDump()
     {
+        $this->ensureDefaultsExtraFile();
         $this->_shell->execute(
             'mysqldump --defaults-extra-file=%s --host=%s  %s > %s',
-            array($this->_getDefaultsExtraFileName(), $this->_host, $this->_schema, $this->getSetupDbDumpFilename())
+            array($this->_defaultsExtraFile, $this->_host, $this->_schema, $this->getSetupDbDumpFilename())
         );
     }
 
     /**
-     * Restore db from setup db dump
+     * {@inheritdoc}
+     * @throws \LogicException
      */
     public function restoreFromDbDump()
     {
+        $this->ensureDefaultsExtraFile();
+        if (!$this->isDbDumpExists()) {
+            throw new \LogicException("DB dump file does not exist: " . $this->getSetupDbDumpFilename());
+        }
         $this->_shell->execute(
             'mysql --defaults-extra-file=%s --host=%s %s < %s',
-            array($this->_getDefaultsExtraFileName(), $this->_host, $this->_schema, $this->getSetupDbDumpFilename())
+            array($this->_defaultsExtraFile, $this->_host, $this->_schema, $this->getSetupDbDumpFilename())
         );
     }
 
     /**
-     * Get defaults extra file name
-     *
-     * @return string
+     * {@inheritdoc}
      */
-    protected function _getDefaultsExtraFileName()
+    public function getVendorName()
     {
-        return rtrim($this->_varPath, '\\/') . '/' . self::DEFAULTS_EXTRA_FILE_NAME;
+        return 'mysql';
     }
 
     /**
      * Create defaults extra file
+     *
+     * @return void
      */
-    protected function _createDefaultsExtra()
+    private function ensureDefaultsExtraFile()
     {
-        $extraConfig = array('[client]', 'user=' . $this->_user, 'password="' . $this->_password . '"');
-        file_put_contents($this->_getDefaultsExtraFileName(), implode(PHP_EOL, $extraConfig));
-        chmod($this->_getDefaultsExtraFileName(), 0644);
+        if (!file_exists($this->_defaultsExtraFile)) {
+            $this->assertVarPathWritable();
+            $extraConfig = array('[client]', 'user=' . $this->_user, 'password="' . $this->_password . '"');
+            file_put_contents($this->_defaultsExtraFile, implode(PHP_EOL, $extraConfig));
+            chmod($this->_defaultsExtraFile, 0644);
+        }
     }
 }
diff --git a/dev/tests/integration/framework/Magento/TestFramework/Helper/Bootstrap.php b/dev/tests/integration/framework/Magento/TestFramework/Helper/Bootstrap.php
index a50dc985775..d17e8ffd558 100644
--- a/dev/tests/integration/framework/Magento/TestFramework/Helper/Bootstrap.php
+++ b/dev/tests/integration/framework/Magento/TestFramework/Helper/Bootstrap.php
@@ -100,9 +100,9 @@ class Bootstrap
      *
      * @return string
      */
-    public function getAppInstallDir()
+    public function getAppTempDir()
     {
-        return $this->_bootstrap->getApplication()->getInstallDir();
+        return $this->_bootstrap->getApplication()->getTempDir();
     }
 
     /**
@@ -115,16 +115,6 @@ class Bootstrap
         return $this->_bootstrap->getApplication()->getInitParams();
     }
 
-    /**
-     * Retrieve the database vendor name used by the bootstrap
-     *
-     * @return string
-     */
-    public function getDbVendorName()
-    {
-        return $this->_bootstrap->getDbVendorName();
-    }
-
     /**
      * Reinitialize the application instance optionally passing parameters to be overridden.
      * Intended to be used for the tests isolation purposes.
diff --git a/dev/tests/integration/framework/Magento/TestFramework/Indexer/TestCase.php b/dev/tests/integration/framework/Magento/TestFramework/Indexer/TestCase.php
index 0ef23f8262c..57bc012a4a1 100644
--- a/dev/tests/integration/framework/Magento/TestFramework/Indexer/TestCase.php
+++ b/dev/tests/integration/framework/Magento/TestFramework/Indexer/TestCase.php
@@ -25,44 +25,15 @@ namespace Magento\TestFramework\Indexer;
 
 class TestCase extends \PHPUnit_Framework_TestCase
 {
-    public static function setUpBeforeClass()
-    {
-        self::_storeDbState();
-        parent::setUpBeforeClass();
-    }
-
     public static function tearDownAfterClass()
     {
-        self::_getDbInstance()->cleanup();
-        self::_restoreDbState();
-        parent::tearDownAfterClass();
-    }
-
-    /**
-     * Store current database state to db dump
-     */
-    protected static function _storeDbState()
-    {
-        self::_getDbInstance()->storeDbDump();
-    }
-
-    /**
-     * Restore current database state to db dump
-     */
-    protected static function _restoreDbState()
-    {
-        self::_getDbInstance()->restoreFromDbDump();
-    }
-
-    /**
-     * Get Database connection instance
-     *
-     * @return \Magento\TestFramework\Db\AbstractDb
-     */
-    protected static function _getDbInstance()
-    {
-        return \Magento\TestFramework\Helper\Bootstrap::getInstance()->getBootstrap()
+        $db = \Magento\TestFramework\Helper\Bootstrap::getInstance()->getBootstrap()
             ->getApplication()
             ->getDbInstance();
+        if (!$db->isDbDumpExists()) {
+            throw new \LogicException('DB dump does not exist.');
+        }
+        $db->cleanup();
+        $db->restoreFromDbDump();
     }
 }
diff --git a/dev/tests/integration/framework/Magento/TestFramework/ObjectManagerFactory.php b/dev/tests/integration/framework/Magento/TestFramework/ObjectManagerFactory.php
index e0ab8a1f019..ee2e73c0062 100644
--- a/dev/tests/integration/framework/Magento/TestFramework/ObjectManagerFactory.php
+++ b/dev/tests/integration/framework/Magento/TestFramework/ObjectManagerFactory.php
@@ -141,7 +141,9 @@ class ObjectManagerFactory extends \Magento\Framework\App\ObjectManagerFactory
                     'Magento\Framework\Interception\PluginList' => 'Magento\TestFramework\Interception\PluginList',
                     'Magento\Framework\Interception\ObjectManager\Config' =>
                         'Magento\TestFramework\ObjectManager\Config',
-                    'Magento\Framework\View\LayoutInterface' => 'Magento\TestFramework\View\Layout'
+                    'Magento\Framework\View\LayoutInterface' => 'Magento\TestFramework\View\Layout',
+                    'Magento\Framework\Model\Resource\Type\Db\Pdo\Mysql' =>
+                        'Magento\TestFramework\Db\ConnectionAdapter',
                 ]
             );
         }
diff --git a/dev/tests/integration/framework/bootstrap.php b/dev/tests/integration/framework/bootstrap.php
index 120edeb1028..45a5ff87643 100644
--- a/dev/tests/integration/framework/bootstrap.php
+++ b/dev/tests/integration/framework/bootstrap.php
@@ -22,6 +22,8 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 require_once __DIR__ . '/../../../../app/bootstrap.php';
+$includePath = new \Magento\Framework\Autoload\IncludePath();
+spl_autoload_register([$includePath, 'load']);
 require_once __DIR__ . '/../../static/framework/Magento/TestFramework/Utility/Classes.php';
 require_once __DIR__ . '/../../static/framework/Magento/TestFramework/Utility/AggregateInvoker.php';
 
@@ -29,7 +31,7 @@ $testsBaseDir = dirname(__DIR__);
 $testsTmpDir = "{$testsBaseDir}/tmp";
 $magentoBaseDir = realpath("{$testsBaseDir}/../../../");
 
-(new \Magento\Framework\Autoload\IncludePath())->addIncludePath(
+$includePath->addIncludePath(
     array("{$testsBaseDir}/framework", "{$testsBaseDir}/testsuite")
 );
 
@@ -51,21 +53,52 @@ function tool_autoloader($className)
 
 spl_autoload_register('tool_autoloader');
 
-/* Bootstrap the application */
-$invariantSettings = array('TESTS_LOCAL_CONFIG_EXTRA_FILE' => 'etc/integration-tests-config.xml');
-$bootstrap = new \Magento\TestFramework\Bootstrap(
-    new \Magento\TestFramework\Bootstrap\Settings($testsBaseDir, $invariantSettings + get_defined_constants()),
-    new \Magento\TestFramework\Bootstrap\Environment(),
-    new \Magento\TestFramework\Bootstrap\DocBlock("{$testsBaseDir}/testsuite"),
-    new \Magento\TestFramework\Bootstrap\Profiler(new \Magento\Framework\Profiler\Driver\Standard()),
-    new \Magento\Framework\Shell(new \Magento\Framework\Shell\CommandRenderer()),
-    $testsTmpDir
-);
-$bootstrap->runBootstrap();
+try {
+    /* Bootstrap the application */
+    $settings = new \Magento\TestFramework\Bootstrap\Settings($testsBaseDir, get_defined_constants());
 
-\Magento\TestFramework\Helper\Bootstrap::setInstance(new \Magento\TestFramework\Helper\Bootstrap($bootstrap));
+    if ($settings->get('TESTS_EXTRA_VERBOSE_LOG')) {
+        $logWriter = new \Zend_Log_Writer_Stream('php://output');
+        $logWriter->setFormatter(new \Zend_Log_Formatter_Simple('%message%' . PHP_EOL));
+        $shell = new \Magento\Framework\Shell(new \Magento\Framework\Shell\CommandRenderer, new \Zend_Log($logWriter));
+    } else {
+        $shell = new \Magento\Framework\Shell(new \Magento\Framework\Shell\CommandRenderer);
+    }
 
-Magento\TestFramework\Utility\Files::setInstance(new Magento\TestFramework\Utility\Files($magentoBaseDir));
+    $application = \Magento\TestFramework\Application::getInstance(
+        $settings->getAsConfigFile('TESTS_INSTALL_CONFIG_FILE'),
+        $settings->get('TESTS_GLOBAL_CONFIG_DIR'),
+        $settings->getAsMatchingPaths('TESTS_MODULE_CONFIG_FILES'),
+        $settings->get('TESTS_MAGENTO_MODE'),
+        $testsTmpDir,
+        $shell
+    );
 
-/* Unset declared global variables to release the PHPUnit from maintaining their values between tests */
-unset($bootstrap);
+    $bootstrap = new \Magento\TestFramework\Bootstrap(
+        $settings,
+        new \Magento\TestFramework\Bootstrap\Environment(),
+        new \Magento\TestFramework\Bootstrap\DocBlock("{$testsBaseDir}/testsuite"),
+        new \Magento\TestFramework\Bootstrap\Profiler(new \Magento\Framework\Profiler\Driver\Standard()),
+        $shell,
+        $application,
+        new \Magento\TestFramework\Bootstrap\MemoryFactory($shell)
+    );
+    $bootstrap->runBootstrap();
+    if ($settings->getAsBoolean('TESTS_CLEANUP')) {
+        $application->cleanup();
+    }
+    if (!$application->isInstalled()) {
+        $application->install();
+    }
+    $application->initialize();
+
+    \Magento\TestFramework\Helper\Bootstrap::setInstance(new \Magento\TestFramework\Helper\Bootstrap($bootstrap));
+
+    \Magento\TestFramework\Utility\Files::setInstance(new Magento\TestFramework\Utility\Files($magentoBaseDir));
+
+    /* Unset declared global variables to release the PHPUnit from maintaining their values between tests */
+    unset($testsBaseDir, $testsTmpDir, $magentoBaseDir, $logWriter, $settings, $shell, $application, $bootstrap);
+} catch (\Exception $e) {
+    echo $e . PHP_EOL;
+    exit(1);
+}
diff --git a/dev/tests/integration/framework/tests/unit/framework/bootstrap.php b/dev/tests/integration/framework/tests/unit/framework/bootstrap.php
index fcffb0f361e..5c7d9ac968d 100644
--- a/dev/tests/integration/framework/tests/unit/framework/bootstrap.php
+++ b/dev/tests/integration/framework/tests/unit/framework/bootstrap.php
@@ -24,4 +24,6 @@
 
 $rootDir = realpath(__DIR__ . '/../../../../../../../');
 require_once $rootDir . '/app/bootstrap.php';
-(new \Magento\Framework\Autoload\IncludePath())->addIncludePath($rootDir . '/dev/tests/integration/framework');
+$includePath = new \Magento\Framework\Autoload\IncludePath();
+spl_autoload_register([$includePath, 'load']);
+$includePath->addIncludePath($rootDir . '/dev/tests/integration/framework');
diff --git a/dev/tests/integration/framework/tests/unit/testsuite/Magento/Test/ApplicationTest.php b/dev/tests/integration/framework/tests/unit/testsuite/Magento/Test/ApplicationTest.php
index 025835bff63..1a7c568e112 100644
--- a/dev/tests/integration/framework/tests/unit/testsuite/Magento/Test/ApplicationTest.php
+++ b/dev/tests/integration/framework/tests/unit/testsuite/Magento/Test/ApplicationTest.php
@@ -29,37 +29,26 @@ use Magento\Framework\App\State;
 class ApplicationTest extends \PHPUnit_Framework_TestCase
 {
     /**
-     * @covers \Magento\TestFramework\Application::getInstallDir()
+     * @covers \Magento\TestFramework\getTemporaryDir::getTemoraryDir()
      * @covers \Magento\TestFramework\Application::getDbInstance()
      * @covers \Magento\TestFramework\Application::getInitParams()
      */
     public function testConstructor()
     {
-        $dbInstance = $this->getMockForAbstractClass('Magento\TestFramework\Db\AbstractDb', array(), '', false);
-        $installDir = '/install/dir';
+        $shell = $this->getMock('\Magento\Framework\Shell', [], [], '', false);
+        $tempDir = '/temp/dir';
         $appMode = \Magento\Framework\App\State::MODE_DEVELOPER;
-        $directoryList = new \Magento\Framework\App\Filesystem\DirectoryList(BP);
-        $driverPool = new \Magento\Framework\Filesystem\DriverPool;
-        $filesystem = new \Magento\Framework\Filesystem(
-            $directoryList,
-            new \Magento\Framework\Filesystem\Directory\ReadFactory($driverPool),
-            new \Magento\Framework\Filesystem\Directory\WriteFactory($driverPool),
-            new \Magento\Framework\Filesystem\File\ReadFactory($driverPool),
-            new \Magento\Framework\Filesystem\File\WriteFactory($driverPool)
-        );
 
         $object = new \Magento\TestFramework\Application(
-            $dbInstance,
-            $installDir,
-            new \Magento\Framework\Simplexml\Element('<data/>'),
+            $shell,
+            $tempDir,
+            'local.xml',
             '',
             array(),
-            $appMode,
-            $filesystem
+            $appMode
         );
 
-        $this->assertSame($dbInstance, $object->getDbInstance(), 'Db instance is not set in Application');
-        $this->assertEquals($installDir, $object->getInstallDir(), 'Install directory is not set in Application');
+        $this->assertEquals($tempDir, $object->getTempDir(), 'Temp directory is not set in Application');
 
         $initParams = $object->getInitParams();
         $this->assertInternalType('array', $initParams, 'Wrong initialization parameters type');
diff --git a/dev/tests/integration/framework/tests/unit/testsuite/Magento/Test/BootstrapTest.php b/dev/tests/integration/framework/tests/unit/testsuite/Magento/Test/BootstrapTest.php
index 5f99abeb99a..c1990026f30 100644
--- a/dev/tests/integration/framework/tests/unit/testsuite/Magento/Test/BootstrapTest.php
+++ b/dev/tests/integration/framework/tests/unit/testsuite/Magento/Test/BootstrapTest.php
@@ -30,7 +30,7 @@ namespace Magento\Test;
 class BootstrapTest extends \PHPUnit_Framework_TestCase
 {
     /**
-     * @var \Magento\TestFramework\Bootstrap|PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\TestFramework\Bootstrap|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $_object;
 
@@ -40,40 +40,44 @@ class BootstrapTest extends \PHPUnit_Framework_TestCase
      * @var array
      */
     protected $_requiredSettings = array(
-        'TESTS_LOCAL_CONFIG_FILE' => 'etc/local-mysql.xml',
-        'TESTS_LOCAL_CONFIG_EXTRA_FILE' => 'etc/integration-tests-config.xml'
+        'TESTS_INSTALL_CONFIG_FILE' => 'etc/install-config-mysql.php',
     );
 
     /**
-     * @var \Magento\TestFramework\Bootstrap\Settings
+     * @var \Magento\TestFramework\Bootstrap\Settings|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $_settings;
 
     /**
-     * @var \Magento\TestFramework\Bootstrap\Environment|PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\TestFramework\Bootstrap\Environment|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $_envBootstrap;
 
     /**
-     * @var \Magento\TestFramework\Bootstrap\DocBlock|PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\TestFramework\Bootstrap\DocBlock|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $_docBlockBootstrap;
 
     /**
-     * @var \Magento\TestFramework\Bootstrap\Profiler|PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\TestFramework\Bootstrap\Profiler|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $_profilerBootstrap;
 
     /**
-     * @var \Magento\TestFramework\Bootstrap\Memory
+     * @var \Magento\TestFramework\Bootstrap\MemoryFactory|\PHPUnit_Framework_MockObject_MockObject
      */
-    protected $_memoryBootstrap;
+    protected $memoryFactory;
 
     /**
-     * @var \Magento\Framework\Shell|PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\Shell|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $_shell;
 
+    /**
+     * @var \Magento\TestFramework\Application|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $application;
+
     /**
      * @var string
      */
@@ -82,10 +86,7 @@ class BootstrapTest extends \PHPUnit_Framework_TestCase
     protected function setUp()
     {
         $this->_integrationTestsDir = realpath(__DIR__ . '/../../../../../../');
-        $this->_settings = new \Magento\TestFramework\Bootstrap\Settings(
-            $this->_integrationTestsDir,
-            $this->_requiredSettings
-        );
+        $this->_settings = $this->getMock('\Magento\TestFramework\Bootstrap\Settings', [], [], '', false);
         $this->_envBootstrap = $this->getMock(
             'Magento\TestFramework\Bootstrap\Environment',
             array('emulateHttpRequest', 'emulateSession')
@@ -101,21 +102,17 @@ class BootstrapTest extends \PHPUnit_Framework_TestCase
             array('registerFileProfiler', 'registerBambooProfiler'),
             array($profilerDriver)
         );
-        $this->_memoryBootstrap = $this->getMock(
-            'Magento\TestFramework\Bootstrap\Memory',
-            array('activateStatsDisplaying', 'activateLimitValidation'),
-            array(),
-            '',
-            false
-        );
         $this->_shell = $this->getMock('Magento\Framework\Shell', array('execute'), array(), '', false);
+        $this->application = $this->getMock('\Magento\TestFramework\Application', [], [], '', false);
+        $this->memoryFactory = $this->getMock('\Magento\TestFramework\Bootstrap\MemoryFactory', [], [], '', false);
         $this->_object = new \Magento\TestFramework\Bootstrap(
             $this->_settings,
             $this->_envBootstrap,
             $this->_docBlockBootstrap,
             $this->_profilerBootstrap,
             $this->_shell,
-            __DIR__
+            $this->application,
+            $this->memoryFactory
         );
     }
 
@@ -130,170 +127,89 @@ class BootstrapTest extends \PHPUnit_Framework_TestCase
         $this->_shell = null;
     }
 
-    /**
-     * @param array $fixtureSettings
-     * @return \Magento\TestFramework\Application|PHPUnit_Framework_MockObject_MockObject
-     */
-    protected function _injectApplicationMock(array $fixtureSettings = array())
-    {
-        $fixtureSettings += $this->_requiredSettings;
-        $application = $this->getMock(
-            'Magento\TestFramework\Application',
-            array('cleanup', 'isInstalled', 'initialize', 'install'),
-            array(),
-            '',
-            false
-        );
-        $settings = new \Magento\TestFramework\Bootstrap\Settings($this->_integrationTestsDir, $fixtureSettings);
-        // prevent calling the constructor because of mocking the method it invokes
-        $this->_object = $this->getMock(
-            'Magento\TestFramework\Bootstrap',
-            array('_createApplication', '_createMemoryBootstrap'),
-            array(),
-            '',
-            false
-        );
-        $this->_object->expects($this->any())->method('_createApplication')->will($this->returnValue($application));
-        // invoke the constructor explicitly
-        $this->_object->__construct(
-            $settings,
-            $this->_envBootstrap,
-            $this->_docBlockBootstrap,
-            $this->_profilerBootstrap,
-            $this->_shell,
-            __DIR__
-        );
-        $this->_object->expects(
-            $this->any()
-        )->method(
-            '_createMemoryBootstrap'
-        )->will(
-            $this->returnValue($this->_memoryBootstrap)
-        );
-        return $application;
-    }
-
     public function testGetApplication()
     {
-        $application = $this->_object->getApplication();
-        $this->assertInstanceOf('Magento\TestFramework\Application', $application);
-        $this->assertStringStartsWith(__DIR__ . '/sandbox-mysql-', $application->getInstallDir());
-        $this->assertInstanceOf('Magento\TestFramework\Db\Mysql', $application->getDbInstance());
-        $this->assertSame($application, $this->_object->getApplication());
-    }
-
-    public function testGetDbVendorName()
-    {
-        $this->assertEquals('mysql', $this->_object->getDbVendorName());
+        $this->assertSame($this->application, $this->_object->getApplication());
     }
 
-    public function testRunBootstrapEnvironment()
+    public function testRunBootstrap()
     {
-        $this->_injectApplicationMock();
-        $this->_envBootstrap->expects($this->once())->method('emulateHttpRequest')->with($this->identicalTo($_SERVER));
-        $this->_envBootstrap->expects(
-            $this->once()
-        )->method(
-            'emulateSession'
-        )->with(
-            $this->identicalTo(isset($_SESSION) ? $_SESSION : null)
+        $this->_envBootstrap->expects($this->once())
+            ->method('emulateHttpRequest')
+            ->with($this->identicalTo($_SERVER))
+        ;
+        $this->_envBootstrap->expects($this->once())
+            ->method('emulateSession')
+            ->with($this->identicalTo(isset($_SESSION) ? $_SESSION : null))
+        ;
+
+        $memUsageLimit = '100B';
+        $memLeakLimit = '60B';
+        $settingsMap = [
+            ['TESTS_MEM_USAGE_LIMIT', 0, $memUsageLimit],
+            ['TESTS_MEM_LEAK_LIMIT', 0, $memLeakLimit],
+        ];
+        $this->_settings->expects($this->any())
+            ->method('get')
+            ->will($this->returnValueMap($settingsMap));
+        $memoryBootstrap = $this->getMock(
+            'Magento\TestFramework\Bootstrap\Memory',
+            array('activateStatsDisplaying', 'activateLimitValidation'),
+            array(),
+            '',
+            false
         );
-        $this->_object->runBootstrap();
-    }
+        $memoryBootstrap->expects($this->once())->method('activateStatsDisplaying');
+        $memoryBootstrap->expects($this->once())->method('activateLimitValidation');
+        $this->memoryFactory->expects($this->once())
+            ->method('create')
+            ->with($memUsageLimit, $memLeakLimit)
+            ->will($this->returnValue($memoryBootstrap));
 
-    public function testRunBootstrapProfilerDisabled()
-    {
-        $this->_injectApplicationMock();
-        $this->_profilerBootstrap->expects($this->never())->method($this->anything());
-        $this->_object->runBootstrap();
-    }
+        $this->_docBlockBootstrap->expects($this->once())
+            ->method('registerAnnotations')
+            ->with($this->isInstanceOf('Magento\TestFramework\Application'))
+        ;
 
-    public function testRunBootstrapProfilerEnabled()
-    {
-        $baseDir = $this->_integrationTestsDir;
-        $this->_injectApplicationMock(
-            array(
-                'TESTS_PROFILER_FILE' => 'profiler.csv',
-                'TESTS_BAMBOO_PROFILER_FILE' => 'profiler_bamboo.csv',
-                'TESTS_BAMBOO_PROFILER_METRICS_FILE' => 'profiler_metrics.php'
-            )
-        );
-        $this->_profilerBootstrap->expects(
-            $this->once()
-        )->method(
-            'registerFileProfiler'
-        )->with(
-            "{$baseDir}/profiler.csv"
-        );
-        $this->_profilerBootstrap->expects(
-            $this->once()
-        )->method(
-            'registerBambooProfiler'
-        )->with(
-            "{$baseDir}/profiler_bamboo.csv",
-            "{$baseDir}/profiler_metrics.php"
-        );
-        $this->_object->runBootstrap();
-    }
+        $this->_profilerBootstrap->expects($this->never())->method($this->anything());
 
-    public function testRunBootstrapMemoryWatch()
-    {
-        $this->_injectApplicationMock(array('TESTS_MEM_USAGE_LIMIT' => 100, 'TESTS_MEM_LEAK_LIMIT' => 60));
-        $this->_object->expects(
-            $this->once()
-        )->method(
-            '_createMemoryBootstrap'
-        )->with(
-            100,
-            60
-        )->will(
-            $this->returnValue($this->_memoryBootstrap)
-        );
-        $this->_memoryBootstrap->expects($this->once())->method('activateStatsDisplaying');
-        $this->_memoryBootstrap->expects($this->once())->method('activateLimitValidation');
         $this->_object->runBootstrap();
     }
 
-    public function testRunBootstrapDocBlockAnnotations()
+    public function testRunBootstrapProfilerEnabled()
     {
-        $this->_injectApplicationMock();
-        $this->_docBlockBootstrap->expects(
-            $this->once()
-        )->method(
-            'registerAnnotations'
-        )->with(
-            $this->isInstanceOf('Magento\TestFramework\Application')
+        $memoryBootstrap = $this->getMock(
+            'Magento\TestFramework\Bootstrap\Memory',
+            array('activateStatsDisplaying', 'activateLimitValidation'),
+            array(),
+            '',
+            false
         );
-        $this->_object->runBootstrap();
-    }
-
-    public function testRunBootstrapAppCleanup()
-    {
-        $application = $this->_injectApplicationMock(array('TESTS_CLEANUP' => 'enabled'));
-        $application->expects($this->once())->method('cleanup');
-        $this->_object->runBootstrap();
-    }
-
-    public function testRunBootstrapAppInitialize()
-    {
-        $application = $this->_injectApplicationMock();
-        $application->expects($this->once())->method('isInstalled')->will($this->returnValue(true));
-        $application->expects($this->once())->method('initialize');
-        $application->expects($this->never())->method('install');
-        $application->expects($this->never())->method('cleanup');
-        $this->_object->runBootstrap();
-    }
-
-    public function testRunBootstrapAppInstall()
-    {
-        $adminUserName = \Magento\TestFramework\Bootstrap::ADMIN_NAME;
-        $adminPassword = \Magento\TestFramework\Bootstrap::ADMIN_PASSWORD;
-        $adminRoleName = \Magento\TestFramework\Bootstrap::ADMIN_ROLE_NAME;
-        $application = $this->_injectApplicationMock();
-        $application->expects($this->once())->method('isInstalled')->will($this->returnValue(false));
-        $application->expects($this->once())->method('install')->with($adminUserName, $adminPassword, $adminRoleName);
-        $application->expects($this->never())->method('initialize');
-        $application->expects($this->never())->method('cleanup');
+        $memoryBootstrap->expects($this->once())->method('activateStatsDisplaying');
+        $memoryBootstrap->expects($this->once())->method('activateLimitValidation');
+        $this->memoryFactory->expects($this->once())
+            ->method('create')
+            ->with(0, 0)
+            ->will($this->returnValue($memoryBootstrap));
+
+        $settingsMap = [
+            ['TESTS_PROFILER_FILE', '', 'profiler.csv'],
+            ['TESTS_BAMBOO_PROFILER_FILE', '', 'profiler_bamboo.csv'],
+            ['TESTS_BAMBOO_PROFILER_METRICS_FILE', '', 'profiler_metrics.php'],
+        ];
+        $this->_settings->expects($this->any())
+            ->method('getAsFile')
+            ->will($this->returnValueMap($settingsMap));
+        $this->_profilerBootstrap
+            ->expects($this->once())
+            ->method('registerFileProfiler')
+            ->with("profiler.csv")
+        ;
+        $this->_profilerBootstrap
+            ->expects($this->once())
+            ->method('registerBambooProfiler')
+            ->with("profiler_bamboo.csv", "profiler_metrics.php")
+        ;
         $this->_object->runBootstrap();
     }
 }
diff --git a/dev/tests/integration/framework/tests/unit/testsuite/Magento/Test/Helper/BootstrapTest.php b/dev/tests/integration/framework/tests/unit/testsuite/Magento/Test/Helper/BootstrapTest.php
index 9bbbc91222b..66af635ec73 100644
--- a/dev/tests/integration/framework/tests/unit/testsuite/Magento/Test/Helper/BootstrapTest.php
+++ b/dev/tests/integration/framework/tests/unit/testsuite/Magento/Test/Helper/BootstrapTest.php
@@ -63,7 +63,7 @@ class BootstrapTest extends \PHPUnit_Framework_TestCase
     {
         $this->_application = $this->getMock(
             'Magento\TestFramework\Application',
-            array('getInstallDir', 'getInitParams', 'reinitialize', 'run'),
+            array('getTempDir', 'getInitParams', 'reinitialize', 'run'),
             array(),
             '',
             false
@@ -162,10 +162,10 @@ class BootstrapTest extends \PHPUnit_Framework_TestCase
         }
     }
 
-    public function testGetAppInstallDir()
+    public function testGetAppTempDir()
     {
-        $this->_application->expects($this->once())->method('getInstallDir')->will($this->returnValue(__DIR__));
-        $this->assertEquals(__DIR__, $this->_object->getAppInstallDir());
+        $this->_application->expects($this->once())->method('getTempDir')->will($this->returnValue(__DIR__));
+        $this->assertEquals(__DIR__, $this->_object->getAppTempDir());
     }
 
     public function testGetAppInitParams()
@@ -180,12 +180,6 @@ class BootstrapTest extends \PHPUnit_Framework_TestCase
         $this->assertEquals($this->_fixtureInitParams, $this->_object->getAppInitParams());
     }
 
-    public function testGetDbVendorName()
-    {
-        $this->_bootstrap->expects($this->once())->method('getDbVendorName')->will($this->returnValue('mysql'));
-        $this->assertEquals('mysql', $this->_object->getDbVendorName());
-    }
-
     public function testReinitialize()
     {
         $this->_application->expects($this->once())->method('reinitialize')->with($this->_fixtureInitParams);
diff --git a/dev/tests/integration/phpunit.xml.dist b/dev/tests/integration/phpunit.xml.dist
index e4604cea0b1..7ea0558b0a9 100644
--- a/dev/tests/integration/phpunit.xml.dist
+++ b/dev/tests/integration/phpunit.xml.dist
@@ -57,7 +57,7 @@
         <ini name="date.timezone" value="America/Los_Angeles"/>
         <ini name="xdebug.max_nesting_level" value="200"/>
         <!-- Local XML configuration file ('.dist' extension will be added, if the specified file doesn't exist) -->
-        <const name="TESTS_LOCAL_CONFIG_FILE" value="etc/local-mysql.xml"/>
+        <const name="TESTS_INSTALL_CONFIG_FILE" value="etc/install-config-mysql.php"/>
         <!-- Semicolon-separated 'glob' patterns, that match global XML configuration files -->
         <const name="TESTS_GLOBAL_CONFIG_DIR" value="../../../app/etc"/>
         <!-- Semicolon-separated 'glob' patterns, that match module declaration XML configuration files -->
@@ -67,6 +67,8 @@
         <!-- Memory usage and estimated leaks thresholds -->
         <!--<const name="TESTS_MEM_USAGE_LIMIT" value="1024M"/>-->
         <const name="TESTS_MEM_LEAK_LIMIT" value=""/>
+        <!-- Whether to output all CLI commands executed by the bootstrap and tests -->
+        <!--<const name="TESTS_EXTRA_VERBOSE_LOG" value="1"/>-->
         <!-- Path to Percona Toolkit bin directory -->
         <!--<const name="PERCONA_TOOLKIT_BIN_DIR" value=""/>-->
         <!-- CSV Profiler Output file -->
diff --git a/dev/tests/integration/testsuite/Magento/Catalog/Model/CategoryTest.php b/dev/tests/integration/testsuite/Magento/Catalog/Model/CategoryTest.php
index a788b07f415..44268da0119 100644
--- a/dev/tests/integration/testsuite/Magento/Catalog/Model/CategoryTest.php
+++ b/dev/tests/integration/testsuite/Magento/Catalog/Model/CategoryTest.php
@@ -32,11 +32,6 @@ namespace Magento\Catalog\Model;
  */
 class CategoryTest extends \PHPUnit_Framework_TestCase
 {
-    /**
-     * @var \Magento\TestFramework\ObjectManager
-     */
-    protected static $_objectManager;
-
     /**
      * @var \Magento\Store\Model\Store
      */
@@ -47,26 +42,13 @@ class CategoryTest extends \PHPUnit_Framework_TestCase
      */
     protected $_model;
 
-    public static function setUpBeforeClass()
-    {
-        self::$_objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
-
-        if (\Magento\TestFramework\Helper\Bootstrap::getInstance()->getDbVendorName() != 'mysql') {
-            self::markTestIncomplete('Bug MAGETWO-8513');
-        }
-    }
-
-    public static function tearDownAfterClass()
-    {
-        self::$_objectManager = null;
-    }
-
     protected function setUp()
     {
+        $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
         /** @var $storeManager \Magento\Framework\StoreManagerInterface */
-        $storeManager = self::$_objectManager->get('Magento\Framework\StoreManagerInterface');
+        $storeManager = $objectManager->get('Magento\Framework\StoreManagerInterface');
         $this->_store = $storeManager->getStore();
-        $this->_model = self::$_objectManager->create('Magento\Catalog\Model\Category');
+        $this->_model = $objectManager->create('Magento\Catalog\Model\Category');
     }
 
     public function testGetUrlInstance()
diff --git a/dev/tests/integration/testsuite/Magento/Catalog/Service/V1/Category/MetadataServiceTest.php b/dev/tests/integration/testsuite/Magento/Catalog/Service/V1/Category/MetadataServiceTest.php
index 5e926321958..03ba66fd324 100644
--- a/dev/tests/integration/testsuite/Magento/Catalog/Service/V1/Category/MetadataServiceTest.php
+++ b/dev/tests/integration/testsuite/Magento/Catalog/Service/V1/Category/MetadataServiceTest.php
@@ -34,7 +34,7 @@ class MetadataServiceTest extends \PHPUnit_Framework_TestCase
         $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
         $objectManager->configure(
             [
-                'Magento\Framework\Service\Config\Reader' => [
+                'Magento\Framework\Api\Config\Reader' => [
                     'arguments' => [
                         'fileResolver' => ['instance' => 'Magento\Customer\Service\V1\FileResolverStub']
                     ]
diff --git a/dev/tests/integration/testsuite/Magento/Catalog/Service/V1/Product/MetadataServiceTest.php b/dev/tests/integration/testsuite/Magento/Catalog/Service/V1/Product/MetadataServiceTest.php
index 5c6bbf01133..ad388cfaf76 100644
--- a/dev/tests/integration/testsuite/Magento/Catalog/Service/V1/Product/MetadataServiceTest.php
+++ b/dev/tests/integration/testsuite/Magento/Catalog/Service/V1/Product/MetadataServiceTest.php
@@ -34,7 +34,7 @@ class MetadataServiceTest extends \PHPUnit_Framework_TestCase
         $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
         $objectManager->configure(
             [
-                'Magento\Framework\Service\Config\Reader' => [
+                'Magento\Framework\Api\Config\Reader' => [
                     'arguments' => [
                         'fileResolver' => ['instance' => 'Magento\Customer\Service\V1\FileResolverStub']
                     ]
diff --git a/dev/tests/integration/testsuite/Magento/Catalog/_files/etc/data_object.xml b/dev/tests/integration/testsuite/Magento/Catalog/_files/etc/data_object.xml
index a2069f0d8a4..f81aee0eb07 100644
--- a/dev/tests/integration/testsuite/Magento/Catalog/_files/etc/data_object.xml
+++ b/dev/tests/integration/testsuite/Magento/Catalog/_files/etc/data_object.xml
@@ -23,7 +23,7 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../../lib/internal/Magento/Framework/Service/etc/data_object.xsd">
+<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../../lib/internal/Magento/Framework/Api/etc/data_object.xsd">
     <custom_attributes for="Magento\Tax\Service\V1\Data\TaxRate">
     </custom_attributes>
     <custom_attributes for="Magento\Catalog\Service\V1\Data\Product">
diff --git a/dev/tests/integration/testsuite/Magento/Core/Model/Theme/CollectionTest.php b/dev/tests/integration/testsuite/Magento/Core/Model/Theme/CollectionTest.php
index 943cc821035..f1baa69f152 100644
--- a/dev/tests/integration/testsuite/Magento/Core/Model/Theme/CollectionTest.php
+++ b/dev/tests/integration/testsuite/Magento/Core/Model/Theme/CollectionTest.php
@@ -108,11 +108,10 @@ class CollectionTest extends \PHPUnit_Framework_TestCase
     }
 
     /**
-     * Test is theme present in file system
+     * Test if theme present in file system
      *
      * @magentoAppIsolation enabled
      * @covers \Magento\Core\Model\Theme\Collection::hasTheme
-     * @magentoAppArea install
      */
     public function testHasThemeInCollection()
     {
@@ -133,7 +132,7 @@ class CollectionTest extends \PHPUnit_Framework_TestCase
             )
         );
 
-        $this->_model->addDefaultPattern('*');
+        $this->_model->addDefaultPattern();
         $this->assertFalse($this->_model->hasTheme($themeModel));
     }
 }
diff --git a/dev/tests/integration/testsuite/Magento/Core/Model/View/DesignTest.php b/dev/tests/integration/testsuite/Magento/Core/Model/View/DesignTest.php
index 20ab2c48ae0..b7cb33555c4 100644
--- a/dev/tests/integration/testsuite/Magento/Core/Model/View/DesignTest.php
+++ b/dev/tests/integration/testsuite/Magento/Core/Model/View/DesignTest.php
@@ -127,7 +127,7 @@ class DesignTest extends \PHPUnit_Framework_TestCase
     {
         $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
 
-        $themes = array('frontend' => 'test_f', 'adminhtml' => 'test_a', 'install' => 'test_i');
+        $themes = array('frontend' => 'test_f', 'adminhtml' => 'test_a');
         $design = $objectManager->create('Magento\Core\Model\View\Design', array('themes' => $themes));
         $objectManager->addSharedInstance($design, 'Magento\Core\Model\View\Design');
 
@@ -137,8 +137,6 @@ class DesignTest extends \PHPUnit_Framework_TestCase
         $this->assertEquals('test_f', $model->getConfigurationDesignTheme('frontend'));
         $this->assertEquals('test_f', $model->getConfigurationDesignTheme('frontend', array('store' => 0)));
         $this->assertEquals('test_f', $model->getConfigurationDesignTheme('frontend', array('store' => null)));
-        $this->assertEquals('test_i', $model->getConfigurationDesignTheme('install'));
-        $this->assertEquals('test_i', $model->getConfigurationDesignTheme('install', array('store' => uniqid())));
         $this->assertEquals('test_a', $model->getConfigurationDesignTheme('adminhtml'));
         $this->assertEquals('test_a', $model->getConfigurationDesignTheme('adminhtml', array('store' => uniqid())));
     }
diff --git a/dev/tests/integration/testsuite/Magento/CurrencySymbol/Model/System/CurrencysymbolTest.php b/dev/tests/integration/testsuite/Magento/CurrencySymbol/Model/System/CurrencysymbolTest.php
index 670ec5aa2cc..bb770ba587c 100644
--- a/dev/tests/integration/testsuite/Magento/CurrencySymbol/Model/System/CurrencysymbolTest.php
+++ b/dev/tests/integration/testsuite/Magento/CurrencySymbol/Model/System/CurrencysymbolTest.php
@@ -59,6 +59,9 @@ class CurrencysymbolTest extends \PHPUnit_Framework_TestCase
         $this->assertArrayHasKey('EUR', $currencySymbolsData, 'Default currency option for EUR is missing.');
     }
 
+    /**
+     * @magentoDbIsolation enabled
+     */
     public function testSetEmptyCurrencySymbolsData()
     {
         $currencySymbolsDataBefore = $this->currencySymbolModel->getCurrencySymbolsData();
@@ -71,6 +74,9 @@ class CurrencysymbolTest extends \PHPUnit_Framework_TestCase
         $this->assertEquals($currencySymbolsDataBefore, $currencySymbolsDataAfter);
     }
 
+    /**
+     * @magentoDbIsolation enabled
+     */
     public function testSetCurrencySymbolsData()
     {
         $currencySymbolsData = $this->currencySymbolModel->getCurrencySymbolsData();
@@ -92,15 +98,6 @@ class CurrencysymbolTest extends \PHPUnit_Framework_TestCase
         $this->assertEquals('@', $this->currencySymbolModel->getCurrencySymbol('EUR'), 'Symbol not set correctly.');
     }
 
-    /**
-     * @depends testSetCurrencySymbolsData
-     */
-    public function testGetCurrencySymbol()
-    {
-        //dependency is added for now since tear down (or app isolation) is not helping clear the configuration data
-        $this->assertEquals('@', $this->currencySymbolModel->getCurrencySymbol('EUR'));
-    }
-
     public function testGetCurrencySymbolNonExistent()
     {
         $this->assertFalse($this->currencySymbolModel->getCurrencySymbol('AUD'));
diff --git a/dev/tests/integration/testsuite/Magento/Customer/Api/AddressRepositoryTest.php b/dev/tests/integration/testsuite/Magento/Customer/Api/AddressRepositoryTest.php
new file mode 100644
index 00000000000..60bb396053d
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/Customer/Api/AddressRepositoryTest.php
@@ -0,0 +1,431 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Customer\Api;
+
+use Magento\Framework\Exception\InputException;
+use Magento\Framework\Exception\NoSuchEntityException;
+
+/**
+ * Integration test for service layer \Magento\Customer\Model\Resource\AddressRepository
+ *
+ * @SuppressWarnings(PHPMD.TooManyMethods)
+ * @SuppressWarnings(PHPMD.ExcessivePublicCount)
+ */
+class AddressRepositoryTest extends \PHPUnit_Framework_TestCase
+{
+    /** @var AddressRepositoryInterface */
+    private $repository;
+
+    /** @var \Magento\Framework\ObjectManager */
+    private $_objectManager;
+
+    /** @var \Magento\Customer\Model\Data\Address[] */
+    private $_expectedAddresses;
+
+    /** @var \Magento\Customer\Api\Data\AddressDataBuilder */
+    private $_addressBuilder;
+
+    protected function setUp()
+    {
+        $this->_objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
+        $this->repository = $this->_objectManager->create('Magento\Customer\Api\AddressRepositoryInterface');
+        $this->_addressBuilder = $this->_objectManager->create('Magento\Customer\Api\Data\AddressDataBuilder');
+
+        $builder = $this->_objectManager->create('\Magento\Customer\Api\Data\RegionDataBuilder');
+        $region = $builder
+            ->setRegionCode('AL')
+            ->setRegion('Alabama')
+            ->setRegionId(1)
+            ->create();
+        $this->_addressBuilder
+            ->setId(1)
+            ->setCountryId('US')
+            ->setCustomerId(1)
+            ->setPostcode('75477')
+            ->setRegion($region)
+            ->setStreet('Green str, 67')
+            ->setTelephone('3468676')
+            ->setCity('CityM')
+            ->setFirstname('John')
+            ->setLastname('Smith')
+            ->setCompany('CompanyName');
+        $address = $this->_addressBuilder->create();
+
+        /* XXX: would it be better to have a clear method for this? */
+        $this->_addressBuilder
+            ->setId(2)
+            ->setCountryId('US')
+            ->setCustomerId(1)
+            ->setPostcode('47676')
+            ->setRegion($region)
+            ->setStreet('Black str, 48')
+            ->setCity('CityX')
+            ->setTelephone('3234676')
+            ->setFirstname('John')
+            ->setLastname('Smith');
+        $address2 = $this->_addressBuilder->create();
+
+        $this->_expectedAddresses = array($address, $address2);
+    }
+
+    protected function tearDown()
+    {
+        $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
+        /** @var \Magento\Customer\Model\CustomerRegistry $customerRegistry */
+        $customerRegistry = $objectManager->get('Magento\Customer\Model\CustomerRegistry');
+        $customerRegistry->remove(1);
+    }
+
+    /**
+     * @magentoDataFixture  Magento/Customer/_files/customer.php
+     * @magentoDataFixture  Magento/Customer/_files/customer_address.php
+     * @magentoDataFixture  Magento/Customer/_files/customer_two_addresses.php
+     * @magentoAppIsolation enabled
+     */
+    public function testSaveAddressChanges()
+    {
+        $address = $this->repository->get(2);
+
+        $proposedAddressBuilder = $this->_addressBuilder->populate($address);
+        $proposedAddressBuilder->setRegion($address->getRegion());
+        // change phone #
+        $proposedAddressBuilder->setTelephone('555' . $address->getTelephone());
+        $proposedAddressObject = $proposedAddressBuilder->create();
+        $proposedAddress = $this->repository->save($proposedAddressObject);
+        $this->assertEquals(2, $proposedAddress->getId());
+
+        $savedAddress = $this->repository->get(2);
+        $this->assertNotEquals($this->_expectedAddresses[1]->getTelephone(), $savedAddress->getTelephone());
+    }
+
+    /**
+     * @magentoDataFixture  Magento/Customer/_files/customer.php
+     * @magentoDataFixture  Magento/Customer/_files/customer_address.php
+     * @magentoDataFixture  Magento/Customer/_files/customer_two_addresses.php
+     * @magentoAppIsolation enabled
+     * @expectedException \Magento\Framework\Exception\NoSuchEntityException
+     * @expectedExceptionMessage No such entity with addressId = 4200
+     */
+    public function testSaveAddressesIdSetButNotAlreadyExisting()
+    {
+        $proposedAddressBuilder = $this->_createSecondAddressBuilder()->setId(4200);
+        $proposedAddress = $proposedAddressBuilder->create();
+        $this->repository->save($proposedAddress);
+    }
+
+    /**
+     * @magentoDataFixture  Magento/Customer/_files/customer.php
+     * @magentoDataFixture  Magento/Customer/_files/customer_address.php
+     * @magentoDataFixture  Magento/Customer/_files/customer_two_addresses.php
+     * @magentoAppIsolation enabled
+     */
+    public function testGetAddressById()
+    {
+        $addressId = 2;
+        $address = $this->repository->get($addressId);
+        $this->assertEquals($this->_expectedAddresses[1], $address);
+    }
+
+    /**
+     * @magentoDataFixture Magento/Customer/_files/customer.php
+     * @expectedException \Magento\Framework\Exception\NoSuchEntityException
+     * @expectedExceptionMessage No such entity with addressId = 12345
+     */
+    public function testGetAddressByIdBadAddressId()
+    {
+        $this->repository->get(12345);
+    }
+
+    /**
+     * @magentoDataFixture  Magento/Customer/_files/customer.php
+     * @magentoDataFixture  Magento/Customer/_files/customer_address.php
+     * @magentoAppIsolation enabled
+     */
+    public function testSaveNewAddress()
+    {
+        $proposedAddress = $this->_createSecondAddressBuilder()->setCustomerId(1)->create();
+
+        $returnedAddress = $this->repository->save($proposedAddress);
+        $this->assertNotNull($returnedAddress->getId());
+
+        $savedAddress = $this->repository->get($returnedAddress->getId());
+
+        $expectedNewAddressBuilder = $this->_addressBuilder->populate($this->_expectedAddresses[1]);
+        $expectedNewAddressBuilder->setId($savedAddress->getId());
+        $expectedNewAddressBuilder->setRegion($this->_expectedAddresses[1]->getRegion());
+        $expectedNewAddress = $expectedNewAddressBuilder->create();
+        $this->assertEquals($expectedNewAddress, $savedAddress);
+    }
+
+    /**
+     * @magentoDataFixture  Magento/Customer/_files/customer.php
+     * @magentoDataFixture  Magento/Customer/_files/customer_address.php
+     * @magentoAppIsolation enabled
+     */
+    public function testSaveNewAddressWithAttributes()
+    {
+        $addressBuilder = $this->_createFirstAddressBuilder()
+            ->setCustomAttribute('firstname', 'Jane')
+            ->setCustomAttribute('id', 4200)
+            ->setCustomAttribute('weird', 'something_strange_with_hair')
+            ->setId(null)
+            ->setCustomerId(1);
+        $proposedAddress = $addressBuilder->create();
+
+        $returnedAddress = $this->repository->save($proposedAddress);
+
+        $savedAddress = $this->repository->get($returnedAddress->getId());
+        $this->assertNotEquals($proposedAddress, $savedAddress);
+        $this->assertArrayNotHasKey(
+            'weird',
+            $savedAddress->getCustomAttributes(),
+            'Only valid attributes should be available.'
+        );
+    }
+
+    /**
+     * @magentoDataFixture  Magento/Customer/_files/customer.php
+     * @magentoDataFixture  Magento/Customer/_files/customer_address.php
+     * @magentoAppIsolation enabled
+     */
+    public function testSaveNewInvalidAddress()
+    {
+        $addressBuilder = $this->_createFirstAddressBuilder()
+            ->setCustomAttribute('firstname', null)
+            ->setId(null)
+            ->setFirstname(null)
+            ->setLastname(null)
+            ->setCustomerId(1);
+        $address = $addressBuilder->create();
+        try {
+            $this->repository->save($address);
+        } catch (InputException $exception) {
+            $this->assertEquals(InputException::DEFAULT_MESSAGE, $exception->getMessage());
+            $errors = $exception->getErrors();
+            $this->assertCount(2, $errors);
+            $this->assertEquals('firstname is a required field.', $errors[0]->getLogMessage());
+            $this->assertEquals('lastname is a required field.', $errors[1]->getLogMessage());
+        }
+    }
+
+    public function testSaveAddressesCustomerIdNotExist()
+    {
+        $proposedAddress = $this->_createSecondAddressBuilder()->setCustomerId(4200)->create();
+        try {
+            $this->repository->save($proposedAddress);
+            $this->fail('Expected exception not thrown');
+        } catch (NoSuchEntityException $nsee) {
+            $this->assertEquals('No such entity with customerId = 4200', $nsee->getMessage());
+        }
+    }
+
+    public function testSaveAddressesCustomerIdInvalid()
+    {
+        $proposedAddress = $this->_createSecondAddressBuilder()->setCustomerId('this_is_not_a_valid_id')->create();
+        try {
+            $this->repository->save($proposedAddress);
+            $this->fail('Expected exception not thrown');
+        } catch (NoSuchEntityException $nsee) {
+             $this->assertEquals('No such entity with customerId = this_is_not_a_valid_id', $nsee->getMessage());
+        }
+    }
+
+    /**
+     * @magentoDataFixture Magento/Customer/_files/customer.php
+     * @magentoDataFixture Magento/Customer/_files/customer_address.php
+     */
+    public function testDeleteAddress()
+    {
+        $addressId = 1;
+        // See that customer already has an address with expected addressId
+        $addressDataObject = $this->repository->get($addressId);
+        $this->assertEquals($addressDataObject->getId(), $addressId);
+
+        // Delete the address from the customer
+        $this->repository->delete($addressDataObject);
+
+        // See that address is deleted
+        try {
+            $addressDataObject = $this->repository->get($addressId);
+            $this->fail("Expected NoSuchEntityException not caught");
+        } catch (NoSuchEntityException $exception) {
+            $this->assertEquals('No such entity with addressId = 1', $exception->getMessage());
+        }
+    }
+
+    /**
+     * @magentoDataFixture Magento/Customer/_files/customer.php
+     * @magentoDataFixture Magento/Customer/_files/customer_address.php
+     */
+    public function testDeleteAddressById()
+    {
+        $addressId = 1;
+        // See that customer already has an address with expected addressId
+        $addressDataObject = $this->repository->get($addressId);
+        $this->assertEquals($addressDataObject->getId(), $addressId);
+
+        // Delete the address from the customer
+        $this->repository->deleteById($addressId);
+
+        // See that address is deleted
+        try {
+            $addressDataObject = $this->repository->get($addressId);
+            $this->fail("Expected NoSuchEntityException not caught");
+        } catch (NoSuchEntityException $exception) {
+            $this->assertEquals('No such entity with addressId = 1', $exception->getMessage());
+        }
+    }
+
+    /**
+     * @magentoDataFixture Magento/Customer/_files/customer.php
+     */
+    public function testDeleteAddressFromCustomerBadAddressId()
+    {
+        try {
+            $this->repository->deleteById(12345);
+            $this->fail("Expected NoSuchEntityException not caught");
+        } catch (NoSuchEntityException $exception) {
+            $this->assertEquals('No such entity with addressId = 12345', $exception->getMessage());
+        }
+    }
+
+    /**
+     * @param \Magento\Framework\Api\Filter[] $filters
+     * @param \Magento\Framework\Api\Filter[] $filterGroup
+     * @param array $expectedResult array of expected results indexed by ID
+     *
+     * @dataProvider searchAddressDataProvider
+     *
+     * @magentoDataFixture  Magento/Customer/_files/customer.php
+     * @magentoDataFixture  Magento/Customer/_files/customer_two_addresses.php
+     * @magentoAppIsolation enabled
+     */
+    public function testSearchAddresses($filters, $filterGroup, $expectedResult)
+    {
+        /** @var \Magento\Framework\Api\SearchCriteriaBuilder $searchBuilder */
+        $searchBuilder = $this->_objectManager->create('Magento\Framework\Api\SearchCriteriaBuilder');
+        foreach ($filters as $filter) {
+            $searchBuilder->addFilter([$filter]);
+        }
+        if (!is_null($filterGroup)) {
+            $searchBuilder->addFilter($filterGroup);
+        }
+
+        $searchResults = $this->repository->getList($searchBuilder->create());
+
+        $this->assertEquals(count($expectedResult), $searchResults->getTotalCount());
+
+        /** @var \Magento\Customer\Api\Data\AddressInterface $item*/
+        foreach ($searchResults->getItems() as $item) {
+            $this->assertEquals(
+                $expectedResult[$item->getId()]['city'],
+                $item->getCity()
+            );
+            $this->assertEquals(
+                $expectedResult[$item->getId()]['postcode'],
+                $item->getPostcode()
+            );
+            $this->assertEquals(
+                $expectedResult[$item->getId()]['firstname'],
+                $item->getFirstname()
+            );
+            unset($expectedResult[$item->getId()]);
+        }
+    }
+
+    public function searchAddressDataProvider()
+    {
+        /**
+         * @var \Magento\Framework\Api\FilterBuilder $filterBuilder
+         */
+        $filterBuilder = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()
+            ->create('Magento\Framework\Api\FilterBuilder');
+        return [
+            'Address with postcode 75477' => [
+                [$filterBuilder->setField('postcode')->setValue('75477')->create()],
+                null,
+                [1 => ['city' => 'CityM', 'postcode' => 75477, 'firstname' => 'John']]
+            ],
+            'Address with city CityM' => [
+                [$filterBuilder->setField('city')->setValue('CityM')->create()],
+                null,
+                [1 => ['city' => 'CityM', 'postcode' => 75477, 'firstname' => 'John']]
+            ],
+            'Addresses with firstname John' => [
+                [$filterBuilder->setField('firstname')->setValue('John')->create()],
+                null,
+                [
+                    1 => ['city' => 'CityM', 'postcode' => 75477, 'firstname' => 'John'],
+                    2 => ['city' => 'CityX', 'postcode' => 47676, 'firstname' => 'John']
+                ]
+            ],
+            'Addresses with postcode of either 75477 or 47676' => [
+                [],
+                [
+                    $filterBuilder->setField('postcode')->setValue('75477')->create(),
+                    $filterBuilder->setField('postcode')->setValue('47676')->create()
+                ],
+                [
+                    1 => ['city' => 'CityM', 'postcode' => 75477, 'firstname' => 'John'],
+                    2 => ['city' => 'CityX', 'postcode' => 47676, 'firstname' => 'John']
+                ]
+            ],
+            'Addresses with postcode greater than 0' => [
+                [$filterBuilder->setField('postcode')->setValue('0')->setConditionType('gt')->create()],
+                null,
+                [
+                    1 => ['city' => 'CityM', 'postcode' => 75477, 'firstname' => 'John'],
+                    2 => ['city' => 'CityX', 'postcode' => 47676, 'firstname' => 'John']
+                ]
+            ]
+        ];
+    }
+
+    /**
+     * Helper function that returns an Address Data Object that matches the data from customer_address fixture
+     *
+     * @return \Magento\Customer\Api\Data\AddressDataBuilder
+     */
+    private function _createFirstAddressBuilder()
+    {
+        $addressBuilder = $this->_addressBuilder->populate($this->_expectedAddresses[0]);
+        $addressBuilder->setId(null);
+        $addressBuilder->setRegion($this->_expectedAddresses[0]->getRegion());
+        return $addressBuilder;
+    }
+
+    /**
+     * Helper function that returns an Address Data Object that matches the data from customer_two_address fixture
+     *
+     * @return \Magento\Customer\Api\Data\AddressDataBuilder
+     */
+    private function _createSecondAddressBuilder()
+    {
+        $addressBuilder =  $this->_addressBuilder->populate($this->_expectedAddresses[1]);
+        $addressBuilder->setId(null);
+        $addressBuilder->setRegion($this->_expectedAddresses[1]->getRegion());
+        return $addressBuilder;
+    }
+}
diff --git a/dev/tests/integration/testsuite/Magento/Customer/Block/Adminhtml/Edit/Tab/AddressesTest.php b/dev/tests/integration/testsuite/Magento/Customer/Block/Adminhtml/Edit/Tab/AddressesTest.php
index 10e2326518c..e90feae3e00 100644
--- a/dev/tests/integration/testsuite/Magento/Customer/Block/Adminhtml/Edit/Tab/AddressesTest.php
+++ b/dev/tests/integration/testsuite/Magento/Customer/Block/Adminhtml/Edit/Tab/AddressesTest.php
@@ -167,7 +167,7 @@ class AddressesTest extends \PHPUnit_Framework_TestCase
         $customer = $this->_customerAccountService->getCustomer(1);
         $this->_customerData = array(
             'customer_id' => $customer->getId(),
-            'account' => \Magento\Framework\Service\ExtensibleDataObjectConverter::toFlatArray($customer)
+            'account' => \Magento\Framework\Api\ExtensibleDataObjectConverter::toFlatArray($customer)
         );
         $this->_customerData['account']['id'] = $customer->getId();
         /** @var Address[] $addresses */
diff --git a/dev/tests/integration/testsuite/Magento/Customer/Block/Adminhtml/Edit/Tab/View/PersonalInfoTest.php b/dev/tests/integration/testsuite/Magento/Customer/Block/Adminhtml/Edit/Tab/View/PersonalInfoTest.php
index 6284845a4b6..ce39d6ef88f 100644
--- a/dev/tests/integration/testsuite/Magento/Customer/Block/Adminhtml/Edit/Tab/View/PersonalInfoTest.php
+++ b/dev/tests/integration/testsuite/Magento/Customer/Block/Adminhtml/Edit/Tab/View/PersonalInfoTest.php
@@ -194,6 +194,7 @@ class PersonalInfoTest extends \PHPUnit_Framework_TestCase
      */
     public function testIsConfirmedStatusConfirmationIsNotRequired()
     {
+        $password = 'password';
         /** @var Customer $customer */
         $customer = $this->_customerBuilder->setConfirmation(
             true
@@ -208,7 +209,7 @@ class PersonalInfoTest extends \PHPUnit_Framework_TestCase
         /** @var \Magento\Customer\Service\V1\Data\CustomerDetailsBuilder $customerDetailsBuilder */
         $customerDetailsBuilder = $objectManager->create('Magento\Customer\Service\V1\Data\CustomerDetailsBuilder');
         $customerDetails = $customerDetailsBuilder->setCustomer($customer)->create();
-        $customer = $this->_customerAccountService->createCustomer($customerDetails);
+        $customer = $this->_customerAccountService->createCustomer($customerDetails, $password);
         $this->_coreRegistry->register(RegistryConstants::CURRENT_CUSTOMER_ID, $customer->getId());
         $this->assertEquals('Confirmation Not Required', $this->_block->getIsConfirmedStatus());
     }
diff --git a/dev/tests/integration/testsuite/Magento/Customer/Block/Adminhtml/Group/Edit/FormTest.php b/dev/tests/integration/testsuite/Magento/Customer/Block/Adminhtml/Group/Edit/FormTest.php
index e0cb2e0215e..e3cf7d13eeb 100644
--- a/dev/tests/integration/testsuite/Magento/Customer/Block/Adminhtml/Group/Edit/FormTest.php
+++ b/dev/tests/integration/testsuite/Magento/Customer/Block/Adminhtml/Group/Edit/FormTest.php
@@ -107,10 +107,10 @@ class FormTest extends \PHPUnit_Framework_TestCase
      */
     public function testGetFormExistInCustomGroup()
     {
-        $builder = Bootstrap::getObjectManager()->create('Magento\Framework\Service\V1\Data\FilterBuilder');
-        /** @var \Magento\Framework\Service\V1\Data\SearchCriteriaBuilder $searchCriteria */
+        $builder = Bootstrap::getObjectManager()->create('Magento\Framework\Api\FilterBuilder');
+        /** @var \Magento\Framework\Api\SearchCriteriaBuilder $searchCriteria */
         $searchCriteria = Bootstrap::getObjectManager()
-            ->create('Magento\Framework\Service\V1\Data\SearchCriteriaBuilder')
+            ->create('Magento\Framework\Api\SearchCriteriaBuilder')
             ->addFilter([$builder->setField('code')->setValue('custom_group')->create()])->create();
         /** @var CustomerGroup $customerGroup */
         $customerGroup = $this->customerGroupService->searchGroups($searchCriteria)->getItems()[0];
diff --git a/dev/tests/integration/testsuite/Magento/Customer/Block/Adminhtml/Group/EditTest.php b/dev/tests/integration/testsuite/Magento/Customer/Block/Adminhtml/Group/EditTest.php
index f8a0492c937..a9871bb07ea 100644
--- a/dev/tests/integration/testsuite/Magento/Customer/Block/Adminhtml/Group/EditTest.php
+++ b/dev/tests/integration/testsuite/Magento/Customer/Block/Adminhtml/Group/EditTest.php
@@ -27,8 +27,8 @@ namespace Magento\Customer\Block\Adminhtml\Group;
 use Magento\Backend\App\Area\FrontNameResolver;
 use Magento\Customer\Controller\RegistryConstants;
 use Magento\Customer\Service\V1\Data\CustomerGroup;
-use Magento\Framework\Service\V1\Data\FilterBuilder;
-use Magento\Framework\Service\V1\Data\SearchCriteriaBuilder;
+use Magento\Framework\Api\FilterBuilder;
+use Magento\Framework\Api\SearchCriteriaBuilder;
 use Magento\TestFramework\Helper\Bootstrap;
 use Magento\TestFramework\TestCase\AbstractController;
 
@@ -98,10 +98,10 @@ class EditTest extends AbstractController
      */
     public function testDeleteButtonExistInCustomGroup()
     {
-        $builder = Bootstrap::getObjectManager()->create('\Magento\Framework\Service\V1\Data\FilterBuilder');
-        /** @var \Magento\Framework\Service\V1\Data\SearchCriteriaBuilder $searchCriteria */
+        $builder = Bootstrap::getObjectManager()->create('\Magento\Framework\Api\FilterBuilder');
+        /** @var \Magento\Framework\Api\SearchCriteriaBuilder $searchCriteria */
         $searchCriteria = Bootstrap::getObjectManager()
-            ->create('Magento\Framework\Service\V1\Data\SearchCriteriaBuilder')
+            ->create('Magento\Framework\Api\SearchCriteriaBuilder')
             ->addFilter([$builder->setField('code')->setValue('custom_group')->create()])->create();
         /** @var CustomerGroup $customerGroup */
         $customerGroup = $this->customerGroupService->searchGroups($searchCriteria)->getItems()[0];
diff --git a/dev/tests/integration/testsuite/Magento/Customer/Controller/AccountTest.php b/dev/tests/integration/testsuite/Magento/Customer/Controller/AccountTest.php
index 039fecd5e4f..5cccb17a7db 100755
--- a/dev/tests/integration/testsuite/Magento/Customer/Controller/AccountTest.php
+++ b/dev/tests/integration/testsuite/Magento/Customer/Controller/AccountTest.php
@@ -65,7 +65,7 @@ class AccountTest extends \Magento\TestFramework\TestCase\AbstractController
         $this->assertContains('<input type="email" name="email" id="email_address"', $body);
         $this->assertContains('<input type="checkbox" name="is_subscribed"', $body);
         $this->assertContains('<input type="password" name="password" id="password"', $body);
-        $this->assertContains('<input type="password" name="confirmation" title="Confirm Password"', $body);
+        $this->assertContains('<input type="password" name="password_confirmation" title="Confirm Password"', $body);
     }
 
     /**
@@ -154,7 +154,7 @@ class AccountTest extends \Magento\TestFramework\TestCase\AbstractController
             ->setParam('company', '')
             ->setParam('email', 'test1@email.com')
             ->setParam('password', 'password')
-            ->setParam('confirmation', 'password')
+            ->setParam('password_confirmation', 'password')
             ->setParam('telephone', '5123334444')
             ->setParam('street', array('1234 fake street', ''))
             ->setParam('city', 'Austin')
@@ -191,7 +191,7 @@ class AccountTest extends \Magento\TestFramework\TestCase\AbstractController
             ->setParam('company', '')
             ->setParam('email', $email)
             ->setParam('password', 'password')
-            ->setParam('confirmation', 'password')
+            ->setParam('password_confirmation', 'password')
             ->setParam('telephone', '5123334444')
             ->setParam('street', array('1234 fake street', ''))
             ->setParam('city', 'Austin')
@@ -230,7 +230,7 @@ class AccountTest extends \Magento\TestFramework\TestCase\AbstractController
             ->setParam('company', '')
             ->setParam('email', 'customer@example.com')
             ->setParam('password', 'password')
-            ->setParam('confirmation', 'password')
+            ->setParam('password_confirmation', 'password')
             ->setParam('telephone', '5123334444')
             ->setParam('street', array('1234 fake street', ''))
             ->setParam('city', 'Austin')
@@ -365,7 +365,7 @@ class AccountTest extends \Magento\TestFramework\TestCase\AbstractController
             ->setParam('token', '8ed8677e6c79e68b94e61658bd756ea5')
             ->setPost([
                 'password' => 'new-password',
-                'confirmation' => 'new-password'
+                'password_confirmation' => 'new-password'
             ]);
 
         $this->dispatch('customer/account/resetPasswordPost');
@@ -387,7 +387,7 @@ class AccountTest extends \Magento\TestFramework\TestCase\AbstractController
             ->setQuery('token', '8ed8677e6c79e68b94e61658bd756ea5')
             ->setPost([
                 'password' => 'new-password',
-                'confirmation' => 'new-password'
+                'password_confirmation' => 'new-password'
             ]);
 
         $this->dispatch('customer/account/resetPasswordPost');
@@ -498,7 +498,7 @@ class AccountTest extends \Magento\TestFramework\TestCase\AbstractController
                 'change_password'  => 1,
                 'current_password' => 'password',
                 'password'         => 'new-password',
-                'confirmation'     => 'new-password'
+                'password_confirmation' => 'new-password'
             ]);
 
         $this->dispatch('customer/account/editPost');
@@ -555,7 +555,7 @@ class AccountTest extends \Magento\TestFramework\TestCase\AbstractController
                 'change_password'  => 1,
                 'current_password' => 'wrong-password',
                 'password'         => 'new-password',
-                'confirmation'     => 'new-password'
+                'password_confirmation' => 'new-password'
             ]);
 
         $this->dispatch('customer/account/editPost');
@@ -583,7 +583,7 @@ class AccountTest extends \Magento\TestFramework\TestCase\AbstractController
                 'change_password'  => 1,
                 'current_password' => 'password',
                 'password'         => 'new-password',
-                'confirmation'     => 'new-password-no-match'
+                'password_confirmation' => 'new-password-no-match'
             ]);
 
         $this->dispatch('customer/account/editPost');
diff --git a/dev/tests/integration/testsuite/Magento/Customer/Controller/Adminhtml/GroupTest.php b/dev/tests/integration/testsuite/Magento/Customer/Controller/Adminhtml/GroupTest.php
index 141b2b8bdd0..6e36ca99d41 100644
--- a/dev/tests/integration/testsuite/Magento/Customer/Controller/Adminhtml/GroupTest.php
+++ b/dev/tests/integration/testsuite/Magento/Customer/Controller/Adminhtml/GroupTest.php
@@ -154,7 +154,7 @@ class GroupTest extends \Magento\Backend\Utility\Controller
         /** @var \Magento\Customer\Service\V1\CustomerGroupServiceInterface $groupService */
         $groupService = Bootstrap::getObjectManager()
             ->get('Magento\Customer\Service\V1\CustomerGroupServiceInterface');
-        $customerGroupData = \Magento\Framework\Service\SimpleDataObjectConverter::toFlatArray(
+        $customerGroupData = \Magento\Framework\Api\SimpleDataObjectConverter::toFlatArray(
             $groupService->getGroup($groupId)
         );
         ksort($customerGroupData);
diff --git a/dev/tests/integration/testsuite/Magento/Customer/Controller/Adminhtml/IndexTest.php b/dev/tests/integration/testsuite/Magento/Customer/Controller/Adminhtml/IndexTest.php
index 3f4602d96a2..3ad5d248b05 100755
--- a/dev/tests/integration/testsuite/Magento/Customer/Controller/Adminhtml/IndexTest.php
+++ b/dev/tests/integration/testsuite/Magento/Customer/Controller/Adminhtml/IndexTest.php
@@ -160,7 +160,7 @@ class IndexTest extends \Magento\Backend\Utility\Controller
                 'lastname' => 'test lastname',
                 'email' => 'example@domain.com',
                 'default_billing' => '_item1',
-                'password' => 'auto'
+                'password' => 'password',
             ),
             'address' => array(
                 '_item1' => array(
@@ -374,7 +374,7 @@ class IndexTest extends \Magento\Backend\Utility\Controller
                 'firstname' => 'test firstname',
                 'lastname' => 'test lastname',
                 'email' => 'customer@example.com',
-                'password' => 'auto'
+                'password' => 'password',
             )
         );
         $this->getRequest()->setPost($post);
diff --git a/dev/tests/integration/testsuite/Magento/Customer/Helper/AddressTest.php b/dev/tests/integration/testsuite/Magento/Customer/Helper/AddressTest.php
index e0e43b3e78f..9cc53fbb24f 100755
--- a/dev/tests/integration/testsuite/Magento/Customer/Helper/AddressTest.php
+++ b/dev/tests/integration/testsuite/Magento/Customer/Helper/AddressTest.php
@@ -55,7 +55,7 @@ class AddressTest extends \PHPUnit_Framework_TestCase
             array('firstname', 'required-entry'),
             array('lastname', 'required-entry'),
             array('middlename', ''),
-            array('postcode', ' required-entry')
+            array('postcode', '')
         );
     }
 }
diff --git a/dev/tests/integration/testsuite/Magento/Customer/Model/AccountManagementTest.php b/dev/tests/integration/testsuite/Magento/Customer/Model/AccountManagementTest.php
new file mode 100755
index 00000000000..46ca6c18356
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/Customer/Model/AccountManagementTest.php
@@ -0,0 +1,846 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Customer\Model;
+
+use Magento\Customer\Api\AccountManagementInterface;
+use Magento\Customer\Api\CustomerRepositoryInterface;
+use Magento\Customer\Service\V1;
+use Magento\Framework\Exception\InputException;
+use Magento\Framework\Exception\NoSuchEntityException;
+use Magento\Framework\Exception\State\ExpiredException;
+use Magento\TestFramework\Helper\Bootstrap;
+
+/**
+ * Integration test for service layer \Magento\Customer\Model\AccountManagementTest
+ *
+ * @SuppressWarnings(PHPMD.TooManyMethods)
+ * @SuppressWarnings(PHPMD.ExcessivePublicCount)
+ * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
+ * @magentoAppArea frontend
+ */
+class AccountManagementTest extends \PHPUnit_Framework_TestCase
+{
+    /** @var AccountManagementInterface */
+    private $accountManagement;
+
+    /** @var CustomerRepositoryInterface */
+    private $customerRepository;
+
+    /** @var CustomerAddressServiceInterface needed to setup tests */
+    private $_customerAddressService;
+
+    /** @var \Magento\Framework\ObjectManager */
+    private $objectManager;
+
+    /** @var \Magento\Customer\Service\V1\Data\Address[] */
+    private $_expectedAddresses;
+
+    /** @var \Magento\Customer\Api\Data\AddressDataBuilder */
+    private $addressBuilder;
+
+    /** @var \Magento\Customer\Api\Data\CustomerDataBuilder */
+    private $customerBuilder;
+
+    protected function setUp()
+    {
+        $this->objectManager = Bootstrap::getObjectManager();
+        $this->accountManagement = $this->objectManager
+            ->create('Magento\Customer\Api\AccountManagementInterface');
+        $this->customerRepository = $this->objectManager
+            ->create('Magento\Customer\Api\CustomerRepositoryInterface');
+        $this->_customerAddressService =
+            $this->objectManager->create('Magento\Customer\Service\V1\CustomerAddressServiceInterface');
+
+        $this->addressBuilder = $this->objectManager->create('Magento\Customer\Api\Data\AddressDataBuilder');
+        $this->customerBuilder = $this->objectManager->create('Magento\Customer\Api\Data\CustomerDataBuilder');
+
+        $regionBuilder = $this->objectManager->create('Magento\Customer\Api\Data\RegionDataBuilder');
+        $this->addressBuilder->setId(1)
+            ->setCountryId('US')
+            ->setCustomerId(1)
+            ->setPostcode('75477')
+            ->setRegion(
+                $regionBuilder->setRegionCode('AL')->setRegion('Alabama')->setRegionId(1)->create()
+            )
+            ->setStreet(['Green str, 67'])
+            ->setTelephone('3468676')
+            ->setCity('CityM')
+            ->setFirstname('John')
+            ->setLastname('Smith');
+        $address = $this->addressBuilder->create();
+
+        $this->addressBuilder->setId(2)
+            ->setCountryId('US')
+            ->setCustomerId(1)
+            ->setPostcode('47676')
+            ->setRegion(
+                $regionBuilder->setRegionCode('AL')->setRegion('Alabama')->setRegionId(1)->create()
+            )
+            ->setStreet(['Black str, 48'])
+            ->setCity('CityX')
+            ->setTelephone('3234676')
+            ->setFirstname('John')
+            ->setLastname('Smith');
+        $address2 = $this->addressBuilder->create();
+
+        $this->_expectedAddresses = [$address, $address2];
+    }
+
+    /**
+     * Clean up shared dependencies
+     */
+    protected function tearDown()
+    {
+        /** @var \Magento\Customer\Model\CustomerRegistry $customerRegistry */
+        $customerRegistry = $this->objectManager->get('Magento\Customer\Model\CustomerRegistry');
+        //Cleanup customer from registry
+        $customerRegistry->remove(1);
+    }
+
+    /**
+     * @magentoAppArea frontend
+     * @magentoDataFixture Magento/Customer/_files/customer.php
+     */
+    public function testLogin()
+    {
+        // Customer e-mail and password are pulled from the fixture customer.php
+        $customer = $this->accountManagement->authenticate('customer@example.com', 'password', true);
+
+        $this->assertSame('customer@example.com', $customer->getEmail());
+    }
+
+    /**
+     * @magentoDataFixture Magento/Customer/_files/customer.php
+     *
+     * @expectedException \Magento\Framework\Exception\InvalidEmailOrPasswordException
+     * @expectedExceptionMessage Invalid login or password.
+     */
+    public function testLoginWrongPassword()
+    {
+        // Customer e-mail and password are pulled from the fixture customer.php
+        $this->accountManagement->authenticate('customer@example.com', 'wrongPassword', true);
+    }
+
+    /**
+     * @expectedException \Magento\Framework\Exception\InvalidEmailOrPasswordException
+     * @expectedExceptionMessage Invalid login or password.
+     */
+    public function testLoginWrongUsername()
+    {
+        // Customer e-mail and password are pulled from the fixture customer.php
+        $this->accountManagement->authenticate('non_existing_user', 'password', true);
+    }
+
+
+    /**
+     * @magentoAppArea frontend
+     * @magentoDataFixture Magento/Customer/_files/customer.php
+     */
+    public function testChangePassword()
+    {
+        $this->accountManagement->changePassword('customer@example.com', 'password', 'new_password');
+
+        $this->accountManagement->authenticate('customer@example.com', 'new_password');
+    }
+
+    /**
+     * @magentoDataFixture Magento/Customer/_files/customer.php
+     *
+     * @expectedException \Magento\Framework\Exception\InvalidEmailOrPasswordException
+     * @expectedExceptionMessage Password doesn't match for this account
+     */
+    public function testChangePasswordWrongPassword()
+    {
+        $this->accountManagement->changePassword(1, 'wrongPassword', 'new_password');
+    }
+
+    /**
+     * @expectedException \Magento\Framework\Exception\InvalidEmailOrPasswordException
+     * @expectedExceptionMessage Password doesn't match for this account
+     */
+    public function testChangePasswordWrongUser()
+    {
+        $this->accountManagement->changePassword(4200, 'password', 'new_password');
+    }
+
+    /**
+     * @magentoDataFixture Magento/Customer/_files/inactive_customer.php
+     * @magentoAppArea frontend
+     */
+    public function testActivateAccount()
+    {
+        /** @var \Magento\Customer\Model\Customer $customerModel */
+        $customerModel = $this->objectManager->create('Magento\Customer\Model\Customer');
+        $customerModel->load(1);
+        // Assert in just one test that the fixture is working
+        $this->assertNotNull($customerModel->getConfirmation(), 'New customer needs to be confirmed');
+
+        $this->accountManagement->activate($customerModel->getEmail(), $customerModel->getConfirmation());
+
+        $customerModel = $this->objectManager->create('Magento\Customer\Model\Customer');
+        $customerModel->load(1);
+        $this->assertNull($customerModel->getConfirmation(), 'Customer should be considered confirmed now');
+    }
+
+    /**
+     * @magentoDataFixture Magento/Customer/_files/inactive_customer.php
+     * @expectedException \Magento\Framework\Exception\State\InputMismatchException
+     */
+    public function testActivateCustomerConfirmationKeyWrongKey()
+    {
+        /** @var \Magento\Customer\Model\Customer $customerModel */
+        $customerModel = $this->objectManager->create('Magento\Customer\Model\Customer');
+        $customerModel->load(1);
+        $key = $customerModel->getConfirmation();
+
+        try {
+            $this->accountManagement->activate($customerModel->getEmail(), $key . $key);
+            $this->fail('Expected exception was not thrown');
+        } catch (InputException $ie) {
+            $this->assertEquals('', $ie->getMessage());
+        }
+    }
+
+    /**
+     * @magentoDataFixture Magento/Customer/_files/inactive_customer.php
+     */
+    public function testActivateCustomerWrongAccount()
+    {
+        /** @var \Magento\Customer\Model\Customer $customerModel */
+        $customerModel = $this->objectManager->create('Magento\Customer\Model\Customer');
+        $customerModel->load(1);
+        $key = $customerModel->getConfirmation();
+        try {
+            $this->accountManagement->activate('1234' . $customerModel->getEmail(), $key);
+            $this->fail('Expected exception not thrown.');
+        } catch (NoSuchEntityException $nsee) {
+            $this->assertEquals(
+                'No such entity with email = 1234customer@needAconfirmation.com, websiteId = 1',
+                $nsee->getMessage()
+            );
+        }
+    }
+
+    /**
+     * @magentoDataFixture Magento/Customer/_files/inactive_customer.php
+     * @magentoAppArea frontend
+     * @expectedException \Magento\Framework\Exception\State\InvalidTransitionException
+     */
+    public function testActivateCustomerAlreadyActive()
+    {
+        /** @var \Magento\Customer\Model\Customer $customerModel */
+        $customerModel = $this->objectManager->create('Magento\Customer\Model\Customer');
+        $customerModel->load(1);
+        $key = $customerModel->getConfirmation();
+        $this->accountManagement->activate($customerModel->getEmail(), $key);
+        // activate it one more time to produce an exception
+        $this->accountManagement->activate($customerModel->getEmail(), $key);
+    }
+
+
+    /**
+     * @magentoDataFixture Magento/Customer/_files/customer.php
+     */
+    public function testValidateResetPasswordLinkToken()
+    {
+        $this->setResetPasswordData('token', 'Y-m-d');
+        $this->accountManagement->validateResetPasswordLinkToken(1, 'token');
+    }
+
+    /**
+     * @magentoDataFixture Magento/Customer/_files/customer.php
+     * @expectedException \Magento\Framework\Exception\State\ExpiredException
+     */
+    public function testValidateResetPasswordLinkTokenExpired()
+    {
+        $resetToken = 'lsdj579slkj5987slkj595lkj';
+        $this->setResetPasswordData($resetToken, '1970-01-01');
+        $this->accountManagement->validateResetPasswordLinkToken(1, $resetToken);
+    }
+
+    /**
+     * @magentoDataFixture Magento/Customer/_files/customer.php
+     */
+    public function testValidateResetPasswordLinkTokenInvalid()
+    {
+        $resetToken = 'lsdj579slkj5987slkj595lkj';
+        $invalidToken = 0;
+        $this->setResetPasswordData($resetToken, 'Y-m-d');
+        try {
+            $this->accountManagement->validateResetPasswordLinkToken(1, $invalidToken);
+            $this->fail('Expected exception not thrown.');
+        } catch (InputException $ie) {
+            $this->assertEquals(InputException::REQUIRED_FIELD, $ie->getRawMessage());
+            $this->assertEquals('resetPasswordLinkToken is a required field.', $ie->getMessage());
+            $this->assertEquals('resetPasswordLinkToken is a required field.', $ie->getLogMessage());
+            $this->assertEmpty($ie->getErrors());
+        }
+    }
+
+    /**
+     * @magentoDataFixture Magento/Customer/_files/customer.php
+     *
+     */
+    public function testValidateResetPasswordLinkTokenWrongUser()
+    {
+        $resetToken = 'lsdj579slkj5987slkj595lkj';
+
+        try {
+            $this->accountManagement->validateResetPasswordLinkToken(4200, $resetToken);
+            $this->fail('Expected exception not thrown.');
+        } catch (NoSuchEntityException $nsee) {
+            $this->assertEquals('No such entity with customerId = 4200', $nsee->getMessage());
+        }
+    }
+
+    /**
+     * @magentoDataFixture Magento/Customer/_files/customer.php
+     *
+     */
+    public function testValidateResetPasswordLinkTokenNull()
+    {
+        try {
+            $this->accountManagement->validateResetPasswordLinkToken(1, null);
+            $this->fail('Expected exception not thrown.');
+        } catch (InputException $ie) {
+            $this->assertEquals(InputException::REQUIRED_FIELD, $ie->getRawMessage());
+            $this->assertEquals('resetPasswordLinkToken is a required field.', $ie->getMessage());
+            $this->assertEquals('resetPasswordLinkToken is a required field.', $ie->getLogMessage());
+            $this->assertEmpty($ie->getErrors());
+        }
+    }
+
+    /**
+     * @magentoAppArea frontend
+     * @magentoDataFixture Magento/Customer/_files/customer.php
+     */
+    public function testSendPasswordResetLink()
+    {
+        $email = 'customer@example.com';
+
+        $this->accountManagement->initiatePasswordReset($email, AccountManagement::EMAIL_RESET, 1);
+    }
+
+    /**
+     * @magentoAppArea frontend
+     * @magentoDataFixture Magento/Customer/_files/customer.php
+     */
+    public function testSendPasswordResetLinkDefaultWebsite()
+    {
+        $email = 'customer@example.com';
+
+        $this->accountManagement->initiatePasswordReset($email, AccountManagement::EMAIL_RESET);
+    }
+
+    /**
+     * @magentoDataFixture Magento/Customer/_files/customer.php
+     *
+     */
+    public function testSendPasswordResetLinkBadEmailOrWebsite()
+    {
+        $email = 'foo@example.com';
+
+        try {
+            $this->accountManagement->initiatePasswordReset(
+                $email,
+                AccountManagement::EMAIL_RESET,
+                0
+            );
+            $this->fail('Expected exception not thrown.');
+        } catch (NoSuchEntityException $e) {
+            $expectedParams = [
+                'fieldName' => 'email',
+                'fieldValue' => $email,
+                'field2Name' => 'websiteId',
+                'field2Value' => 0,
+            ];
+            $this->assertEquals($expectedParams, $e->getParameters());
+        }
+    }
+
+    /**
+     * @magentoDataFixture Magento/Customer/_files/customer.php
+     */
+    public function testSendPasswordResetLinkBadEmailDefaultWebsite()
+    {
+        $email = 'foo@example.com';
+
+        try {
+            $this->accountManagement->initiatePasswordReset(
+                $email,
+                AccountManagement::EMAIL_RESET
+            );
+            $this->fail('Expected exception not thrown.');
+        } catch (NoSuchEntityException $nsee) {
+            // App area is frontend, so we expect websiteId of 1.
+            $this->assertEquals('No such entity with email = foo@example.com, websiteId = 1', $nsee->getMessage());
+        }
+    }
+
+    /**
+     * @magentoDataFixture Magento/Customer/_files/customer.php
+     */
+    public function testResetPassword()
+    {
+        $resetToken = 'lsdj579slkj5987slkj595lkj';
+        $password = 'new_password';
+
+        $this->setResetPasswordData($resetToken, 'Y-m-d');
+        $this->assertTrue($this->accountManagement->resetPassword('customer@example.com', $resetToken, $password));
+    }
+
+    /**
+     * @magentoDataFixture Magento/Customer/_files/customer.php
+     */
+    public function testResetPasswordTokenExpired()
+    {
+        $resetToken = 'lsdj579slkj5987slkj595lkj';
+        $password = 'new_password';
+
+        $this->setResetPasswordData($resetToken, '1970-01-01');
+        try {
+            $this->accountManagement->resetPassword('customer@example.com', $resetToken, $password);
+            $this->fail('Expected exception not thrown.');
+        } catch (ExpiredException $e) {
+            $this->assertEquals('Reset password token expired.', $e->getMessage());
+        }
+    }
+
+    /**
+     * @magentoDataFixture Magento/Customer/_files/customer.php
+     *
+     */
+    public function testResetPasswordTokenInvalid()
+    {
+        $resetToken = 'lsdj579slkj5987slkj595lkj';
+        $invalidToken = 0;
+        $password = 'new_password';
+
+        $this->setResetPasswordData($resetToken, 'Y-m-d');
+        try {
+            $this->accountManagement->resetPassword('customer@example.com', $invalidToken, $password);
+            $this->fail('Expected exception not thrown.');
+        } catch (InputException $ie) {
+            $this->assertEquals(InputException::REQUIRED_FIELD, $ie->getRawMessage());
+            $this->assertEquals('resetPasswordLinkToken is a required field.', $ie->getMessage());
+            $this->assertEquals('resetPasswordLinkToken is a required field.', $ie->getLogMessage());
+            $this->assertEmpty($ie->getErrors());
+        }
+    }
+
+    /**
+     * @magentoDataFixture Magento/Customer/_files/customer.php
+     */
+    public function testResetPasswordTokenWrongUser()
+    {
+        $resetToken = 'lsdj579slkj5987slkj595lkj';
+        $password = 'new_password';
+        $this->setResetPasswordData($resetToken, 'Y-m-d');
+        try {
+            $this->accountManagement->resetPassword('invalid-customer@example.com', $resetToken, $password);
+            $this->fail('Expected exception not thrown.');
+        } catch (NoSuchEntityException $nsee) {
+            $this->assertEquals(
+                'No such entity with email = invalid-customer@example.com, websiteId = 1',
+                $nsee->getMessage()
+            );
+        }
+    }
+
+    /**
+     * @magentoDataFixture Magento/Customer/_files/customer.php
+     */
+    public function testResetPasswordTokenInvalidUserEmail()
+    {
+        $resetToken = 'lsdj579slkj5987slkj595lkj';
+        $password = 'new_password';
+
+        $this->setResetPasswordData($resetToken, 'Y-m-d');
+
+        try {
+            $this->accountManagement->resetPassword('invalid', $resetToken, $password);
+            $this->fail('Expected exception not thrown.');
+        } catch (NoSuchEntityException $e) {
+            $this->assertEquals('No such entity with email = invalid, websiteId = 1', $e->getMessage());
+        }
+
+    }
+
+    /**
+     * @magentoAppArea frontend
+     * @magentoAppIsolation enabled
+     * @magentoDataFixture Magento/Customer/_files/inactive_customer.php
+     */
+    public function testResendConfirmation()
+    {
+        $this->accountManagement->resendConfirmation('customer@needAconfirmation.com', 1);
+        //TODO assert
+    }
+
+    /**
+     * @magentoAppArea frontend
+     * @magentoAppIsolation enabled
+     * @magentoDataFixture Magento/Customer/_files/inactive_customer.php
+     */
+    public function testResendConfirmationBadWebsiteId()
+    {
+        try {
+            $this->accountManagement->resendConfirmation('customer@needAconfirmation.com', 'notAWebsiteId');
+        } catch (NoSuchEntityException $nsee) {
+            $this->assertEquals(
+                'No such entity with email = customer@needAconfirmation.com, websiteId = notAWebsiteId',
+                $nsee->getMessage()
+            );
+        }
+    }
+
+    /**
+     * @magentoDataFixture Magento/Customer/_files/customer.php
+     */
+    public function testResendConfirmationNoEmail()
+    {
+        try {
+            $this->accountManagement->resendConfirmation('wrongemail@example.com', 1);
+            $this->fail('Expected exception not thrown.');
+        } catch (NoSuchEntityException $nsee) {
+            $this->assertEquals(
+                'No such entity with email = wrongemail@example.com, websiteId = 1',
+                $nsee->getMessage()
+            );
+        }
+    }
+
+    /**
+     * @magentoDataFixture Magento/Customer/_files/customer.php
+     * @expectedException \Magento\Framework\Exception\State\InvalidTransitionException
+     */
+    public function testResendConfirmationNotNeeded()
+    {
+        $this->accountManagement->resendConfirmation('customer@example.com', 1);
+    }
+
+    /**
+     * @magentoDbIsolation enabled
+     */
+    public function testCreateCustomerException()
+    {
+        $customerEntity = $this->customerBuilder->create();
+
+        try {
+            $this->accountManagement->createAccount($customerEntity);
+            $this->fail('Expected exception not thrown');
+        } catch (InputException $ie) {
+            $this->assertEquals(InputException::DEFAULT_MESSAGE, $ie->getMessage());
+            $errors = $ie->getErrors();
+            $this->assertCount(3, $errors);
+            $this->assertEquals('firstname is a required field.', $errors[0]->getLogMessage());
+            $this->assertEquals('lastname is a required field.', $errors[1]->getLogMessage());
+            $this->assertEquals('Invalid value of "" provided for the email field.', $errors[2]->getLogMessage());
+        }
+    }
+
+    /**
+     * @magentoAppArea frontend
+     * @magentoDataFixture Magento/Customer/_files/customer.php
+     * @magentoDbIsolation enabled
+     */
+    public function testCreateNonexistingCustomer()
+    {
+        $existingCustId = 1;
+        $existingCustomer = $this->customerRepository->getById($existingCustId);
+
+        $email = 'savecustomer@example.com';
+        $firstName = 'Firstsave';
+        $lastName = 'Lastsave';
+        $customerData = array_merge(
+            $existingCustomer->__toArray(),
+            [
+                'email' => $email,
+                'firstname' => $firstName,
+                'lastname' => $lastName,
+                'created_in' => 'Admin',
+                'id' => null
+            ]
+        );
+        $this->customerBuilder->populateWithArray($customerData);
+        $customerEntity = $this->customerBuilder->create();
+
+        $customerAfter = $this->accountManagement->createAccount($customerEntity, 'aPassword');
+        $this->assertGreaterThan(0, $customerAfter->getId());
+        $this->assertEquals($email, $customerAfter->getEmail());
+        $this->assertEquals($firstName, $customerAfter->getFirstname());
+        $this->assertEquals($lastName, $customerAfter->getLastname());
+        $this->assertEquals('Admin', $customerAfter->getCreatedIn());
+        $this->accountManagement->authenticate(
+            $customerAfter->getEmail(),
+            'aPassword',
+            true
+        );
+        $attributesBefore = \Magento\Framework\Api\ExtensibleDataObjectConverter::toFlatArray($existingCustomer);
+        $attributesAfter = \Magento\Framework\Api\ExtensibleDataObjectConverter::toFlatArray($customerAfter);
+        // ignore 'updated_at'
+        unset($attributesBefore['updated_at']);
+        unset($attributesAfter['updated_at']);
+        $inBeforeOnly = array_diff_assoc($attributesBefore, $attributesAfter);
+        $inAfterOnly = array_diff_assoc($attributesAfter, $attributesBefore);
+        $expectedInBefore = [
+            'email',
+            'firstname',
+            'id',
+            'lastname'
+        ];
+        sort($expectedInBefore);
+        $actualInBeforeOnly = array_keys($inBeforeOnly);
+        sort($actualInBeforeOnly);
+        $this->assertEquals($expectedInBefore, $actualInBeforeOnly);
+        $expectedInAfter = [
+            'created_in',
+            'email',
+            'firstname',
+            'id',
+            'lastname',
+            'confirmation'
+        ];
+        sort($expectedInAfter);
+        $actualInAfterOnly = array_keys($inAfterOnly);
+        sort($actualInAfterOnly);
+        $this->assertEquals($expectedInAfter, $actualInAfterOnly);
+    }
+
+    /**
+     * @magentoDbIsolation enabled
+     */
+    public function testCreateCustomerInServiceVsInModel()
+    {
+        $email = 'email@example.com';
+        $email2 = 'email2@example.com';
+        $firstname = 'Tester';
+        $lastname = 'McTest';
+        $groupId = 1;
+        $password = 'aPassword';
+
+        /** @var \Magento\Customer\Model\Customer $customerModel */
+        $customerModel = $this->objectManager->create('Magento\Customer\Model\CustomerFactory')->create();
+        $customerModel->setEmail($email)
+            ->setFirstname($firstname)
+            ->setLastname($lastname)
+            ->setGroupId($groupId)
+            ->setPassword($password);
+        $customerModel->save();
+        /** @var \Magento\Customer\Model\Customer $customerModel */
+        $savedModel = $this->objectManager
+            ->create('Magento\Customer\Model\CustomerFactory')
+            ->create()
+            ->load($customerModel->getId());
+        $dataInModel = $savedModel->getData();
+
+        $this->customerBuilder
+            ->setEmail($email2)
+            ->setFirstname($firstname)
+            ->setLastname($lastname)
+            ->setGroupId($groupId);
+        $newCustomerEntity = $this->customerBuilder->create();
+        $customerData = $this->accountManagement->createAccount($newCustomerEntity, $password);
+        $this->assertNotNull($customerData->getId());
+        $savedCustomer = $this->customerRepository->getById($customerData->getId());
+        $dataInService = \Magento\Framework\Api\SimpleDataObjectConverter::toFlatArray($savedCustomer);
+        $expectedDifferences = [
+            'created_at',
+            'updated_at',
+            'email',
+            'is_active',
+            'entity_id',
+            'entity_type_id',
+            'password_hash',
+            'attribute_set_id',
+            'disable_auto_group_change',
+            'confirmation',
+            'reward_update_notification',
+            'reward_warning_notification'
+        ];
+        foreach ($dataInModel as $key => $value) {
+            if (!in_array($key, $expectedDifferences)) {
+                if (is_null($value)) {
+                    $this->assertArrayNotHasKey($key, $dataInService);
+                } else {
+                    $this->assertEquals($value, $dataInService[$key], 'Failed asserting value for ' . $key);
+                }
+            }
+        }
+        $this->assertEquals($email2, $dataInService['email']);
+        $this->assertArrayNotHasKey('is_active', $dataInService);
+        $this->assertArrayNotHasKey('updated_at', $dataInService);
+        $this->assertArrayNotHasKey('password_hash', $dataInService);
+    }
+
+    /**
+     * @magentoDbIsolation enabled
+     */
+    public function testCreateNewCustomer()
+    {
+        $email = 'email@example.com';
+        $storeId = 1;
+        $firstname = 'Tester';
+        $lastname = 'McTest';
+        $groupId = 1;
+
+        $this->customerBuilder
+            ->setStoreId($storeId)
+            ->setEmail($email)
+            ->setFirstname($firstname)
+            ->setLastname($lastname)
+            ->setGroupId($groupId);
+        $newCustomerEntity = $this->customerBuilder->create();
+        $savedCustomer = $this->accountManagement->createAccount($newCustomerEntity, 'aPassword');
+        $this->assertNotNull($savedCustomer->getId());
+        $this->assertEquals($email, $savedCustomer->getEmail());
+        $this->assertEquals($storeId, $savedCustomer->getStoreId());
+        $this->assertEquals($firstname, $savedCustomer->getFirstname());
+        $this->assertEquals($lastname, $savedCustomer->getLastname());
+        $this->assertEquals($groupId, $savedCustomer->getGroupId());
+        $this->assertTrue(!$savedCustomer->getSuffix());
+    }
+
+    /**
+     * @magentoDbIsolation enabled
+     */
+    public function testCreateNewCustomerWithPasswordHash()
+    {
+        $email = 'email@example.com';
+        $storeId = 1;
+        $firstname = 'Tester';
+        $lastname = 'McTest';
+        $groupId = 1;
+
+        $this->customerBuilder->setStoreId($storeId)
+            ->setEmail($email)
+            ->setFirstname($firstname)
+            ->setLastname($lastname)
+            ->setGroupId($groupId);
+        $newCustomerEntity = $this->customerBuilder->create();
+        /** @var \Magento\Framework\Math\Random $mathRandom */
+        $password = $this->objectManager->get('Magento\Framework\Math\Random')->getRandomString(
+            AccountManagement::MIN_PASSWORD_LENGTH
+        );
+        /** @var \Magento\Framework\Encryption\EncryptorInterface $encryptor */
+        $encryptor = $this->objectManager->get('Magento\Framework\Encryption\EncryptorInterface');
+        $passwordHash = $encryptor->getHash($password);
+        $savedCustomer = $this->accountManagement->createAccountWithPasswordHash(
+            $newCustomerEntity,
+            $passwordHash
+        );
+        $this->assertNotNull($savedCustomer->getId());
+        $this->assertEquals($email, $savedCustomer->getEmail());
+        $this->assertEquals($storeId, $savedCustomer->getStoreId());
+        $this->assertEquals($firstname, $savedCustomer->getFirstname());
+        $this->assertEquals($lastname, $savedCustomer->getLastname());
+        $this->assertEquals($groupId, $savedCustomer->getGroupId());
+        $this->assertTrue(!$savedCustomer->getSuffix());
+        $this->assertEquals(
+            $savedCustomer->getId(),
+            $this->accountManagement->authenticate($email, $password)->getId()
+        );
+    }
+
+    /**
+     * @magentoAppArea frontend
+     * @magentoDataFixture Magento/Customer/_files/customer.php
+     */
+    public function testCreateNewCustomerFromClone()
+    {
+        $email = 'savecustomer@example.com';
+        $firstName = 'Firstsave';
+        $lastname = 'Lastsave';
+
+        $existingCustId = 1;
+        $existingCustomer = $this->customerRepository->getById($existingCustId);
+        $this->customerBuilder
+            ->populate($existingCustomer)
+            ->setEmail($email)
+            ->setFirstname($firstName)
+            ->setLastname($lastname)
+            ->setCreatedIn('Admin')
+            ->setId(null);
+        $customerEntity = $this->customerBuilder->create();
+
+        $customer = $this->accountManagement->createAccount($customerEntity, 'aPassword');
+        $this->assertNotEmpty($customer->getId());
+        $this->assertEquals($email, $customer->getEmail());
+        $this->assertEquals($firstName, $customer->getFirstname());
+        $this->assertEquals($lastname, $customer->getLastname());
+        $this->assertEquals('Admin', $customer->getCreatedIn());
+        $this->accountManagement->authenticate(
+            $customer->getEmail(),
+            'aPassword',
+            true
+        );
+    }
+
+    /**
+     * @magentoDataFixture Magento/Customer/_files/customer.php
+     */
+    public function testIsEmailAvailable()
+    {
+        $this->assertFalse($this->accountManagement->isEmailAvailable('customer@example.com', 1));
+    }
+
+    /**
+     * @magentoDataFixture Magento/Customer/_files/customer.php
+     */
+    public function testIsEmailAvailableNoWebsiteSpecified()
+    {
+        $this->assertFalse($this->accountManagement->isEmailAvailable('customer@example.com'));
+    }
+
+    /**
+     * @magentoDataFixture Magento/Customer/_files/customer.php
+     */
+    public function testIsEmailAvailableNoWebsiteSpecifiedNonExistent()
+    {
+        $this->assertTrue($this->accountManagement->isEmailAvailable('nonexistent@example.com'));
+    }
+
+    public function testIsEmailAvailableNonExistentEmail()
+    {
+        $this->assertTrue($this->accountManagement->isEmailAvailable('nonexistent@example.com', 1));
+    }
+
+    /**
+     * Set Rp data to Customer in fixture
+     *
+     * @param $resetToken
+     * @param $date
+     */
+    protected function setResetPasswordData($resetToken, $date)
+    {
+        $customerIdFromFixture = 1;
+        /** @var \Magento\Customer\Model\Customer $customerModel */
+        $customerModel = $this->objectManager->create('Magento\Customer\Model\Customer');
+        $customerModel->load($customerIdFromFixture);
+        $customerModel->setRpToken($resetToken);
+        $customerModel->setRpTokenCreatedAt(date($date));
+        $customerModel->save();
+    }
+}
diff --git a/dev/tests/integration/testsuite/Magento/Customer/Model/AddressTest.php b/dev/tests/integration/testsuite/Magento/Customer/Model/AddressTest.php
new file mode 100644
index 00000000000..c9b7c690083
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/Customer/Model/AddressTest.php
@@ -0,0 +1,91 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Customer\Model;
+
+class AddressTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var \Magento\Customer\Model\Address
+     */
+    protected $addressModel;
+
+    /**
+     * @var \Magento\Customer\Api\Data\AddressDataBuilder
+     */
+    protected $addressBuilder;
+
+    protected function setUp()
+    {
+        $this->addressModel = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
+            'Magento\Customer\Model\Address'
+        );
+        $this->addressBuilder = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
+            'Magento\Customer\Api\Data\AddressDataBuilder'
+        );
+    }
+
+    public function testUpdateDataSetDataOnEmptyModel()
+    {
+        /** @var \Magento\Customer\Model\Data\Address $addressData */
+        $addressData = $this->addressBuilder
+            ->setId(1)
+            ->setCity('CityX')
+            ->setCompany('CompanyX')
+            ->setPostcode('77777')
+            ->create();
+        $addressData = $this->addressModel->updateData($addressData)->getDataModel();
+
+        $this->assertEquals(1, $addressData->getId());
+        $this->assertEquals('CityX', $addressData->getCity());
+        $this->assertEquals('CompanyX', $addressData->getCompany());
+        $this->assertEquals('77777', $addressData->getPostcode());
+    }
+
+    public function testUpdateDataOverrideExistingData()
+    {
+        /** @var \Magento\Customer\Model\Data\Address $addressData */
+        $addressData = $this->addressBuilder
+            ->setId(2)
+            ->setCity('CityY')
+            ->setCompany('CompanyY')
+            ->setPostcode('88888')
+            ->create();
+        $this->addressModel->updateData($addressData);
+
+        /** @var \Magento\Customer\Model\Data\Address $addressData */
+        $updatedAddressData = $this->addressBuilder
+            ->setId(3)
+            ->setCity('CityZ')
+            ->setCompany('CompanyZ')
+            ->setPostcode('99999')
+            ->create();
+        $updatedAddressData = $this->addressModel->updateData($updatedAddressData)->getDataModel();
+
+        $this->assertEquals(3, $updatedAddressData->getId());
+        $this->assertEquals('CityZ', $updatedAddressData->getCity());
+        $this->assertEquals('CompanyZ', $updatedAddressData->getCompany());
+        $this->assertEquals('99999', $updatedAddressData->getPostcode());
+    }
+}
diff --git a/dev/tests/integration/testsuite/Magento/Customer/Model/CustomerTest.php b/dev/tests/integration/testsuite/Magento/Customer/Model/CustomerTest.php
new file mode 100644
index 00000000000..ca84d9e8f95
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/Customer/Model/CustomerTest.php
@@ -0,0 +1,91 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Customer\Model;
+
+class CustomerTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var \Magento\Customer\Model\Customer
+     */
+    protected $customerModel;
+
+    /**
+     * @var \Magento\Customer\Model\Data\CustomerBuilder
+     */
+    protected $customerBuilder;
+
+    protected function setUp()
+    {
+        $this->customerModel = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
+            'Magento\Customer\Model\Customer'
+        );
+        $this->customerBuilder = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
+            'Magento\Customer\Model\Data\CustomerBuilder'
+        );
+    }
+
+    public function testUpdateDataSetDataOnEmptyModel()
+    {
+        /** @var \Magento\Customer\Model\Data\Customer $customerData */
+        $customerData = $this->customerBuilder
+            ->setId(1)
+            ->setFirstname('John')
+            ->setLastname('Doe')
+            ->setDefaultBilling(1)
+            ->create();
+        $customerData = $this->customerModel->updateData($customerData)->getDataModel();
+
+        $this->assertEquals(1, $customerData->getId());
+        $this->assertEquals('John', $customerData->getFirstname());
+        $this->assertEquals('Doe', $customerData->getLastname());
+        $this->assertEquals(1, $customerData->getDefaultBilling());
+    }
+
+    public function testUpdateDataOverrideExistingData()
+    {
+        /** @var \Magento\Customer\Model\Data\Customer $customerData */
+        $customerData = $this->customerBuilder
+            ->setId(2)
+            ->setFirstname('John')
+            ->setLastname('Doe')
+            ->setDefaultBilling(1)
+            ->create();
+        $this->customerModel->updateData($customerData);
+
+        /** @var \Magento\Customer\Model\Data\Customer $customerData */
+        $updatedCustomerData = $this->customerBuilder
+            ->setId(3)
+            ->setFirstname('Jane')
+            ->setLastname('Smith')
+            ->setDefaultBilling(0)
+            ->create();
+        $updatedCustomerData = $this->customerModel->updateData($updatedCustomerData)->getDataModel();
+
+        $this->assertEquals(3, $updatedCustomerData->getId());
+        $this->assertEquals('Jane', $updatedCustomerData->getFirstname());
+        $this->assertEquals('Smith', $updatedCustomerData->getLastname());
+        $this->assertEquals(0, $updatedCustomerData->getDefaultBilling());
+    }
+}
diff --git a/dev/tests/integration/testsuite/Magento/Customer/Model/GroupManagementTest.php b/dev/tests/integration/testsuite/Magento/Customer/Model/GroupManagementTest.php
new file mode 100644
index 00000000000..09a0277d7a0
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/Customer/Model/GroupManagementTest.php
@@ -0,0 +1,138 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Customer\Model;
+
+use Magento\TestFramework\Helper\Bootstrap;
+use Magento\Store\Model\ScopeInterface;
+
+/**
+ * Test for Magento\Customer\Model\GroupManagement
+ */
+class GroupManagementTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var \Magento\Framework\ObjectManager
+     */
+    protected $objectManager;
+
+    /**
+     * @var \Magento\Customer\Api\GroupManagementInterface
+     */
+    protected $groupManagement;
+
+    protected function setUp()
+    {
+        $this->objectManager = Bootstrap::getObjectManager();
+        $this->groupManagement = $this->objectManager->get('Magento\Customer\Api\GroupManagementInterface');
+    }
+
+    /**
+     * @param $testGroup
+     * @param $storeId
+     *
+     * @dataProvider getDefaultGroupDataProvider
+     */
+    public function testGetDefaultGroupWithStoreId($testGroup, $storeId)
+    {
+        $this->assertDefaultGroupMatches($testGroup, $storeId);
+    }
+
+    /**
+     * @magentoDataFixture Magento/Core/_files/second_third_store.php
+     */
+    public function testGetDefaultGroupWithNonDefaultStoreId()
+    {        /** @var \Magento\Framework\StoreManagerInterface  $storeManager */
+        $storeManager = Bootstrap::getObjectManager()->get('Magento\Framework\StoreManagerInterface');
+        $nonDefaultStore = $storeManager->getStore('secondstore');
+        $nonDefaultStoreId = $nonDefaultStore->getId();
+        /** @var \Magento\Framework\App\MutableScopeConfig $scopeConfig */
+        $scopeConfig = $this->objectManager->get('Magento\Framework\App\MutableScopeConfig');
+        $scopeConfig->setValue(
+            \Magento\Customer\Model\GroupManagement::XML_PATH_DEFAULT_ID,
+            2,
+            ScopeInterface::SCOPE_STORE,
+            'secondstore'
+        );
+        $testGroup = ['id' => 2, 'code' => 'Wholesale', 'tax_class_id' => 3, 'tax_class_name' => 'Retail Customer'];
+        $this->assertDefaultGroupMatches($testGroup, $nonDefaultStoreId);
+    }
+
+    /**
+     * @expectedException \Magento\Framework\Exception\NoSuchEntityException
+     */
+    public function testGetDefaultGroupWithInvalidStoreId()
+    {
+        $storeId = 1234567;
+        $this->groupManagement->getDefaultGroup($storeId);
+    }
+
+    public function testIsReadonlyWithGroupId()
+    {
+        $testGroup = ['id' => 3, 'code' => 'General', 'tax_class_id' => 3, 'tax_class_name' => 'Retail Customer'];
+        $this->assertEquals(true, $this->groupManagement->isReadonly($testGroup['id']));
+    }
+
+    /**
+     * @expectedException \Magento\Framework\Exception\NoSuchEntityException
+     */
+    public function testIsReadonlyWithInvalidGroupId()
+    {
+        $testGroup = ['id' => 4, 'code' => 'General', 'tax_class_id' => 3, 'tax_class_name' => 'Retail Customer'];
+        $this->groupManagement->isReadonly($testGroup['id']);
+    }
+
+    /**
+     * @return array
+     */
+    public function getDefaultGroupDataProvider()
+    {
+        /** @var \Magento\Framework\StoreManagerInterface  $storeManager */
+        $storeManager = Bootstrap::getObjectManager()->get('Magento\Framework\StoreManagerInterface');
+        $defaultStoreId = $storeManager->getStore()->getId();
+        return [
+            'no store id' => [
+                ['id' => 1, 'code' => 'General', 'tax_class_id' => 3, 'tax_class_name' => 'Retail Customer'],
+                null
+            ],
+            'default store id' => [
+                ['id' => 1, 'code' => 'General', 'tax_class_id' => 3, 'tax_class_name' => 'Retail Customer'],
+                $defaultStoreId
+            ],
+        ];
+    }
+
+    /**
+     * @param $testGroup
+     * @param $storeId
+     */
+    private function assertDefaultGroupMatches($testGroup, $storeId)
+    {
+        $group = $this->groupManagement->getDefaultGroup($storeId);
+        $this->assertEquals($testGroup['id'], $group->getId());
+        $this->assertEquals($testGroup['code'], $group->getCode());
+        $this->assertEquals($testGroup['tax_class_id'], $group->getTaxClassId());
+        $this->assertEquals($testGroup['tax_class_name'], $group->getTaxClassName());
+    }
+}
diff --git a/dev/tests/integration/testsuite/Magento/Customer/Model/GroupTest.php b/dev/tests/integration/testsuite/Magento/Customer/Model/GroupTest.php
index 696fff26e4e..3ffafc0f8b2 100644
--- a/dev/tests/integration/testsuite/Magento/Customer/Model/GroupTest.php
+++ b/dev/tests/integration/testsuite/Magento/Customer/Model/GroupTest.php
@@ -21,6 +21,7 @@
  * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
+
 namespace Magento\Customer\Model;
 
 class GroupTest extends \PHPUnit_Framework_TestCase
@@ -28,19 +29,27 @@ class GroupTest extends \PHPUnit_Framework_TestCase
     /**
      * @var \Magento\Customer\Model\Group
      */
-    protected $_model;
+    protected $groupModel;
+
+    /**
+     * @var \Magento\Customer\Api\Data\GroupDataBuilder
+     */
+    protected $groupBuilder;
 
     protected function setUp()
     {
-        $this->_model = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
+        $this->groupModel = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
             'Magento\Customer\Model\Group'
         );
+        $this->groupBuilder = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
+            'Magento\Customer\Api\Data\GroupDataBuilder'
+        );
     }
 
     public function testCRUD()
     {
-        $this->_model->setCode('test');
-        $crud = new \Magento\TestFramework\Entity($this->_model, array('customer_group_code' => uniqid()));
+        $this->groupModel->setCode('test');
+        $crud = new \Magento\TestFramework\Entity($this->groupModel, array('customer_group_code' => uniqid()));
         $crud->testCrud();
     }
 }
diff --git a/dev/tests/integration/testsuite/Magento/Customer/Model/Resource/AddressRepositoryTest.php b/dev/tests/integration/testsuite/Magento/Customer/Model/Resource/AddressRepositoryTest.php
new file mode 100644
index 00000000000..dc1a2d609e2
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/Customer/Model/Resource/AddressRepositoryTest.php
@@ -0,0 +1,238 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Customer\Model\Resource;
+
+use Magento\Framework\Exception\InputException;
+use Magento\Framework\Exception\NoSuchEntityException;
+use Magento\Customer\Service\V1\Data\AddressConverter;
+use Magento\TestFramework\Helper\Bootstrap;
+
+/**
+ * Integration test for service layer \Magento\Customer\Service\V1\CustomerAddressService
+ *
+ * @SuppressWarnings(PHPMD.TooManyMethods)
+ * @SuppressWarnings(PHPMD.ExcessivePublicCount)
+ */
+class AddressRepositoryTest extends \PHPUnit_Framework_TestCase
+{
+    /** @var \Magento\Customer\Api\AddressRepositoryInterface */
+    private $_service;
+
+    /** @var \Magento\Framework\ObjectManager */
+    private $_objectManager;
+
+    /** @var \Magento\Customer\Service\V1\Data\Address[] */
+    private $_expectedAddresses;
+
+    /** @var \Magento\Customer\Service\V1\Data\AddressBuilder */
+    private $_addressBuilder;
+
+    protected function setUp()
+    {
+        $this->_objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
+        $this->_service = $this->_objectManager->create('Magento\Customer\Api\AddressRepositoryInterface');
+
+        $this->_addressBuilder = $this->_objectManager->create('Magento\Customer\Model\Data\AddressBuilder');
+
+        $builder = $this->_objectManager->create('Magento\Customer\Model\Data\RegionBuilder');
+        $region = $builder->setRegionCode('AL')
+            ->setRegion('Alabama')
+            ->setRegionId(1)
+            ->create();
+
+        $this->_addressBuilder
+            ->setId(1)
+            ->setCountryId('US')
+            ->setCustomerId(1)
+            ->setPostcode('75477')
+            ->setRegion($region)
+            ->setStreet(array('Green str, 67'))
+            ->setTelephone('3468676')
+            ->setCity('CityM')
+            ->setFirstname('John')
+            ->setLastname('Smith')
+            ->setCompany('CompanyName');
+        $address = $this->_addressBuilder->create();
+
+        $this->_addressBuilder
+            ->setId(2)
+            ->setCustomerId(2)
+            ->setCountryId('US')
+            ->setCustomerId(1)
+            ->setPostcode('47676')
+            ->setRegion($region)
+            ->setStreet(array('Black str, 48'))
+            ->setCity('CityX')
+            ->setTelephone('3234676')
+            ->setFirstname('John')
+            ->setLastname('Smith');
+
+        $address2 = $this->_addressBuilder->create();
+
+        $this->_expectedAddresses = array($address, $address2);
+    }
+
+    protected function tearDown()
+    {
+        $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
+        /** @var \Magento\Customer\Model\AddressRegistry $addressRegistry */
+        $customerRegistry = $objectManager->get('Magento\Customer\Model\CustomerRegistry');
+        $customerRegistry->remove(1);
+    }
+
+
+    /**
+     * @magentoDataFixture  Magento/Customer/_files/customer.php
+     * @magentoDataFixture  Magento/Customer/_files/customer_address.php
+     * @magentoAppIsolation enabled
+     */
+    public function testSaveNewAddress()
+    {
+        $this->markTestSkipped('Should be fixed in scope of MAGETWO-29651');
+        $this->_addressBuilder->populate($this->_expectedAddresses[1])->setId(null);
+        $proposedAddress = $this->_addressBuilder->create();
+        $customerId = 1;
+        $createdAddress = $this->_service->save($proposedAddress);
+        $addresses = $this->_service->get($customerId);
+        $this->assertEquals($this->_expectedAddresses[0], $addresses[0]);
+        $expectedNewAddressBuilder = $this->_addressBuilder->populate($this->_expectedAddresses[1]);
+        $expectedNewAddressBuilder->setId($addresses[1]->getId());
+        $expectedNewAddress = $expectedNewAddressBuilder->create();
+        $this->assertEquals(
+            AddressConverter::toFlatArray($expectedNewAddress),
+            AddressConverter::toFlatArray($addresses[1])
+        );
+    }
+
+    /**
+     * @magentoDataFixture  Magento/Customer/_files/customer.php
+     * @magentoDataFixture  Magento/Customer/_files/customer_address.php
+     * @magentoAppIsolation enabled
+     */
+    public function testGetAddress()
+    {
+        $this->markTestSkipped('Should be fixed in scope of MAGETWO-29651');
+        //$address = $this->_service->get(1);
+        //$addresses = $this->_service->get($customerId);
+        //$this->assertEquals($this->_expectedAddresses[0], $addresses[0]);
+        //$expectedNewAddressBuilder = $this->_addressBuilder->populate($this->_expectedAddresses[1]);
+        //$expectedNewAddressBuilder->setId($addresses[1]->getId());
+        //$expectedNewAddress = $expectedNewAddressBuilder->create();
+        //$this->assertEquals(
+        //    AddressConverter::toFlatArray($expectedNewAddress),
+        //    AddressConverter::toFlatArray($addresses[1])
+        //);
+    }
+
+    /**
+     * @param \Magento\Framework\Api\Filter[] $filters
+     * @param \Magento\Framework\Api\Filter[] $filterGroup
+     * @param array $expectedResult array of expected results indexed by ID
+     *
+     * @dataProvider searchAddressDataProvider
+     *
+     * @magentoDataFixture  Magento/Customer/_files/customer.php
+     * @magentoDataFixture  Magento/Customer/_files/customer_two_addresses.php
+     * @magentoAppIsolation enabled
+     */
+    public function testSearchAddresses($filters, $filterGroup, $expectedResult)
+    {
+        /** @var \Magento\Framework\Api\SearchCriteriaBuilder $searchBuilder */
+        $searchBuilder = Bootstrap::getObjectManager()->create(
+            'Magento\Framework\Api\SearchCriteriaBuilder'
+        );
+        foreach ($filters as $filter) {
+            $searchBuilder->addFilter([$filter]);
+        }
+        if (!is_null($filterGroup)) {
+            $searchBuilder->addFilter($filterGroup);
+        }
+
+        $searchResults = $this->_service->getList($searchBuilder->create());
+
+        $this->assertEquals(count($expectedResult), $searchResults->getTotalCount());
+
+        /** @var $item Data\CustomerDetails */
+        foreach ($searchResults->getItems() as $item) {
+            $this->assertEquals(
+                $expectedResult[$item->getId()]['city'],
+                $item->getCity()
+            );
+            $this->assertEquals(
+                $expectedResult[$item->getId()]['postcode'],
+                $item->getPostcode()
+            );
+            $this->assertEquals(
+                $expectedResult[$item->getId()]['firstname'],
+                $item->getFirstname()
+            );
+            unset($expectedResult[$item->getId()]);
+        }
+    }
+
+    public function searchAddressDataProvider()
+    {
+        $builder = Bootstrap::getObjectManager()->create('Magento\Framework\Api\FilterBuilder');
+        return [
+            'Address with postcode 75477' => [
+                [$builder->setField('postcode')->setValue('75477')->create()],
+                null,
+                [1 => ['city' => 'CityM', 'postcode' => 75477, 'firstname' => 'John']]
+            ],
+            'Address with city CityM' => [
+                [$builder->setField('city')->setValue('CityM')->create()],
+                null,
+                [1 => ['city' => 'CityM', 'postcode' => 75477, 'firstname' => 'John']]
+            ],
+            'Addresses with firstname John' => [
+                [$builder->setField('firstname')->setValue('John')->create()],
+                null,
+                [
+                    1 => ['city' => 'CityM', 'postcode' => 75477, 'firstname' => 'John'],
+                    2 => ['city' => 'CityX', 'postcode' => 47676, 'firstname' => 'John']
+                ]
+            ],
+            'Addresses with postcode of either 75477 or 47676' => [
+                [],
+                [
+                    $builder->setField('postcode')->setValue('75477')->create(),
+                    $builder->setField('postcode')->setValue('47676')->create()
+                ],
+                [
+                    1 => ['city' => 'CityM', 'postcode' => 75477, 'firstname' => 'John'],
+                    2 => ['city' => 'CityX', 'postcode' => 47676, 'firstname' => 'John']
+                ]
+            ],
+            'Addresses with postcode greater than 0' => [
+                [$builder->setField('postcode')->setValue('0')->setConditionType('gt')->create()],
+                null,
+                [
+                    1 => ['city' => 'CityM', 'postcode' => 75477, 'firstname' => 'John'],
+                    2 => ['city' => 'CityX', 'postcode' => 47676, 'firstname' => 'John']
+                ]
+            ]
+        ];
+    }
+}
diff --git a/dev/tests/integration/testsuite/Magento/Customer/Model/Resource/CustomerRepositoryTest.php b/dev/tests/integration/testsuite/Magento/Customer/Model/Resource/CustomerRepositoryTest.php
new file mode 100644
index 00000000000..ffda1219437
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/Customer/Model/Resource/CustomerRepositoryTest.php
@@ -0,0 +1,260 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Customer\Model\Resource;
+
+use Magento\TestFramework\Helper\Bootstrap;
+use Magento\Framework\Api\SearchCriteriaInterface;
+
+class CustomerRepositoryTest extends \PHPUnit_Framework_TestCase
+{
+    /** @var \Magento\Customer\Api\CustomerRepositoryInterface */
+    private $service;
+
+    /** @var \Magento\Framework\ObjectManager */
+    private $objectManager;
+
+    /** @var \Magento\Customer\Api\Data\CustomerDataBuilder */
+    private $customerBuilder;
+
+    protected function setUp()
+    {
+        $this->objectManager = Bootstrap::getObjectManager();
+        $this->service = $this->objectManager->create('Magento\Customer\Api\CustomerRepositoryInterface');
+        $this->customerBuilder = $this->objectManager->create('Magento\Customer\Api\Data\CustomerDataBuilder');
+    }
+
+    /**
+     * @magentoDbIsolation enabled
+     */
+    public function testCreateCustomerNewThenUpdateFirstName()
+    {
+        /** Create a new customer */
+        $email = 'first_last@example.com';
+        $storeId = 1;
+        $firstname = 'Tester';
+        $lastname = 'McTest';
+        $groupId = 1;
+        $this->customerBuilder
+            ->setStoreId($storeId)
+            ->setEmail($email)
+            ->setFirstname($firstname)
+            ->setLastname($lastname)
+            ->setGroupId($groupId);
+        $newCustomerEntity = $this->customerBuilder->create();
+        $customer = $this->service->save($newCustomerEntity);
+
+        /** Update customer */
+        $this->customerBuilder->populate($customer);
+        $newCustomerFirstname = 'Tested';
+        $this->customerBuilder->setFirstname($newCustomerFirstname);
+        $updatedCustomer = $this->customerBuilder->create();
+        $this->service->save($updatedCustomer);
+
+        /** Check if update was successful */
+        $customer = $this->service->get($customer->getEmail());
+        $this->assertEquals($newCustomerFirstname, $customer->getFirstname());
+        $this->assertEquals($lastname, $customer->getLastname());
+    }
+
+    /**
+     * @magentoDbIsolation enabled
+     */
+    public function testCreateNewCustomer()
+    {
+        $email = 'email@example.com';
+        $storeId = 1;
+        $firstname = 'Tester';
+        $lastname = 'McTest';
+        $groupId = 1;
+
+        $this->customerBuilder
+            ->setStoreId($storeId)
+            ->setEmail($email)
+            ->setFirstname($firstname)
+            ->setLastname($lastname)
+            ->setGroupId($groupId);
+        $newCustomerEntity = $this->customerBuilder->create();
+        $savedCustomer = $this->service->save($newCustomerEntity);
+        $this->assertNotNull($savedCustomer->getId());
+        $this->assertEquals($email, $savedCustomer->getEmail());
+        $this->assertEquals($storeId, $savedCustomer->getStoreId());
+        $this->assertEquals($firstname, $savedCustomer->getFirstname());
+        $this->assertEquals($lastname, $savedCustomer->getLastname());
+        $this->assertEquals($groupId, $savedCustomer->getGroupId());
+        $this->assertTrue(!$savedCustomer->getSuffix());
+    }
+
+    /**
+     * @param \Magento\Framework\Api\Filter[] $filters
+     * @param \Magento\Framework\Api\Filter[] $filterGroup
+     * @param array $expectedResult array of expected results indexed by ID
+     *
+     * @dataProvider searchCustomersDataProvider
+     *
+     * @magentoDataFixture Magento/Customer/_files/three_customers.php
+     * @magentoDbIsolation enabled
+     */
+    public function testSearchCustomers($filters, $filterGroup, $expectedResult)
+    {
+        /** @var \Magento\Framework\Api\SearchCriteriaDataBuilder $searchBuilder */
+        $searchBuilder = Bootstrap::getObjectManager()
+            ->create('Magento\Framework\Api\SearchCriteriaDataBuilder');
+        foreach ($filters as $filter) {
+            $searchBuilder->addFilter([$filter]);
+        }
+        if (!is_null($filterGroup)) {
+            $searchBuilder->addFilter($filterGroup);
+        }
+
+        $searchResults = $this->service->getList($searchBuilder->create());
+
+        $this->assertEquals(count($expectedResult), $searchResults->getTotalCount());
+
+        foreach ($searchResults->getItems() as $item) {
+            $this->assertEquals($expectedResult[$item->getId()]['email'], $item->getEmail());
+            $this->assertEquals($expectedResult[$item->getId()]['firstname'], $item->getFirstname());
+            unset($expectedResult[$item->getId()]);
+        }
+    }
+
+    public function searchCustomersDataProvider()
+    {
+        $builder = Bootstrap::getObjectManager()->create('\Magento\Framework\Api\FilterBuilder');
+        return [
+            'Customer with specific email' => [
+                [$builder->setField('email')->setValue('customer@search.example.com')->create()],
+                null,
+                [1 => ['email' => 'customer@search.example.com', 'firstname' => 'Firstname']]
+            ],
+            'Customer with specific first name' => [
+                [$builder->setField('firstname')->setValue('Firstname2')->create()],
+                null,
+                [2 => ['email' => 'customer2@search.example.com', 'firstname' => 'Firstname2']]
+            ],
+            'Customers with either email' => [
+                [],
+                [
+                    $builder->setField('firstname')->setValue('Firstname')->create(),
+                    $builder->setField('firstname')->setValue('Firstname2')->create()
+                ],
+                [
+                    1 => ['email' => 'customer@search.example.com', 'firstname' => 'Firstname'],
+                    2 => ['email' => 'customer2@search.example.com', 'firstname' => 'Firstname2']
+                ]
+            ],
+            'Customers created since' => [
+                [
+                    $builder->setField('created_at')->setValue('2011-02-28 15:52:26')
+                        ->setConditionType('gt')->create()
+                ],
+                [],
+                [
+                    1 => ['email' => 'customer@search.example.com', 'firstname' => 'Firstname'],
+                    3 => ['email' => 'customer3@search.example.com', 'firstname' => 'Firstname3']
+                ]
+            ]
+        ];
+    }
+
+    /**
+     * Test ordering
+     *
+     * @magentoDataFixture Magento/Customer/_files/three_customers.php
+     * @magentoDbIsolation enabled
+     */
+    public function testSearchCustomersOrder()
+    {
+        /** @var \Magento\Framework\Api\SearchCriteriaDataBuilder $searchBuilder */
+        $objectManager = Bootstrap::getObjectManager();
+        $searchBuilder = $objectManager->create('Magento\Framework\Api\SearchCriteriaDataBuilder');
+
+        // Filter for 'firstname' like 'First'
+        $filterBuilder = $objectManager->create('\Magento\Framework\Api\FilterBuilder');
+        $firstnameFilter = $filterBuilder->setField('firstname')
+            ->setConditionType('like')
+            ->setValue('First%')
+            ->create();
+        $searchBuilder->addFilter([$firstnameFilter]);
+        // Search ascending order
+        $sortOrderBuilder = $objectManager->create('\Magento\Framework\Api\SortOrderBuilder');
+        $sortOrder = $sortOrderBuilder
+            ->setField('lastname')
+            ->setDirection(SearchCriteriaInterface::SORT_ASC)
+            ->create();
+        $searchBuilder->addSortOrder($sortOrder);
+        $searchResults = $this->service->getList($searchBuilder->create());
+        $this->assertEquals(3, $searchResults->getTotalCount());
+        $this->assertEquals('Lastname', $searchResults->getItems()[0]->getLastname());
+        $this->assertEquals('Lastname2', $searchResults->getItems()[1]->getLastname());
+        $this->assertEquals('Lastname3', $searchResults->getItems()[2]->getLastname());
+
+        // Search descending order
+        $sortOrder = $sortOrderBuilder
+            ->setField('lastname')
+            ->setDirection(SearchCriteriaInterface::SORT_DESC)
+            ->create();
+        $searchBuilder->addSortOrder($sortOrder);
+        $searchResults = $this->service->getList($searchBuilder->create());
+        $this->assertEquals('Lastname3', $searchResults->getItems()[0]->getLastname());
+        $this->assertEquals('Lastname2', $searchResults->getItems()[1]->getLastname());
+        $this->assertEquals('Lastname', $searchResults->getItems()[2]->getLastname());
+    }
+
+    /**
+     * @magentoAppArea adminhtml
+     * @magentoDataFixture Magento/Customer/_files/customer.php
+     * @magentoAppIsolation enabled
+     */
+    public function testDelete()
+    {
+        $fixtureCustomerEmail = 'customer@example.com';
+        $customer = $this->service->get($fixtureCustomerEmail);
+        $this->service->delete($customer);
+        /** Ensure that customer was deleted */
+        $this->setExpectedException(
+            'Magento\Framework\Exception\NoSuchEntityException',
+            'No such entity with email = customer@example.com, websiteId = 1'
+        );
+        $this->service->get($fixtureCustomerEmail);
+    }
+
+    /**
+     * @magentoAppArea adminhtml
+     * @magentoDataFixture Magento/Customer/_files/customer.php
+     * @magentoAppIsolation enabled
+     */
+    public function testDeleteById()
+    {
+        $fixtureCustomerEmail = 'customer@example.com';
+        $fixtureCustomerId = 1;
+        $this->service->deleteById($fixtureCustomerId);
+        /** Ensure that customer was deleted */
+        $this->setExpectedException(
+            'Magento\Framework\Exception\NoSuchEntityException',
+            'No such entity with email = customer@example.com, websiteId = 1'
+        );
+        $this->service->get($fixtureCustomerEmail);
+    }
+}
diff --git a/dev/tests/integration/testsuite/Magento/Customer/Model/Resource/GroupRepositoryTest.php b/dev/tests/integration/testsuite/Magento/Customer/Model/Resource/GroupRepositoryTest.php
new file mode 100644
index 00000000000..e74849aa599
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/Customer/Model/Resource/GroupRepositoryTest.php
@@ -0,0 +1,264 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Customer\Model\Resource;
+
+use Magento\Customer\Api\Data\GroupInterface;
+
+/**
+ * Integration test for \Magento\Customer\Model\Resource\GroupRepository
+ */
+class GroupRepositoryTest extends \PHPUnit_Framework_TestCase
+{
+    /** The group id of the "NOT LOGGED IN" group */
+    const NOT_LOGGED_IN_GROUP_ID = 0;
+
+    /** @var \Magento\Customer\Api\GroupRepositoryInterface */
+    private $groupRepository;
+
+    /** @var \Magento\Framework\ObjectManager */
+    private $objectManager;
+
+    /** @var \Magento\Customer\Model\Data\GroupBuilder */
+    private $groupBuilder;
+
+    /** @var  \Magento\Framework\Api\SearchCriteriaDataBuilder */
+    private $searchCriteriaBuilder;
+
+    protected function setUp()
+    {
+        $this->objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
+        $this->groupRepository = $this->objectManager->create('Magento\Customer\Api\GroupRepositoryInterface');
+        $this->groupBuilder = $this->objectManager->create('Magento\Customer\Api\Data\GroupDataBuilder');
+        $this->searchCriteriaBuilder = $this->objectManager->create('Magento\Framework\Api\SearchCriteriaDataBuilder');
+    }
+
+    /**
+     * @param array $testGroup
+     * @dataProvider getGroupsDataProvider
+     */
+    public function testGetGroup($testGroup)
+    {
+        $group = $this->groupRepository->get($testGroup[GroupInterface::ID]);
+        $this->assertEquals($testGroup[GroupInterface::ID], $group->getId());
+        $this->assertEquals($testGroup[GroupInterface::CODE], $group->getCode());
+        $this->assertEquals($testGroup[GroupInterface::TAX_CLASS_ID], $group->getTaxClassId());
+    }
+
+    /**
+     * @return array
+     */
+    public function getGroupsDataProvider()
+    {
+        return [
+            [[GroupInterface::ID => 0, GroupInterface::CODE => 'NOT LOGGED IN', GroupInterface::TAX_CLASS_ID => 3]],
+            [[GroupInterface::ID => 1, GroupInterface::CODE => 'General', GroupInterface::TAX_CLASS_ID => 3]],
+            [[GroupInterface::ID => 2, GroupInterface::CODE => 'Wholesale', GroupInterface::TAX_CLASS_ID => 3]],
+            [[GroupInterface::ID => 3, GroupInterface::CODE => 'Retailer', GroupInterface::TAX_CLASS_ID => 3]],
+        ];
+    }
+
+    /**
+     * @expectedException \Magento\Framework\Exception\NoSuchEntityException
+     * @expectedExceptionMessage No such entity with id = 9999
+     */
+    public function testGetGroupException()
+    {
+        $this->groupRepository->get(9999);
+    }
+
+    /**
+     * @magentoDbIsolation enabled
+     */
+    public function testCreateGroup()
+    {
+        $group = $this->groupBuilder->setId(null)->setCode('Create Group')->setTaxClassId(3)->create();
+        $groupId = $this->groupRepository->save($group)->getId();
+        $this->assertNotNull($groupId);
+
+        $newGroup = $this->groupRepository->get($groupId);
+        $this->assertEquals($groupId, $newGroup->getId());
+        $this->assertEquals($group->getCode(), $newGroup->getCode());
+        $this->assertEquals($group->getTaxClassId(), $newGroup->getTaxClassId());
+    }
+
+    /**
+     * @magentoDbIsolation enabled
+     */
+    public function testCreateGroupDefaultTaxClass()
+    {
+        $group = $this->groupBuilder->setId(null)->setCode('Create Group')->setTaxClassId(null)->create();
+        $groupId = $this->groupRepository->save($group)->getId();
+        $this->assertNotNull($groupId);
+
+        $newGroup = $this->groupRepository->get($groupId);
+        $this->assertEquals($groupId, $newGroup->getId());
+        $this->assertEquals($group->getCode(), $newGroup->getCode());
+        $this->assertEquals(GroupRepository::DEFAULT_TAX_CLASS_ID, $newGroup->getTaxClassId());
+    }
+
+    /**
+     * @magentoDbIsolation enabled
+     */
+    public function testUpdateGroup()
+    {
+        $group = $this->groupBuilder->setId(null)->setCode('New Group')->setTaxClassId(3)->create();
+        $groupId = $this->groupRepository->save($group)->getId();
+        $this->assertNotNull($groupId);
+
+        $newGroup = $this->groupRepository->get($groupId);
+        $this->assertEquals($groupId, $newGroup->getId());
+        $this->assertEquals($group->getCode(), $newGroup->getCode());
+        $this->assertEquals($group->getTaxClassId(), $newGroup->getTaxClassId());
+
+        $updates = $this->groupBuilder->setId($groupId)->setCode('Updated Group')->setTaxClassId(3)->create();
+        $this->assertNotNull($this->groupRepository->save($updates));
+        $updatedGroup = $this->groupRepository->get($groupId);
+        $this->assertEquals($updates->getCode(), $updatedGroup->getCode(), 'Code not updated.');
+        $this->assertEquals($updates->getTaxClassId(), $updatedGroup->getTaxClassId(), 'Tax Class should not change.');
+    }
+
+    /**
+     * @magentoDbIsolation enabled
+     * @expectedException \Magento\Framework\Exception\InputException
+     * @expectedExceptionMessage Invalid value of "9999" provided for the taxClassId field.
+     */
+    public function testUpdateGroupException()
+    {
+        $group = $this->groupBuilder->setId(null)->setCode('New Group')->setTaxClassId(3)->create();
+        $groupId = $this->groupRepository->save($group)->getId();
+        $this->assertNotNull($groupId);
+
+        $newGroup = $this->groupRepository->get($groupId);
+        $this->assertEquals($groupId, $newGroup->getId());
+        $this->assertEquals($group->getCode(), $newGroup->getCode());
+        $this->assertEquals($group->getTaxClassId(), $newGroup->getTaxClassId());
+
+        $updates = $this->groupBuilder->setId($groupId)->setCode('Updated Group')->setTaxClassId(9999)->create();
+        $this->groupRepository->save($updates);
+        $updatedGroup = $this->groupRepository->get($groupId);
+        $this->assertEquals($updates->getCode(), $updatedGroup->getCode());
+        $this->assertEquals($updates->getTaxClassId(), $updatedGroup->getTaxClassId());
+    }
+
+    /**
+     * @magentoDbIsolation enabled
+     */
+    public function testDelete()
+    {
+        $group = $this->groupBuilder->setId(null)->setCode('New Group')->setTaxClassId(3)->create();
+        $groupId = $this->groupRepository->save($group)->getId();
+        $newGroup = $this->groupRepository->get($groupId);
+        $this->assertTrue($this->groupRepository->delete($newGroup));
+    }
+
+    /**
+     * @magentoDbIsolation enabled
+     */
+    public function testDeleteById()
+    {
+        $group = $this->groupBuilder->setId(null)->setCode('New Group')->setTaxClassId(3)->create();
+        $groupId = $this->groupRepository->save($group)->getId();
+        $this->assertTrue($this->groupRepository->deleteById($groupId));
+    }
+
+    /**
+     * @expectedException \Magento\Framework\Exception\NoSuchEntityException
+     * @expectedExceptionMessage No such entity with id = 9999
+     */
+    public function testDeleteDoesNotExist()
+    {
+        $this->assertFalse($this->groupRepository->deleteById(9999));
+    }
+
+    /**
+     * @param array $filters
+     * @param array $filterGroup
+     * @param array $expectedResult array of expected results indexed by ID
+     *
+     * @dataProvider searchGroupsDataProvider
+     */
+    public function testGetList($filters, $filterGroup, $expectedResult)
+    {
+        foreach ($filters as $filter) {
+            $this->searchCriteriaBuilder->addFilter([$filter]);
+        }
+        if (!is_null($filterGroup)) {
+            $this->searchCriteriaBuilder->addFilter($filterGroup);
+        }
+
+        $searchResults = $this->groupRepository->getList($this->searchCriteriaBuilder->create());
+
+        /** @var $item GroupInterface */
+        foreach ($searchResults->getItems() as $item) {
+            $this->assertEquals($expectedResult[$item->getId()][GroupInterface::CODE], $item->getCode());
+            $this->assertEquals($expectedResult[$item->getId()][GroupInterface::TAX_CLASS_ID], $item->getTaxClassId());
+            unset($expectedResult[$item->getId()]);
+        }
+    }
+
+    public function searchGroupsDataProvider()
+    {
+        $builder = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()
+            ->create('Magento\Framework\Api\FilterBuilder');
+        return [
+            'eq' => [
+                [$builder->setField(GroupInterface::CODE)->setValue('General')->create()],
+                null,
+                [1 => [GroupInterface::CODE => 'General', GroupInterface::TAX_CLASS_ID => 3]]
+            ],
+            'and' => [
+                [
+                    $builder->setField(GroupInterface::CODE)->setValue('General')->create(),
+                    $builder->setField(GroupInterface::TAX_CLASS_ID)->setValue('3')->create(),
+                    $builder->setField(GroupInterface::ID)->setValue('1')->create(),
+                ],
+                [],
+                [1 => [GroupInterface::CODE => 'General', GroupInterface::TAX_CLASS_ID => 3]]
+            ],
+            'or' => [
+                [],
+                [
+                    $builder->setField(GroupInterface::CODE)->setValue('General')->create(),
+                    $builder->setField(GroupInterface::CODE)->setValue('Wholesale')->create(),
+                ],
+                [
+                    1 => [GroupInterface::CODE => 'General', GroupInterface::TAX_CLASS_ID => 3],
+                    2 => [GroupInterface::CODE => 'Wholesale', GroupInterface::TAX_CLASS_ID => 3]
+                ]
+            ],
+            'like' => [
+                [
+                    $builder->setField(GroupInterface::CODE)->setValue('er')->setConditionType('like')
+                        ->create()
+                ],
+                [],
+                [
+                    1 => [GroupInterface::CODE => 'General', GroupInterface::TAX_CLASS_ID => 3],
+                    3 => [GroupInterface::CODE => 'Retailer', GroupInterface::TAX_CLASS_ID => 3]
+                ]
+            ],
+        ];
+    }
+}
diff --git a/dev/tests/integration/testsuite/Magento/Customer/Model/VisitorTest.php b/dev/tests/integration/testsuite/Magento/Customer/Model/VisitorTest.php
index f7ec83eb8bd..0e248e1f8e4 100644
--- a/dev/tests/integration/testsuite/Magento/Customer/Model/VisitorTest.php
+++ b/dev/tests/integration/testsuite/Magento/Customer/Model/VisitorTest.php
@@ -76,6 +76,40 @@ class VisitorTest extends \PHPUnit_Framework_TestCase
         $this->assertNull($visitor->getDoCustomerLogout());
     }
 
+    /**
+     * @magentoAppArea frontend
+     */
+    public function testClean()
+    {
+        $lastVisitNow = date('Y-m-d H:i:s', time());
+        $sessionIdNow = 'asaswljxvgklasdflkjasieasd';
+        $lastVisitPast = date('Y-m-d H:i:s', time() - 172800);
+        $sessionIdPast = 'kui0aa57nqddl8vk7k6ohgi352';
+
+        /** @var \Magento\Customer\Model\Visitor $visitor */
+        $visitor = Bootstrap::getObjectManager()->get('Magento\Customer\Model\Visitor');
+        $visitor->setSessionId($sessionIdPast);
+        $visitor->setLastVisitAt($lastVisitPast);
+        $visitor->save();
+        $visitorIdPast = $visitor->getId();
+        $visitor->unsetData();
+        $visitor->setSessionId($sessionIdNow);
+        $visitor->setLastVisitAt($lastVisitNow);
+        $visitor->save();
+        $visitorIdNow = $visitor->getId();
+        $visitor->unsetData();
+
+        $visitor->clean();
+        $visitor->load($visitorIdPast);
+        $this->assertEquals([], $visitor->getData());
+        $visitor->unsetData();
+        $visitor->load($visitorIdNow);
+        $this->assertEquals(
+            ['visitor_id' => $visitorIdNow, 'session_id' => $sessionIdNow, 'last_visit_at' => $lastVisitNow],
+            $visitor->getData()
+        );
+    }
+
     /**
      * Authenticate customer and return its DTO
      * @param string $username
diff --git a/dev/tests/integration/testsuite/Magento/Customer/Service/V1/AddressMetadataServiceTest.php b/dev/tests/integration/testsuite/Magento/Customer/Service/V1/AddressMetadataServiceTest.php
index 2f92b21558b..3b934e12a4e 100644
--- a/dev/tests/integration/testsuite/Magento/Customer/Service/V1/AddressMetadataServiceTest.php
+++ b/dev/tests/integration/testsuite/Magento/Customer/Service/V1/AddressMetadataServiceTest.php
@@ -38,7 +38,7 @@ class AddressMetadataServiceTest extends \PHPUnit_Framework_TestCase
         $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
         $objectManager->configure(
             [
-                'Magento\Framework\Service\Config\Reader' => [
+                'Magento\Framework\Api\Config\Reader' => [
                     'arguments' => [
                         'fileResolver' => ['instance' => 'Magento\Customer\Service\V1\FileResolverStub']
                     ]
diff --git a/dev/tests/integration/testsuite/Magento/Customer/Service/V1/CustomerAccountServiceTest.php b/dev/tests/integration/testsuite/Magento/Customer/Service/V1/CustomerAccountServiceTest.php
index 3ae21e32bfd..b6c099e06bd 100755
--- a/dev/tests/integration/testsuite/Magento/Customer/Service/V1/CustomerAccountServiceTest.php
+++ b/dev/tests/integration/testsuite/Magento/Customer/Service/V1/CustomerAccountServiceTest.php
@@ -28,7 +28,7 @@ namespace Magento\Customer\Service\V1;
 use Magento\Customer\Service\V1;
 use Magento\Framework\Exception\InputException;
 use Magento\Framework\Exception\NoSuchEntityException;
-use Magento\Framework\Service\V1\Data\SearchCriteria;
+use Magento\Framework\Api\SearchCriteria;
 use Magento\Framework\Exception\State\ExpiredException;
 use Magento\TestFramework\Helper\Bootstrap;
 
@@ -672,8 +672,8 @@ class CustomerAccountServiceTest extends \PHPUnit_Framework_TestCase
         $this->assertEquals('Admin', $customerAfter->getCreatedIn());
         $passwordFromFixture = 'password';
         $this->_customerAccountService->authenticate($customerAfter->getEmail(), $passwordFromFixture);
-        $attributesBefore = \Magento\Framework\Service\ExtensibleDataObjectConverter::toFlatArray($customerBefore);
-        $attributesAfter = \Magento\Framework\Service\ExtensibleDataObjectConverter::toFlatArray($customerAfter);
+        $attributesBefore = \Magento\Framework\Api\ExtensibleDataObjectConverter::toFlatArray($customerBefore);
+        $attributesAfter = \Magento\Framework\Api\ExtensibleDataObjectConverter::toFlatArray($customerAfter);
         // ignore 'updated_at'
         unset($attributesBefore['updated_at']);
         unset($attributesAfter['updated_at']);
@@ -732,8 +732,8 @@ class CustomerAccountServiceTest extends \PHPUnit_Framework_TestCase
             'password',
             true
         );
-        $attributesBefore = \Magento\Framework\Service\ExtensibleDataObjectConverter::toFlatArray($customerBefore);
-        $attributesAfter = \Magento\Framework\Service\ExtensibleDataObjectConverter::toFlatArray($customerAfter);
+        $attributesBefore = \Magento\Framework\Api\ExtensibleDataObjectConverter::toFlatArray($customerBefore);
+        $attributesAfter = \Magento\Framework\Api\ExtensibleDataObjectConverter::toFlatArray($customerAfter);
         // ignore 'updated_at'
         unset($attributesBefore['updated_at']);
         unset($attributesAfter['updated_at']);
@@ -798,8 +798,8 @@ class CustomerAccountServiceTest extends \PHPUnit_Framework_TestCase
             'password',
             true
         );
-        $attributesBefore = \Magento\Framework\Service\ExtensibleDataObjectConverter::toFlatArray($customerBefore);
-        $attributesAfter = \Magento\Framework\Service\ExtensibleDataObjectConverter::toFlatArray($customerAfter);
+        $attributesBefore = \Magento\Framework\Api\ExtensibleDataObjectConverter::toFlatArray($customerBefore);
+        $attributesAfter = \Magento\Framework\Api\ExtensibleDataObjectConverter::toFlatArray($customerAfter);
         // ignore 'updated_at'
         unset($attributesBefore['updated_at']);
         unset($attributesAfter['updated_at']);
@@ -860,6 +860,7 @@ class CustomerAccountServiceTest extends \PHPUnit_Framework_TestCase
         $email = 'savecustomer@example.com';
         $firstName = 'Firstsave';
         $lastName = 'Lastsave';
+        $password = 'aPassword';
         $customerData = array_merge(
             $existingCustomer->__toArray(),
             [
@@ -874,7 +875,7 @@ class CustomerAccountServiceTest extends \PHPUnit_Framework_TestCase
         $customerEntity = $this->_customerBuilder->create();
 
         $customerDetails = $this->_customerDetailsBuilder->setCustomer($customerEntity)->create();
-        $customerAfter = $this->_customerAccountService->createCustomer($customerDetails, 'aPassword');
+        $customerAfter = $this->_customerAccountService->createCustomer($customerDetails, $password);
         $this->assertGreaterThan(0, $customerAfter->getId());
         $this->assertEquals($email, $customerAfter->getEmail());
         $this->assertEquals($firstName, $customerAfter->getFirstname());
@@ -885,8 +886,8 @@ class CustomerAccountServiceTest extends \PHPUnit_Framework_TestCase
             'aPassword',
             true
         );
-        $attributesBefore = \Magento\Framework\Service\ExtensibleDataObjectConverter::toFlatArray($existingCustomer);
-        $attributesAfter = \Magento\Framework\Service\ExtensibleDataObjectConverter::toFlatArray($customerAfter);
+        $attributesBefore = \Magento\Framework\Api\ExtensibleDataObjectConverter::toFlatArray($existingCustomer);
+        $attributesAfter = \Magento\Framework\Api\ExtensibleDataObjectConverter::toFlatArray($customerAfter);
         // ignore 'updated_at'
         unset($attributesBefore['updated_at']);
         unset($attributesAfter['updated_at']);
@@ -952,7 +953,7 @@ class CustomerAccountServiceTest extends \PHPUnit_Framework_TestCase
         $customerData = $this->_customerAccountService->createCustomer($customerDetails, $password);
         $this->assertNotNull($customerData->getId());
         $savedCustomer = $this->_customerAccountService->getCustomer($customerData->getId());
-        $dataInService = \Magento\Framework\Service\SimpleDataObjectConverter::toFlatArray($savedCustomer);
+        $dataInService = \Magento\Framework\Api\SimpleDataObjectConverter::toFlatArray($savedCustomer);
         $expectedDifferences = [
             'created_at',
             'updated_at',
@@ -992,6 +993,7 @@ class CustomerAccountServiceTest extends \PHPUnit_Framework_TestCase
         $firstname = 'Tester';
         $lastname = 'McTest';
         $groupId = 1;
+        $password = 'aPassword';
 
         $this->_customerBuilder
             ->setStoreId($storeId)
@@ -1001,7 +1003,7 @@ class CustomerAccountServiceTest extends \PHPUnit_Framework_TestCase
             ->setGroupId($groupId);
         $newCustomerEntity = $this->_customerBuilder->create();
         $customerDetails = $this->_customerDetailsBuilder->setCustomer($newCustomerEntity)->create();
-        $savedCustomer = $this->_customerAccountService->createCustomer($customerDetails, 'aPassword');
+        $savedCustomer = $this->_customerAccountService->createCustomer($customerDetails, $password);
         $this->assertNotNull($savedCustomer->getId());
         $this->assertEquals($email, $savedCustomer->getEmail());
         $this->assertEquals($storeId, $savedCustomer->getStoreId());
@@ -1062,6 +1064,7 @@ class CustomerAccountServiceTest extends \PHPUnit_Framework_TestCase
         $email = 'savecustomer@example.com';
         $firstName = 'Firstsave';
         $lastname = 'Lastsave';
+        $password = 'aPassword';
 
         $existingCustId = 1;
         $existingCustomer = $this->_customerAccountService->getCustomer($existingCustId);
@@ -1079,7 +1082,7 @@ class CustomerAccountServiceTest extends \PHPUnit_Framework_TestCase
         $customerEntity = $this->_customerBuilder->create();
         $customerDetails = $this->_customerDetailsBuilder->setCustomer($customerEntity)->create();
 
-        $customer = $this->_customerAccountService->createCustomer($customerDetails, 'aPassword');
+        $customer = $this->_customerAccountService->createCustomer($customerDetails, $password);
         $this->assertNotEmpty($customer->getId());
         $this->assertEquals($email, $customer->getEmail());
         $this->assertEquals($firstName, $customer->getFirstname());
@@ -1102,6 +1105,7 @@ class CustomerAccountServiceTest extends \PHPUnit_Framework_TestCase
         $firstname = 'Tester';
         $lastname = 'McTest';
         $groupId = 1;
+        $password = 'aPassword';
 
         $this->_customerBuilder
             ->setStoreId($storeId)
@@ -1112,7 +1116,7 @@ class CustomerAccountServiceTest extends \PHPUnit_Framework_TestCase
         $newCustomerEntity = $this->_customerBuilder->create();
         $customerDetails = $this->_customerDetailsBuilder->setCustomer($newCustomerEntity)->create();
 
-        $customer = $this->_customerAccountService->createCustomer($customerDetails, 'aPassword');
+        $customer = $this->_customerAccountService->createCustomer($customerDetails, $password);
 
         $this->_customerBuilder->populate($customer);
         $this->_customerBuilder->setFirstname('Tested');
@@ -1177,8 +1181,8 @@ class CustomerAccountServiceTest extends \PHPUnit_Framework_TestCase
     }
 
     /**
-     * @param \Magento\Framework\Service\V1\Data\Filter[] $filters
-     * @param \Magento\Framework\Service\V1\Data\Filter[] $filterGroup
+     * @param \Magento\Framework\Api\Filter[] $filters
+     * @param \Magento\Framework\Api\Filter[] $filterGroup
      * @param array $expectedResult array of expected results indexed by ID
      *
      * @dataProvider searchCustomersDataProvider
@@ -1188,9 +1192,9 @@ class CustomerAccountServiceTest extends \PHPUnit_Framework_TestCase
      */
     public function testSearchCustomers($filters, $filterGroup, $expectedResult)
     {
-        /** @var \Magento\Framework\Service\V1\Data\SearchCriteriaBuilder $searchBuilder */
+        /** @var \Magento\Framework\Api\SearchCriteriaBuilder $searchBuilder */
         $searchBuilder = Bootstrap::getObjectManager()->create(
-            'Magento\Framework\Service\V1\Data\SearchCriteriaBuilder'
+            'Magento\Framework\Api\SearchCriteriaBuilder'
         );
         foreach ($filters as $filter) {
             $searchBuilder->addFilter([$filter]);
@@ -1219,7 +1223,7 @@ class CustomerAccountServiceTest extends \PHPUnit_Framework_TestCase
 
     public function searchCustomersDataProvider()
     {
-        $builder = Bootstrap::getObjectManager()->create('\Magento\Framework\Service\V1\Data\FilterBuilder');
+        $builder = Bootstrap::getObjectManager()->create('\Magento\Framework\Api\FilterBuilder');
         return [
             'Customer with specific email' => [
                 [$builder->setField('email')->setValue('customer@search.example.com')->create()],
@@ -1264,19 +1268,19 @@ class CustomerAccountServiceTest extends \PHPUnit_Framework_TestCase
      */
     public function testSearchCustomersOrder()
     {
-        /** @var \Magento\Framework\Service\V1\Data\SearchCriteriaBuilder $searchBuilder */
+        /** @var \Magento\Framework\Api\SearchCriteriaBuilder $searchBuilder */
         $searchBuilder = Bootstrap::getObjectManager()
-            ->create('Magento\Framework\Service\V1\Data\SearchCriteriaBuilder');
+            ->create('Magento\Framework\Api\SearchCriteriaBuilder');
 
         // Filter for 'firstname' like 'First'
-        $filterBuilder = $this->_objectManager->create('\Magento\Framework\Service\V1\Data\FilterBuilder');
+        $filterBuilder = $this->_objectManager->create('\Magento\Framework\Api\FilterBuilder');
         $firstnameFilter = $filterBuilder->setField('firstname')
             ->setConditionType('like')
             ->setValue('First%')
             ->create();
         $searchBuilder->addFilter([$firstnameFilter]);
         // Search ascending order
-        $sortOrderBuilder = $this->_objectManager->create('\Magento\Framework\Service\V1\Data\SortOrderBuilder');
+        $sortOrderBuilder = $this->_objectManager->create('\Magento\Framework\Api\SortOrderBuilder');
         $sortOrder = $sortOrderBuilder
             ->setField('lastname')
             ->setDirection(SearchCriteria::SORT_ASC)
diff --git a/dev/tests/integration/testsuite/Magento/Customer/Service/V1/CustomerGroupServiceTest.php b/dev/tests/integration/testsuite/Magento/Customer/Service/V1/CustomerGroupServiceTest.php
index a5466709f4b..5d83afa0a58 100644
--- a/dev/tests/integration/testsuite/Magento/Customer/Service/V1/CustomerGroupServiceTest.php
+++ b/dev/tests/integration/testsuite/Magento/Customer/Service/V1/CustomerGroupServiceTest.php
@@ -26,10 +26,10 @@
 namespace Magento\Customer\Service\V1;
 
 use Magento\Customer\Service\V1\Data\CustomerGroup;
-use Magento\Framework\Service\V1\Data\FilterBuilder;
+use Magento\Framework\Api\FilterBuilder;
 use Magento\Store\Model\ScopeInterface;
 use Magento\TestFramework\Helper\Bootstrap;
-use Magento\Framework\Service\V1\Data\Filter;
+use Magento\Framework\Api\Filter;
 use Magento\Customer\Model\Group;
 
 class CustomerGroupServiceTest extends \PHPUnit_Framework_TestCase
@@ -252,9 +252,9 @@ class CustomerGroupServiceTest extends \PHPUnit_Framework_TestCase
      */
     public function testSearchGroups($filters, $filterGroup, $expectedResult)
     {
-        /** @var \Magento\Framework\Service\V1\Data\SearchCriteriaBuilder $searchBuilder */
+        /** @var \Magento\Framework\Api\SearchCriteriaBuilder $searchBuilder */
         $searchBuilder = Bootstrap::getObjectManager()
-            ->create('Magento\Framework\Service\V1\Data\SearchCriteriaBuilder');
+            ->create('Magento\Framework\Api\SearchCriteriaBuilder');
         foreach ($filters as $filter) {
             $searchBuilder->addFilter([$filter]);
         }
@@ -274,7 +274,7 @@ class CustomerGroupServiceTest extends \PHPUnit_Framework_TestCase
 
     public function searchGroupsDataProvider()
     {
-        $builder = Bootstrap::getObjectManager()->create('\Magento\Framework\Service\V1\Data\FilterBuilder');
+        $builder = Bootstrap::getObjectManager()->create('\Magento\Framework\Api\FilterBuilder');
         return [
             'eq' => [
                 [$builder->setField(CustomerGroup::CODE)->setValue('General')->create()],
diff --git a/dev/tests/integration/testsuite/Magento/Customer/Service/V1/CustomerMetadataServiceTest.php b/dev/tests/integration/testsuite/Magento/Customer/Service/V1/CustomerMetadataServiceTest.php
index f0806fb5736..71a3592b77b 100644
--- a/dev/tests/integration/testsuite/Magento/Customer/Service/V1/CustomerMetadataServiceTest.php
+++ b/dev/tests/integration/testsuite/Magento/Customer/Service/V1/CustomerMetadataServiceTest.php
@@ -39,7 +39,7 @@ class CustomerMetadataServiceTest extends \PHPUnit_Framework_TestCase
         $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
         $objectManager->configure(
             [
-                'Magento\Framework\Service\Config\Reader' => [
+                'Magento\Framework\Api\Config\Reader' => [
                     'arguments' => [
                         'fileResolver' => ['instance' => 'Magento\Customer\Service\V1\FileResolverStub']
                     ]
@@ -140,7 +140,7 @@ class CustomerMetadataServiceTest extends \PHPUnit_Framework_TestCase
         $customer = $this->_customerAccountService->getCustomer(1);
         $this->assertNotNull($customer);
 
-        $attributes = \Magento\Framework\Service\ExtensibleDataObjectConverter::toFlatArray($customer);
+        $attributes = \Magento\Framework\Api\ExtensibleDataObjectConverter::toFlatArray($customer);
         $this->assertNotEmpty($attributes);
 
         foreach ($attributes as $attributeCode => $attributeValue) {
diff --git a/dev/tests/integration/testsuite/Magento/Customer/_files/etc/data_object.xml b/dev/tests/integration/testsuite/Magento/Customer/_files/etc/data_object.xml
index a2069f0d8a4..21a91ffe582 100644
--- a/dev/tests/integration/testsuite/Magento/Customer/_files/etc/data_object.xml
+++ b/dev/tests/integration/testsuite/Magento/Customer/_files/etc/data_object.xml
@@ -23,7 +23,7 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../../lib/internal/Magento/Framework/Service/etc/data_object.xsd">
+<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../../lib/internal/Magento/Framework/Api/etc/data_object.xsd">
     <custom_attributes for="Magento\Tax\Service\V1\Data\TaxRate">
     </custom_attributes>
     <custom_attributes for="Magento\Catalog\Service\V1\Data\Product">
@@ -33,11 +33,11 @@
         <attribute code="category_attribute_1" type="Magento\Catalog\Service\V1\Data\CategoryAttributeType1" />
         <attribute code="category_attribute_2" type="Magento\Catalog\Service\V1\Data\CategoryAttributeType2" />
     </custom_attributes>
-    <custom_attributes for="Magento\Customer\Service\V1\Data\Customer">
+    <custom_attributes for="Magento\Customer\Api\Data\CustomerInterface">
         <attribute code="customer_attribute_1" type="Magento\Customer\Service\V1\Data\CustomerAttributeType1" />
         <attribute code="customer_attribute_2" type="Magento\Customer\Service\V1\Data\CustomerAttributeType2" />
     </custom_attributes>
-    <custom_attributes for="Magento\Customer\Service\V1\Data\Address">
+    <custom_attributes for="Magento\Customer\Api\Data\AddressInterface">
         <attribute code="address_attribute_1" type="Magento\Customer\Service\V1\Data\AddressAttributeType1" />
         <attribute code="address_attribute_2" type="Magento\Customer\Service\V1\Data\AddressAttributeType2" />
     </custom_attributes>
diff --git a/dev/tests/integration/testsuite/Magento/DatabaseTest.php b/dev/tests/integration/testsuite/Magento/DatabaseTest.php
index edbefd3aeae..ad2d212b8c4 100644
--- a/dev/tests/integration/testsuite/Magento/DatabaseTest.php
+++ b/dev/tests/integration/testsuite/Magento/DatabaseTest.php
@@ -37,9 +37,9 @@ class DatabaseTest extends \PHPUnit_Framework_TestCase
         }
         $checkerPath = PERCONA_TOOLKIT_BIN_DIR . '/pt-duplicate-key-checker';
 
-        $dbConfig = Bootstrap::getInstance()->getBootstrap()->getDbConfig();
-        $command = $checkerPath . ' -d ' . $dbConfig->dbName
-            . ' h=' . $dbConfig->host . ',u=' . $dbConfig->username . ',p=' . $dbConfig->password;
+        $db = Bootstrap::getInstance()->getBootstrap()->getApplication()->getDbInstance();
+        $command = $checkerPath . ' -d ' . $db->getSchema()
+            . ' h=' . $db->getHost()['db_host'] . ',u=' . $db->getUser() . ',p=' . $db->getPassword();
 
         exec($command, $output, $exitCode);
         $this->assertEquals(0, $exitCode);
diff --git a/dev/tests/integration/testsuite/Magento/Framework/Api/Code/Generator/DataBuilderTest.php b/dev/tests/integration/testsuite/Magento/Framework/Api/Code/Generator/DataBuilderTest.php
new file mode 100644
index 00000000000..c9a63d38194
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/Framework/Api/Code/Generator/DataBuilderTest.php
@@ -0,0 +1,101 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+namespace Magento\Framework\Api\Code\Generator;
+
+use Magento\Wonderland\Api\Data\FakeAddressInterface;
+use Magento\Wonderland\Api\Data\FakeRegionInterface;
+
+class DataBuilderTest extends \PHPUnit_Framework_TestCase
+{
+    /** @var \Magento\Framework\ObjectManager */
+    private $_objectManager;
+
+    protected function setUp()
+    {
+        $includePath = new \Magento\Framework\Autoload\IncludePath();
+        $includePath->addIncludePath([__DIR__ . '/../../_files']);
+        spl_autoload_register([$includePath, 'load']);
+        $this->_objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
+        $this->_objectManager->configure(
+            [
+                'preferences' => [
+                    'Magento\Wonderland\Api\Data\FakeAddressInterface' => 'Magento\Wonderland\Model\FakeAddress',
+                    'Magento\Wonderland\Api\Data\FakeRegionInterface' => 'Magento\Wonderland\Model\FakeRegion'
+                ]
+            ]
+        );
+    }
+
+    public function testPopulateWithArray()
+    {
+        /** @var \Magento\Wonderland\Api\Data\FakeAddressDataBuilder $addressBuilder */
+        $addressBuilder = $this->_objectManager->create('Magento\Wonderland\Api\Data\FakeAddressDataBuilder');
+
+        $data = [
+            FakeAddressInterface::ID => 1,
+            FakeAddressInterface::CITY => 'Kiev',
+            FakeAddressInterface::REGION => [
+                FakeRegionInterface::REGION => 'US',
+                FakeRegionInterface::REGION_CODE => 'TX',
+                FakeRegionInterface::REGION_ID => '1',
+            ],
+            FakeAddressInterface::REGIONS => [
+                [
+                    FakeRegionInterface::REGION => 'US',
+                    FakeRegionInterface::REGION_CODE => 'TX',
+                    FakeRegionInterface::REGION_ID => '1',
+                ], [
+                    FakeRegionInterface::REGION => 'US',
+                    FakeRegionInterface::REGION_CODE => 'TX',
+                    FakeRegionInterface::REGION_ID => '2',
+                ]
+            ],
+            FakeAddressInterface::COMPANY => 'Magento',
+            FakeAddressInterface::COUNTRY_ID => 'US',
+            FakeAddressInterface::CUSTOMER_ID => '1',
+            FakeAddressInterface::FAX => '222',
+            FakeAddressInterface::FIRSTNAME => 'John',
+            FakeAddressInterface::MIDDLENAME => 'Dow',
+            FakeAddressInterface::LASTNAME => 'Johnes',
+            FakeAddressInterface::SUFFIX => 'Jr.',
+            FakeAddressInterface::POSTCODE => '78757',
+            FakeAddressInterface::PREFIX => 'Mr.',
+            FakeAddressInterface::STREET => 'Oak rd.',
+            FakeAddressInterface::TELEPHONE => '1234567',
+            FakeAddressInterface::VAT_ID => '1',
+            'test' => 'xxx'
+        ];
+
+        /** @var \Magento\Wonderland\Api\Data\FakeAddressInterface $address */
+        $address = $addressBuilder->populateWithArray($data)
+            ->create();
+        $this->assertInstanceOf('\Magento\Wonderland\Api\Data\FakeAddressInterface', $address);
+        $this->assertEquals('Johnes', $address->getLastname());
+        $this->assertNull($address->getCustomAttribute('test'));
+        $this->assertInstanceOf('\Magento\Wonderland\Api\Data\FakeRegionInterface', $address->getRegion());
+        $this->assertInstanceOf('\Magento\Wonderland\Api\Data\FakeRegionInterface', $address->getRegions()[0]);
+        $this->assertInstanceOf('\Magento\Wonderland\Api\Data\FakeRegionInterface', $address->getRegions()[1]);
+    }
+
+}
\ No newline at end of file
diff --git a/dev/tests/integration/testsuite/Magento/Framework/Service/Config/ReaderTest.php b/dev/tests/integration/testsuite/Magento/Framework/Api/Config/ReaderTest.php
similarity index 85%
rename from dev/tests/integration/testsuite/Magento/Framework/Service/Config/ReaderTest.php
rename to dev/tests/integration/testsuite/Magento/Framework/Api/Config/ReaderTest.php
index 42c11f0b087..08277d8298d 100644
--- a/dev/tests/integration/testsuite/Magento/Framework/Service/Config/ReaderTest.php
+++ b/dev/tests/integration/testsuite/Magento/Framework/Api/Config/ReaderTest.php
@@ -21,15 +21,15 @@
  * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
-namespace Magento\Framework\Service\Config;
+namespace Magento\Framework\Api\Config;
 
 /**
- * Tests for \Magento\Framework\Service\Config\Reader
+ * Tests for \Magento\Framework\Api\Config\Reader
  */
 class ReaderTest extends \PHPUnit_Framework_TestCase
 {
     /**
-     * @var \Magento\Framework\Service\Config\Reader
+     * @var \Magento\Framework\Api\Config\Reader
      */
     protected $_model;
 
@@ -49,12 +49,12 @@ class ReaderTest extends \PHPUnit_Framework_TestCase
     protected $_validationState;
 
     /**
-     * @var \Magento\Framework\Service\Config\SchemaLocator
+     * @var \Magento\Framework\Api\Config\SchemaLocator
      */
     protected $_schemaLocator;
 
     /**
-     * @var \Magento\Framework\Service\Config\Converter
+     * @var \Magento\Framework\Api\Config\Converter
      */
     protected $_converter;
 
@@ -74,17 +74,17 @@ class ReaderTest extends \PHPUnit_Framework_TestCase
             ->method('get')
             ->will($this->returnValue($this->_fileList));
 
-        $this->_converter = new \Magento\Framework\Service\Config\Converter();
+        $this->_converter = new \Magento\Framework\Api\Config\Converter();
 
         $this->_validationState = new \Magento\Framework\App\Arguments\ValidationState(
             \Magento\Framework\App\State::MODE_DEFAULT
         );
-        $this->_schemaLocator = new \Magento\Framework\Service\Config\SchemaLocator();
+        $this->_schemaLocator = new \Magento\Framework\Api\Config\SchemaLocator();
     }
 
     public function testMerge()
     {
-        $model = new \Magento\Framework\Service\Config\Reader(
+        $model = new \Magento\Framework\Api\Config\Reader(
             $this->_fileResolverMock,
             $this->_converter,
             $this->_schemaLocator,
diff --git a/dev/tests/integration/testsuite/Magento/Framework/Service/Config/_files/config_one.xml b/dev/tests/integration/testsuite/Magento/Framework/Api/Config/_files/config_one.xml
similarity index 96%
rename from dev/tests/integration/testsuite/Magento/Framework/Service/Config/_files/config_one.xml
rename to dev/tests/integration/testsuite/Magento/Framework/Api/Config/_files/config_one.xml
index 47ce633618d..c109f8a46c9 100644
--- a/dev/tests/integration/testsuite/Magento/Framework/Service/Config/_files/config_one.xml
+++ b/dev/tests/integration/testsuite/Magento/Framework/Api/Config/_files/config_one.xml
@@ -23,7 +23,7 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../../../lib/internal/Magento/Framework/Service/etc/data_object.xsd">
+<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../../../lib/internal/Magento/Framework/Api/etc/data_object.xsd">
     <custom_attributes for="Magento\Tax\Service\V1\Data\TaxRate">
     </custom_attributes>
     <custom_attributes for="Magento\Catalog\Service\Data\V1\Product">
diff --git a/dev/tests/integration/testsuite/Magento/Framework/Service/Config/_files/config_two.xml b/dev/tests/integration/testsuite/Magento/Framework/Api/Config/_files/config_two.xml
similarity index 96%
rename from dev/tests/integration/testsuite/Magento/Framework/Service/Config/_files/config_two.xml
rename to dev/tests/integration/testsuite/Magento/Framework/Api/Config/_files/config_two.xml
index 631537acba3..997433f4551 100644
--- a/dev/tests/integration/testsuite/Magento/Framework/Service/Config/_files/config_two.xml
+++ b/dev/tests/integration/testsuite/Magento/Framework/Api/Config/_files/config_two.xml
@@ -23,7 +23,7 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../../../lib/internal/Magento/Framework/Service/etc/data_object.xsd">
+<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../../../lib/internal/Magento/Framework/Api/etc/data_object.xsd">
     <custom_attributes for="Magento\Customer\Service\V1\Data\Customer">
         <attribute code="custom_2" type="Magento\CustomerExtra\Service\V1\Data\CustomerCustom22" />
         <attribute code="custom_3" type="Magento\Customer\Service\V1\Data\CustomerCustom3" />
diff --git a/dev/tests/integration/testsuite/Magento/Framework/Api/_files/Magento/Wonderland/Api/Data/FakeAddressInterface.php b/dev/tests/integration/testsuite/Magento/Framework/Api/_files/Magento/Wonderland/Api/Data/FakeAddressInterface.php
new file mode 100644
index 00000000000..a717126d572
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/Framework/Api/_files/Magento/Wonderland/Api/Data/FakeAddressInterface.php
@@ -0,0 +1,175 @@
+<?php
+/**
+ *
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Wonderland\Api\Data;
+
+use Magento\Framework\Api\ExtensibleDataInterface;
+
+/**
+ * Customer address interface.
+ */
+interface FakeAddressInterface extends ExtensibleDataInterface
+{
+    /**#@+
+     * Constants for keys of data array
+     */
+    const ID = 'id';
+    const CUSTOMER_ID = 'customer_id';
+    const REGION = 'region';
+    const REGIONS = 'regions';
+    const COUNTRY_ID = 'country_id';
+    const STREET = 'street';
+    const COMPANY = 'company';
+    const TELEPHONE = 'telephone';
+    const FAX = 'fax';
+    const POSTCODE = 'postcode';
+    const CITY = 'city';
+    const FIRSTNAME = 'firstname';
+    const LASTNAME = 'lastname';
+    const MIDDLENAME = 'middlename';
+    const PREFIX = 'prefix';
+    const SUFFIX = 'suffix';
+    const VAT_ID = 'vat_id';
+    /**#@-*/
+
+    /**
+     * Get ID
+     *
+     * @return int|null
+     */
+    public function getId();
+
+    /**
+     * Get customer ID
+     *
+     * @return int|null
+     */
+    public function getCustomerId();
+
+    /**
+     * Get region
+     *
+     * @return \Magento\Wonderland\Api\Data\FakeRegionInterface|null
+     */
+    public function getRegion();
+
+    /**
+     * Get region
+     *
+     * @return \Magento\Wonderland\Api\Data\FakeRegionInterface[]|null
+     */
+    public function getRegions();
+
+    /**
+     * Two-letter country code in ISO_3166-2 format
+     *
+     * @return string|null
+     */
+    public function getCountryId();
+
+    /**
+     * Get street
+     *
+     * @return string[]|null
+     */
+    public function getStreet();
+
+    /**
+     * Get company
+     *
+     * @return string|null
+     */
+    public function getCompany();
+
+    /**
+     * Get telephone number
+     *
+     * @return string|null
+     */
+    public function getTelephone();
+
+    /**
+     * Get fax number
+     *
+     * @return string|null
+     */
+    public function getFax();
+
+    /**
+     * Get postcode
+     *
+     * @return string|null
+     */
+    public function getPostcode();
+
+    /**
+     * Get city name
+     *
+     * @return string|null
+     */
+    public function getCity();
+
+    /**
+     * Get first name
+     *
+     * @return string|null
+     */
+    public function getFirstname();
+
+    /**
+     * Get last name
+     *
+     * @return string|null
+     */
+    public function getLastname();
+
+    /**
+     * Get middle name
+     *
+     * @return string|null
+     */
+    public function getMiddlename();
+
+    /**
+     * Get prefix
+     *
+     * @return string|null
+     */
+    public function getPrefix();
+
+    /**
+     * Get suffix
+     *
+     * @return string|null
+     */
+    public function getSuffix();
+
+    /**
+     * Get Vat id
+     *
+     * @return string|null
+     */
+    public function getVatId();
+}
diff --git a/dev/tests/integration/testsuite/Magento/Framework/Api/_files/Magento/Wonderland/Api/Data/FakeRegionInterface.php b/dev/tests/integration/testsuite/Magento/Framework/Api/_files/Magento/Wonderland/Api/Data/FakeRegionInterface.php
new file mode 100644
index 00000000000..385629fc626
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/Framework/Api/_files/Magento/Wonderland/Api/Data/FakeRegionInterface.php
@@ -0,0 +1,62 @@
+<?php
+/**
+ *
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+namespace Magento\Wonderland\Api\Data;
+
+use Magento\Framework\Api\ExtensibleDataInterface;
+
+/**
+ * Customer address region interface.
+ */
+interface FakeRegionInterface extends ExtensibleDataInterface
+{
+    /**#@+
+     * Constants for keys of data array
+     */
+    const REGION_CODE = 'region_code';
+    const REGION = 'region';
+    const REGION_ID = 'region_id';
+    /**#@-*/
+
+    /**
+     * Get region code
+     *
+     * @return string
+     */
+    public function getRegionCode();
+
+    /**
+     * Get region
+     *
+     * @return string
+     */
+    public function getRegion();
+
+    /**
+     * Get region id
+     *
+     * @return int
+     */
+    public function getRegionId();
+}
diff --git a/dev/tests/integration/testsuite/Magento/Framework/Api/_files/Magento/Wonderland/Model/FakeAddress.php b/dev/tests/integration/testsuite/Magento/Framework/Api/_files/Magento/Wonderland/Model/FakeAddress.php
new file mode 100644
index 00000000000..d6f31fabd22
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/Framework/Api/_files/Magento/Wonderland/Model/FakeAddress.php
@@ -0,0 +1,201 @@
+<?php
+/**
+ *
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+namespace Magento\Wonderland\Model;
+
+use Magento\Wonderland\Api\Data\FakeAddressInterface;
+use Magento\Framework\Model\AbstractExtensibleModel;
+
+class FakeAddress extends AbstractExtensibleModel implements FakeAddressInterface
+{
+    /**
+     * Get ID
+     *
+     * @return int|null
+     */
+    public function getId()
+    {
+        return $this->getData(self::ID);
+    }
+
+    /**
+     * Get customer ID
+     *
+     * @return int|null
+     */
+    public function getCustomerId()
+    {
+        return $this->getData(self::CUSTOMER_ID);
+    }
+
+    /**
+     * Get region
+     *
+     * @return \Magento\Wonderland\Api\Data\FakeRegionInterface|null
+     */
+    public function getRegion()
+    {
+        return $this->getData(self::REGION);
+    }
+
+    /**
+     * Get region
+     *
+     * @return \Magento\Wonderland\Api\Data\FakeRegionInterface|null
+     */
+    public function getRegions()
+    {
+        return $this->getData(self::REGIONS);
+    }
+
+    /**
+     * Two-letter country code in ISO_3166-2 format
+     *
+     * @return string|null
+     */
+    public function getCountryId()
+    {
+        return $this->getData(self::COUNTRY_ID);
+    }
+
+    /**
+     * Get street
+     *
+     * @return string[]|null
+     */
+    public function getStreet()
+    {
+        return $this->getData(self::STREET);
+    }
+
+    /**
+     * Get company
+     *
+     * @return string|null
+     */
+    public function getCompany()
+    {
+        return $this->getData(self::COMPANY);
+    }
+
+    /**
+     * Get telephone number
+     *
+     * @return string|null
+     */
+    public function getTelephone()
+    {
+        return $this->getData(self::TELEPHONE);
+    }
+
+    /**
+     * Get fax number
+     *
+     * @return string|null
+     */
+    public function getFax()
+    {
+        return $this->getData(self::FAX);
+    }
+
+    /**
+     * Get postcode
+     *
+     * @return string|null
+     */
+    public function getPostcode()
+    {
+        return $this->getData(self::POSTCODE);
+    }
+
+    /**
+     * Get city name
+     *
+     * @return string|null
+     */
+    public function getCity()
+    {
+        return $this->getData(self::CITY);
+    }
+
+    /**
+     * Get first name
+     *
+     * @return string|null
+     */
+    public function getFirstname()
+    {
+        return $this->getData(self::FIRSTNAME);
+    }
+
+    /**
+     * Get last name
+     *
+     * @return string|null
+     */
+    public function getLastname()
+    {
+        return $this->getData(self::LASTNAME);
+    }
+
+    /**
+     * Get middle name
+     *
+     * @return string|null
+     */
+    public function getMiddlename()
+    {
+        return $this->getData(self::MIDDLENAME);
+    }
+
+    /**
+     * Get prefix
+     *
+     * @return string|null
+     */
+    public function getPrefix()
+    {
+        return $this->getData(self::PREFIX);
+    }
+
+    /**
+     * Get suffix
+     *
+     * @return string|null
+     */
+    public function getSuffix()
+    {
+        return $this->getData(self::SUFFIX);
+    }
+
+    /**
+     * Get Vat id
+     *
+     * @return string|null
+     */
+    public function getVatId()
+    {
+        return $this->getData(self::VAT_ID);
+    }
+}
\ No newline at end of file
diff --git a/dev/tests/integration/testsuite/Magento/Framework/Api/_files/Magento/Wonderland/Model/FakeRegion.php b/dev/tests/integration/testsuite/Magento/Framework/Api/_files/Magento/Wonderland/Model/FakeRegion.php
new file mode 100644
index 00000000000..91e122808e0
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/Framework/Api/_files/Magento/Wonderland/Model/FakeRegion.php
@@ -0,0 +1,62 @@
+<?php
+/**
+ *
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+namespace Magento\Wonderland\Model;
+
+use Magento\Wonderland\Api\Data\FakeRegionInterface;
+use Magento\Framework\Model\AbstractExtensibleModel;
+
+class FakeRegion extends AbstractExtensibleModel implements FakeRegionInterface
+{
+
+    /**
+     * Get region
+     *
+     * @return string
+     */
+    public function getRegion()
+    {
+        return $this->getData(self::REGION);
+    }
+
+    /**
+     * Get region code
+     *
+     * @return string
+     */
+    public function getRegionCode()
+    {
+        return $this->getData(self::REGION_CODE);
+    }
+
+    /**
+     * Get region id
+     *
+     * @return int
+     */
+    public function getRegionId()
+    {
+        return $this->getData(self::REGION_ID);
+    }
+}
\ No newline at end of file
diff --git a/dev/tests/integration/testsuite/Magento/Framework/App/AreaTest.php b/dev/tests/integration/testsuite/Magento/Framework/App/AreaTest.php
index 738065c1a24..d2127af8c66 100644
--- a/dev/tests/integration/testsuite/Magento/Framework/App/AreaTest.php
+++ b/dev/tests/integration/testsuite/Magento/Framework/App/AreaTest.php
@@ -126,7 +126,7 @@ class AreaTest extends \PHPUnit_Framework_TestCase
     public function testDetectDesignNonFrontend()
     {
         $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
-        $model = $objectManager->create('Magento\Framework\App\Area', array('areaCode' => 'install'));
+        $model = $objectManager->create('Magento\Framework\App\Area', array('areaCode' => 'adminhtml'));
         /** @var $request \Magento\TestFramework\Request */
         $request = $objectManager->create('Magento\TestFramework\Request');
         $request->setServer(array('HTTP_USER_AGENT' => 'Mozilla Firefox'));
diff --git a/dev/tests/integration/testsuite/Magento/Framework/Code/Generator/FileResolverTest.php b/dev/tests/integration/testsuite/Magento/Framework/Code/Generator/FileResolverTest.php
new file mode 100644
index 00000000000..b6693448211
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/Framework/Code/Generator/FileResolverTest.php
@@ -0,0 +1,97 @@
+<?php
+/**
+ * Integration test for \Magento\Framework\Code\Generator\FileResolver
+ *
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+namespace Magento\Framework\Code\Generator;
+
+use Magento\TestFramework\Helper\Bootstrap;
+
+class FileResolverTest extends \PHPUnit_Framework_TestCase
+{
+
+    /**
+     * Path to add to include path
+     */
+    const FIRST_PATH = '/path/to/code/1/';
+
+    /**
+     * Path to add to include path
+     */
+    const SECOND_PATH = '/path/to/code/2/';
+
+    /**
+     * @var \Magento\Framework\Code\Generator\FileResolver
+     */
+    protected $model;
+
+    /**
+     * @var string original include-path variable
+     */
+    protected $originalPath;
+
+    public function setUp()
+    {
+        $this->model = Bootstrap::getObjectManager()->create('Magento\Framework\Code\Generator\FileResolver');
+        $this->originalPath = get_include_path();
+        set_include_path('/pre/existing/paths/');
+    }
+
+    public function tearDown()
+    {
+        set_include_path($this->originalPath);
+    }
+
+    public function testAddIncludePathPrepend()
+    {
+        $this->model->addIncludePath(self::FIRST_PATH);
+        $this->model->addIncludePath(self::SECOND_PATH);
+
+        $postIncludePath = get_include_path();
+        $this->assertStringStartsWith(
+            self::SECOND_PATH,
+            $postIncludePath
+        );
+    }
+
+    public function testAddIncludePathAppend()
+    {
+        $this->model->addIncludePath(self::FIRST_PATH, false);
+        $this->model->addIncludePath(self::SECOND_PATH, false);
+
+        $postIncludePath = get_include_path();
+        $this->assertStringEndsWith(
+            self::SECOND_PATH,
+            $postIncludePath
+        );
+    }
+
+    public function testGetFile()
+    {
+        $includePath = realpath(__DIR__ . '/../_files/');
+        $className = '\ClassToFind';
+
+        $this->model->addIncludePath($includePath);
+        $this->assertFileExists($this->model->getFile($className));
+    }
+}
diff --git a/dev/tests/integration/testsuite/Magento/Framework/Code/GeneratorTest.php b/dev/tests/integration/testsuite/Magento/Framework/Code/GeneratorTest.php
index 60ca4058fac..bfab2a33a5e 100644
--- a/dev/tests/integration/testsuite/Magento/Framework/Code/GeneratorTest.php
+++ b/dev/tests/integration/testsuite/Magento/Framework/Code/GeneratorTest.php
@@ -75,7 +75,7 @@ class GeneratorTest extends \PHPUnit_Framework_TestCase
 
         $this->_ioObject = new \Magento\Framework\Code\Generator\Io(
             new \Magento\Framework\Filesystem\Driver\File(),
-            new \Magento\Framework\Autoload\IncludePath(),
+            new \Magento\Framework\Code\Generator\FileResolver(),
             $generationDirectory
         );
         $this->_generator = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
diff --git a/dev/tests/performance/framework/tests/unit/testsuite/Magento/Test/Performance/_files/app_base_dir/dev/shell/uninstall.php b/dev/tests/integration/testsuite/Magento/Framework/Code/_files/ClassToFind.php
similarity index 73%
rename from dev/tests/performance/framework/tests/unit/testsuite/Magento/Test/Performance/_files/app_base_dir/dev/shell/uninstall.php
rename to dev/tests/integration/testsuite/Magento/Framework/Code/_files/ClassToFind.php
index 5956af5ae0d..a7600658407 100644
--- a/dev/tests/performance/framework/tests/unit/testsuite/Magento/Test/Performance/_files/app_base_dir/dev/shell/uninstall.php
+++ b/dev/tests/integration/testsuite/Magento/Framework/Code/_files/ClassToFind.php
@@ -18,8 +18,10 @@
  * versions in the future. If you wish to customize Magento for your
  * needs please refer to http://www.magentocommerce.com for more information.
  *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ * @copyright  Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ * 
+ * Exists for testing FileResolver.
+ *
+ * \Magento\Framework\Code\Generator\FileResolverTest
  */
-
-/* Magento console uninstaller stub */
diff --git a/dev/tests/integration/testsuite/Magento/Framework/Image/Adapter/InterfaceTest.php b/dev/tests/integration/testsuite/Magento/Framework/Image/Adapter/InterfaceTest.php
index a6daa08cbfe..a572d105bbc 100644
--- a/dev/tests/integration/testsuite/Magento/Framework/Image/Adapter/InterfaceTest.php
+++ b/dev/tests/integration/testsuite/Magento/Framework/Image/Adapter/InterfaceTest.php
@@ -243,7 +243,7 @@ class InterfaceTest extends \PHPUnit_Framework_TestCase
 
     public function saveDataProvider()
     {
-        $dir = \Magento\TestFramework\Helper\Bootstrap::getInstance()->getAppInstallDir() . '/';
+        $dir = \Magento\TestFramework\Helper\Bootstrap::getInstance()->getAppTempDir() . '/';
         return $this->_prepareData(
             array(
                 array($this->_getFixture('image_adapters_test.png'), array($dir . uniqid('test_image_adapter'))),
diff --git a/dev/tests/integration/testsuite/Magento/Framework/Module/SetupTest.php b/dev/tests/integration/testsuite/Magento/Framework/Module/SetupTest.php
index 806c015c68b..89d831e603f 100644
--- a/dev/tests/integration/testsuite/Magento/Framework/Module/SetupTest.php
+++ b/dev/tests/integration/testsuite/Magento/Framework/Module/SetupTest.php
@@ -46,26 +46,19 @@ class SetupTest extends \PHPUnit_Framework_TestCase
 
     public function testApplyAllDataUpdates()
     {
-        /*reset versions*/
-        \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
-            '\Magento\Framework\Module\ResourceInterface'
-        )->setDbVersion(
-            'adminnotification_setup',
-            false
-        );
+        /* reset data version */
         \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
             '\Magento\Framework\Module\ResourceInterface'
         )->setDataVersion(
             'adminnotification_setup',
             false
         );
-        $this->_model->deleteTableRow('core_resource', 'code', 'adminnotification_setup');
-        $this->_model->getConnection()->dropTable($this->_model->getTable('adminnotification_inbox'));
-        $this->_model->getConnection()->dropTable($this->_model->getTable('admin_system_messages'));
+        /* clear table */
+        $this->_model->getConnection()->delete($this->_model->getTable('adminnotification_inbox'), 'true');
+        $this->_model->getConnection()->delete($this->_model->getTable('admin_system_messages'), 'true');
         /** @var $updater \Magento\Framework\Module\Updater */
         $updater = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get('Magento\Framework\Module\Updater');
         try {
-            $updater->updateScheme();
             $updater->updateData();
         } catch (\Exception $e) {
             $this->fail("Impossible to continue other tests, because database is broken: {$e}");
diff --git a/dev/tests/integration/testsuite/Magento/Install/Block/AdminTest.php b/dev/tests/integration/testsuite/Magento/Install/Block/AdminTest.php
deleted file mode 100644
index 9447fdccc78..00000000000
--- a/dev/tests/integration/testsuite/Magento/Install/Block/AdminTest.php
+++ /dev/null
@@ -1,62 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-namespace Magento\Install\Block;
-
-class AdminTest extends \PHPUnit_Framework_TestCase
-{
-    public function testToHtml()
-    {
-        $preserve = array(
-            'username' => 'admin',
-            'email' => 'admin@example.com',
-            'firstname' => 'First',
-            'lastname' => 'Last'
-        );
-        $omit = array('password' => 'password_with_1_number', 'password_confirmation' => 'password_with_1_number');
-
-        /** @var $session \Magento\Framework\Session\Generic */
-        $session = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get('Magento\Install\Model\Session');
-        $session->setAdminData(array_merge($preserve, $omit));
-
-        \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get('Magento\Framework\App\State')
-            ->setAreaCode('install');
-
-        /** @var $layout \Magento\Framework\View\LayoutInterface */
-        $layout = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create('Magento\Framework\View\Layout');
-        /** @var $block \Magento\Install\Block\Admin */
-        $block = $layout->createBlock('Magento\Install\Block\Admin');
-        $output = $block->toHtml();
-
-        $this->assertEmpty($session->getAdminData());
-        // form elements must be present with values
-        foreach ($preserve as $key => $value) {
-            $this->assertSelectCount(sprintf('input[name=admin[%s]][value=%s]', $key, $value), 1, $output);
-        }
-        // form elements must be present without values
-        foreach ($omit as $key => $value) {
-            $this->assertSelectCount(sprintf('input[name=admin[%s]]', $key), 1, $output);
-            $this->assertSelectCount(sprintf('input[name=admin[%s]][value=%s]', $key, $value), 0, $output);
-        }
-    }
-}
diff --git a/dev/tests/integration/testsuite/Magento/Install/Model/ConfigTest.php b/dev/tests/integration/testsuite/Magento/Install/Model/ConfigTest.php
deleted file mode 100644
index 8627021412d..00000000000
--- a/dev/tests/integration/testsuite/Magento/Install/Model/ConfigTest.php
+++ /dev/null
@@ -1,227 +0,0 @@
-<?php
-/**
- * \Magento\Install\Model\Config
- *
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-namespace Magento\Install\Model;
-
-use Magento\Framework\App\Filesystem\DirectoryList;
-
-class ConfigTest extends \PHPUnit_Framework_TestCase
-{
-    /**
-     * @var \Magento\Install\Model\Config
-     */
-    private $_object;
-
-    /**
-     * @var \Magento\Framework\ObjectManager
-     */
-    private $_objectManager;
-
-    public function setUp()
-    {
-        $this->_objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
-        /** @var $cacheTypeList \Magento\Framework\App\Cache\TypeListInterface */
-        $cacheTypeList = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
-            'Magento\Framework\App\Cache\TypeListInterface'
-        );
-        $types = array_keys($cacheTypeList->getTypes());
-
-        /** @var $cacheState \Magento\Framework\App\Cache\StateInterface */
-        $cacheState = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
-            'Magento\Framework\App\Cache\StateInterface'
-        );
-        foreach ($types as $type) {
-            $cacheState->setEnabled($type, false);
-        }
-        $cacheState->persist();
-
-        /** @var \Magento\Framework\Filesystem $filesystem */
-        $filesystem = $this->_objectManager->create(
-            'Magento\Framework\Filesystem',
-            array(
-                'directoryList' => $this->_objectManager->create(
-                    'Magento\Framework\App\Filesystem\DirectoryList',
-                    array(
-                        'root' => BP,
-                        'config' => array(
-                            DirectoryList::MODULES => array(DirectoryList::PATH => __DIR__ . '/_files'),
-                            DirectoryList::CONFIG => array(DirectoryList::PATH => __DIR__ . '/_files')
-                        )
-                    )
-                )
-            )
-        );
-
-        /** @var \Magento\Framework\Module\Declaration\FileResolver $modulesDeclarations */
-        $modulesDeclarations = $this->_objectManager->create(
-            'Magento\Framework\Module\Declaration\FileResolver',
-            array('filesystem' => $filesystem)
-        );
-
-
-        /** @var \Magento\Framework\Module\Declaration\Reader\Filesystem $filesystemReader */
-        $filesystemReader = $this->_objectManager->create(
-            'Magento\Framework\Module\Declaration\Reader\Filesystem',
-            array('fileResolver' => $modulesDeclarations)
-        );
-
-        /** @var \Magento\Framework\Module\ModuleList $modulesList */
-        $modulesList = $this->_objectManager->create(
-            'Magento\Framework\Module\ModuleList',
-            array('reader' => $filesystemReader)
-        );
-
-        /** @var \Magento\Framework\Module\Dir\Reader $moduleReader */
-        $moduleReader = $this->_objectManager->create(
-            'Magento\Framework\Module\Dir\Reader',
-            array('moduleList' => $modulesList, 'filesystem' => $filesystem)
-        );
-        $moduleReader->setModuleDir('Magento_Test', 'etc', __DIR__ . '/_files/Magento/Test/etc');
-
-        /** @var \Magento\Framework\App\Config\FileResolver $fileResolver */
-        $fileResolver = $this->_objectManager->create(
-            'Magento\Framework\App\Config\FileResolver',
-            array('moduleReader' => $moduleReader)
-        );
-
-        /** @var \Magento\Install\Model\Config\Reader $configReader */
-        $configReader = $this->_objectManager->create(
-            'Magento\Install\Model\Config\Reader',
-            array('fileResolver' => $fileResolver)
-        );
-
-        $configData = $this->_objectManager->create(
-            'Magento\Install\Model\Config\Data',
-            array('reader' => $configReader)
-        );
-
-        $this->_object = $this->_objectManager->create(
-            'Magento\Install\Model\Config',
-            array('dataStorage' => $configData)
-        );
-    }
-
-    public function testGetWizardSteps()
-    {
-        $steps = $this->_object->getWizardSteps();
-        $this->assertEquals(2, count($steps));
-        $this->assertCount(2, $steps);
-        $this->assertEquals(array('begin', 'locale'), array($steps[0]->getName(), $steps[1]->getName()));
-    }
-
-    public function testGetWritableFullPathsForCheck()
-    {
-        $directories = $this->_object->getWritableFullPathsForCheck();
-        $this->assertEquals(2, count($directories));
-        $this->assertCount(2, $directories);
-        $this->assertEquals('1', $directories['etc']['existence']);
-        $this->assertEquals('0', $directories['etc']['recursive']);
-        $this->assertTrue(array_key_exists('path', $directories['etc']));
-        $this->assertEquals('1', $directories['var']['existence']);
-        $this->assertEquals('1', $directories['var']['recursive']);
-        $this->assertTrue(array_key_exists('path', $directories['var']));
-    }
-
-    public function testGetPathForCheck()
-    {
-        $directories = $this->_object->getPathForCheck();
-        $this->assertEquals(2, count($directories['writeable']));
-        $this->assertCount(2, $directories['writeable']);
-        $expected = array(
-            array('existence' => '1', 'recursive' => '0'),
-            array('existence' => '1', 'recursive' => '1')
-        );
-        $this->assertEquals($expected, $directories['writeable']);
-    }
-
-    public function testMergeCompleteAndPartial()
-    {
-        $fileList = array(
-            file_get_contents(__DIR__ . '/_files/install_wizard_complete.xml'),
-            file_get_contents(__DIR__ . '/_files/install_wizard_partial.xml')
-        );
-        $fileResolverMock = $this->getMockBuilder(
-            'Magento\Framework\Config\FileResolverInterface'
-        )->setMethods(
-            array('get')
-        )->disableOriginalConstructor()->getMock();
-        $fileResolverMock->expects(
-            $this->once()
-        )->method(
-            'get'
-        )->with(
-            $this->equalTo('install_wizard.xml')
-        )->will(
-            $this->returnValue($fileList)
-        );
-
-        $configReader = $this->_objectManager->create(
-            'Magento\Install\Model\Config\Reader',
-            array('fileResolver' => $fileResolverMock)
-        );
-
-        $configData = $this->_objectManager->create(
-            'Magento\Install\Model\Config\Data',
-            array('reader' => $configReader)
-        );
-
-        /** @var \Magento\Install\Model\Config $model */
-        $model = $this->_objectManager->create('Magento\Install\Model\Config', array('dataStorage' => $configData));
-
-        $expectedSteps = array(
-            array(
-                'name' => "begin",
-                'controller' => 'wizard_custom',
-                'action' => 'begin',
-                'code' => 'License Agreement Updated'
-            ),
-            array(
-                'name' => "after_end",
-                'controller' => 'wizard_custom',
-                'action' => 'after_end',
-                'code' => 'One more thing..'
-            )
-        );
-
-        $steps = $model->getWizardSteps();
-
-        $counter = 0;
-        foreach ($steps as $step) {
-            if (isset($expectedSteps[$counter])) {
-                $this->assertEquals($expectedSteps[$counter], $step->getData());
-                $counter++;
-            } else {
-                $this->fail('It is more Install steps than expected');
-            }
-        }
-        if (count($expectedSteps) > $counter + 1) {
-            $this->fail('Some expected steps are missing');
-        }
-        $pathsForCheck = $model->getWritableFullPathsForCheck();
-        $this->assertArrayHasKey('etc', $pathsForCheck);
-        $this->assertArrayHasKey('media', $pathsForCheck);
-        $this->assertEquals('1', $pathsForCheck['etc']['recursive']);
-    }
-}
diff --git a/dev/tests/integration/testsuite/Magento/Install/Model/_files/Magento/Test/etc/install_wizard.xml b/dev/tests/integration/testsuite/Magento/Install/Model/_files/Magento/Test/etc/install_wizard.xml
deleted file mode 100644
index f93d58889dc..00000000000
--- a/dev/tests/integration/testsuite/Magento/Install/Model/_files/Magento/Test/etc/install_wizard.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Academic Free License (AFL 3.0)
- * that is bundled with this package in the file LICENSE_AFL.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/afl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
- */
--->
-<install_wizard xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="./install_wizard.xsd">
-    <steps>
-        <step id="begin" controller="wizard" action="begin">
-            <label translate="true">License Agreement</label>
-        </step>
-        <step id="locale" controller="wizard" action="locale">
-            <label translate="true">Localization</label>
-        </step>
-    </steps>
-    <filesystem_prerequisites>
-        <directory alias="etc" recursive="false" existence="true" writable="true" />
-        <directory alias="var" recursive="true" existence="true" writable="true" />
-    </filesystem_prerequisites>
-</install_wizard>
diff --git a/dev/tests/integration/testsuite/Magento/Install/Model/_files/Magento/Test/etc/module.xml b/dev/tests/integration/testsuite/Magento/Install/Model/_files/Magento/Test/etc/module.xml
deleted file mode 100644
index 322f774f564..00000000000
--- a/dev/tests/integration/testsuite/Magento/Install/Model/_files/Magento/Test/etc/module.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>
-<!--
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Academic Free License (AFL 3.0)
- * that is bundled with this package in the file LICENSE_AFL.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/afl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
- */
--->
-<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../../../../../lib/internal/Magento/Framework/Module/etc/module.xsd">
-    <module name="Magento_Test" schema_version="1.11.0.1" active="true" />
-</config>
diff --git a/dev/tests/integration/testsuite/Magento/Install/Model/_files/install_wizard_complete.xml b/dev/tests/integration/testsuite/Magento/Install/Model/_files/install_wizard_complete.xml
deleted file mode 100644
index 512fb0ece03..00000000000
--- a/dev/tests/integration/testsuite/Magento/Install/Model/_files/install_wizard_complete.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0"?>
-<!--
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Academic Free License (AFL 3.0)
- * that is bundled with this package in the file LICENSE_AFL.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/afl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
- */
--->
-<install_wizard xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-                xsi:noNamespaceSchemaLocation="../../../../../../../../app/code/Magento/Install/etc/install_wizard.xsd">
-    <steps>
-        <step id="begin" controller="wizard" action="begin">
-            <label translate="true">License Agreement</label>
-        </step>
-    </steps>
-    <filesystem_prerequisites>
-        <directory alias="etc" recursive="false" existence="true" writable="true" />
-    </filesystem_prerequisites>
-</install_wizard>
diff --git a/dev/tests/integration/testsuite/Magento/Install/Model/_files/install_wizard_partial.xml b/dev/tests/integration/testsuite/Magento/Install/Model/_files/install_wizard_partial.xml
deleted file mode 100644
index ae2fca3a492..00000000000
--- a/dev/tests/integration/testsuite/Magento/Install/Model/_files/install_wizard_partial.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0"?>
-<!--
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Academic Free License (AFL 3.0)
- * that is bundled with this package in the file LICENSE_AFL.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/afl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
- */
--->
-<install_wizard xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-                xsi:noNamespaceSchemaLocation="../../../../../../../../app/code/Magento/Install/etc/install_wizard_file.xsd">
-    <steps>
-        <step id="begin" controller="wizard_custom">
-            <label translate="true">License Agreement Updated</label>
-        </step>
-        <step id="after_end" controller="wizard_custom" action="after_end">
-            <label translate="true">One more thing..</label>
-        </step>
-    </steps>
-    <filesystem_prerequisites>
-        <directory alias="etc" recursive="true" />
-        <directory alias="media" recursive="false" existence="true" writable="true" />
-    </filesystem_prerequisites>
-</install_wizard>
diff --git a/dev/tests/integration/testsuite/Magento/Newsletter/Model/Plugin/PluginTest.php b/dev/tests/integration/testsuite/Magento/Newsletter/Model/Plugin/PluginTest.php
index ead14bd9cfb..d2d10e7390f 100644
--- a/dev/tests/integration/testsuite/Magento/Newsletter/Model/Plugin/PluginTest.php
+++ b/dev/tests/integration/testsuite/Magento/Newsletter/Model/Plugin/PluginTest.php
@@ -74,7 +74,8 @@ class PluginTest extends \PHPUnit_Framework_TestCase
         /** @var \Magento\Customer\Service\V1\Data\CustomerDetailsBuilder $customerDetailsBuilder */
         $customerDetailsBuilder = $objectManager->get('Magento\Customer\Service\V1\Data\CustomerDetailsBuilder');
         $customerDetailsBuilder->setCustomer($customerBuilder->create());
-        $createdCustomer = $this->accountService->createCustomer($customerDetailsBuilder->create());
+        $createdCustomer = $this->accountService
+            ->createCustomer($customerDetailsBuilder->create(), 'password');
 
         $subscriber->loadByEmail('customer_two@example.com');
         $this->assertTrue($subscriber->isSubscribed());
diff --git a/dev/tests/integration/testsuite/Magento/Newsletter/Model/TemplateTest.php b/dev/tests/integration/testsuite/Magento/Newsletter/Model/TemplateTest.php
index 92e89ced0f9..73d4798a1b6 100644
--- a/dev/tests/integration/testsuite/Magento/Newsletter/Model/TemplateTest.php
+++ b/dev/tests/integration/testsuite/Magento/Newsletter/Model/TemplateTest.php
@@ -87,7 +87,6 @@ class TemplateTest extends \PHPUnit_Framework_TestCase
 
     /**
      * This test expects next themes for areas:
-     * install/design/theme/full_name   Magento/basic
      * adminhtml/design/theme/full_name Magento/backend
      *
      * @magentoAppIsolation  enabled
@@ -116,7 +115,6 @@ class TemplateTest extends \PHPUnit_Framework_TestCase
             'Magento\Core\Model\View\Design'
         );
         return array(
-            'install' => array('install', $design->getConfigurationDesignTheme('install')),
             'backend' => array('adminhtml', 'Magento/backend')
         );
     }
diff --git a/dev/tests/integration/testsuite/Magento/Sales/Block/Adminhtml/Order/Create/Form/AbstractTest.php b/dev/tests/integration/testsuite/Magento/Sales/Block/Adminhtml/Order/Create/Form/AbstractTest.php
index 5088d69e99e..daaa6254f74 100644
--- a/dev/tests/integration/testsuite/Magento/Sales/Block/Adminhtml/Order/Create/Form/AbstractTest.php
+++ b/dev/tests/integration/testsuite/Magento/Sales/Block/Adminhtml/Order/Create/Form/AbstractTest.php
@@ -28,8 +28,8 @@
 namespace Magento\Sales\Block\Adminhtml\Order\Create\Form;
 
 use Magento\Customer\Service\V1\Data\Eav\AttributeMetadataBuilder;
-use Magento\Customer\Service\V1\Data\Eav\OptionBuilder;
-use Magento\Customer\Service\V1\Data\Eav\ValidationRuleBuilder;
+use Magento\Customer\Api\Data\OptionDataBuilder;
+use Magento\Customer\Api\Data\ValidationRuleDataBuilder;
 
 class AbstractTest extends \PHPUnit_Framework_TestCase
 {
@@ -71,9 +71,9 @@ class AbstractTest extends \PHPUnit_Framework_TestCase
         $attributeBuilder = $objectManager->create(
             '\Magento\Customer\Service\V1\Data\Eav\AttributeMetadataBuilder',
             [
-                'optionBuilder' => $objectManager->create('\Magento\Customer\Service\V1\Data\Eav\OptionBuilder'),
+                'optionBuilder' => $objectManager->create('Magento\Customer\Service\V1\Data\Eav\OptionBuilder'),
                 'validationRuleBuilder' => $objectManager->create(
-                    '\Magento\Customer\Service\V1\Data\Eav\ValidationRuleBuilder'
+                    'Magento\Customer\Service\V1\Data\Eav\ValidationRuleBuilder'
                 ),
             ]
         );
diff --git a/dev/tests/integration/testsuite/Magento/Tax/Service/V1/Data/TaxRateSearchResultsBuilderTest.php b/dev/tests/integration/testsuite/Magento/Tax/Service/V1/Data/TaxRateSearchResultsBuilderTest.php
index c8b4abb9f88..d9f00a2d473 100644
--- a/dev/tests/integration/testsuite/Magento/Tax/Service/V1/Data/TaxRateSearchResultsBuilderTest.php
+++ b/dev/tests/integration/testsuite/Magento/Tax/Service/V1/Data/TaxRateSearchResultsBuilderTest.php
@@ -23,7 +23,7 @@
  */
 namespace Magento\Tax\Service\V1\Data;
 
-use Magento\Framework\Service\V1\Data\SearchCriteria;
+use Magento\Framework\Api\SearchCriteria;
 
 /**
  * Integration test for \Magento\Tax\Service\V1\Data\TaxRateSearchResultsBuilder
diff --git a/dev/tests/integration/testsuite/Magento/Tax/Service/V1/Data/TaxRuleSearchResultsBuilderTest.php b/dev/tests/integration/testsuite/Magento/Tax/Service/V1/Data/TaxRuleSearchResultsBuilderTest.php
index 5d21048ce56..e436e650b94 100644
--- a/dev/tests/integration/testsuite/Magento/Tax/Service/V1/Data/TaxRuleSearchResultsBuilderTest.php
+++ b/dev/tests/integration/testsuite/Magento/Tax/Service/V1/Data/TaxRuleSearchResultsBuilderTest.php
@@ -23,7 +23,7 @@
  */
 namespace Magento\Tax\Service\V1\Data;
 
-use Magento\Framework\Service\V1\Data\SearchCriteria;
+use Magento\Framework\Api\SearchCriteria;
 
 /**
  * Integration test for \Magento\Tax\Service\V1\Data\TaxRuleSearchResultsBuilder
@@ -63,7 +63,7 @@ class TaxRuleSearchResultsBuilderTest extends \PHPUnit_Framework_TestCase
         $this->objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
         $this->builder = $this->objectManager->create('Magento\Tax\Service\V1\Data\TaxRuleSearchResultsBuilder');
         $this->searchCriteriaBuilder = $this->objectManager->create(
-            'Magento\Framework\Service\V1\Data\SearchCriteriaBuilder'
+            'Magento\Framework\Api\SearchCriteriaBuilder'
         );
         $this->taxRuleBuilder = $this->objectManager->create('Magento\Tax\Service\V1\Data\TaxRuleBuilder');
     }
diff --git a/dev/tests/integration/testsuite/Magento/Tax/Service/V1/TaxRateServiceTest.php b/dev/tests/integration/testsuite/Magento/Tax/Service/V1/TaxRateServiceTest.php
index 7e06b90f575..5e1c2f2a139 100644
--- a/dev/tests/integration/testsuite/Magento/Tax/Service/V1/TaxRateServiceTest.php
+++ b/dev/tests/integration/testsuite/Magento/Tax/Service/V1/TaxRateServiceTest.php
@@ -501,8 +501,8 @@ class TaxRateServiceTest extends \PHPUnit_Framework_TestCase
 
     /**
      *
-     * @param \Magento\Framework\Service\V1\Data\Filter[] $filters
-     * @param \Magento\Framework\Service\V1\Data\Filter[] $filterGroup
+     * @param \Magento\Framework\Api\Filter[] $filters
+     * @param \Magento\Framework\Api\Filter[] $filterGroup
      * @param $expectedRateCodes
      *
      * @magentoDbIsolation enabled
@@ -519,9 +519,9 @@ class TaxRateServiceTest extends \PHPUnit_Framework_TestCase
             ]
         );
 
-        /** @var \Magento\Framework\Service\V1\Data\SearchCriteriaBuilder $searchBuilder */
+        /** @var \Magento\Framework\Api\SearchCriteriaBuilder $searchBuilder */
         $searchBuilder = Bootstrap::getObjectManager()
-            ->create('Magento\Framework\Service\V1\Data\SearchCriteriaBuilder');
+            ->create('Magento\Framework\Api\SearchCriteriaBuilder');
         foreach ($filters as $filter) {
             $searchBuilder->addFilter([$filter]);
         }
@@ -550,7 +550,7 @@ class TaxRateServiceTest extends \PHPUnit_Framework_TestCase
 
     public function searchTaxRatesDataProvider()
     {
-        $filterBuilder = Bootstrap::getObjectManager()->create('Magento\Framework\Service\V1\Data\FilterBuilder');
+        $filterBuilder = Bootstrap::getObjectManager()->create('Magento\Framework\Api\FilterBuilder');
 
         return [
             'eq' => [
diff --git a/dev/tests/integration/testsuite/Magento/Tax/Service/V1/TaxRuleServiceTest.php b/dev/tests/integration/testsuite/Magento/Tax/Service/V1/TaxRuleServiceTest.php
index 5b6b780af82..bda2161bd2b 100644
--- a/dev/tests/integration/testsuite/Magento/Tax/Service/V1/TaxRuleServiceTest.php
+++ b/dev/tests/integration/testsuite/Magento/Tax/Service/V1/TaxRuleServiceTest.php
@@ -381,9 +381,9 @@ class TaxRuleServiceTest extends \PHPUnit_Framework_TestCase
     {
         $this->setUpDefaultRules();
 
-        /** @var \Magento\Framework\Service\V1\Data\SearchCriteriaBuilder $searchBuilder */
+        /** @var \Magento\Framework\Api\SearchCriteriaBuilder $searchBuilder */
         $searchBuilder = Bootstrap::getObjectManager()
-            ->create('Magento\Framework\Service\V1\Data\SearchCriteriaBuilder');
+            ->create('Magento\Framework\Api\SearchCriteriaBuilder');
         foreach ($filters as $filter) {
             $searchBuilder->addFilter([$filter]);
         }
@@ -433,7 +433,7 @@ class TaxRuleServiceTest extends \PHPUnit_Framework_TestCase
 
     public function searchTaxRulesDataProvider()
     {
-        $filterBuilder = Bootstrap::getObjectManager()->create('\Magento\Framework\Service\V1\Data\FilterBuilder');
+        $filterBuilder = Bootstrap::getObjectManager()->create('\Magento\Framework\Api\FilterBuilder');
 
         return [
             'code eq "Default Rule"' => [
diff --git a/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/BlockInstantiationTest.php b/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/BlockInstantiationTest.php
index e16b02017de..4290650afd8 100644
--- a/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/BlockInstantiationTest.php
+++ b/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/BlockInstantiationTest.php
@@ -127,9 +127,7 @@ class BlockInstantiationTest extends \Magento\TestFramework\TestCase\AbstractInt
     private function _addBlock($module, $blockClass, $class, $templateBlocks)
     {
         $area = 'frontend';
-        if ($module == 'Magento_Install') {
-            $area = 'install';
-        } elseif ($module == 'Magento_Adminhtml' || strpos(
+        if ($module == 'Magento_Adminhtml' || strpos(
             $blockClass,
             '\\Adminhtml\\'
         ) || strpos(
diff --git a/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/LayoutFilesTest.php b/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/LayoutFilesTest.php
index f45b1e4ff21..3fdbc5da720 100644
--- a/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/LayoutFilesTest.php
+++ b/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/LayoutFilesTest.php
@@ -75,7 +75,7 @@ class LayoutFilesTest extends \PHPUnit_Framework_TestCase
      */
     public function layoutArgumentsDataProvider()
     {
-        $areas = ['adminhtml', 'frontend', 'install', 'email'];
+        $areas = ['adminhtml', 'frontend', 'email'];
         $data = [];
         foreach ($areas as $area) {
             $layoutFiles = \Magento\TestFramework\Utility\Files::init()->getLayoutFiles(['area' => $area], false);
diff --git a/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/RouteConfigFilesTest.php b/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/RouteConfigFilesTest.php
index bde42490d28..4ae751f3234 100644
--- a/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/RouteConfigFilesTest.php
+++ b/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/RouteConfigFilesTest.php
@@ -52,18 +52,15 @@ class RouteConfigFilesTest extends \PHPUnit_Framework_TestCase
 
     protected function setUp()
     {
-        global $magentoBaseDir;
-
-        $this->_schemaFile = $magentoBaseDir . '/lib/internal/Magento/Framework/App/etc/routes.xsd';
-        $this->_mergedSchemaFile = $magentoBaseDir . '/lib/internal/Magento/Framework/App/etc/routes_merged.xsd';
+        $this->_schemaFile = BP . '/lib/internal/Magento/Framework/App/etc/routes.xsd';
+        $this->_mergedSchemaFile = BP . '/lib/internal/Magento/Framework/App/etc/routes_merged.xsd';
     }
 
     public function testRouteConfigsValidation()
     {
-        global $magentoBaseDir;
         $invalidFiles = array();
 
-        $mask = $magentoBaseDir . '/app/code/*/*/etc/*/routes.xml';
+        $mask = BP . '/app/code/*/*/etc/*/routes.xml';
         $files = glob($mask);
         $mergedConfig = new \Magento\Framework\Config\Dom('<config></config>', $this->_idAttributes);
 
diff --git a/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/TemplateFilesTest.php b/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/TemplateFilesTest.php
index 4e05b7687a3..0c2457f8358 100644
--- a/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/TemplateFilesTest.php
+++ b/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/TemplateFilesTest.php
@@ -83,9 +83,7 @@ class TemplateFilesTest extends \Magento\TestFramework\TestCase\AbstractIntegrit
                 }
 
                 $area = 'frontend';
-                if ($module == 'Magento_Install') {
-                    $area = 'install';
-                } elseif ($module == 'Magento_Adminhtml' || strpos(
+                if ($module == 'Magento_Adminhtml' || strpos(
                     $blockClass,
                     '\\Adminhtml\\'
                 ) || strpos(
diff --git a/dev/tests/integration/testsuite/Magento/Test/Integrity/StaticFilesTest.php b/dev/tests/integration/testsuite/Magento/Test/Integrity/StaticFilesTest.php
index e138ef625e1..b0b901d2bd9 100644
--- a/dev/tests/integration/testsuite/Magento/Test/Integrity/StaticFilesTest.php
+++ b/dev/tests/integration/testsuite/Magento/Test/Integrity/StaticFilesTest.php
@@ -125,8 +125,6 @@ class StaticFilesTest extends \PHPUnit_Framework_TestCase
                 return $this->design->getConfigurationDesignTheme($area);
             case 'adminhtml':
                 return 'Magento/backend';
-            case 'install':
-                return 'Magento/basic';
             case 'doc':
                 return 'Magento/blank';
             default:
diff --git a/dev/tests/integration/testsuite/Magento/ToolkitFramework/ApplicationTest.php b/dev/tests/integration/testsuite/Magento/ToolkitFramework/ApplicationTest.php
index 1fb26a5f217..d19c1b1c854 100644
--- a/dev/tests/integration/testsuite/Magento/ToolkitFramework/ApplicationTest.php
+++ b/dev/tests/integration/testsuite/Magento/ToolkitFramework/ApplicationTest.php
@@ -52,9 +52,6 @@ class ApplicationTest extends \Magento\TestFramework\Indexer\TestCase
         parent::setUpBeforeClass();
     }
 
-    /**
-     * @magentoAppArea install
-     */
     public function testTest()
     {
         $fixturesArray = \Magento\ToolkitFramework\FixtureSet::getInstance()->getFixtures();
diff --git a/dev/tests/integration/testsuite/Magento/User/Model/UserTest.php b/dev/tests/integration/testsuite/Magento/User/Model/UserTest.php
index dc4c4edde26..0e62f49159b 100644
--- a/dev/tests/integration/testsuite/Magento/User/Model/UserTest.php
+++ b/dev/tests/integration/testsuite/Magento/User/Model/UserTest.php
@@ -104,7 +104,7 @@ class UserTest extends \PHPUnit_Framework_TestCase
     public function testUpdateRoleOnSave()
     {
         $this->_model->loadByUsername(\Magento\TestFramework\Bootstrap::ADMIN_NAME);
-        $this->assertEquals('Administrators', $this->_model->getRole()->getRoleName());
+        $this->assertEquals(\Magento\TestFramework\Bootstrap::ADMIN_ROLE_NAME, $this->_model->getRole()->getRoleName());
         $this->_model->setRoleId(self::$_newRole->getId())->save();
         $this->assertEquals('admin_role', $this->_model->getRole()->getRoleName());
     }
@@ -187,9 +187,11 @@ class UserTest extends \PHPUnit_Framework_TestCase
 
     public function testGetName()
     {
+        $firstname = \Magento\TestFramework\Bootstrap::ADMIN_FIRSTNAME;
+        $lastname = \Magento\TestFramework\Bootstrap::ADMIN_LASTNAME;
         $this->_model->loadByUsername(\Magento\TestFramework\Bootstrap::ADMIN_NAME);
-        $this->assertEquals('firstname lastname', $this->_model->getName());
-        $this->assertEquals('firstname///lastname', $this->_model->getName('///'));
+        $this->assertEquals("$firstname $lastname", $this->_model->getName());
+        $this->assertEquals("$firstname///$lastname", $this->_model->getName('///'));
     }
 
     public function testGetUninitializedAclRole()
@@ -291,7 +293,7 @@ class UserTest extends \PHPUnit_Framework_TestCase
         $this->_model->setFirstname('NewFirstName');
         $this->assertEquals('NewFirstName', $this->_model->getFirstname());
         $this->_model->reload();
-        $this->assertEquals('firstname', $this->_model->getFirstname());
+        $this->assertEquals(\Magento\TestFramework\Bootstrap::ADMIN_FIRSTNAME, $this->_model->getFirstname());
     }
 
     /**
@@ -335,7 +337,7 @@ class UserTest extends \PHPUnit_Framework_TestCase
         )->setLastname(
             'Doe'
         )->setEmail(
-            'jdoe@gmail.com'
+            'jdoe@example.com'
         )->setPassword(
             '123123q'
         );
@@ -421,7 +423,7 @@ class UserTest extends \PHPUnit_Framework_TestCase
         )->setLastname(
             'Doe'
         )->setEmail(
-            'jdoe@gmail.com'
+            'jdoe@example.com'
         )->setPassword(
             '1234abc'
         )->setPasswordConfirmation(
diff --git a/dev/tests/integration/testsuite/Magento/Webapi/Model/Soap/ServerTest.php b/dev/tests/integration/testsuite/Magento/Webapi/Model/Soap/ServerTest.php
index 40b7c49e07e..82c96905339 100644
--- a/dev/tests/integration/testsuite/Magento/Webapi/Model/Soap/ServerTest.php
+++ b/dev/tests/integration/testsuite/Magento/Webapi/Model/Soap/ServerTest.php
@@ -52,7 +52,7 @@ class ServerTest extends \PHPUnit_Framework_TestCase
     /** @var \Magento\Webapi\Model\Soap\Server\Factory */
     protected $_soapServerFactory;
 
-    /** @var \Magento\Webapi\Model\Config\ClassReflector\TypeProcessor */
+    /** @var \Magento\Framework\Reflection\TypeProcessor */
     protected $_typeProcessor;
 
     /** @var \Magento\Store\Model\Store|\PHPUnit_Framework_MockObject_MockObject */
@@ -86,7 +86,7 @@ class ServerTest extends \PHPUnit_Framework_TestCase
             'Magento\Webapi\Model\Soap\Server\Factory'
         )->disableOriginalConstructor()->getMock();
         $this->_typeProcessor = $this->getMock(
-            'Magento\Webapi\Model\Config\ClassReflector\TypeProcessor',
+            'Magento\Framework\Reflection\TypeProcessor',
             array(),
             array(),
             '',
diff --git a/dev/tests/integration/testsuite/Magento/Webapi/Service/Entity/AssociativeArrayDataObjectBuilder.php b/dev/tests/integration/testsuite/Magento/Webapi/Service/Entity/AssociativeArrayBuilder.php
similarity index 86%
rename from dev/tests/integration/testsuite/Magento/Webapi/Service/Entity/AssociativeArrayDataObjectBuilder.php
rename to dev/tests/integration/testsuite/Magento/Webapi/Service/Entity/AssociativeArrayBuilder.php
index 75994a4b991..a02cb88fa6c 100644
--- a/dev/tests/integration/testsuite/Magento/Webapi/Service/Entity/AssociativeArrayDataObjectBuilder.php
+++ b/dev/tests/integration/testsuite/Magento/Webapi/Service/Entity/AssociativeArrayBuilder.php
@@ -23,13 +23,13 @@
  */
 namespace Magento\Webapi\Service\Entity;
 
-class AssociativeArrayDataObjectBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder
+class AssociativeArrayBuilder extends \Magento\Framework\Api\ExtensibleObjectBuilder
 {
     /**
      * @param string[] $associativeArray
      */
     public function setAssociativeArray(array $associativeArray)
     {
-        $this->_data['associativeArray'] = $associativeArray;
+        $this->data['associativeArray'] = $associativeArray;
     }
 }
diff --git a/dev/tests/integration/testsuite/Magento/Webapi/Service/Entity/DataObjectArrayDataObjectBuilder.php b/dev/tests/integration/testsuite/Magento/Webapi/Service/Entity/DataObjectArrayBuilder.php
similarity index 87%
rename from dev/tests/integration/testsuite/Magento/Webapi/Service/Entity/DataObjectArrayDataObjectBuilder.php
rename to dev/tests/integration/testsuite/Magento/Webapi/Service/Entity/DataObjectArrayBuilder.php
index a8fa6be0faa..144b187829b 100644
--- a/dev/tests/integration/testsuite/Magento/Webapi/Service/Entity/DataObjectArrayDataObjectBuilder.php
+++ b/dev/tests/integration/testsuite/Magento/Webapi/Service/Entity/DataObjectArrayBuilder.php
@@ -23,13 +23,13 @@
  */
 namespace Magento\Webapi\Service\Entity;
 
-class DataObjectArrayDataObjectBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder
+class DataObjectArrayBuilder extends \Magento\Framework\Api\ExtensibleObjectBuilder
 {
     /**
      * @param \Magento\Webapi\Service\Entity\SimpleDataObject[] $items
      */
     public function setItems(array $items)
     {
-        $this->_data['items'] = $items;
+        $this->data['items'] = $items;
     }
 }
diff --git a/dev/tests/integration/testsuite/Magento/Webapi/Service/Entity/NestedDataObjectBuilder.php b/dev/tests/integration/testsuite/Magento/Webapi/Service/Entity/NestedBuilder.php
similarity index 88%
rename from dev/tests/integration/testsuite/Magento/Webapi/Service/Entity/NestedDataObjectBuilder.php
rename to dev/tests/integration/testsuite/Magento/Webapi/Service/Entity/NestedBuilder.php
index 286eac2eed2..576ea4fdc8a 100644
--- a/dev/tests/integration/testsuite/Magento/Webapi/Service/Entity/NestedDataObjectBuilder.php
+++ b/dev/tests/integration/testsuite/Magento/Webapi/Service/Entity/NestedBuilder.php
@@ -23,13 +23,13 @@
  */
 namespace Magento\Webapi\Service\Entity;
 
-class NestedDataObjectBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder
+class NestedBuilder extends \Magento\Framework\Api\ExtensibleObjectBuilder
 {
     /**
      * @param \Magento\Webapi\Service\Entity\SimpleDataObject $details
      */
     public function setDetails($details)
     {
-        $this->_data['details'] = $details;
+        $this->data['details'] = $details;
     }
 }
diff --git a/dev/tests/integration/testsuite/Magento/Webapi/Service/Entity/SimpleArrayDataObjectBuilder.php b/dev/tests/integration/testsuite/Magento/Webapi/Service/Entity/SimpleArrayBuilder.php
similarity index 88%
rename from dev/tests/integration/testsuite/Magento/Webapi/Service/Entity/SimpleArrayDataObjectBuilder.php
rename to dev/tests/integration/testsuite/Magento/Webapi/Service/Entity/SimpleArrayBuilder.php
index 7503191528c..f1a0638edb3 100644
--- a/dev/tests/integration/testsuite/Magento/Webapi/Service/Entity/SimpleArrayDataObjectBuilder.php
+++ b/dev/tests/integration/testsuite/Magento/Webapi/Service/Entity/SimpleArrayBuilder.php
@@ -23,13 +23,13 @@
  */
 namespace Magento\Webapi\Service\Entity;
 
-class SimpleArrayDataObjectBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder
+class SimpleArrayBuilder extends \Magento\Framework\Api\ExtensibleObjectBuilder
 {
     /**
      * @param int[] $ids
      */
     public function setIds(array $ids)
     {
-        $this->_data['ids'] = $ids;
+        $this->data['ids'] = $ids;
     }
 }
diff --git a/dev/tests/integration/testsuite/Magento/Webapi/Service/Entity/SimpleDataObjectBuilder.php b/dev/tests/integration/testsuite/Magento/Webapi/Service/Entity/SimpleBuilder.php
similarity index 86%
rename from dev/tests/integration/testsuite/Magento/Webapi/Service/Entity/SimpleDataObjectBuilder.php
rename to dev/tests/integration/testsuite/Magento/Webapi/Service/Entity/SimpleBuilder.php
index 4287a8c5b57..f02254518e7 100644
--- a/dev/tests/integration/testsuite/Magento/Webapi/Service/Entity/SimpleDataObjectBuilder.php
+++ b/dev/tests/integration/testsuite/Magento/Webapi/Service/Entity/SimpleBuilder.php
@@ -23,14 +23,14 @@
  */
 namespace Magento\Webapi\Service\Entity;
 
-class SimpleDataObjectBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder
+class SimpleBuilder extends \Magento\Framework\Api\ExtensibleObjectBuilder
 {
     /**
      * @param int $entityId
      */
     public function setEntityId($entityId)
     {
-        $this->_data['entityId'] = $entityId;
+        $this->data['entityId'] = $entityId;
     }
 
     /**
@@ -38,6 +38,6 @@ class SimpleDataObjectBuilder extends \Magento\Framework\Service\Data\AbstractEx
      */
     public function setName($name)
     {
-        $this->_data['name'] = $name;
+        $this->data['name'] = $name;
     }
 }
diff --git a/dev/tests/integration/testsuite/Magento/Webapi/Service/Entity/TestService.php b/dev/tests/integration/testsuite/Magento/Webapi/Service/Entity/TestService.php
index bf6edddcb52..23e531e8d8e 100644
--- a/dev/tests/integration/testsuite/Magento/Webapi/Service/Entity/TestService.php
+++ b/dev/tests/integration/testsuite/Magento/Webapi/Service/Entity/TestService.php
@@ -36,10 +36,10 @@ class TestService
     }
 
     /**
-     * @param \Magento\Webapi\Service\Entity\NestedData $nested
-     * @return \Magento\Webapi\Service\Entity\NestedData
+     * @param \Magento\Webapi\Service\Entity\Nested $nested
+     * @return \Magento\Webapi\Service\Entity\Nested
      */
-    public function nestedData(NestedData $nested)
+    public function nestedData(Nested $nested)
     {
         return $nested;
     }
@@ -63,8 +63,8 @@ class TestService
     }
 
     /**
-     * @param \Magento\Webapi\Service\Entity\SimpleData[] $dataObjects
-     * @return \Magento\Webapi\Service\Entity\SimpleData[]
+     * @param \Magento\Webapi\Service\Entity\Simple[] $dataObjects
+     * @return \Magento\Webapi\Service\Entity\Simple[]
      */
     public function dataArray(array $dataObjects)
     {
@@ -72,28 +72,28 @@ class TestService
     }
 
     /**
-     * @param \Magento\Webapi\Service\Entity\SimpleArrayData $arrayData
-     * @return \Magento\Webapi\Service\Entity\SimpleArrayData
+     * @param \Magento\Webapi\Service\Entity\SimpleArray $arrayData
+     * @return \Magento\Webapi\Service\Entity\SimpleArray
      */
-    public function nestedSimpleArray(SimpleArrayData $arrayData)
+    public function nestedSimpleArray(SimpleArray $arrayData)
     {
         return $arrayData;
     }
 
     /**
-     * @param \Magento\Webapi\Service\Entity\AssociativeArrayData $associativeArrayData
-     * @return \Magento\Webapi\Service\Entity\AssociativeArrayData
+     * @param \Magento\Webapi\Service\Entity\AssociativeArray $associativeArrayData
+     * @return \Magento\Webapi\Service\Entity\AssociativeArray
      */
-    public function nestedAssociativeArray(AssociativeArrayData $associativeArrayData)
+    public function nestedAssociativeArray(AssociativeArray $associativeArrayData)
     {
         return $associativeArrayData;
     }
 
     /**
-     * @param \Magento\Webapi\Service\Entity\DataArrayData $dataObjects
-     * @return \Magento\Webapi\Service\Entity\DataArrayData
+     * @param \Magento\Webapi\Service\Entity\DataArray $dataObjects
+     * @return \Magento\Webapi\Service\Entity\DataArray
      */
-    public function nestedDataArray(DataArrayData $dataObjects)
+    public function nestedDataArray(DataArray $dataObjects)
     {
         return $dataObjects;
     }
diff --git a/dev/tests/integration/testsuite/Magento/Weee/Model/TaxTest.php b/dev/tests/integration/testsuite/Magento/Weee/Model/TaxTest.php
index 64cb2bf4934..8774f32243e 100644
--- a/dev/tests/integration/testsuite/Magento/Weee/Model/TaxTest.php
+++ b/dev/tests/integration/testsuite/Magento/Weee/Model/TaxTest.php
@@ -66,7 +66,7 @@ class TaxTest extends \PHPUnit_Framework_TestCase
             'Magento\Customer\Service\V1\Data\CustomerBuilder',
             ['metadataService' => $customerMetadataService]
         );
-        $expected = \Magento\Framework\Service\ExtensibleDataObjectConverter::toFlatArray(
+        $expected = \Magento\Framework\Api\ExtensibleDataObjectConverter::toFlatArray(
             $customerAccountService->getCustomer(1)
         );
         $customerBuilder->populateWithArray($expected);
diff --git a/dev/tests/js/run_js_tests.php b/dev/tests/js/run_js_tests.php
index e79ee6ce04b..0523bd0e084 100644
--- a/dev/tests/js/run_js_tests.php
+++ b/dev/tests/js/run_js_tests.php
@@ -26,7 +26,6 @@
 
 define('RELATIVE_APP_ROOT', '../../..');
 require __DIR__ . '/../../../app/autoload.php';
-(new \Magento\Framework\Autoload\IncludePath())->addIncludePath(realpath(RELATIVE_APP_ROOT . '/lib/internal'));
 
 $userConfig = normalize('jsTestDriver.php');
 $defaultConfig = normalize('jsTestDriver.php.dist');
diff --git a/dev/tests/performance/config.php.dist b/dev/tests/performance/config.php.dist
index a063ed51bf9..0977e8c380e 100644
--- a/dev/tests/performance/config.php.dist
+++ b/dev/tests/performance/config.php.dist
@@ -26,33 +26,28 @@ return array(
     'application' => array(
         'url_host' => '127.0.0.1',
         'url_path' => '/',
-        'admin' => array(
-            'frontname' => 'backend',
-            'username' => 'admin',
-            'password' => '123123q', // must be at least of 7 both numeric and alphanumeric chars
-        ),
-        /* Optional installation configuration. If omitted, no installation occurs. */
         'installation' => array(
-            /**
-             * Console installer options
-             * @see \Magento\Install\Model\Installer\Console::_installOptions
-             */
             'options' => array(
-                'license_agreement_accepted' => 'yes',
-                'locale'                     => 'en_US',
+                'language'                   => 'en_US',
                 'timezone'                   => 'America/Los_Angeles',
-                'default_currency'           => 'USD',
+                'currency'                   => 'USD',
                 'db_host'                    => 'localhost',
                 'db_name'                    => 'magento',
                 'db_user'                    => 'root',
                 'db_pass'                    => '',
-                'use_secure'                 => 'no',
-                'use_secure_admin'           => 'no',
-                'use_rewrites'               => 'no',
+                'use_secure'                 => '0',
+                'use_secure_admin'           => '0',
+                'use_rewrites'               => '0',
                 'admin_lastname'             => 'Admin',
                 'admin_firstname'            => 'Admin',
                 'admin_email'                => 'admin@example.com',
-                'admin_no_form_key'          => 'yes',
+                'admin_username'             => 'admin',
+                'admin_password'             => '123123q',
+                'admin_use_security_key'     => '0',
+                'backend_frontname'          => 'backend',
+            ),
+            'options_no_value' => array(
+                'cleanup_database',
             ),
         ),
     ),
diff --git a/dev/tests/performance/framework/Magento/TestFramework/Application.php b/dev/tests/performance/framework/Magento/TestFramework/Application.php
index 715af60f745..0892bc5c528 100644
--- a/dev/tests/performance/framework/Magento/TestFramework/Application.php
+++ b/dev/tests/performance/framework/Magento/TestFramework/Application.php
@@ -39,18 +39,11 @@ class Application
     protected $_config;
 
     /**
-     * Path to shell installer script
+     * Path to shell installer and uninstaller script
      *
      * @var string
      */
-    protected $_installScript;
-
-    /**
-     * Path to shell uninstaller script
-     *
-     * @var string
-     */
-    protected $_uninstallScript;
+    protected $_script;
 
     /**
      * @var \Magento\Framework\Shell
@@ -88,10 +81,9 @@ class Application
         \Magento\Framework\ObjectManager $objectManager,
         \Magento\Framework\Shell $shell
     ) {
-        $shellDir = $config->getApplicationBaseDir() . '/dev/shell';
+        $shellDir = $config->getApplicationBaseDir() . '/setup';
         $this->_objectManager = $objectManager;
-        $this->_installScript = $this->_assertPath($shellDir . '/install.php');
-        $this->_uninstallScript = $this->_assertPath($shellDir . '/uninstall.php');
+        $this->_script = $this->_assertPath($shellDir . '/index.php');
         $this->_config = $config;
         $this->_shell = $shell;
     }
@@ -156,7 +148,7 @@ class Application
      */
     protected function _uninstall()
     {
-        $this->_shell->execute('php -f %s', array($this->_uninstallScript));
+        $this->_shell->execute('php -f %s uninstall', array($this->_script));
 
         $this->_isInstalled = false;
         $this->_fixtures = array();
@@ -173,24 +165,23 @@ class Application
     protected function _install()
     {
         $installOptions = $this->_config->getInstallOptions();
+        $installOptionsNoValue = $this->_config->getInstallOptionsNoValue();
         if (!$installOptions) {
             throw new \Magento\Framework\Exception('Trying to install Magento, but installation options are not set');
         }
 
         // Populate install options with global options
         $baseUrl = 'http://' . $this->_config->getApplicationUrlHost() . $this->_config->getApplicationUrlPath();
-        $installOptions = array_merge($installOptions, array('url' => $baseUrl, 'secure_base_url' => $baseUrl));
-        $adminOptions = $this->_config->getAdminOptions();
-        foreach ($adminOptions as $key => $val) {
-            $installOptions['admin_' . $key] = $val;
-        }
-
-        $installCmd = 'php -f %s --';
-        $installCmdArgs = array($this->_installScript);
+        $installOptions = array_merge($installOptions, array('base_url' => $baseUrl, 'base_url_secure' => $baseUrl));
+        $installCmd = 'php -f %s install';
+        $installCmdArgs = array($this->_script);
         foreach ($installOptions as $optionName => $optionValue) {
-            $installCmd .= " --{$optionName} %s";
+            $installCmd .= " --{$optionName}=%s";
             $installCmdArgs[] = $optionValue;
         }
+        foreach ($installOptionsNoValue as $optionName) {
+            $installCmd .= " --{$optionName}";
+        }
         $this->_shell->execute($installCmd, $installCmdArgs);
 
         $this->_isInstalled = true;
diff --git a/dev/tests/performance/framework/Magento/TestFramework/Performance/Config.php b/dev/tests/performance/framework/Magento/TestFramework/Performance/Config.php
index 6c8e0f8ec93..538139f0207 100644
--- a/dev/tests/performance/framework/Magento/TestFramework/Performance/Config.php
+++ b/dev/tests/performance/framework/Magento/TestFramework/Performance/Config.php
@@ -49,11 +49,6 @@ class Config
      */
     protected $_applicationUrlPath;
 
-    /**
-     * @var array
-     */
-    protected $_adminOptions = array();
-
     /**
      * @var string
      */
@@ -64,6 +59,11 @@ class Config
      */
     protected $_installOptions = array();
 
+    /**
+     * @var array
+     */
+    protected $_installOptionsNoValue = array();
+
     /**
      * @var array
      */
@@ -92,12 +92,15 @@ class Config
         $this->_applicationBaseDir = $appBaseDir;
         $this->_applicationUrlHost = $applicationOptions['url_host'];
         $this->_applicationUrlPath = $applicationOptions['url_path'];
-        $this->_adminOptions = $applicationOptions['admin'];
 
         if (isset($applicationOptions['installation']['options'])) {
             $this->_installOptions = $applicationOptions['installation']['options'];
         }
 
+        if (isset($applicationOptions['installation']['options_no_value'])) {
+            $this->_installOptionsNoValue = $applicationOptions['installation']['options_no_value'];
+        }
+
         $this->_parseScenarios($configData['scenario']);
     }
 
@@ -128,10 +131,12 @@ class Config
         }
 
         // Validate admin options data
-        $requiredAdminKeys = array('frontname', 'username', 'password');
+        $requiredAdminKeys = array('admin_username', 'admin_password', 'backend_frontname');
         foreach ($requiredAdminKeys as $requiredKeyName) {
-            if (empty($configData['application']['admin'][$requiredKeyName])) {
-                throw new \Magento\Framework\Exception("Admin options array must define '{$requiredKeyName}' key.");
+            if (empty($configData['application']['installation']['options'][$requiredKeyName])) {
+                throw new \Magento\Framework\Exception(
+                    "Installation options array must define '{$requiredKeyName}' key."
+                );
             }
         }
     }
@@ -281,14 +286,14 @@ class Config
      */
     protected function _getFixedScenarioArguments()
     {
-        $adminOptions = $this->getAdminOptions();
+        $options = $this->getInstallOptions();
         return array(
             \Magento\TestFramework\Performance\Scenario::ARG_HOST => $this->getApplicationUrlHost(),
             \Magento\TestFramework\Performance\Scenario::ARG_PATH => $this->getApplicationUrlPath(),
             \Magento\TestFramework\Performance\Scenario::ARG_BASEDIR => $this->getApplicationBaseDir(),
-            \Magento\TestFramework\Performance\Scenario::ARG_BACKEND_FRONTNAME => $adminOptions['frontname'],
-            \Magento\TestFramework\Performance\Scenario::ARG_ADMIN_USERNAME => $adminOptions['username'],
-            \Magento\TestFramework\Performance\Scenario::ARG_ADMIN_PASSWORD => $adminOptions['password'],
+            \Magento\TestFramework\Performance\Scenario::ARG_BACKEND_FRONTNAME => $options['backend_frontname'],
+            \Magento\TestFramework\Performance\Scenario::ARG_ADMIN_USERNAME => $options['admin_username'],
+            \Magento\TestFramework\Performance\Scenario::ARG_ADMIN_PASSWORD => $options['admin_password'],
             'jmeter.save.saveservice.output_format' => 'xml',
         );
     }
@@ -346,23 +351,23 @@ class Config
     }
 
     /**
-     * Retrieve admin options - backend path and admin user credentials
+     * Retrieve application installation options
      *
      * @return array
      */
-    public function getAdminOptions()
+    public function getInstallOptions()
     {
-        return $this->_adminOptions;
+        return $this->_installOptions;
     }
 
     /**
-     * Retrieve application installation options
+     * Retrieve application installation options that have no value
      *
      * @return array
      */
-    public function getInstallOptions()
+    public function getInstallOptionsNoValue()
     {
-        return $this->_installOptions;
+        return $this->_installOptionsNoValue;
     }
 
     /**
diff --git a/dev/tests/performance/framework/bootstrap.php b/dev/tests/performance/framework/bootstrap.php
index 77bdec73559..ea2f09adfb6 100644
--- a/dev/tests/performance/framework/bootstrap.php
+++ b/dev/tests/performance/framework/bootstrap.php
@@ -26,8 +26,10 @@
 
 $testsBaseDir = dirname(__DIR__);
 require __DIR__ . '/../../../../app/bootstrap.php';
+$includePath = new \Magento\Framework\Autoload\IncludePath();
+spl_autoload_register([$includePath, 'load']);
 $appBootstrap = \Magento\Framework\App\Bootstrap::create(BP, $_SERVER);
-(new \Magento\Framework\Autoload\IncludePath())->addIncludePath($testsBaseDir . '/framework');
+$includePath->addIncludePath($testsBaseDir . '/framework');
 $bootstrap = new \Magento\TestFramework\Performance\Bootstrap($appBootstrap, $testsBaseDir);
 $bootstrap->cleanupReports();
 return $bootstrap;
diff --git a/dev/tests/performance/framework/tests/unit/framework/bootstrap.php b/dev/tests/performance/framework/tests/unit/framework/bootstrap.php
index 144c4a86f22..da691b6eebb 100644
--- a/dev/tests/performance/framework/tests/unit/framework/bootstrap.php
+++ b/dev/tests/performance/framework/tests/unit/framework/bootstrap.php
@@ -25,4 +25,6 @@
 $magentoBaseDir = realpath(__DIR__ . '/../../../../../../../');
 
 require_once "{$magentoBaseDir}/app/bootstrap.php";
-(new \Magento\Framework\Autoload\IncludePath())->addIncludePath("{$magentoBaseDir}/dev/tests/performance/framework");
+$includePath = new \Magento\Framework\Autoload\IncludePath();
+spl_autoload_register([$includePath, 'load']);
+$includePath->addIncludePath("{$magentoBaseDir}/dev/tests/performance/framework");
diff --git a/dev/tests/performance/framework/tests/unit/testsuite/Magento/Test/ApplicationTest.php b/dev/tests/performance/framework/tests/unit/testsuite/Magento/Test/ApplicationTest.php
index c01af6805d8..ccfc32c58ac 100644
--- a/dev/tests/performance/framework/tests/unit/testsuite/Magento/Test/ApplicationTest.php
+++ b/dev/tests/performance/framework/tests/unit/testsuite/Magento/Test/ApplicationTest.php
@@ -47,12 +47,7 @@ class ApplicationTest extends \PHPUnit_Framework_TestCase
     /**
      * @var string
      */
-    protected $_installerScript;
-
-    /**
-     * @var string
-     */
-    protected $_uninstallScript;
+    protected $_script;
 
     /**
      * @var string
@@ -72,8 +67,7 @@ class ApplicationTest extends \PHPUnit_Framework_TestCase
         $this->_fixtureDir = __DIR__ . '/Performance/_files';
         $this->_fixtureConfigData = require $this->_fixtureDir . '/config_data.php';
 
-        $this->_installerScript = realpath($this->_fixtureDir . '/app_base_dir/dev/shell/install.php');
-        $this->_uninstallScript = substr($this->_installerScript, 0, -11) . 'uninstall.php';
+        $this->_script = realpath($this->_fixtureDir . '/app_base_dir/setup/index.php');
 
         $this->_config = new \Magento\TestFramework\Performance\Config(
             $this->_fixtureConfigData,
@@ -203,7 +197,7 @@ class ApplicationTest extends \PHPUnit_Framework_TestCase
             'execute'
         )->with(
             $this->anything(),
-            $this->contains($this->_uninstallScript)
+            $this->contains($this->_script)
         );
 
         $this->_shell->expects(
@@ -212,7 +206,7 @@ class ApplicationTest extends \PHPUnit_Framework_TestCase
             'execute'
         )->with(
             $this->anything(),
-            $this->contains($this->_installerScript)
+            $this->contains($this->_script)
         );
 
         $fixture1 = $this->_getFixtureFiles(array('fixture1'));
@@ -244,7 +238,7 @@ class ApplicationTest extends \PHPUnit_Framework_TestCase
             'execute'
         )->with(
             $this->anything(),
-            $this->contains($this->_uninstallScript)
+            $this->contains($this->_script)
         );
 
         $this->_shell->expects(
@@ -253,7 +247,7 @@ class ApplicationTest extends \PHPUnit_Framework_TestCase
             'execute'
         )->with(
             $this->anything(),
-            $this->contains($this->_installerScript)
+            $this->contains($this->_script)
         );
 
         $fixtures = $this->_getFixtureFiles(array('fixture1', 'fixture2'));
diff --git a/dev/tests/performance/framework/tests/unit/testsuite/Magento/Test/Performance/ConfigTest.php b/dev/tests/performance/framework/tests/unit/testsuite/Magento/Test/Performance/ConfigTest.php
index f69e73bd9b4..70b0295130e 100644
--- a/dev/tests/performance/framework/tests/unit/testsuite/Magento/Test/Performance/ConfigTest.php
+++ b/dev/tests/performance/framework/tests/unit/testsuite/Magento/Test/Performance/ConfigTest.php
@@ -157,15 +157,15 @@ class ConfigTest extends \PHPUnit_Framework_TestCase
         $this->assertEquals('/', $this->_object->getApplicationUrlPath());
     }
 
-    public function testGetAdminOptions()
-    {
-        $expectedOptions = array('frontname' => 'backend', 'username' => 'admin', 'password' => 'password1');
-        $this->assertEquals($expectedOptions, $this->_object->getAdminOptions());
-    }
-
     public function testGetInstallOptions()
     {
-        $expectedOptions = array('option1' => 'value 1', 'option2' => 'value 2');
+        $expectedOptions = array(
+            'option1' => 'value 1',
+            'option2' => 'value 2',
+            'backend_frontname' => 'backend',
+            'admin_username' => 'admin',
+            'admin_password' => 'password1',
+        );
         $this->assertEquals($expectedOptions, $this->_object->getInstallOptions());
     }
 
diff --git a/dev/tests/performance/framework/tests/unit/testsuite/Magento/Test/Performance/_files/app_base_dir/dev/shell/install.php b/dev/tests/performance/framework/tests/unit/testsuite/Magento/Test/Performance/_files/app_base_dir/setup/index.php
similarity index 94%
rename from dev/tests/performance/framework/tests/unit/testsuite/Magento/Test/Performance/_files/app_base_dir/dev/shell/install.php
rename to dev/tests/performance/framework/tests/unit/testsuite/Magento/Test/Performance/_files/app_base_dir/setup/index.php
index 1d78092f043..bcfe30ff21b 100644
--- a/dev/tests/performance/framework/tests/unit/testsuite/Magento/Test/Performance/_files/app_base_dir/dev/shell/install.php
+++ b/dev/tests/performance/framework/tests/unit/testsuite/Magento/Test/Performance/_files/app_base_dir/setup/index.php
@@ -22,4 +22,4 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-/* Magento console installer stub */
+/* Magento console installer and uninstaller stub */
diff --git a/dev/tests/performance/framework/tests/unit/testsuite/Magento/Test/Performance/_files/bootstrap/config_dist/config.php.dist b/dev/tests/performance/framework/tests/unit/testsuite/Magento/Test/Performance/_files/bootstrap/config_dist/config.php.dist
index 90d51edc6aa..e75ff8a62a2 100644
--- a/dev/tests/performance/framework/tests/unit/testsuite/Magento/Test/Performance/_files/bootstrap/config_dist/config.php.dist
+++ b/dev/tests/performance/framework/tests/unit/testsuite/Magento/Test/Performance/_files/bootstrap/config_dist/config.php.dist
@@ -26,10 +26,12 @@ return array(
     'application' => array(
         'url_host' => '127.0.0.1',
         'url_path' => '/',
-        'admin' => array(
-            'frontname' => 'backend',
-            'username' => 'admin',
-            'password' => 'password1',
+        'installation' => array(
+            'options' => array(
+                'backend_frontname' => 'backend',
+                'admin_username' => 'admin',
+                'admin_password' => 'password1',
+            ),
         ),
     ),
     'scenario' => array(
diff --git a/dev/tests/performance/framework/tests/unit/testsuite/Magento/Test/Performance/_files/bootstrap/config_normal/config.php b/dev/tests/performance/framework/tests/unit/testsuite/Magento/Test/Performance/_files/bootstrap/config_normal/config.php
index ab4aac9f8f1..25979ea27ab 100644
--- a/dev/tests/performance/framework/tests/unit/testsuite/Magento/Test/Performance/_files/bootstrap/config_normal/config.php
+++ b/dev/tests/performance/framework/tests/unit/testsuite/Magento/Test/Performance/_files/bootstrap/config_normal/config.php
@@ -26,7 +26,13 @@ return array(
     'application' => array(
         'url_host' => '192.168.0.1',
         'url_path' => '/',
-        'admin' => array('frontname' => 'backend', 'username' => 'admin', 'password' => 'password1')
+        'installation' => array(
+            'options' => array(
+                'backend_frontname' => 'backend',
+                'admin_username' => 'admin',
+                'admin_password' => 'password1',
+            ),
+        ),
     ),
     'scenario' => array('scenarios' => array()),
     'report_dir' => 'report'
diff --git a/dev/tests/performance/framework/tests/unit/testsuite/Magento/Test/Performance/_files/bootstrap/config_normal/config.php.dist b/dev/tests/performance/framework/tests/unit/testsuite/Magento/Test/Performance/_files/bootstrap/config_normal/config.php.dist
index 1aa5e5d4204..a0fff99f3e4 100644
--- a/dev/tests/performance/framework/tests/unit/testsuite/Magento/Test/Performance/_files/bootstrap/config_normal/config.php.dist
+++ b/dev/tests/performance/framework/tests/unit/testsuite/Magento/Test/Performance/_files/bootstrap/config_normal/config.php.dist
@@ -26,10 +26,12 @@ return array(
     'application' => array(
         'url_host' => '127.0.0.1',
         'url_path' => '/',
-        'admin' => array(
-            'frontname' => 'backend',
-            'username' => 'admin',
-            'password' => 'password1',
+        'installation' => array(
+            'options' => array(
+                'backend_frontname' => 'backend',
+                'admin_username' => 'admin',
+                'admin_password' => 'password1',
+            ),
         ),
     ),
     'scenario' => array(
diff --git a/dev/tests/performance/framework/tests/unit/testsuite/Magento/Test/Performance/_files/config_data.php b/dev/tests/performance/framework/tests/unit/testsuite/Magento/Test/Performance/_files/config_data.php
index 7936874512a..61de1b09a30 100644
--- a/dev/tests/performance/framework/tests/unit/testsuite/Magento/Test/Performance/_files/config_data.php
+++ b/dev/tests/performance/framework/tests/unit/testsuite/Magento/Test/Performance/_files/config_data.php
@@ -26,8 +26,15 @@ return array(
     'application' => array(
         'url_host' => '127.0.0.1',
         'url_path' => '/',
-        'admin' => array('frontname' => 'backend', 'username' => 'admin', 'password' => 'password1'),
-        'installation' => array('options' => array('option1' => 'value 1', 'option2' => 'value 2'))
+        'installation' => array(
+            'options' => array(
+                'option1' => 'value 1',
+                'option2' => 'value 2',
+                'backend_frontname' => 'backend',
+                'admin_username' => 'admin',
+                'admin_password' => 'password1',
+            ),
+        ),
     ),
     'scenario' => array(
         'common_config' => array(
diff --git a/dev/tests/static/framework/Magento/TestFramework/Dependency/LayoutRule.php b/dev/tests/static/framework/Magento/TestFramework/Dependency/LayoutRule.php
index d0766b72bb2..9bb8f852234 100644
--- a/dev/tests/static/framework/Magento/TestFramework/Dependency/LayoutRule.php
+++ b/dev/tests/static/framework/Magento/TestFramework/Dependency/LayoutRule.php
@@ -33,7 +33,6 @@ class LayoutRule implements \Magento\TestFramework\Dependency\RuleInterface
      * @var array
      */
     protected $_defaultModules = array(
-        'default' => 'Magento\Install',
         'frontend' => 'Magento\Theme',
         'adminhtml' => 'Magento\Adminhtml'
     );
diff --git a/dev/tests/static/framework/Magento/TestFramework/Dependency/PhpRule.php b/dev/tests/static/framework/Magento/TestFramework/Dependency/PhpRule.php
index 8da956f7198..c1179671be8 100644
--- a/dev/tests/static/framework/Magento/TestFramework/Dependency/PhpRule.php
+++ b/dev/tests/static/framework/Magento/TestFramework/Dependency/PhpRule.php
@@ -56,7 +56,6 @@ class PhpRule implements \Magento\TestFramework\Dependency\RuleInterface
      * @var array
      */
     protected $_defaultModules = array(
-        'default' => 'Magento\Install',
         'frontend' => 'Magento\Theme',
         'adminhtml' => 'Magento\Adminhtml'
     );
diff --git a/dev/tests/static/framework/Magento/TestFramework/Utility/Classes.php b/dev/tests/static/framework/Magento/TestFramework/Utility/Classes.php
index d5c4afe316a..59c9dac6d06 100644
--- a/dev/tests/static/framework/Magento/TestFramework/Utility/Classes.php
+++ b/dev/tests/static/framework/Magento/TestFramework/Utility/Classes.php
@@ -212,7 +212,7 @@ class Classes
         foreach (\Magento\TestFramework\Utility\Files::init()->getPhpFiles(true, false, false, false) as $file) {
             if (preg_match($pattern, $file, $matches)) {
                 $module = "{$matches[1]}_{$matches[2]}";
-                $class = "{$module}" . \Magento\Framework\Autoload\IncludePath::NS_SEPARATOR . str_replace(
+                $class = "{$module}" . '\\' . str_replace(
                     '/',
                     '\\',
                     $matches[3]
@@ -292,7 +292,7 @@ class Classes
      */
     public static function isAutogenerated($className)
     {
-        if (preg_match('/.*\\\\[a-zA-Z0-9]{1,}(Factory|Proxy|SearchResults)$/', $className)
+        if (preg_match('/.*\\\\[a-zA-Z0-9]{1,}(Factory|Proxy|SearchResults|DataBuilder)$/', $className)
             || preg_match('/^Magento\\\\[\w]+\\\\(Test\\\\Page)\\\\/', $className)
         ) {
             return true;
diff --git a/dev/tests/static/framework/bootstrap.php b/dev/tests/static/framework/bootstrap.php
index e67cf580dbb..5ac82785c8b 100644
--- a/dev/tests/static/framework/bootstrap.php
+++ b/dev/tests/static/framework/bootstrap.php
@@ -23,7 +23,9 @@
  */
 
 require __DIR__ . '/../../../../app/autoload.php';
-(new \Magento\Framework\Autoload\IncludePath())->addIncludePath(
+$includePath = new \Magento\Framework\Autoload\IncludePath();
+spl_autoload_register([$includePath, 'load']);
+$includePath->addIncludePath(
     array(__DIR__, dirname(__DIR__) . '/testsuite', BP . '/lib/internal')
 );
 \Magento\TestFramework\Utility\Files::setInstance(new \Magento\TestFramework\Utility\Files(BP));
diff --git a/dev/tests/static/framework/tests/unit/testsuite/Magento/TestFramework/Dependency/PhpRuleTest.php b/dev/tests/static/framework/tests/unit/testsuite/Magento/TestFramework/Dependency/PhpRuleTest.php
index 3b800410c4e..5e8d577e6ac 100644
--- a/dev/tests/static/framework/tests/unit/testsuite/Magento/TestFramework/Dependency/PhpRuleTest.php
+++ b/dev/tests/static/framework/tests/unit/testsuite/Magento/TestFramework/Dependency/PhpRuleTest.php
@@ -135,8 +135,7 @@ class PhpRuleTest extends \PHPUnit_Framework_TestCase
         $mapLayoutBlocks = array(
             'default' => array(
                 'block.name' => array(
-                    'Magento\SomeModule' => 'Magento\SomeModule',
-                    'Magento\Install' => 'Magento\Install'
+                    'Magento\SomeModule' => 'Magento\SomeModule'
                 )
             )
         );
@@ -152,7 +151,7 @@ class PhpRuleTest extends \PHPUnit_Framework_TestCase
                 '$this->getLayout()->getBlock(\'block.name\');',
                 array(
                     array(
-                        'module' => 'Magento\Install',
+                        'module' => 'Magento\SomeModule',
                         'type' => \Magento\TestFramework\Dependency\RuleInterface::TYPE_HARD,
                         'source' => 'getBlock(\'block.name\')'
                     )
diff --git a/dev/tests/static/testsuite/Magento/Test/Integrity/Di/CompilerTest.php b/dev/tests/static/testsuite/Magento/Test/Integrity/Di/CompilerTest.php
index 843536894a9..005a517f8d1 100644
--- a/dev/tests/static/testsuite/Magento/Test/Integrity/Di/CompilerTest.php
+++ b/dev/tests/static/testsuite/Magento/Test/Integrity/Di/CompilerTest.php
@@ -82,8 +82,12 @@ class CompilerTest extends \PHPUnit_Framework_TestCase
         $this->_generationDir = $this->_tmpDir . '/generation';
         $this->_compilationDir = $this->_tmpDir . '/di';
 
-        (new \Magento\Framework\Autoload\IncludePath())->addIncludePath(
-            array($basePath . '/app/code', $basePath . '/lib/internal', $this->_generationDir)
+        \Magento\Framework\Code\Generator\FileResolver::addIncludePath(
+            [
+                $basePath . '/app/code',
+                $basePath . '/lib/internal',
+                $this->_generationDir
+            ]
         );
 
         $this->_command = 'php ' . $basePath . '/dev/tools/Magento/Tools/Di/compiler.php --generation=%s --di=%s';
@@ -203,10 +207,9 @@ class CompilerTest extends \PHPUnit_Framework_TestCase
     {
         $basePath = \Magento\TestFramework\Utility\Files::init()->getPathToSource();
 
-        $basePath = str_replace('/', '\\', $basePath);
-        $libPath = $basePath . '\\lib\\internal';
-        $appPath = $basePath . '\\app\\code';
-        $generationPathPath = str_replace('/', '\\', $this->_generationDir);
+        $libPath = 'lib\\internal';
+        $appPath = 'app\\code';
+        $generationPathPath = str_replace('/', '\\', str_replace($basePath . '/', '', $this->_generationDir));
 
         $files = \Magento\TestFramework\Utility\Files::init()->getClassFiles(
             true,
@@ -224,14 +227,18 @@ class CompilerTest extends \PHPUnit_Framework_TestCase
         $replacements = array('', '', '');
 
         /** Convert file names into class name format */
+        $blackList = file(__DIR__ . '/_files/blacklist.txt', FILE_IGNORE_NEW_LINES);
         $classes = array();
         foreach ($files as $file) {
-            $file = str_replace('/', '\\', $file);
-            $filePath = preg_replace($patterns, $replacements, $file);
-            $className = substr($filePath, 0, -4);
-            if (class_exists($className)) {
-                $file = str_replace('\\', DIRECTORY_SEPARATOR, $file);
-                $classes[$file] = $className;
+            $file = str_replace($basePath . '/', '', $file);
+            if (!in_array($file, $blackList)) {
+                $file = str_replace('/', '\\', $file);
+                $filePath = preg_replace($patterns, $replacements, $file);
+                $className = substr($filePath, 0, -4);
+                if (class_exists($className)) {
+                    $file = str_replace('\\', DIRECTORY_SEPARATOR, $file);
+                    $classes[$file] = $className;
+                }
             }
         }
 
@@ -316,34 +323,36 @@ class CompilerTest extends \PHPUnit_Framework_TestCase
      */
     public function testConstructorIntegrity()
     {
-        $autoloader = new \Magento\Framework\Autoload\IncludePath();
+        $fileResolver = new \Magento\Framework\Code\Generator\FileResolver();
         $generatorIo = new \Magento\Framework\Code\Generator\Io(
             new \Magento\Framework\Filesystem\Driver\File(),
-            $autoloader,
+            $fileResolver,
             $this->_generationDir
         );
         $generator = new \Magento\Framework\Code\Generator(
-            $autoloader,
+            $fileResolver,
             $generatorIo,
             array(
-                \Magento\Framework\Service\Code\Generator\SearchResultsBuilder::ENTITY_TYPE
-                    => 'Magento\Framework\Service\Code\Generator\SearchResultsBuilder',
+                \Magento\Framework\Api\Code\Generator\DataBuilder::ENTITY_TYPE
+                    => 'Magento\Framework\Api\Code\Generator\DataBuilder',
+                \Magento\Framework\Api\Code\Generator\SearchResultsBuilder::ENTITY_TYPE
+                    => 'Magento\Framework\Api\Code\Generator\SearchResultsBuilder',
                 \Magento\Framework\ObjectManager\Code\Generator\Factory::ENTITY_TYPE
                     => 'Magento\Framework\ObjectManager\Code\Generator\Factory',
                 \Magento\Framework\ObjectManager\Code\Generator\Repository::ENTITY_TYPE
                     => 'Magento\Framework\ObjectManager\Code\Generator\Repository',
                 \Magento\Framework\ObjectManager\Code\Generator\Converter::ENTITY_TYPE
                     => 'Magento\Framework\ObjectManager\Code\Generator\Converter',
-                \Magento\Framework\Service\Code\Generator\Mapper::ENTITY_TYPE
-                    => 'Magento\Framework\Service\Code\Generator\Mapper',
-                \Magento\Framework\Service\Code\Generator\Builder::ENTITY_TYPE
-                    => 'Magento\Framework\Service\Code\Generator\Builder',
-                \Magento\Framework\Service\Code\Generator\SearchResults::ENTITY_TYPE
-                    => 'Magento\Framework\Service\Code\Generator\SearchResults'
+                \Magento\Framework\Api\Code\Generator\Mapper::ENTITY_TYPE
+                    => 'Magento\Framework\Api\Code\Generator\Mapper',
+                \Magento\Framework\Api\Code\Generator\Builder::ENTITY_TYPE
+                    => 'Magento\Framework\Api\Code\Generator\Builder',
+                \Magento\Framework\Api\Code\Generator\SearchResults::ENTITY_TYPE
+                    => 'Magento\Framework\Api\Code\Generator\SearchResults'
             )
         );
-        $autoloader = new \Magento\Framework\Code\Generator\Autoloader($generator);
-        spl_autoload_register(array($autoloader, 'load'));
+        $fileResolver = new \Magento\Framework\Code\Generator\Autoloader($generator, $fileResolver);
+        spl_autoload_register(array($fileResolver, 'load'));
 
         $invoker = new \Magento\TestFramework\Utility\AggregateInvoker($this);
         $invoker(
@@ -352,7 +361,7 @@ class CompilerTest extends \PHPUnit_Framework_TestCase
             },
             $this->_phpClassesDataProvider()
         );
-        spl_autoload_unregister(array($autoloader, 'load'));
+        spl_autoload_unregister(array($fileResolver, 'load'));
     }
 
     /**
diff --git a/dev/tests/static/testsuite/Magento/Test/Integrity/Di/_files/blacklist.txt b/dev/tests/static/testsuite/Magento/Test/Integrity/Di/_files/blacklist.txt
new file mode 100644
index 00000000000..37da099b259
--- /dev/null
+++ b/dev/tests/static/testsuite/Magento/Test/Integrity/Di/_files/blacklist.txt
@@ -0,0 +1 @@
+app/code/Magento/SalesArchive/sql/salesarchive_setup/recurring.php
\ No newline at end of file
diff --git a/dev/tests/static/testsuite/Magento/Test/Integrity/Magento/Install/ConfigTest.php b/dev/tests/static/testsuite/Magento/Test/Integrity/Magento/Install/ConfigTest.php
deleted file mode 100644
index f5582128eb9..00000000000
--- a/dev/tests/static/testsuite/Magento/Test/Integrity/Magento/Install/ConfigTest.php
+++ /dev/null
@@ -1,64 +0,0 @@
-<?php
-/**
- * Find "install_wizard.xml" file and validate
- *
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-namespace Magento\Test\Integrity\Magento\Install;
-
-class ConfigTest extends \Magento\TestFramework\Integrity\AbstractConfig
-{
-    protected function _getXsd()
-    {
-        return "/app/code/Magento/Install/etc/install_wizard.xsd";
-    }
-
-    protected function _getKnownValidXml()
-    {
-        return __DIR__ . '/_files/install_wizard.xml';
-    }
-
-    protected function _getKnownInvalidXml()
-    {
-        return __DIR__ . '/_files/invalid_install_wizard.xml';
-    }
-
-    protected function _getKnownValidPartialXml()
-    {
-        return __DIR__ . '/_files/partial_install_wizard.xml';
-    }
-
-    protected function _getFileXsd()
-    {
-        return "/app/code/Magento/Install/etc/install_wizard_file.xsd";
-    }
-
-    protected function _getKnownInvalidPartialXml()
-    {
-        return __DIR__ . '/_files/invalid_partial_install_wizard.xml';
-    }
-
-    protected function _getXmlName()
-    {
-        return 'install_wizard.xml';
-    }
-}
diff --git a/dev/tests/static/testsuite/Magento/Test/Integrity/Magento/Install/_files/install_wizard.xml b/dev/tests/static/testsuite/Magento/Test/Integrity/Magento/Install/_files/install_wizard.xml
deleted file mode 100644
index 774a0fadce2..00000000000
--- a/dev/tests/static/testsuite/Magento/Test/Integrity/Magento/Install/_files/install_wizard.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0"?>
-<!--
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Academic Free License (AFL 3.0)
- * that is bundled with this package in the file LICENSE_AFL.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/afl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
- */
--->
-<install_wizard xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-                xsi:noNamespaceSchemaLocation="./install_wizard.xsd">
-    <steps>
-        <step id="begin" controller="wizard" action="begin">
-            <label translate="true">Begin</label>
-        </step>
-        <step id="middle" controller="wizard" action="middle">
-            <label translate="true">Middle</label>
-        </step>
-        <step id="end" controller="wizard" action="end">
-            <label translate="true">End</label>
-        </step>
-    </steps>
-    <filesystem_prerequisites>
-        <directory alias="etc" recursive="false" existence="true" writable="true" />
-        <directory alias="var" recursive="true" existence="true" writable="true" />
-        <directory alias="media" recursive="true" existence="true" writable="true" />
-    </filesystem_prerequisites>
-</install_wizard>
diff --git a/dev/tests/static/testsuite/Magento/Test/Integrity/Magento/Install/_files/invalid_install_wizard.xml b/dev/tests/static/testsuite/Magento/Test/Integrity/Magento/Install/_files/invalid_install_wizard.xml
deleted file mode 100644
index 6f5a7be99cd..00000000000
--- a/dev/tests/static/testsuite/Magento/Test/Integrity/Magento/Install/_files/invalid_install_wizard.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0"?>
-<!--
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Academic Free License (AFL 3.0)
- * that is bundled with this package in the file LICENSE_AFL.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/afl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
- */
--->
-<install_wizard xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-                xsi:noNamespaceSchemaLocation="./install_wizard.xsd" invalid_attribute="true">
-    <steps>
-        <step id="begin" controller="wizard" action="begin">
-            <label translate="true">Begin</label>
-        </step>
-        <step id="middle" controller="wizard" action="middle">
-            <label translate="true">Middle</label>
-        </step>
-        <step id="end" controller="wizard" action="end">
-            <label translate="true">End</label>
-        </step>
-    </steps>
-    <filesystem_prerequisites>
-        <directory alias="etc" recursive="false" existence="true" writable="true" />
-        <directory alias="var" recursive="true" existence="true" writable="true" />
-        <directory alias="media" recursive="true" existence="true" writable="true" />
-    </filesystem_prerequisites>
-</install_wizard>
diff --git a/dev/tests/static/testsuite/Magento/Test/Integrity/Magento/Install/_files/invalid_partial_install_wizard.xml b/dev/tests/static/testsuite/Magento/Test/Integrity/Magento/Install/_files/invalid_partial_install_wizard.xml
deleted file mode 100644
index eb4cceeacce..00000000000
--- a/dev/tests/static/testsuite/Magento/Test/Integrity/Magento/Install/_files/invalid_partial_install_wizard.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0"?>
-<!--
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Academic Free License (AFL 3.0)
- * that is bundled with this package in the file LICENSE_AFL.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/afl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
- */
--->
-<install_wizard xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-                xsi:noNamespaceSchemaLocation="./install_wizard_file.xsd">
-    <steps>
-        <step controller="wizard" action="begin">
-            <label translate="true">Begin</label>
-        </step>
-    </steps>
-    <filesystem_prerequisites>
-        <directory recursive="false" existence="true" writable="true" />
-    </filesystem_prerequisites>
-</install_wizard>
diff --git a/dev/tests/static/testsuite/Magento/Test/Integrity/Magento/Install/_files/partial_install_wizard.xml b/dev/tests/static/testsuite/Magento/Test/Integrity/Magento/Install/_files/partial_install_wizard.xml
deleted file mode 100644
index d1fb3d424be..00000000000
--- a/dev/tests/static/testsuite/Magento/Test/Integrity/Magento/Install/_files/partial_install_wizard.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0"?>
-<!--
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Academic Free License (AFL 3.0)
- * that is bundled with this package in the file LICENSE_AFL.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/afl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
- */
--->
-<install_wizard xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-                xsi:noNamespaceSchemaLocation="./install_wizard_file.xsd">
-    <steps>
-        <step id="begin" controller="wizard">
-            <label translate="true">Begin</label>
-        </step>
-        <step id="middle" action="middle">
-            <label translate="true">Middle</label>
-        </step>
-    </steps>
-    <filesystem_prerequisites>
-        <directory alias="etc" existence="true" writable="true" />
-        <directory alias="var" recursive="true" writable="true" />
-        <directory alias="media" recursive="true" existence="true" />
-    </filesystem_prerequisites>
-</install_wizard>
diff --git a/dev/tests/static/testsuite/Magento/Test/Integrity/_files/blacklist/namespace.txt b/dev/tests/static/testsuite/Magento/Test/Integrity/_files/blacklist/namespace.txt
index ffd698a1a01..84301c26bb5 100644
--- a/dev/tests/static/testsuite/Magento/Test/Integrity/_files/blacklist/namespace.txt
+++ b/dev/tests/static/testsuite/Magento/Test/Integrity/_files/blacklist/namespace.txt
@@ -12,8 +12,8 @@ dev/tests/unit/testsuite/Magento/Framework/Code/_files/app/code/Magento/SomeModu
 dev/tests/unit/testsuite/Magento/Framework/Code/_files/app/code/Magento/SomeModule/Model/Six/Test.php
 dev/tests/unit/testsuite/Magento/Framework/ObjectManager/Config/Reader/_files/ConfigDomMock.php
 dev/tests/unit/testsuite/Magento/Framework/ObjectManager/Code/Generator/_files/Sample.php
-dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/_files/Sample.php
-dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/_files/ExtensibleSample.php
+dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/_files/Sample.php
+dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/_files/ExtensibleSample.php
 dev/tools/Magento/Tools/I18n/Zend/Exception.php
 dev/tools/Magento/Tools/I18n/Zend/Console/Getopt/Exception.php
 dev/tools/Magento/Tools/I18n/Zend/Console/Getopt.php
@@ -21,6 +21,10 @@ dev/tests/integration/testsuite/Magento/Test/Tools/I18n/Code/Dictionary/_files/s
 dev/tests/integration/testsuite/Magento/Test/Tools/I18n/Code/Dictionary/_files/source/app/code/Magento/SecondModule/Model/Model.php
 dev/tests/integration/testsuite/Magento/Test/Tools/I18n/Code/Dictionary/_files/source/not_magento_dir/Model.php
 dev/tests/integration/testsuite/Magento/Test/Tools/I18n/Code/Dictionary/_files/source/app/code/Magento/FirstModule/Helper/Helper.php
+dev/tests/integration/testsuite/Magento/Framework/Api/_files/Magento/Wonderland/Api/Data/FakeAddressInterface.php
+dev/tests/integration/testsuite/Magento/Framework/Api/_files/Magento/Wonderland/Api/Data/FakeRegionInterface.php
+dev/tests/integration/testsuite/Magento/Framework/Api/_files/Magento/Wonderland/Model/FakeAddress.php
+dev/tests/integration/testsuite/Magento/Framework/Api/_files/Magento/Wonderland/Model/FakeRegion.php
 dev/tests/static/testsuite/Magento/Test/Php/Exemplar/CodeMessTest/phpmd/input/coupling.php
 dev/tests/static/testsuite/Magento/Test/Php/Exemplar/CodeMessTest/phpmd/input/cyclomatic_complexity.php
 dev/tests/static/testsuite/Magento/Test/Php/Exemplar/CodeMessTest/phpmd/input/descendant_count.php
diff --git a/dev/tests/static/testsuite/Magento/Test/Integrity/_files/blacklist/reference.txt b/dev/tests/static/testsuite/Magento/Test/Integrity/_files/blacklist/reference.txt
index 4b71dd41ec0..02d265b3e8b 100644
--- a/dev/tests/static/testsuite/Magento/Test/Integrity/_files/blacklist/reference.txt
+++ b/dev/tests/static/testsuite/Magento/Test/Integrity/_files/blacklist/reference.txt
@@ -32,4 +32,5 @@ TestSuite
 DbTest
 Model1
 Model3
+\Magento\Wonderland\Api\Data\FakeRegionInterface
 \Magento\Framework\Error\Processor
diff --git a/dev/tests/static/testsuite/Magento/Test/Js/_files/whitelist/core.txt b/dev/tests/static/testsuite/Magento/Test/Js/_files/whitelist/core.txt
index 1ce27bbb8f4..201a54de360 100644
--- a/dev/tests/static/testsuite/Magento/Test/Js/_files/whitelist/core.txt
+++ b/dev/tests/static/testsuite/Magento/Test/Js/_files/whitelist/core.txt
@@ -7,7 +7,6 @@ app/code/Magento/Checkout
 app/code/Magento/Customer
 app/code/Magento/Downloadable
 app/code/Magento/GiftMessage
-app/code/Magento/Install
 app/code/Magento/Newsletter
 app/code/Magento/OfflinePayments
 app/code/Magento/Payment
diff --git a/dev/tests/static/testsuite/Magento/Test/Legacy/Magento/Install/ConfigTest.php b/dev/tests/static/testsuite/Magento/Test/Legacy/Magento/Install/ConfigTest.php
deleted file mode 100644
index 88dc5af05a6..00000000000
--- a/dev/tests/static/testsuite/Magento/Test/Legacy/Magento/Install/ConfigTest.php
+++ /dev/null
@@ -1,48 +0,0 @@
-<?php
-/**
- * Tests for obsolete nodes in install.xml
- *
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-namespace Magento\Test\Legacy\Magento\Install;
-
-class ConfigTest extends \PHPUnit_Framework_TestCase
-{
-    public function testConfigFile()
-    {
-        $invoker = new \Magento\TestFramework\Utility\AggregateInvoker($this);
-        $invoker(
-            /**
-             * @param string $file
-             */
-            function ($file) {
-                $xml = simplexml_load_file($file);
-                $path = '/config/check/php/extensions';
-                $this->assertEmpty(
-                    $xml->xpath($path),
-                    "Nodes from '{$path}' in install_wizard.xml have been moved to module.xml"
-                );
-            },
-            \Magento\TestFramework\Utility\Files::init()->getConfigFiles('install_wizard.xml')
-        );
-    }
-}
diff --git a/dev/tests/static/testsuite/Magento/Test/Legacy/_files/obsolete_classes.php b/dev/tests/static/testsuite/Magento/Test/Legacy/_files/obsolete_classes.php
index 10fccac1664..13ba81bc77a 100644
--- a/dev/tests/static/testsuite/Magento/Test/Legacy/_files/obsolete_classes.php
+++ b/dev/tests/static/testsuite/Magento/Test/Legacy/_files/obsolete_classes.php
@@ -816,7 +816,7 @@ return array(
     array('Magento\Core\Model\Resource\Entity\Table', 'Magento\Framework\Model\Resource\Entity\Table'),
     array('Magento\Core\Model\Resource\Flag', 'Magento\Framework\Flag\Resource'),
     array('Magento\Core\Model\Resource\Iterator', 'Magento\Framework\Model\Resource\Iterator'),
-    array('Magento\Core\Model\Resource\Resource', 'Magento\Install\Model\Resource\Resource'),
+    array('Magento\Core\Model\Resource\Resource', 'Magento\Framework\Module\Resource'),
     array('Magento\Core\Model\Resource\Type\AbstractType', 'Magento\Framework\Model\Resource\Type\AbstractType'),
     array('Magento\Core\Model\Resource\Type\Db', 'Magento\Framework\Model\Resource\Type\Db'),
     array('Magento\Core\Model\Resource\Type\Db\Pdo\Mysql', 'Magento\Framework\Model\Resource\Type\Db\Pdo\Mysql'),
@@ -1259,8 +1259,8 @@ return array(
     array('Mage_Sales_Model_Order_Creditmemo_Api_V2'),
     array('Mage_Sales_Model_Order_Creditmemo_Api'),
     array('Magento\ImportExport\Model\Config'),
-    array('Magento\Install\Model\EntryPoint\Console', 'Magento\Install\App\Console'),
-    array('Magento\Install\Model\EntryPoint\Output', 'Magento\Install\App\Output'),
+    array('Magento\Install\Model\EntryPoint\Console'),
+    array('Magento\Install\Model\EntryPoint\Output'),
     array('Magento\Framework\Data\Collection\Factory', 'Magento\Framework\Data\CollectionFactory'),
     array('Magento\Customer\Block\Adminhtml\System\Config\ValidatevatFactory'),
     array('Magento\Customer\Model\Attribute\Data'),
@@ -2784,8 +2784,8 @@ return array(
     ['Magento\Framework\Module\UpdaterInterface'],
     ['Magento\Framework\App\EntryPoint\EntryPoint', 'Magento\Framework\App\Bootstrap'],
     ['Magento\Framework\App\EntryPointInterface', 'Magento\Framework\App\Bootstrap'],
-    ['Magento\Install\Model\Installer\AbstractInstaller', 'Magento\Install\Model\Installer\Console'],
-    ['Magento\Install\App\Action\Plugin\Install', 'Magento\Framework\App\Bootstrap'],
+    ['Magento\Install\Model\Installer\AbstractInstaller'],
+    ['Magento\Install\App\Action\Plugin\Install'],
     ['\Magento\Cron\App\Cron\Plugin\ApplicationInitializer', 'Magento\Framework\App\Bootstrap'],
     ['Magento\Framework\App\Error\Handler', 'Magento\Framework\App\Http'],
     ['Magento\Framework\App\State\MaintenanceMode', 'Magento\Framework\App\MaintenanceMode'],
@@ -2793,15 +2793,15 @@ return array(
     ['Magento\Framework\Error\HandlerInterface', 'Magento\Framework\App\ErrorHandler'],
     ['Magento\Index'],
     ['Magento\Catalog\Model\Resource\Product\Indexer\Eav'],
-    ['\Magento\Framework\Service\Data\Eav\AbstractObject', 'Magento\Framework\Service\Data\AbstractExtensibleObject'],
-    ['\Magento\Framework\Service\Data\AbstractObject', 'Magento\Framework\Service\Data\AbstractSimpleObject'],
+    ['\Magento\Framework\Api\Eav\AbstractObject', 'Magento\Framework\Api\AbstractExtensibleObject'],
+    ['\Magento\Framework\Api\AbstractObject', 'Magento\Framework\Api\AbstractSimpleObject'],
     [
-        '\Magento\Framework\Service\Data\Eav\AbstractObjectBuilder',
-        'Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder'
+        '\Magento\Framework\Api\Eav\AbstractObjectBuilder',
+        'Magento\Framework\Api\ExtensibleObjectBuilder'
     ],
     [
-        '\Magento\Framework\Service\Data\AbstractObjectBuilder',
-        'Magento\Framework\Service\Data\AbstractSimpleObjectBuilder'
+        '\Magento\Framework\Api\AbstractObjectBuilder',
+        'Magento\Framework\Api\AbstractSimpleObjectBuilder'
     ],
     ['Magento\Catalog\Block\Product'],
     ['\Magento\Sales\Model\Observer'],
@@ -2833,6 +2833,7 @@ return array(
     ['Magento\Wishlist\Block\Rss'],
     ['Magento\Wishlist\Controller\Index\Rss'],
     ['Magento\Checkout\Controller\Onepage\Progress'],
+    ['Magento\Checkout\Controller\Onepage\GetAdditional'],
     ['Magento\Framework\App\Filesystem', 'Magento\Framework\Filesystem'],
     ['Magento\TestFramework\App\Filesystem\DirectoryList'],
     ['Magento\Framework\App\Filesystem\DirectoryList\Configuration'],
@@ -2840,4 +2841,6 @@ return array(
     ['Magento\Framework\Filesystem\DriverFactory', 'Magento\Framework\Filesystem\DriverPool'],
     ['Magento\Framework\Filesystem\WrapperFactory'],
     ['Magento\Framework\Filesystem\WrapperInterface'],
+    ['Magento\Install'],
+    ['Magento\Install\Model\Resource\Resource', 'Magento\Framework\Module\Resource'],
 );
diff --git a/dev/tests/static/testsuite/Magento/Test/Legacy/_files/obsolete_namespaces.php b/dev/tests/static/testsuite/Magento/Test/Legacy/_files/obsolete_namespaces.php
index cc3cf20cf0f..e1e04fde50f 100644
--- a/dev/tests/static/testsuite/Magento/Test/Legacy/_files/obsolete_namespaces.php
+++ b/dev/tests/static/testsuite/Magento/Test/Legacy/_files/obsolete_namespaces.php
@@ -62,7 +62,7 @@ return [
     ['Magento\Shell', 'Magento\Framework\Shell'],
     ['Magento\Encryption', 'Magento\Framework\Encryption'],
     ['Magento\Option', 'Magento\Framework\Option'],
-    ['Magento\Service', 'Magento\Framework\Service'],
+    ['Magento\Service', 'Magento\Framework\Api'],
     ['Magento\System', 'Magento\Framework\System'],
     ['Magento\Url', 'Magento\Framework\Url'],
     ['Magento\Mview', 'Magento\Framework\Mview'],
diff --git a/dev/tests/static/testsuite/Magento/Test/Legacy/_files/obsolete_paths.php b/dev/tests/static/testsuite/Magento/Test/Legacy/_files/obsolete_paths.php
index 9b23819278f..6a55ecdb706 100644
--- a/dev/tests/static/testsuite/Magento/Test/Legacy/_files/obsolete_paths.php
+++ b/dev/tests/static/testsuite/Magento/Test/Legacy/_files/obsolete_paths.php
@@ -176,9 +176,9 @@ return [
     ['/lib/Magento/Option', '/lib/Magento/Framework/Option'],
     ['/dev/tests/unit/testsuite/Magento/Option', '/dev/tests/unit/testsuite/Magento/Framework/Option'],
     ['/dev/tests/integration/testsuite/Magento/Option', '/dev/tests/integration/testsuite/Magento/Framework/Option'],
-    ['/lib/Magento/Service', '/lib/Magento/Framework/Service'],
-    ['/dev/tests/unit/testsuite/Magento/Service', '/dev/tests/unit/testsuite/Magento/Framework/Service'],
-    ['/dev/tests/integration/testsuite/Magento/Service', '/dev/tests/integration/testsuite/Magento/Framework/Service'],
+    ['/lib/Magento/Service', '/lib/Magento/Framework/Api'],
+    ['/dev/tests/unit/testsuite/Magento/Service', '/dev/tests/unit/testsuite/Magento/Framework/Api'],
+    ['/dev/tests/integration/testsuite/Magento/Service', '/dev/tests/integration/testsuite/Magento/Framework/Api'],
     ['/lib/Magento/System', '/lib/Magento/Framework/System'],
     ['/dev/tests/unit/testsuite/Magento/System', '/dev/tests/unit/testsuite/Magento/Framework/System'],
     ['/dev/tests/integration/testsuite/Magento/System', '/dev/tests/integration/testsuite/Magento/Framework/System'],
@@ -240,4 +240,13 @@ return [
     ['/dev/tests/unit/testsuite/Magento/Object', '/dev/tests/unit/testsuite/Magento/Framework/Object'],
     ['/dev/tests/integration/testsuite/Magento/Object', '/dev/tests/integration/testsuite/Magento/Framework/Object'],
     ['/downloader'],
+    ['/app/code/Magento/Install'],
+    ['/dev/tests/integration/testsuite/Magento/Install'],
+    ['/dev/tests/static/testsuite/Magento/Test/Integrity/Magento/Install'],
+    ['/dev/tests/integration/testsuite/Magento/Test/Integrity/Modular/InstallWizardConfigFilesTest.php'],
+    ['/dev/tests/static/testsuite/Magento/Test/Legacy/Magento/Install'],
+    ['/dev/tests/unit/testsuite/Magento/Install'],
+    ['/dev/shell/install.php'],
+    ['/dev/shell/uninstall.php'],
+    ['/app/design/install'],
 ];
diff --git a/dev/tests/static/testsuite/Magento/Test/Legacy/_files/obsolete_properties.php b/dev/tests/static/testsuite/Magento/Test/Legacy/_files/obsolete_properties.php
index 57eaad47bc3..de6a39980f6 100644
--- a/dev/tests/static/testsuite/Magento/Test/Legacy/_files/obsolete_properties.php
+++ b/dev/tests/static/testsuite/Magento/Test/Legacy/_files/obsolete_properties.php
@@ -360,4 +360,5 @@ return array(
     ['_formKeyValidator', 'Magento\Customer\Controller\Account\LoginPost', 'Magento\Customer\Controller\Account\LoginPost::formKeyValidator'],
     ['_openActions', 'Magento\Customer\Controller\Account', 'Magento\Customer\Controller\Account::openActions'],
     ['_session', 'Magento\Customer\Controller\Account', 'Magento\Customer\Controller\Account::session'],
+    ['_directoryData', 'Magento\Customer\Model\Attribute\Data\Postcode', 'Magento\Customer\Model\Attribute\Data\Postcode::directoryHelper'],
 );
diff --git a/dev/tests/static/testsuite/Magento/Test/Legacy/_files/words_ce.xml b/dev/tests/static/testsuite/Magento/Test/Legacy/_files/words_ce.xml
index 1abee450ecf..18aa8e3a700 100644
--- a/dev/tests/static/testsuite/Magento/Test/Legacy/_files/words_ce.xml
+++ b/dev/tests/static/testsuite/Magento/Test/Legacy/_files/words_ce.xml
@@ -92,10 +92,6 @@
             <path>app/code/Magento/Webapi/view/adminhtml/templates/integration/activate/permissions/tab/webapi.phtml</path>
             <word>head.js</word>
         </item>
-        <item>
-            <path>app/code/Magento/Install/view/install/</path>
-            <word>head.js</word>
-        </item>
         <item>
             <path>app/code/Magento/GiftCard/view/adminhtml/templates/catalog/product/composite/fieldset/giftcard.phtml</path>
             <word>head.js</word>
diff --git a/dev/tests/static/testsuite/Magento/Test/Php/_files/blacklist/common.txt b/dev/tests/static/testsuite/Magento/Test/Php/_files/blacklist/common.txt
index dbc8b430599..1429d49ecde 100644
--- a/dev/tests/static/testsuite/Magento/Test/Php/_files/blacklist/common.txt
+++ b/dev/tests/static/testsuite/Magento/Test/Php/_files/blacklist/common.txt
@@ -36,7 +36,6 @@ dev/tests/static/testsuite/Magento/Test/Legacy/_files
 dev/tests/unit/testsuite/Magento/Core/Model/Resource/Db/AbstractTest.php
 dev/tests/unit/testsuite/Magento/Framework/Session/ConfigTest.php
 dev/tests/unit/testsuite/Magento/Framework/View/TemplateEngine/_files
-dev/tools/Magento/Tools/I18n/Zend
 lib/internal/Magento/Framework/App/Config/Element.php
 lib/internal/Magento/Framework/Archive
 lib/internal/Magento/Framework/Backup
diff --git a/dev/tests/static/testsuite/Magento/Test/Php/_files/phpcpd/blacklist/common.txt b/dev/tests/static/testsuite/Magento/Test/Php/_files/phpcpd/blacklist/common.txt
index 50021cff7bc..7d6f7bb0d11 100644
--- a/dev/tests/static/testsuite/Magento/Test/Php/_files/phpcpd/blacklist/common.txt
+++ b/dev/tests/static/testsuite/Magento/Test/Php/_files/phpcpd/blacklist/common.txt
@@ -53,6 +53,7 @@ Magento/Cron/Model/Config/Backend/Product
 Magento/Customer/Block/Account/Dashboard
 Magento/Customer/Model/Config/Backend/Show
 Magento/Customer/Model/Metadata
+Magento/Customer/Service/V1
 Magento/DesignEditor/Block/Adminhtml/Editor/Tools/Code
 Magento/DesignEditor/Block/Adminhtml/Theme/Selector/Tab
 Magento/DesignEditor/Model/Url
@@ -60,7 +61,6 @@ Magento/Directory/Model
 Magento/GiftMessage/Block/Adminhtml/Sales/Order
 Magento/ImportExport/Model
 Magento/Integration/Controller/Adminhtml
-Magento/Install/Block/Db
 Magento/Newsletter/Block/Adminhtml/Template/Preview
 Magento/Newsletter/Block/Adminhtml/Queue/Preview
 Magento/Payment/Block/Form
@@ -129,4 +129,4 @@ Magento/Sales/Service/V1
 Magento/Shipping/Controller/Adminhtml/Order/Shipment
 vendor
 setup/vendor
-Magento/CatalogSearch/Model/Resource/Fulltext
\ No newline at end of file
+Magento/CatalogSearch/Model/Resource/Fulltext
diff --git a/dev/tests/static/testsuite/Magento/Test/Php/_files/phpcs/blacklist/common.txt b/dev/tests/static/testsuite/Magento/Test/Php/_files/phpcs/blacklist/common.txt
index 641a2ad0bf8..723d3adadcc 100644
--- a/dev/tests/static/testsuite/Magento/Test/Php/_files/phpcs/blacklist/common.txt
+++ b/dev/tests/static/testsuite/Magento/Test/Php/_files/phpcs/blacklist/common.txt
@@ -23,8 +23,6 @@ app/code/Magento/Backend/Block/System/Store/Edit.php
 # Not magento code
 app/code/Zend
 # Not magento code
-dev/tools/Magento/Tools/I18n/Zend
-# Not magento code
 dev/tools/layout
 # PSR-1 not applied to
 dev/tests/js
diff --git a/dev/tests/static/testsuite/Magento/Test/Php/_files/whitelist/common.txt b/dev/tests/static/testsuite/Magento/Test/Php/_files/whitelist/common.txt
index 1c128f4d65f..dae3169af14 100644
--- a/dev/tests/static/testsuite/Magento/Test/Php/_files/whitelist/common.txt
+++ b/dev/tests/static/testsuite/Magento/Test/Php/_files/whitelist/common.txt
@@ -146,7 +146,7 @@ lib/internal/Magento/Framework/Stdlib/DateTime.php
 lib/internal/Magento/Framework/Object.php
 lib/internal/Magento/Framework/Data/Argument
 lib/internal/Magento/Framework/ObjectManager
-lib/internal/Magento/Framework/Service
+lib/internal/Magento/Framework/Api
 lib/internal/Magento/Framework/Url/SecurityInfoInterface.php
 lib/internal/Magento/Framework/View
 lib/internal/Magento/Framework/Locale/Validator.php
diff --git a/dev/tests/unit/framework/Magento/TestFramework/Helper/ObjectManager.php b/dev/tests/unit/framework/Magento/TestFramework/Helper/ObjectManager.php
index 1f119e0a1e9..51c4520f07b 100644
--- a/dev/tests/unit/framework/Magento/TestFramework/Helper/ObjectManager.php
+++ b/dev/tests/unit/framework/Magento/TestFramework/Helper/ObjectManager.php
@@ -104,7 +104,7 @@ class ObjectManager
     protected function _getResourceModelMock()
     {
         $resourceMock = $this->_testObject->getMock(
-            'Magento\Install\Model\Resource\Resource',
+            'Magento\Framework\Module\Resource',
             array('getIdFieldName', '__sleep', '__wakeup'),
             array(),
             '',
@@ -170,7 +170,7 @@ class ObjectManager
      */
     public function getObject($className, array $arguments = array())
     {
-        if (is_subclass_of($className, '\Magento\Framework\Service\Data\AbstractSimpleObjectBuilder')) {
+        if (is_subclass_of($className, '\Magento\Framework\Api\AbstractSimpleObjectBuilder')) {
             return $this->getBuilder($className, $arguments);
         }
         $constructArguments = $this->getConstructArguments($className, $arguments);
@@ -187,7 +187,7 @@ class ObjectManager
      */
     protected function getBuilder($className, array $arguments)
     {
-        $objectFactory = $this->_testObject->getMock('Magento\Framework\Service\Data\ObjectFactory', [], [], '', false);
+        $objectFactory = $this->_testObject->getMock('Magento\Framework\Api\ObjectFactory', [], [], '', false);
 
         if (!isset($arguments['objectFactory'])) {
             $arguments['objectFactory'] = $objectFactory;
@@ -303,7 +303,7 @@ class ObjectManager
      */
     private function _getMockObject($argClassName, array $arguments)
     {
-        if (is_subclass_of($argClassName, '\Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')) {
+        if (is_subclass_of($argClassName, '\Magento\Framework\Api\ExtensibleObjectBuilder')) {
             $object = $this->getBuilder($argClassName, $arguments);
             return $object;
         } else {
diff --git a/dev/tests/unit/framework/bootstrap.php b/dev/tests/unit/framework/bootstrap.php
index ece247a7124..7d1cb88d0c8 100755
--- a/dev/tests/unit/framework/bootstrap.php
+++ b/dev/tests/unit/framework/bootstrap.php
@@ -26,8 +26,12 @@ if (!defined('TESTS_TEMP_DIR')) {
     define('TESTS_TEMP_DIR', dirname(__DIR__) . '/tmp');
 }
 require __DIR__ . '/../../../../app/autoload.php';
+
+$includePath = new \Magento\Framework\Autoload\IncludePath();
+spl_autoload_register([$includePath, 'load']);
+
 require BP . '/app/functions.php';
-(new \Magento\Framework\Autoload\IncludePath())->addIncludePath(
+$includePath->addIncludePath(
     array(
         __DIR__,
         realpath(__DIR__ . '/../testsuite'),
@@ -36,6 +40,7 @@ require BP . '/app/functions.php';
         realpath(BP . '/lib/internal')
     )
 );
+
 if (is_dir(TESTS_TEMP_DIR)) {
     $filesystemAdapter = new \Magento\Framework\Filesystem\Driver\File();
     $filesystemAdapter->deleteDirectory(TESTS_TEMP_DIR);
diff --git a/dev/tests/unit/framework/tests/unit/framework/bootstrap.php b/dev/tests/unit/framework/tests/unit/framework/bootstrap.php
index e020e90969b..96b12d9c554 100644
--- a/dev/tests/unit/framework/tests/unit/framework/bootstrap.php
+++ b/dev/tests/unit/framework/tests/unit/framework/bootstrap.php
@@ -24,7 +24,9 @@
 
 $rootDir = realpath(__DIR__ . '/../../../../../../..');
 require __DIR__ . '/../../../../../../../app/autoload.php';
-(new \Magento\Framework\Autoload\IncludePath())->addIncludePath(
+$includePath = new \Magento\Framework\Autoload\IncludePath();
+spl_autoload_register([$includePath, 'load']);
+$includePath->addIncludePath(
     array(
         $rootDir . '/lib/internal',
         $rootDir . '/dev/tests/unit/framework',
diff --git a/dev/tests/unit/framework/tests/unit/testsuite/Magento/TestFramework/Helper/ObjectManagerTest.php b/dev/tests/unit/framework/tests/unit/testsuite/Magento/TestFramework/Helper/ObjectManagerTest.php
index 44079328dfd..52d82cbe00c 100644
--- a/dev/tests/unit/framework/tests/unit/testsuite/Magento/TestFramework/Helper/ObjectManagerTest.php
+++ b/dev/tests/unit/framework/tests/unit/testsuite/Magento/TestFramework/Helper/ObjectManagerTest.php
@@ -96,7 +96,7 @@ class ObjectManagerTest extends \PHPUnit_Framework_TestCase
 
         /** @var $resourceMock \Magento\Core\Model\Resource\Resource */
         $resourceMock = $this->getMock(
-            'Magento\Install\Model\Resource\Resource',
+            'Magento\Framework\Module\Resource',
             array('_getReadAdapter', 'getIdFieldName', '__sleep', '__wakeup'),
             array(),
             '',
diff --git a/dev/tests/unit/testsuite/Magento/AdminNotification/Model/FeedTest.php b/dev/tests/unit/testsuite/Magento/AdminNotification/Model/FeedTest.php
index 0dd602e7641..6ae8be6d281 100644
--- a/dev/tests/unit/testsuite/Magento/AdminNotification/Model/FeedTest.php
+++ b/dev/tests/unit/testsuite/Magento/AdminNotification/Model/FeedTest.php
@@ -55,6 +55,9 @@ class FeedTest extends \PHPUnit_Framework_TestCase
     /** @var \Magento\Framework\App\State|\PHPUnit_Framework_MockObject_MockObject */
     protected $appState;
 
+    /** @var \Magento\Framework\App\Arguments|\PHPUnit_Framework_MockObject_MockObject */
+    protected $args;
+
     protected function setUp()
     {
         $this->inboxFactory = $this->getMock('Magento\AdminNotification\Model\InboxFactory', ['create']);
@@ -90,6 +93,8 @@ class FeedTest extends \PHPUnit_Framework_TestCase
             ]
         );
 
+        $this->args = $this->getMockBuilder('\Magento\Framework\App\Arguments')
+            ->disableOriginalConstructor()->getMock();
         $this->objectManagerHelper = new ObjectManagerHelper($this);
         $this->feed = $this->objectManagerHelper->getObject(
             'Magento\AdminNotification\Model\Feed',
@@ -98,7 +103,8 @@ class FeedTest extends \PHPUnit_Framework_TestCase
                 'cacheManager' => $this->cacheManager,
                 'inboxFactory' => $this->inboxFactory,
                 'appState' => $this->appState,
-                'curlFactory' => $this->curlFactory
+                'curlFactory' => $this->curlFactory,
+                'args' => $this->args
             ]
         );
     }
@@ -118,7 +124,8 @@ class FeedTest extends \PHPUnit_Framework_TestCase
         $this->backendConfig->expects($this->at(1))->method('getValue')
             ->will($this->returnValue('http://feed.magento.com'));
         $this->cacheManager->expects($this->once())->method('load')->will(($this->returnValue($lastUpdate)));
-        $this->appState->expects($this->once())->method('getInstallDate')->will(($this->returnValue($lastUpdate)));
+        $this->args->expects($this->once())->method('get')
+            ->with('install_date')->will($this->returnValue('Sat, 6 Sep 2014 16:46:11 UTC'));
         if ($callInbox) {
             $this->inboxFactory->expects($this->once())->method('create')
                 ->will(($this->returnValue($this->inboxModel)));
diff --git a/dev/tests/unit/testsuite/Magento/Backend/Model/Config/Backend/Cookie/LifetimeTest.php b/dev/tests/unit/testsuite/Magento/Backend/Model/Config/Backend/Cookie/LifetimeTest.php
index 81ef3022fc2..fd08115afbf 100644
--- a/dev/tests/unit/testsuite/Magento/Backend/Model/Config/Backend/Cookie/LifetimeTest.php
+++ b/dev/tests/unit/testsuite/Magento/Backend/Model/Config/Backend/Cookie/LifetimeTest.php
@@ -33,7 +33,7 @@ class LifetimeTest extends \PHPUnit_Framework_TestCase
     /** @var \PHPUnit_Framework_MockObject_MockObject | CookieLifetimeValidator */
     private $validatorMock;
 
-    /** @var \PHPUnit_Framework_MockObject_MockObject | \Magento\Install\Model\Resource\Resource */
+    /** @var \PHPUnit_Framework_MockObject_MockObject | \Magento\Framework\Module\Resource */
     private $resourceMock;
 
     /** @var \Magento\Backend\Model\Config\Backend\Cookie\Lifetime */
@@ -45,7 +45,7 @@ class LifetimeTest extends \PHPUnit_Framework_TestCase
             'Magento\Framework\Session\Config\Validator\CookieLifetimeValidator'
         )->disableOriginalConstructor()
             ->getMock();
-        $this->resourceMock = $this->getMockBuilder('Magento\Install\Model\Resource\Resource')
+        $this->resourceMock = $this->getMockBuilder('Magento\Framework\Module\Resource')
             ->disableOriginalConstructor()
             ->getMock();
 
diff --git a/dev/tests/unit/testsuite/Magento/Backend/Model/Config/Backend/Cookie/PathTest.php b/dev/tests/unit/testsuite/Magento/Backend/Model/Config/Backend/Cookie/PathTest.php
index 9bd316ad23c..4c859b91422 100644
--- a/dev/tests/unit/testsuite/Magento/Backend/Model/Config/Backend/Cookie/PathTest.php
+++ b/dev/tests/unit/testsuite/Magento/Backend/Model/Config/Backend/Cookie/PathTest.php
@@ -33,7 +33,7 @@ class PathTest extends \PHPUnit_Framework_TestCase
     /** @var \PHPUnit_Framework_MockObject_MockObject | CookiePathValidator */
     private $validatorMock;
 
-    /** @var \PHPUnit_Framework_MockObject_MockObject | \Magento\Install\Model\Resource\Resource */
+    /** @var \PHPUnit_Framework_MockObject_MockObject | \Magento\Framework\Module\Resource */
     private $resourceMock;
 
     /** @var \Magento\Backend\Model\Config\Backend\Cookie\Path */
@@ -44,7 +44,7 @@ class PathTest extends \PHPUnit_Framework_TestCase
         $this->validatorMock = $this->getMockBuilder('Magento\Framework\Session\Config\Validator\CookiePathValidator')
             ->disableOriginalConstructor()
             ->getMock();
-        $this->resourceMock = $this->getMockBuilder('Magento\Install\Model\Resource\Resource')
+        $this->resourceMock = $this->getMockBuilder('Magento\Framework\Module\Resource')
             ->disableOriginalConstructor()
             ->getMock();
 
diff --git a/dev/tests/unit/testsuite/Magento/Bundle/Service/V1/Product/BundleProductSaveProcessorTest.php b/dev/tests/unit/testsuite/Magento/Bundle/Service/V1/Product/BundleProductSaveProcessorTest.php
index bfde3221bcc..d231da48faf 100644
--- a/dev/tests/unit/testsuite/Magento/Bundle/Service/V1/Product/BundleProductSaveProcessorTest.php
+++ b/dev/tests/unit/testsuite/Magento/Bundle/Service/V1/Product/BundleProductSaveProcessorTest.php
@@ -103,7 +103,7 @@ class BundleProductSaveProcessorTest extends \PHPUnit_Framework_TestCase
     private $productBuilder;
 
     /**
-     * @var \Magento\Framework\Service\Data\Eav\AttributeValue|\PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\Api\Eav\AttributeValue|\PHPUnit_Framework_MockObject_MockObject
      */
     private $attributeValue;
 
@@ -182,7 +182,7 @@ class BundleProductSaveProcessorTest extends \PHPUnit_Framework_TestCase
             ->disableOriginalConstructor()
             ->getMock();
 
-        $this->attributeValue = $this->getMockBuilder('Magento\Framework\Service\Data\Eav\AttributeValue')
+        $this->attributeValue = $this->getMockBuilder('Magento\Framework\Api\Eav\AttributeValue')
             ->setMethods(['getValue'])
             ->disableOriginalConstructor()
             ->getMock();
diff --git a/dev/tests/unit/testsuite/Magento/Catalog/Model/Indexer/Product/Flat/Action/RowTest.php b/dev/tests/unit/testsuite/Magento/Catalog/Model/Indexer/Product/Flat/Action/RowTest.php
index bf9a82905cf..8681b6aa6ca 100644
--- a/dev/tests/unit/testsuite/Magento/Catalog/Model/Indexer/Product/Flat/Action/RowTest.php
+++ b/dev/tests/unit/testsuite/Magento/Catalog/Model/Indexer/Product/Flat/Action/RowTest.php
@@ -128,5 +128,16 @@ class RowTest extends \PHPUnit_Framework_TestCase
         $this->flatItemWriter->expects($this->once())->method('write')->with('store_id_1', 'product_id_1');
         $this->model->execute('product_id_1');
     }
+
+    public function testExecuteWithExistingFlatTablesCreatesTables()
+    {
+        $this->productIndexerHelper->expects($this->any())->method('getFlatTableName')
+            ->will($this->returnValue('store_flat_table'));
+        $this->connection->expects($this->any())->method('isTableExists')->with('store_flat_table')
+            ->will($this->returnValue(true));
+        $this->flatItemEraser->expects($this->once())->method('removeDeletedProducts');
+        $this->flatTableBuilder->expects($this->never())->method('build')->with('store_id_1', array('product_id_1'));
+        $this->model->execute('product_id_1');
+    }
 }
 
diff --git a/dev/tests/unit/testsuite/Magento/Catalog/Model/Indexer/Product/Flat/Action/Rows/TableDataTest.php b/dev/tests/unit/testsuite/Magento/Catalog/Model/Indexer/Product/Flat/Action/Rows/TableDataTest.php
index 5078b9fd423..b598df7c2f3 100644
--- a/dev/tests/unit/testsuite/Magento/Catalog/Model/Indexer/Product/Flat/Action/Rows/TableDataTest.php
+++ b/dev/tests/unit/testsuite/Magento/Catalog/Model/Indexer/Product/Flat/Action/Rows/TableDataTest.php
@@ -81,7 +81,7 @@ class TableDataTest extends \PHPUnit_Framework_TestCase
         )->method(
             'renameTablesBatch'
         )->with(
-            array('oldName' => 'flat_tmp', 'newName' => 'flat_table')
+            array(['oldName' => 'flat_tmp', 'newName' => 'flat_table'])
         );
 
         $this->_resourceMock->expects(
diff --git a/dev/tests/unit/testsuite/Magento/Catalog/Model/Indexer/Product/Flat/Action/RowsTest.php b/dev/tests/unit/testsuite/Magento/Catalog/Model/Indexer/Product/Flat/Action/RowsTest.php
index 9f0c4ee233a..47bf9de586a 100644
--- a/dev/tests/unit/testsuite/Magento/Catalog/Model/Indexer/Product/Flat/Action/RowsTest.php
+++ b/dev/tests/unit/testsuite/Magento/Catalog/Model/Indexer/Product/Flat/Action/RowsTest.php
@@ -32,12 +32,83 @@ class RowsTest extends \PHPUnit_Framework_TestCase
      */
     protected $_model;
 
+    /**
+     * @var \PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $_storeManager;
+
+    /**
+     * @var \PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $_store;
+
+    /**
+     * @var \PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $_productIndexerHelper;
+
+    /**
+     * @var \PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $_resource;
+
+    /**
+     * @var \PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $_connection;
+
+    /**
+     * @var \PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $_flatItemWriter;
+
+    /**
+     * @var \PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $_flatItemEraser;
+
+    /**
+     * @var \PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $_flatTableBuilder;
+
     public function setUp()
     {
         $objectManager = new ObjectManager($this);
-        $this->_model = $objectManager->getObject('Magento\Catalog\Model\Indexer\Product\Flat\Action\Rows');
-    }
 
+        $this->_connection = $this->getMock('\Magento\Framework\DB\Adapter\AdapterInterface');
+        $this->_resource = $this->getMock('Magento\Framework\App\Resource', array(), array(), '', false);
+        $this->_resource->expects($this->any())->method('getConnection')
+            ->with('default')
+            ->will($this->returnValue($this->_connection));
+        $this->_storeManager = $this->getMock('Magento\Framework\StoreManagerInterface');
+        $this->_store = $this->getMock('Magento\Store\Model\Store', array(), array(), '', false);
+        $this->_store->expects($this->any())->method('getId')->will($this->returnValue('store_id_1'));
+        $this->_storeManager->expects($this->any())->method('getStores')->will(
+            $this->returnValue(array($this->_store))
+        );
+        $this->_productIndexerHelper = $this->getMock(
+            'Magento\Catalog\Helper\Product\Flat\Indexer', array(), array(), '', false
+        );
+        $this->_flatItemEraser = $this->getMock(
+            '\Magento\Catalog\Model\Indexer\Product\Flat\Action\Eraser', array(), array(), '', false
+        );
+        $this->_flatItemWriter = $this->getMock(
+            '\Magento\Catalog\Model\Indexer\Product\Flat\Action\Indexer', array(), array(), '', false
+        );
+        $this->_flatTableBuilder = $this->getMock(
+            '\Magento\Catalog\Model\Indexer\Product\Flat\FlatTableBuilder', array(), array(), '', false
+        );
+
+        $this->_model = $objectManager->getObject('Magento\Catalog\Model\Indexer\Product\Flat\Action\Rows', array(
+            'resource' => $this->_resource,
+            'storeManager' => $this->_storeManager,
+            'productHelper' => $this->_productIndexerHelper,
+            'flatItemEraser' => $this->_flatItemEraser,
+            'flatItemWriter' => $this->_flatItemWriter,
+            'flatTableBuilder' => $this->_flatTableBuilder
+        ));
+    }
     /**
      * @expectedException \Magento\Framework\Model\Exception
      * @expectedExceptionMessage Bad value was supplied.
@@ -46,4 +117,26 @@ class RowsTest extends \PHPUnit_Framework_TestCase
     {
         $this->_model->execute(null);
     }
+
+    public function testExecuteWithNonExistingFlatTablesCreatesTables()
+    {
+        $this->_productIndexerHelper->expects($this->any())->method('getFlatTableName')
+            ->will($this->returnValue('store_flat_table'));
+        $this->_connection->expects($this->any())->method('isTableExists')->with('store_flat_table')
+            ->will($this->returnValue(false));
+        $this->_flatItemEraser->expects($this->never())->method('removeDeletedProducts');
+        $this->_flatTableBuilder->expects($this->once())->method('build')->with('store_id_1', array(1, 2));
+        $this->_model->execute(array(1, 2));
+    }
+
+    public function testExecuteWithExistingFlatTablesCreatesTables()
+    {
+        $this->_productIndexerHelper->expects($this->any())->method('getFlatTableName')
+            ->will($this->returnValue('store_flat_table'));
+        $this->_connection->expects($this->any())->method('isTableExists')->with('store_flat_table')
+            ->will($this->returnValue(true));
+        $this->_flatItemEraser->expects($this->once())->method('removeDeletedProducts');
+        $this->_flatTableBuilder->expects($this->once())->method('build')->with('store_id_1', array(1, 2));
+        $this->_model->execute(array(1, 2));
+    }
 }
diff --git a/dev/tests/unit/testsuite/Magento/Catalog/Service/V1/Data/Eav/AttributeMetadataTest.php b/dev/tests/unit/testsuite/Magento/Catalog/Service/V1/Data/Eav/AttributeMetadataTest.php
index a4cb5f1289c..64fa6cc8566 100644
--- a/dev/tests/unit/testsuite/Magento/Catalog/Service/V1/Data/Eav/AttributeMetadataTest.php
+++ b/dev/tests/unit/testsuite/Magento/Catalog/Service/V1/Data/Eav/AttributeMetadataTest.php
@@ -25,7 +25,7 @@ namespace Magento\Catalog\Service\V1\Data\Eav;
 
 class AttributeMetadataTest extends \PHPUnit_Framework_TestCase
 {
-    /** @var \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder|\PHPUnit_Framework_TestCase */
+    /** @var \Magento\Framework\Api\ExtensibleObjectBuilder|\PHPUnit_Framework_TestCase */
     protected $builderMock;
 
     /** @var \Magento\Catalog\Service\V1\Data\Eav\ValidationRule[] */
@@ -36,7 +36,7 @@ class AttributeMetadataTest extends \PHPUnit_Framework_TestCase
 
     protected function setUp()
     {
-        $this->builderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $this->builderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(array('getData'))
             ->disableOriginalConstructor()
             ->getMock();
diff --git a/dev/tests/unit/testsuite/Magento/Catalog/Service/V1/Data/ProductBuilderTest.php b/dev/tests/unit/testsuite/Magento/Catalog/Service/V1/Data/ProductBuilderTest.php
index 9f5b2dd249c..6b4218d093f 100644
--- a/dev/tests/unit/testsuite/Magento/Catalog/Service/V1/Data/ProductBuilderTest.php
+++ b/dev/tests/unit/testsuite/Magento/Catalog/Service/V1/Data/ProductBuilderTest.php
@@ -34,7 +34,7 @@ class ProductBuilderTest extends \PHPUnit_Framework_TestCase
     /** @var \Magento\Catalog\Service\V1\MetadataService */
     private $_productMetadataService;
 
-    /** @var \Magento\Framework\Service\Data\AttributeValueBuilder */
+    /** @var \Magento\Framework\Api\AttributeValueBuilder */
     private $_valueBuilder;
 
     protected function setUp()
@@ -57,7 +57,7 @@ class ProductBuilderTest extends \PHPUnit_Framework_TestCase
             )
         );
         $this->_valueBuilder = $this->_objectManager->getObject(
-            'Magento\Framework\Service\Data\AttributeValueBuilder'
+            'Magento\Framework\Api\AttributeValueBuilder'
         );
         $this->_productBuilder = $this->_objectManager->getObject(
             'Magento\Catalog\Service\V1\Data\ProductBuilder',
diff --git a/dev/tests/unit/testsuite/Magento/Catalog/Service/V1/MetadataServiceTest.php b/dev/tests/unit/testsuite/Magento/Catalog/Service/V1/MetadataServiceTest.php
index 51e4fd47c48..72a45145498 100644
--- a/dev/tests/unit/testsuite/Magento/Catalog/Service/V1/MetadataServiceTest.php
+++ b/dev/tests/unit/testsuite/Magento/Catalog/Service/V1/MetadataServiceTest.php
@@ -116,7 +116,7 @@ class MetadataServiceTest extends \PHPUnit_Framework_TestCase
         $this->eavConfigMock->expects($this->any())->method('getAttribute')->will($this->returnValue($attributeMock));
 
         $dto = $this->service->getAttributeMetadata('entity_type', 'attr_code');
-        $this->assertInstanceOf('Magento\Framework\Service\Data\AbstractExtensibleObject', $dto);
+        $this->assertInstanceOf('Magento\Framework\Api\AbstractExtensibleObject', $dto);
         $this->assertEquals($attributeMock->getFrontendInput(), $dto->getFrontendInput());
 
         $this->assertEquals(0, $dto->getFrontendLabel()[0]->getStoreId());
@@ -155,7 +155,7 @@ class MetadataServiceTest extends \PHPUnit_Framework_TestCase
             ->method('create')
             ->will($this->returnValue($this->attributeCollection));
 
-        $searchCriteria = $this->getMockBuilder('\Magento\Framework\Service\V1\Data\SearchCriteria')
+        $searchCriteria = $this->getMockBuilder('\Magento\Framework\Api\SearchCriteria')
             ->disableOriginalConstructor()
             ->setMethods(['getFilterGroups'])
             ->getMock();
@@ -171,7 +171,7 @@ class MetadataServiceTest extends \PHPUnit_Framework_TestCase
         /** @var \Magento\Catalog\Service\V1\Data\Product\Attribute\SearchResults $searchResult */
         $searchResult = $this->service->getAllAttributeMetadata('entity_type', $searchCriteria);
         $dto = $searchResult->getItems()[0];
-        $this->assertInstanceOf('Magento\Framework\Service\Data\AbstractExtensibleObject', $dto);
+        $this->assertInstanceOf('Magento\Framework\Api\AbstractExtensibleObject', $dto);
         $this->assertEquals($attributeMock->getFrontendInput(), $dto->getFrontendInput());
 
         $this->assertEquals(0, $dto->getFrontendLabel()[0]->getStoreId());
diff --git a/dev/tests/unit/testsuite/Magento/Catalog/Service/V1/Product/Attribute/ReadServiceTest.php b/dev/tests/unit/testsuite/Magento/Catalog/Service/V1/Product/Attribute/ReadServiceTest.php
index be748893dc2..1a26da9c017 100644
--- a/dev/tests/unit/testsuite/Magento/Catalog/Service/V1/Product/Attribute/ReadServiceTest.php
+++ b/dev/tests/unit/testsuite/Magento/Catalog/Service/V1/Product/Attribute/ReadServiceTest.php
@@ -24,7 +24,7 @@
 namespace Magento\Catalog\Service\V1\Product\Attribute;
 
 use Magento\Catalog\Service\V1\Product\MetadataService;
-use Magento\Framework\Service\V1\Data\SearchCriteriaBuilder;
+use Magento\Framework\Api\SearchCriteriaBuilder;
 use Magento\Catalog\Service\V1\Product\MetadataServiceInterface as ProductMetadataServiceInterface;
 
 class ReadServiceTest extends \PHPUnit_Framework_TestCase
@@ -85,7 +85,7 @@ class ReadServiceTest extends \PHPUnit_Framework_TestCase
 
         $typeBuilder = $objectManager->getObject(
             '\Magento\Catalog\Service\V1\Data\Eav\Product\Attribute\TypeBuilder',
-            ['metadataService' => $objectManager->getObject('Magento\Framework\Service\Config\MetadataConfig')]
+            ['metadataService' => $objectManager->getObject('Magento\Framework\Api\Config\MetadataConfig')]
         );
 
         /** @var \Magento\Catalog\Service\V1\Product\Attribute\ReadServiceInterface $service */
diff --git a/dev/tests/unit/testsuite/Magento/Catalog/Service/V1/Product/CustomOptions/Data/Option/Metadata/Converter/DefaultConverterTest.php b/dev/tests/unit/testsuite/Magento/Catalog/Service/V1/Product/CustomOptions/Data/Option/Metadata/Converter/DefaultConverterTest.php
index fb0054746b2..8e29fbbbdcc 100644
--- a/dev/tests/unit/testsuite/Magento/Catalog/Service/V1/Product/CustomOptions/Data/Option/Metadata/Converter/DefaultConverterTest.php
+++ b/dev/tests/unit/testsuite/Magento/Catalog/Service/V1/Product/CustomOptions/Data/Option/Metadata/Converter/DefaultConverterTest.php
@@ -59,7 +59,7 @@ class DefaultConverterTest extends \PHPUnit_Framework_TestCase
             false
         );
         $this->attributeValueMock = $this->getMock(
-            '\Magento\Framework\Service\Data\AttributeValue',
+            '\Magento\Framework\Api\AttributeValue',
             [],
             [],
             '',
diff --git a/dev/tests/unit/testsuite/Magento/Catalog/Service/V1/Product/CustomOptions/Data/Option/Metadata/Converter/SelectTest.php b/dev/tests/unit/testsuite/Magento/Catalog/Service/V1/Product/CustomOptions/Data/Option/Metadata/Converter/SelectTest.php
index 1bb12081a01..6702ff5f863 100644
--- a/dev/tests/unit/testsuite/Magento/Catalog/Service/V1/Product/CustomOptions/Data/Option/Metadata/Converter/SelectTest.php
+++ b/dev/tests/unit/testsuite/Magento/Catalog/Service/V1/Product/CustomOptions/Data/Option/Metadata/Converter/SelectTest.php
@@ -56,7 +56,7 @@ class SelectTest extends \PHPUnit_Framework_TestCase
         $this->optionMetadataMock =
             $this->getMock('\Magento\Catalog\Service\V1\Product\CustomOptions\Data\Option\Metadata', [], [], '', false);
         $this->attributeValueMock =
-            $this->getMock('\Magento\Framework\Service\Data\AttributeValue', [], [], '', false);
+            $this->getMock('\Magento\Framework\Api\AttributeValue', [], [], '', false);
         $this->model = new Select();
     }
 
diff --git a/dev/tests/unit/testsuite/Magento/Catalog/Service/V1/Product/MetadataServiceTest.php b/dev/tests/unit/testsuite/Magento/Catalog/Service/V1/Product/MetadataServiceTest.php
index 0cd0e88c706..ecca5475488 100644
--- a/dev/tests/unit/testsuite/Magento/Catalog/Service/V1/Product/MetadataServiceTest.php
+++ b/dev/tests/unit/testsuite/Magento/Catalog/Service/V1/Product/MetadataServiceTest.php
@@ -38,32 +38,32 @@ class MetadataServiceTest extends \PHPUnit_Framework_TestCase
     private $metadataService;
 
     /**
-     * @var \Magento\Framework\Service\V1\Data\SearchCriteriaBuilder|\PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\Api\SearchCriteriaBuilder|\PHPUnit_Framework_MockObject_MockObject
      */
     private $searchCriteriaBuilder;
 
     /**
-     * @var \Magento\Framework\Service\V1\Data\FilterBuilder|\PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\Api\FilterBuilder|\PHPUnit_Framework_MockObject_MockObject
      */
     private $filterBuilder;
 
     /**
-     * @var \Magento\Framework\Service\V1\Data\Filter|\PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\Api\Filter|\PHPUnit_Framework_MockObject_MockObject
      */
     private $filter;
 
     /**
-     * @var \Magento\Framework\Service\V1\Data\SearchCriteria|\PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\Api\SearchCriteria|\PHPUnit_Framework_MockObject_MockObject
      */
     private $searchCriteria;
 
     /**
-     * @var \Magento\Framework\Service\V1\Data\SearchResults|\PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\Api\SearchResults|\PHPUnit_Framework_MockObject_MockObject
      */
     private $searchResult;
 
     /**
-     * @var \Magento\Framework\Service\Config\MetadataConfig|\PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\Api\Config\MetadataConfig|\PHPUnit_Framework_MockObject_MockObject
      */
     private $metadataConfig;
 
@@ -71,7 +71,7 @@ class MetadataServiceTest extends \PHPUnit_Framework_TestCase
     {
         $helper = new ObjectManager($this);
 
-        $this->metadataConfig = $this->getMockBuilder('Magento\Framework\Service\Config\MetadataConfig')
+        $this->metadataConfig = $this->getMockBuilder('Magento\Framework\Api\Config\MetadataConfig')
             ->setMethods(['getCustomAttributesMetadata'])
             ->disableOriginalConstructor()
             ->getMock();
@@ -81,25 +81,25 @@ class MetadataServiceTest extends \PHPUnit_Framework_TestCase
             ->disableOriginalConstructor()
             ->getMock();
 
-        $this->searchCriteriaBuilder = $this->getMockBuilder('Magento\Framework\Service\V1\Data\SearchCriteriaBuilder')
+        $this->searchCriteriaBuilder = $this->getMockBuilder('Magento\Framework\Api\SearchCriteriaBuilder')
             ->setMethods(['addFilter', 'create'])
             ->disableOriginalConstructor()
             ->getMock();
 
-        $this->filterBuilder = $this->getMockBuilder('Magento\Framework\Service\V1\Data\FilterBuilder')
+        $this->filterBuilder = $this->getMockBuilder('Magento\Framework\Api\FilterBuilder')
             ->setMethods(['setField', 'setValue', 'create'])
             ->disableOriginalConstructor()
             ->getMock();
 
-        $this->filter = $this->getMockBuilder('Magento\Framework\Service\V1\Data\Filter')
+        $this->filter = $this->getMockBuilder('Magento\Framework\Api\Filter')
             ->disableOriginalConstructor()
             ->getMock();
 
-        $this->searchCriteria = $this->getMockBuilder('Magento\Framework\Service\V1\Data\SearchCriteria')
+        $this->searchCriteria = $this->getMockBuilder('Magento\Framework\Api\SearchCriteria')
             ->disableOriginalConstructor()
             ->getMock();
 
-        $this->searchResult = $this->getMockBuilder('Magento\Framework\Service\V1\Data\SearchResults')
+        $this->searchResult = $this->getMockBuilder('Magento\Framework\Api\SearchResults')
             ->setMethods(['getItems'])
             ->disableOriginalConstructor()
             ->getMock();
diff --git a/dev/tests/unit/testsuite/Magento/Catalog/Service/V1/ProductServiceTest.php b/dev/tests/unit/testsuite/Magento/Catalog/Service/V1/ProductServiceTest.php
index f7a41371eb7..996cdb56c06 100644
--- a/dev/tests/unit/testsuite/Magento/Catalog/Service/V1/ProductServiceTest.php
+++ b/dev/tests/unit/testsuite/Magento/Catalog/Service/V1/ProductServiceTest.php
@@ -24,8 +24,8 @@
 
 namespace Magento\Catalog\Service\V1;
 
-use Magento\Framework\Service\V1\Data\SearchCriteria;
-use Magento\Framework\Service\V1\Data\SearchCriteriaBuilder;
+use Magento\Framework\Api\SearchCriteria;
+use Magento\Framework\Api\SearchCriteriaBuilder;
 
 /**
  * Test for \Magento\Catalog\Service\V1\ProductService
@@ -115,10 +115,10 @@ class ProductServiceTest extends \PHPUnit_Framework_TestCase
             ->getMock();
 
         $filterGroupBuilder = $this->_objectManager
-            ->getObject('Magento\Framework\Service\V1\Data\Search\FilterGroupBuilder');
+            ->getObject('Magento\Framework\Api\Search\FilterGroupBuilder');
         /** @var SearchCriteriaBuilder $searchBuilder */
         $this->_searchBuilder = $this->_objectManager->getObject(
-            'Magento\Framework\Service\V1\Data\SearchCriteriaBuilder',
+            'Magento\Framework\Api\SearchCriteriaBuilder',
             ['filterGroupBuilder' => $filterGroupBuilder]
         );
     }
@@ -237,10 +237,10 @@ class ProductServiceTest extends \PHPUnit_Framework_TestCase
         );
 
         $helper = new \Magento\TestFramework\Helper\ObjectManager($this);
-        $filterBuilder = $helper->getObject('\Magento\Framework\Service\V1\Data\FilterBuilder');
+        $filterBuilder = $helper->getObject('\Magento\Framework\Api\FilterBuilder');
         $filter = $filterBuilder->setField('price')->setValue('10.000')->setConditionType('eq')->create();
         $this->_searchBuilder->addFilter([$filter]);
-        $sortOrderBuilder = $helper->getObject('\Magento\Framework\Service\V1\Data\SortOrderBuilder');
+        $sortOrderBuilder = $helper->getObject('\Magento\Framework\Api\SortOrderBuilder');
         $sortOrder = $sortOrderBuilder
             ->setField('price')
             ->setDirection(SearchCriteria::SORT_ASC)
diff --git a/dev/tests/unit/testsuite/Magento/CatalogInventory/Service/V1/StockStatusServiceTest.php b/dev/tests/unit/testsuite/Magento/CatalogInventory/Service/V1/StockStatusServiceTest.php
index 784af4c417b..f3fc1803a10 100644
--- a/dev/tests/unit/testsuite/Magento/CatalogInventory/Service/V1/StockStatusServiceTest.php
+++ b/dev/tests/unit/testsuite/Magento/CatalogInventory/Service/V1/StockStatusServiceTest.php
@@ -320,7 +320,7 @@ class StockStatusServiceTest extends \PHPUnit_Framework_TestCase
         $scope->expects($this->any())->method('getId')->will($this->returnValue($websiteId));
         $this->scopeResolver->expects($this->any())->method('getScope')->will($this->returnValue($scope));
 
-        $builder = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $builder = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->disableOriginalConstructor()
             ->getMock();
         $builder->expects($this->any())->method('getData')->will($this->returnValue($criteriaData));
@@ -339,7 +339,7 @@ class StockStatusServiceTest extends \PHPUnit_Framework_TestCase
             ->will($this->returnValue(new \ArrayIterator([$statusItem])));
         $this->itemsFactory->expects($this->once())->method('create')->will($this->returnValue($collection));
 
-        /** @var \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder $builder */
+        /** @var \Magento\Framework\Api\ExtensibleObjectBuilder $builder */
         $lowStockCriteria = new Data\LowStockCriteria($builder);
 
         // Expected results
diff --git a/dev/tests/unit/testsuite/Magento/Checkout/Model/Cart/Access/ReadPluginTest.php b/dev/tests/unit/testsuite/Magento/Checkout/Model/Cart/Access/ReadPluginTest.php
index 11351f11b66..5a79c52c1ba 100644
--- a/dev/tests/unit/testsuite/Magento/Checkout/Model/Cart/Access/ReadPluginTest.php
+++ b/dev/tests/unit/testsuite/Magento/Checkout/Model/Cart/Access/ReadPluginTest.php
@@ -86,7 +86,7 @@ class ReadPluginTest extends \PHPUnit_Framework_TestCase
         $this->userContextMock->expects($this->once())->method('getUserType')->will($this->returnValue($userType));
         $this->model->beforeGetCartList(
             $this->subjectMock,
-            $this->getMock('\Magento\Framework\Service\V1\Data\SearchCriteria', [], [], '', false)
+            $this->getMock('\Magento\Framework\Api\SearchCriteria', [], [], '', false)
         );
     }
 
@@ -100,7 +100,7 @@ class ReadPluginTest extends \PHPUnit_Framework_TestCase
             ->will($this->returnValue(\Magento\Authorization\Model\UserContextInterface::USER_TYPE_CUSTOMER));
         $this->model->beforeGetCartList(
             $this->subjectMock,
-            $this->getMock('\Magento\Framework\Service\V1\Data\SearchCriteria', [], [], '', false)
+            $this->getMock('\Magento\Framework\Api\SearchCriteria', [], [], '', false)
         );
     }
 }
diff --git a/dev/tests/unit/testsuite/Magento/Checkout/Service/V1/Address/ConverterTest.php b/dev/tests/unit/testsuite/Magento/Checkout/Service/V1/Address/ConverterTest.php
index 59cb19b9a9e..23e01bba4de 100644
--- a/dev/tests/unit/testsuite/Magento/Checkout/Service/V1/Address/ConverterTest.php
+++ b/dev/tests/unit/testsuite/Magento/Checkout/Service/V1/Address/ConverterTest.php
@@ -27,7 +27,7 @@ namespace Magento\Checkout\Service\V1\Address;
 
 use \Magento\Checkout\Service\V1\Data\Cart\Address;
 use \Magento\Checkout\Service\V1\Data\Cart\Address\Region;
-use \Magento\Framework\Service\Data\AttributeValue;
+use \Magento\Framework\Api\AttributeValue;
 
 class ConverterTest extends \PHPUnit_Framework_TestCase
 {
@@ -137,7 +137,7 @@ class ConverterTest extends \PHPUnit_Framework_TestCase
         $dataObjectMock = $this->getMock('Magento\Checkout\Service\V1\Data\Cart\Address', [], [], '', false);
         $methods = ['setData', 'setStreet', 'setRegionId', 'setRegion', '__wakeUp'];
         $addressMock = $this->getMock('Magento\Sales\Model\Quote\Address', $methods, [], '', false);
-        $attributeValueMock = $this->getMock('\Magento\Framework\Service\Data\AttributeValue', [], [], '', false);
+        $attributeValueMock = $this->getMock('\Magento\Framework\Api\AttributeValue', [], [], '', false);
         $attributeValueMock->expects($this->once())->method('getAttributeCode')->will($this->returnValue('value_code'));
         $attributeValueMock->expects($this->once())->method('getValue')->will($this->returnValue('value'));
 
diff --git a/dev/tests/unit/testsuite/Magento/Checkout/Service/V1/Cart/ReadServiceTest.php b/dev/tests/unit/testsuite/Magento/Checkout/Service/V1/Cart/ReadServiceTest.php
index a38b796cd38..2826c83b4fd 100644
--- a/dev/tests/unit/testsuite/Magento/Checkout/Service/V1/Cart/ReadServiceTest.php
+++ b/dev/tests/unit/testsuite/Magento/Checkout/Service/V1/Cart/ReadServiceTest.php
@@ -24,7 +24,7 @@
 
 namespace Magento\Checkout\Service\V1\Cart;
 
-use \Magento\Framework\Service\V1\Data\SearchCriteria;
+use \Magento\Framework\Api\SearchCriteria;
 
 /**
  * @SuppressWarnings(PHPMD.TooManyFields)
@@ -122,20 +122,20 @@ class ReadServiceTest extends \PHPUnit_Framework_TestCase
     public function testGetCartListSuccess($direction, $expected)
     {
         $searchResult = $this->getMock('\Magento\Checkout\Service\V1\Data\CartSearchResults', [], [], '', false);
-        $searchCriteriaMock = $this->getMock('\Magento\Framework\Service\V1\Data\SearchCriteria', [], [], '', false);
+        $searchCriteriaMock = $this->getMock('\Magento\Framework\Api\SearchCriteria', [], [], '', false);
 
         $cartMock = $this->getMock('Magento\Payment\Model\Cart', [], [], '', false);
         $this->searchResultsBuilderMock
             ->expects($this->once())
             ->method('setSearchCriteria')
             ->will($this->returnValue($searchCriteriaMock));
-        $filterGroupMock = $this->getMock('\Magento\Framework\Service\V1\Data\Search\FilterGroup', [], [], '', false);
+        $filterGroupMock = $this->getMock('\Magento\Framework\Api\Search\FilterGroup', [], [], '', false);
         $searchCriteriaMock
             ->expects($this->any())
             ->method('getFilterGroups')
             ->will($this->returnValue([$filterGroupMock]));
 
-        $filterMock = $this->getMock('\Magento\Framework\Service\V1\Data\Filter', [], [], '', false);
+        $filterMock = $this->getMock('\Magento\Framework\Api\Filter', [], [], '', false);
         $filterGroupMock->expects($this->any())->method('getFilters')->will($this->returnValue([$filterMock]));
         $filterMock->expects($this->once())->method('getField')->will($this->returnValue('store_id'));
         $filterMock->expects($this->any())->method('getConditionType')->will($this->returnValue('eq'));
@@ -147,7 +147,7 @@ class ReadServiceTest extends \PHPUnit_Framework_TestCase
 
         $this->quoteCollectionMock->expects($this->once())->method('getSize')->will($this->returnValue(10));
         $this->searchResultsBuilderMock->expects($this->once())->method('setTotalCount')->with(10);
-        $sortOrderMock = $this->getMockBuilder('Magento\Framework\Service\V1\Data\SortOrder')
+        $sortOrderMock = $this->getMockBuilder('Magento\Framework\Api\SortOrder')
             ->setMethods(['getField', 'getDirection'])
             ->disableOriginalConstructor()
             ->getMock();
@@ -178,18 +178,18 @@ class ReadServiceTest extends \PHPUnit_Framework_TestCase
      */
     public function testGetCartListWithNotExistingField()
     {
-        $searchCriteriaMock = $this->getMock('\Magento\Framework\Service\V1\Data\SearchCriteria', [], [], '', false);
+        $searchCriteriaMock = $this->getMock('\Magento\Framework\Api\SearchCriteria', [], [], '', false);
         $this->searchResultsBuilderMock
             ->expects($this->once())
             ->method('setSearchCriteria')
             ->will($this->returnValue($searchCriteriaMock));
 
-        $filterGroupMock = $this->getMock('\Magento\Framework\Service\V1\Data\Search\FilterGroup', [], [], '', false);
+        $filterGroupMock = $this->getMock('\Magento\Framework\Api\Search\FilterGroup', [], [], '', false);
         $searchCriteriaMock
             ->expects($this->any())
             ->method('getFilterGroups')
             ->will($this->returnValue([$filterGroupMock]));
-        $filterMock = $this->getMock('\Magento\Framework\Service\V1\Data\Filter', [], [], '', false);
+        $filterMock = $this->getMock('\Magento\Framework\Api\Filter', [], [], '', false);
         $filterGroupMock->expects($this->any())->method('getFilters')->will($this->returnValue([$filterMock]));
         $filterMock->expects($this->once())->method('getField')->will($this->returnValue('any_value'));
         $filterMock->expects($this->never())->method('getConditionType');
diff --git a/dev/tests/unit/testsuite/Magento/ConfigurableProduct/Service/V1/Product/Option/WriteServiceTest.php b/dev/tests/unit/testsuite/Magento/ConfigurableProduct/Service/V1/Product/Option/WriteServiceTest.php
index f7b8fa6fd8e..51c8cfbda4c 100644
--- a/dev/tests/unit/testsuite/Magento/ConfigurableProduct/Service/V1/Product/Option/WriteServiceTest.php
+++ b/dev/tests/unit/testsuite/Magento/ConfigurableProduct/Service/V1/Product/Option/WriteServiceTest.php
@@ -548,7 +548,7 @@ class WriteServiceTest extends \PHPUnit_Framework_TestCase
     /**
      * Return instance of option for configurable product
      *
-     * @return \Magento\Framework\Service\Data\AbstractExtensibleObject
+     * @return \Magento\Framework\Api\AbstractExtensibleObject
      */
     private function getOption()
     {
diff --git a/dev/tests/unit/testsuite/Magento/Contact/Helper/DataTest.php b/dev/tests/unit/testsuite/Magento/Contact/Helper/DataTest.php
index b4c0a4cbc35..d8904af20d8 100644
--- a/dev/tests/unit/testsuite/Magento/Contact/Helper/DataTest.php
+++ b/dev/tests/unit/testsuite/Magento/Contact/Helper/DataTest.php
@@ -96,7 +96,7 @@ class DataTest extends \PHPUnit_Framework_TestCase
             ->will($this->returnValue(true));
 
         $objectBuilder = $this->getMockForAbstractClass(
-            '\Magento\Framework\Service\Data\AbstractSimpleObjectBuilder',
+            '\Magento\Framework\Api\AbstractSimpleObjectBuilder',
             ['getData'],
             '',
             false
diff --git a/dev/tests/unit/testsuite/Magento/Core/Model/App/StateTest.php b/dev/tests/unit/testsuite/Magento/Core/Model/App/StateTest.php
index 93cecc96275..3ecd8d355fb 100644
--- a/dev/tests/unit/testsuite/Magento/Core/Model/App/StateTest.php
+++ b/dev/tests/unit/testsuite/Magento/Core/Model/App/StateTest.php
@@ -35,7 +35,6 @@ class StateTest extends \PHPUnit_Framework_TestCase
     {
         $model = new \Magento\Framework\App\State(
             $this->getMockForAbstractClass('Magento\Framework\Config\ScopeInterface', array(), '', false),
-            time(),
             $mode
         );
         $this->assertEquals($mode, $model->getMode());
@@ -61,7 +60,6 @@ class StateTest extends \PHPUnit_Framework_TestCase
     {
         new \Magento\Framework\App\State(
             $this->getMockForAbstractClass('Magento\Framework\Config\ScopeInterface', array(), '', false),
-            time(),
             "unknown mode"
         );
     }
diff --git a/dev/tests/unit/testsuite/Magento/Customer/Block/Adminhtml/Edit/Tab/AccountTest.php b/dev/tests/unit/testsuite/Magento/Customer/Block/Adminhtml/Edit/Tab/AccountTest.php
index 8c9a3b28281..23113b7d5a2 100644
--- a/dev/tests/unit/testsuite/Magento/Customer/Block/Adminhtml/Edit/Tab/AccountTest.php
+++ b/dev/tests/unit/testsuite/Magento/Customer/Block/Adminhtml/Edit/Tab/AccountTest.php
@@ -26,9 +26,9 @@ namespace Magento\Customer\Block\Adminhtml\Edit\Tab;
 
 use Magento\TestFramework\Helper\ObjectManager as ObjectManagerHelper;
 use Magento\Customer\Service\V1\CustomerAccountServiceInterface;
-use Magento\Framework\Service\Data\AbstractExtensibleObject;
-use Magento\Framework\Service\Data\AttributeValue;
-use Magento\Framework\Service\ExtensibleDataObjectConverter;
+use Magento\Framework\Api\AbstractExtensibleObject;
+use Magento\Framework\Api\AttributeValue;
+use Magento\Framework\Api\ExtensibleDataObjectConverter;
 
 class AccountTest extends \PHPUnit_Framework_TestCase
 {
diff --git a/dev/tests/unit/testsuite/Magento/Customer/Block/Widget/DobTest.php b/dev/tests/unit/testsuite/Magento/Customer/Block/Widget/DobTest.php
index 46e39cff31c..2b526ac8ee6 100644
--- a/dev/tests/unit/testsuite/Magento/Customer/Block/Widget/DobTest.php
+++ b/dev/tests/unit/testsuite/Magento/Customer/Block/Widget/DobTest.php
@@ -24,8 +24,6 @@
 namespace Magento\Customer\Block\Widget;
 
 use Magento\Framework\Exception\NoSuchEntityException;
-use Magento\Customer\Service\V1\Data\Eav\ValidationRule;
-use Magento\Customer\Service\V1\Data\Eav\ValidationRuleBuilder;
 
 class DobTest extends \PHPUnit_Framework_TestCase
 {
@@ -343,27 +341,32 @@ class DobTest extends \PHPUnit_Framework_TestCase
      */
     public function getMinDateRangeDataProvider()
     {
-        $helper = new \Magento\TestFramework\Helper\ObjectManager($this);
+        $emptyValidationRule = $this->getMockBuilder('Magento\Customer\Api\Data\ValidationRuleInterface')
+            ->disableOriginalConstructor()
+            ->setMethods(['getName', 'getValue'])
+            ->getMockForAbstractClass();
+
+        $validationRule = $this->getMockBuilder('Magento\Customer\Api\Data\ValidationRuleInterface')
+            ->disableOriginalConstructor()
+            ->setMethods(['getName', 'getValue'])
+            ->getMockForAbstractClass();
+        $validationRule->expects($this->any())
+            ->method('getName')
+            ->will($this->returnValue(Dob::MIN_DATE_RANGE_KEY));
+        $validationRule->expects($this->any())
+            ->method('getValue')
+            ->will($this->returnValue(strtotime(self::MIN_DATE)));
+
         return array(
             array(
                 array(
-                    new ValidationRule(
-                        $helper->getObject('\Magento\Customer\Service\V1\Data\Eav\ValidationRuleBuilder')
-                            ->populateWithArray(
-                                array(
-                                    'name' => Dob::MIN_DATE_RANGE_KEY,
-                                    'value' => strtotime(self::MIN_DATE)
-                                )
-                            )
-                    )
+                    $validationRule
                 ),
                 date('Y/m/d', strtotime(self::MIN_DATE))
             ),
             array(
                 array(
-                    new ValidationRule(
-                        $helper->getObject('\Magento\Customer\Service\V1\Data\Eav\ValidationRuleBuilder')
-                    )
+                    $emptyValidationRule
                 ),
                 null
             )
@@ -409,27 +412,31 @@ class DobTest extends \PHPUnit_Framework_TestCase
      */
     public function getMaxDateRangeDataProvider()
     {
-        $helper = new \Magento\TestFramework\Helper\ObjectManager($this);
+        $emptyValidationRule = $this->getMockBuilder('Magento\Customer\Api\Data\ValidationRuleInterface')
+            ->disableOriginalConstructor()
+            ->setMethods(['getName', 'getValue'])
+            ->getMockForAbstractClass();
+
+        $validationRule = $this->getMockBuilder('Magento\Customer\Api\Data\ValidationRuleInterface')
+            ->disableOriginalConstructor()
+            ->setMethods(['getName', 'getValue'])
+            ->getMockForAbstractClass();
+        $validationRule->expects($this->any())
+            ->method('getName')
+            ->will($this->returnValue(Dob::MAX_DATE_RANGE_KEY));
+        $validationRule->expects($this->any())
+            ->method('getValue')
+            ->will($this->returnValue(strtotime(self::MAX_DATE)));
         return array(
             array(
                 array(
-                    new ValidationRule(
-                        $helper->getObject('\Magento\Customer\Service\V1\Data\Eav\ValidationRuleBuilder')
-                            ->populateWithArray(
-                                array(
-                                    'name' => Dob::MAX_DATE_RANGE_KEY,
-                                    'value' => strtotime(self::MAX_DATE)
-                                )
-                            )
-                    )
+                    $validationRule
                 ),
                 date('Y/m/d', strtotime(self::MAX_DATE))
             ),
             array(
                 array(
-                    new ValidationRule(
-                        $helper->getObject('\Magento\Customer\Service\V1\Data\Eav\ValidationRuleBuilder')
-                    )
+                    $emptyValidationRule
                 ),
                 null
             )
diff --git a/dev/tests/unit/testsuite/Magento/Customer/Controller/Account/CreatePostTest.php b/dev/tests/unit/testsuite/Magento/Customer/Controller/Account/CreatePostTest.php
index 0db0601dc8a..42744a2a59b 100644
--- a/dev/tests/unit/testsuite/Magento/Customer/Controller/Account/CreatePostTest.php
+++ b/dev/tests/unit/testsuite/Magento/Customer/Controller/Account/CreatePostTest.php
@@ -349,6 +349,7 @@ class CreatePostTest extends \PHPUnit_Framework_TestCase
             ->method('getParam')
             ->willReturnMap([
                 ['password', null, $password],
+                ['password_confirmation', null, $password],
                 ['is_subscribed', false, true],
             ]);
 
@@ -486,6 +487,7 @@ class CreatePostTest extends \PHPUnit_Framework_TestCase
             ->method('getParam')
             ->willReturnMap([
                 ['password', null, $password],
+                ['password_confirmation', null, $password],
                 ['is_subscribed', false, true],
             ]);
 
diff --git a/dev/tests/unit/testsuite/Magento/Customer/Model/Address/ConverterTest.php b/dev/tests/unit/testsuite/Magento/Customer/Model/Address/ConverterTest.php
index a9b0abe3bf2..d04e1ab5b39 100644
--- a/dev/tests/unit/testsuite/Magento/Customer/Model/Address/ConverterTest.php
+++ b/dev/tests/unit/testsuite/Magento/Customer/Model/Address/ConverterTest.php
@@ -23,7 +23,7 @@
  */
 namespace Magento\Customer\Model\Address;
 
-use Magento\Framework\Service\Data\AttributeValue;
+use Magento\Framework\Api\AttributeValue;
 
 class ConverterTest extends \PHPUnit_Framework_TestCase
 {
@@ -103,7 +103,7 @@ class ConverterTest extends \PHPUnit_Framework_TestCase
         $addressModelMock->expects($this->once())
             ->method('setAttributeSetId')
             ->with($this->equalTo(
-                \Magento\Customer\Service\V1\AddressMetadataServiceInterface::ATTRIBUTE_SET_ID_ADDRESS
+                \Magento\Customer\Api\AddressMetadataInterface::ATTRIBUTE_SET_ID_ADDRESS
             ));
 
         $addressMock = $this->getMock('Magento\Customer\Service\V1\Data\Address', array(), array(), '', false);
diff --git a/dev/tests/unit/testsuite/Magento/Customer/Model/Attribute/Data/PostcodeTest.php b/dev/tests/unit/testsuite/Magento/Customer/Model/Attribute/Data/PostcodeTest.php
new file mode 100644
index 00000000000..32ff20fa88f
--- /dev/null
+++ b/dev/tests/unit/testsuite/Magento/Customer/Model/Attribute/Data/PostcodeTest.php
@@ -0,0 +1,117 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Customer\Model\Attribute\Data;
+
+use Magento\Directory\Helper\Data as DirectoryHelper;
+use Magento\Eav\Model\Entity\Attribute\AbstractAttribute;
+
+class PostcodeTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var DirectoryHelper|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $directoryHelperMock;
+
+    /**
+     * @var AbstractAttribute|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $attributeMock;
+
+    protected function setUp()
+    {
+        $this->localeMock = $this->getMockBuilder('Magento\Framework\Stdlib\DateTime\TimezoneInterface')
+            ->getMock();
+        $this->localeResolverMock = $this->getMockBuilder('Magento\Framework\Locale\ResolverInterface')
+            ->getMock();
+        $this->loggerMock = $this->getMockBuilder('Magento\Framework\Logger')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->directoryHelperMock = $this->getMockBuilder('Magento\Directory\Helper\Data')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->attributeMock = $this->getMockBuilder('Magento\Eav\Model\Entity\Attribute\AbstractAttribute')
+            ->disableOriginalConstructor()
+            ->setMethods(['getStoreLabel'])
+            ->getMock();
+    }
+
+    /**
+     * Create an instance of the class that is being tested
+     *
+     * @param string|int|bool|null $value The value undergoing testing by a given test
+     * @return Postcode
+     */
+    protected function getClass($value)
+    {
+        return new Postcode(
+            $this->localeMock,
+            $this->loggerMock,
+            $this->localeResolverMock,
+            $this->directoryHelperMock
+        );
+    }
+
+    /**
+     * @param string $value to assign to boolean
+     * @param bool $expected text output
+     * @param string $countryId
+     * @param bool $isOptional
+     *
+     * @dataProvider validateValueDataProvider
+     */
+    public function testValidateValue($value, $expected, $countryId, $isOptional)
+    {
+        $storeLabel = 'Zip/Postal Code';
+        $this->attributeMock->expects($this->once())
+            ->method('getStoreLabel')
+            ->willReturn($storeLabel);
+
+        $this->directoryHelperMock->expects($this->once())
+            ->method('isZipCodeOptional')
+            ->willReturnMap([
+                [$countryId, $isOptional]
+            ]);
+
+        $object = $this->getClass($value);
+        $object->setAttribute($this->attributeMock);
+        $object->setExtractedData(['country_id' => $countryId]);
+
+        $actual = $object->validateValue($value);
+        $this->assertEquals($expected, $actual);
+    }
+
+    /**
+     * @return array
+     */
+    public function validateValueDataProvider()
+    {
+        return [
+            ['', ['"Zip/Postal Code" is a required value.'], 'US', false],
+            ['90034', true, 'US', false],
+            ['', true, 'IE', true],
+            ['90034', true, 'IE', true],
+        ];
+    }
+}
diff --git a/dev/tests/unit/testsuite/Magento/Customer/Model/ConverterTest.php b/dev/tests/unit/testsuite/Magento/Customer/Model/ConverterTest.php
index c61edf98034..9fee2ea16f2 100644
--- a/dev/tests/unit/testsuite/Magento/Customer/Model/ConverterTest.php
+++ b/dev/tests/unit/testsuite/Magento/Customer/Model/ConverterTest.php
@@ -28,7 +28,7 @@ namespace Magento\Customer\Model;
 use Magento\Customer\Service\V1\Data\Eav\AttributeMetadata;
 use Magento\Customer\Service\V1\Data\CustomerBuilder;
 use Magento\Customer\Service\V1\CustomerMetadataServiceInterface;
-use Magento\Framework\Service\Data\AttributeValueBuilder;
+use Magento\Framework\Api\AttributeValueBuilder;
 
 class ConverterTest extends \PHPUnit_Framework_TestCase
 {
diff --git a/dev/tests/unit/testsuite/Magento/Customer/Model/CustomerTest.php b/dev/tests/unit/testsuite/Magento/Customer/Model/CustomerTest.php
index aafc348f8bb..9d9144ff0d5 100644
--- a/dev/tests/unit/testsuite/Magento/Customer/Model/CustomerTest.php
+++ b/dev/tests/unit/testsuite/Magento/Customer/Model/CustomerTest.php
@@ -314,40 +314,6 @@ class CustomerTest extends \PHPUnit_Framework_TestCase
         );
     }
 
-    public function testCanSkipConfirmationWithoutCustomerId()
-    {
-        $this->registryMock->expects($this->never())->method('registry');
-        $this->_model->setData('id', false);
-        $this->assertFalse($this->_model->canSkipConfirmation());
-    }
-
-    public function testCanSkipConfirmationWithoutSkip()
-    {
-        $idFieldName = 'id';
-        $this->registryMock->expects($this->once())
-            ->method('registry')
-            ->with('skip_confirmation_if_email')
-            ->will($this->returnValue(false));
-
-        $this->_model->setData($idFieldName, 1);
-        $this->assertFalse($this->_model->canSkipConfirmation());
-    }
-
-    public function testCanSkipConfirmation()
-    {
-        $customerEmail = 'test@example.com';
-        $this->registryMock->expects($this->once())
-            ->method('registry')
-            ->with('skip_confirmation_if_email')
-            ->will($this->returnValue($customerEmail));
-
-        $this->_model->setData(array(
-            'id' => 1,
-            'email' => $customerEmail,
-        ));
-        $this->assertTrue($this->_model->canSkipConfirmation());
-    }
-
     /**
      * @expectedException \Magento\Framework\Model\Exception
      * @expectedExceptionMessage Wrong transactional account email type
diff --git a/dev/tests/unit/testsuite/Magento/Customer/Model/Metadata/Form/AbstractDataTest.php b/dev/tests/unit/testsuite/Magento/Customer/Model/Metadata/Form/AbstractDataTest.php
index f63294001f5..d5cac6fa3dc 100644
--- a/dev/tests/unit/testsuite/Magento/Customer/Model/Metadata/Form/AbstractDataTest.php
+++ b/dev/tests/unit/testsuite/Magento/Customer/Model/Metadata/Form/AbstractDataTest.php
@@ -25,9 +25,6 @@
  */
 namespace Magento\Customer\Model\Metadata\Form;
 
-use Magento\Customer\Service\V1\Data\Eav\ValidationRule;
-use Magento\Customer\Service\V1\Data\Eav\ValidationRuleBuilder;
-
 class AbstractDataTest extends \PHPUnit_Framework_TestCase
 {
     const MODEL = 'MODEL';
@@ -225,6 +222,18 @@ class AbstractDataTest extends \PHPUnit_Framework_TestCase
     public function testValidateInputRule($value, $label, $inputValidation, $expectedOutput)
     {
         $helper = new \Magento\TestFramework\Helper\ObjectManager($this);
+
+        $validationRule = $this->getMockBuilder('Magento\Customer\Api\Data\ValidationRuleInterface')
+            ->disableOriginalConstructor()
+            ->setMethods(['getName', 'getValue'])
+            ->getMockForAbstractClass();
+        $validationRule->expects($this->any())
+            ->method('getName')
+            ->will($this->returnValue('input_validation'));
+        $validationRule->expects($this->any())
+            ->method('getValue')
+            ->will($this->returnValue($inputValidation));
+
         $this->_attributeMock->expects($this->any())->method('getStoreLabel')->will($this->returnValue($label));
         $this->_attributeMock->expects(
             $this->any()
@@ -233,15 +242,7 @@ class AbstractDataTest extends \PHPUnit_Framework_TestCase
         )->will(
             $this->returnValue(
                 array(
-                    new ValidationRule(
-                        $helper->getObject('\Magento\Customer\Service\V1\Data\Eav\ValidationRuleBuilder')
-                            ->populateWithArray(
-                                array(
-                                    'name'  => 'input_validation',
-                                    'value' => $inputValidation
-                                )
-                            )
-                    )
+                    $validationRule
                 )
             )
         );
diff --git a/dev/tests/unit/testsuite/Magento/Customer/Model/Metadata/Form/DateTest.php b/dev/tests/unit/testsuite/Magento/Customer/Model/Metadata/Form/DateTest.php
index 62ed6d46317..0e455d93b6c 100644
--- a/dev/tests/unit/testsuite/Magento/Customer/Model/Metadata/Form/DateTest.php
+++ b/dev/tests/unit/testsuite/Magento/Customer/Model/Metadata/Form/DateTest.php
@@ -25,8 +25,8 @@
  */
 namespace Magento\Customer\Model\Metadata\Form;
 
-use Magento\Customer\Service\V1\Data\Eav\ValidationRule;
-use Magento\Customer\Service\V1\Data\Eav\ValidationRuleBuilder;
+use Magento\Customer\Model\Data\ValidationRule;
+use Magento\Customer\Api\Data\ValidationRuleDataBuilder;
 
 class DateTest extends AbstractFormTestCase
 {
@@ -91,13 +91,33 @@ class DateTest extends AbstractFormTestCase
     {
         $validationRules = array();
         $helper = new \Magento\TestFramework\Helper\ObjectManager($this);
-        $ruleBuilder = $helper->getObject('\Magento\Customer\Service\V1\Data\Eav\ValidationRuleBuilder');
-        $ruleBuilder->populateWithArray(array('name' => 'input_validation', 'value' => 'date'));
-        $validationRules[] = new ValidationRule($ruleBuilder);
+
+        $validationRule = $this->getMockBuilder('Magento\Customer\Api\Data\ValidationRuleInterface')
+            ->disableOriginalConstructor()
+            ->setMethods(['getName', 'getValue'])
+            ->getMockForAbstractClass();
+        $validationRule->expects($this->any())
+            ->method('getName')
+            ->will($this->returnValue('input_validation'));
+        $validationRule->expects($this->any())
+            ->method('getValue')
+            ->will($this->returnValue('date'));
+
+        $validationRules[] = $validationRule;
         if (is_array($validation)) {
             foreach ($validation as $ruleName => $ruleValue) {
-                $ruleBuilder->populateWithArray(array('name' => $ruleName, 'value' => $ruleValue));
-                $validationRules[] = new ValidationRule($ruleBuilder);
+                $validationRule = $this->getMockBuilder('Magento\Customer\Api\Data\ValidationRuleInterface')
+                    ->disableOriginalConstructor()
+                    ->setMethods(['getName', 'getValue'])
+                    ->getMockForAbstractClass();
+                $validationRule->expects($this->any())
+                    ->method('getName')
+                    ->will($this->returnValue($ruleName));
+                $validationRule->expects($this->any())
+                    ->method('getValue')
+                    ->will($this->returnValue($ruleValue));
+
+                $validationRules[] = $validationRule;
             }
         }
 
diff --git a/dev/tests/unit/testsuite/Magento/Customer/Model/Metadata/Form/MultiselectTest.php b/dev/tests/unit/testsuite/Magento/Customer/Model/Metadata/Form/MultiselectTest.php
index fe2ae2f9c00..fb313cc1f2e 100644
--- a/dev/tests/unit/testsuite/Magento/Customer/Model/Metadata/Form/MultiselectTest.php
+++ b/dev/tests/unit/testsuite/Magento/Customer/Model/Metadata/Form/MultiselectTest.php
@@ -26,7 +26,6 @@
 namespace Magento\Customer\Model\Metadata\Form;
 
 use Magento\Customer\Model\Metadata\ElementFactory;
-use Magento\Customer\Service\V1\Data\Eav\OptionBuilder;
 
 class MultiselectTest extends AbstractFormTestCase
 {
@@ -204,7 +203,27 @@ class MultiselectTest extends AbstractFormTestCase
      */
     protected function runOutputValueTest($value, $expected, $format)
     {
-        $helper = new \Magento\TestFramework\Helper\ObjectManager($this);
+        $option1 = $this->getMockBuilder('Magento\Customer\Api\Data\OptionInterface')
+            ->disableOriginalConstructor()
+            ->setMethods(['getLabel', 'getValue'])
+            ->getMockForAbstractClass();
+        $option1->expects($this->any())
+            ->method('getLabel')
+            ->will($this->returnValue('fourteen'));
+        $option1->expects($this->any())
+            ->method('getValue')
+            ->will($this->returnValue('14'));
+
+        $option2 = $this->getMockBuilder('Magento\Customer\Api\Data\OptionInterface')
+            ->disableOriginalConstructor()
+            ->setMethods(['getLabel', 'getValue'])
+            ->getMockForAbstractClass();
+        $option2->expects($this->any())
+            ->method('getLabel')
+            ->will($this->returnValue('some string'));
+        $option2->expects($this->any())
+            ->method('getValue')
+            ->will($this->returnValue('some key'));
 
         $this->attributeMetadataMock->expects(
             $this->any()
@@ -213,10 +232,8 @@ class MultiselectTest extends AbstractFormTestCase
         )->will(
             $this->returnValue(
                 array(
-                    $helper->getObject('\Magento\Customer\Service\V1\Data\Eav\OptionBuilder')
-                        ->setValue('14')->setLabel('fourteen')->create(),
-                    $helper->getObject('\Magento\Customer\Service\V1\Data\Eav\OptionBuilder')
-                        ->setValue('some key')->setLabel('some string')->create()
+                    $option1,
+                    $option2
                 )
             )
         );
diff --git a/dev/tests/unit/testsuite/Magento/Customer/Model/Metadata/Form/PostcodeTest.php b/dev/tests/unit/testsuite/Magento/Customer/Model/Metadata/Form/PostcodeTest.php
new file mode 100644
index 00000000000..79618c33437
--- /dev/null
+++ b/dev/tests/unit/testsuite/Magento/Customer/Model/Metadata/Form/PostcodeTest.php
@@ -0,0 +1,105 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Customer\Model\Metadata\Form;
+
+use Magento\Directory\Helper\Data as DirectoryHelper;
+
+class PostcodeTest extends AbstractFormTestCase
+{
+    /**
+     * @var DirectoryHelper|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $directoryHelper;
+
+    protected function setUp()
+    {
+        parent::setUp();
+
+        $this->directoryHelper = $this->getMockBuilder('Magento\Directory\Helper\Data')
+            ->disableOriginalConstructor()
+            ->getMock();
+    }
+
+    /**
+     * Create an instance of the class that is being tested
+     *
+     * @param string|int|bool|null $value The value undergoing testing by a given test
+     * @return Postcode
+     */
+    protected function getClass($value)
+    {
+        return new Postcode(
+            $this->localeMock,
+            $this->loggerMock,
+            $this->attributeMetadataMock,
+            $this->localeResolverMock,
+            $value,
+            0,
+            false,
+            $this->directoryHelper
+        );
+    }
+
+    /**
+     * @param string $value to assign to boolean
+     * @param bool $expected text output
+     * @param string $countryId
+     * @param bool $isOptional
+     *
+     * @dataProvider validateValueDataProvider
+     */
+    public function testValidateValue($value, $expected, $countryId, $isOptional)
+    {
+        $storeLabel = 'Zip/Postal Code';
+        $this->attributeMetadataMock->expects($this->once())
+            ->method('getStoreLabel')
+            ->willReturn($storeLabel);
+
+        $this->directoryHelper->expects($this->once())
+            ->method('isZipCodeOptional')
+            ->willReturnMap([
+                [$countryId, $isOptional]
+            ]);
+
+        $object = $this->getClass($value);
+        $object->setExtractedData(['country_id' => $countryId]);
+
+        $actual = $object->validateValue($value);
+        $this->assertEquals($expected, $actual);
+    }
+
+    /**
+     * @return array
+     */
+    public function validateValueDataProvider()
+    {
+        return [
+            ['', ['"Zip/Postal Code" is a required value.'], 'US', false],
+            ['90034', true, 'US', false],
+            ['', true, 'IE', true],
+            ['90034', true, 'IE', true],
+        ];
+    }
+}
diff --git a/dev/tests/unit/testsuite/Magento/Customer/Model/Metadata/Form/SelectTest.php b/dev/tests/unit/testsuite/Magento/Customer/Model/Metadata/Form/SelectTest.php
index 25b072d916a..e443f747b76 100644
--- a/dev/tests/unit/testsuite/Magento/Customer/Model/Metadata/Form/SelectTest.php
+++ b/dev/tests/unit/testsuite/Magento/Customer/Model/Metadata/Form/SelectTest.php
@@ -23,9 +23,6 @@
  */
 namespace Magento\Customer\Model\Metadata\Form;
 
-use Magento\Customer\Service\V1\Data\Eav\Option;
-use Magento\Customer\Service\V1\Data\Eav\OptionBuilder;
-
 /**
  * test Magento\Customer\Model\Metadata\Form\Select
  */
@@ -113,7 +110,39 @@ class SelectTest extends AbstractFormTestCase
      */
     public function testOutputValue($value, $expected)
     {
-        $helper = new \Magento\TestFramework\Helper\ObjectManager($this);
+        $option1 = $this->getMockBuilder('Magento\Customer\Api\Data\OptionInterface')
+            ->disableOriginalConstructor()
+            ->setMethods(['getLabel', 'getValue'])
+            ->getMockForAbstractClass();
+        $option1->expects($this->any())
+            ->method('getLabel')
+            ->will($this->returnValue('fourteen'));
+        $option1->expects($this->any())
+            ->method('getValue')
+            ->will($this->returnValue('14'));
+
+        $option2 = $this->getMockBuilder('Magento\Customer\Api\Data\OptionInterface')
+            ->disableOriginalConstructor()
+            ->setMethods(['getLabel', 'getValue'])
+            ->getMockForAbstractClass();
+        $option2->expects($this->any())
+            ->method('getLabel')
+            ->will($this->returnValue('some string'));
+        $option2->expects($this->any())
+            ->method('getValue')
+            ->will($this->returnValue('some key'));
+
+        $option3 = $this->getMockBuilder('Magento\Customer\Api\Data\OptionInterface')
+            ->disableOriginalConstructor()
+            ->setMethods(['getLabel', 'getValue'])
+            ->getMockForAbstractClass();
+        $option3->expects($this->any())
+            ->method('getLabel')
+            ->will($this->returnValue('True'));
+        $option3->expects($this->any())
+            ->method('getValue')
+            ->will($this->returnValue('true'));
+
         $this->attributeMetadataMock->expects(
             $this->any()
         )->method(
@@ -121,12 +150,9 @@ class SelectTest extends AbstractFormTestCase
         )->will(
             $this->returnValue(
                 array(
-                    $helper->getObject('\Magento\Customer\Service\V1\Data\Eav\OptionBuilder')
-                        ->setValue('14')->setLabel('fourteen')->create(),
-                    $helper->getObject('\Magento\Customer\Service\V1\Data\Eav\OptionBuilder')
-                        ->setValue('some key')->setLabel('some string')->create(),
-                    $helper->getObject('\Magento\Customer\Service\V1\Data\Eav\OptionBuilder')
-                        ->setValue('true')->setLabel('True')->create()
+                    $option1,
+                    $option2,
+                    $option3
                 )
             )
         );
diff --git a/dev/tests/unit/testsuite/Magento/Customer/Model/Metadata/Form/TextTest.php b/dev/tests/unit/testsuite/Magento/Customer/Model/Metadata/Form/TextTest.php
index b1c90ff6c5c..07909ed6fac 100644
--- a/dev/tests/unit/testsuite/Magento/Customer/Model/Metadata/Form/TextTest.php
+++ b/dev/tests/unit/testsuite/Magento/Customer/Model/Metadata/Form/TextTest.php
@@ -25,9 +25,6 @@
  */
 namespace Magento\Customer\Model\Metadata\Form;
 
-use Magento\Customer\Service\V1\Data\Eav\ValidationRule;
-use Magento\Customer\Service\V1\Data\Eav\ValidationRuleBuilder;
-
 class TextTest extends AbstractFormTestCase
 {
     /** @var \Magento\Framework\Stdlib\String */
@@ -125,15 +122,32 @@ class TextTest extends AbstractFormTestCase
     public function testValidateValueLength($value, $expected)
     {
         $helper = new \Magento\TestFramework\Helper\ObjectManager($this);
+
+        $minTextLengthRule = $this->getMockBuilder('Magento\Customer\Api\Data\ValidationRuleInterface')
+            ->disableOriginalConstructor()
+            ->setMethods(['getName', 'getValue'])
+            ->getMockForAbstractClass();
+        $minTextLengthRule->expects($this->any())
+            ->method('getName')
+            ->will($this->returnValue('min_text_length'));
+        $minTextLengthRule->expects($this->any())
+            ->method('getValue')
+            ->will($this->returnValue(4));
+
+        $maxTextLengthRule = $this->getMockBuilder('Magento\Customer\Api\Data\ValidationRuleInterface')
+            ->disableOriginalConstructor()
+            ->setMethods(['getName', 'getValue'])
+            ->getMockForAbstractClass();
+        $maxTextLengthRule->expects($this->any())
+            ->method('getName')
+            ->will($this->returnValue('max_text_length'));
+        $maxTextLengthRule->expects($this->any())
+            ->method('getValue')
+            ->will($this->returnValue(8));
+
         $validationRules = array(
-            'min_text_length' => new ValidationRule(
-                $helper->getObject('\Magento\Customer\Service\V1\Data\Eav\ValidationRuleBuilder')
-                    ->populateWithArray(array('name' => 'min_text_length', 'value' => 4))
-            ),
-            'max_text_length' => new ValidationRule(
-                    $helper->getObject('\Magento\Customer\Service\V1\Data\Eav\ValidationRuleBuilder')
-                        ->populateWithArray(array('name' => 'max_text_length', 'value' => 8))
-            )
+            'min_text_length' => $minTextLengthRule,
+            'max_text_length' => $maxTextLengthRule
         );
 
         $this->attributeMetadataMock->expects(
diff --git a/dev/tests/unit/testsuite/Magento/Customer/Model/Resource/Group/Grid/ServiceCollectionTest.php b/dev/tests/unit/testsuite/Magento/Customer/Model/Resource/Group/Grid/ServiceCollectionTest.php
index 52d09bf539c..29329f92a17 100644
--- a/dev/tests/unit/testsuite/Magento/Customer/Model/Resource/Group/Grid/ServiceCollectionTest.php
+++ b/dev/tests/unit/testsuite/Magento/Customer/Model/Resource/Group/Grid/ServiceCollectionTest.php
@@ -24,7 +24,7 @@
 
 namespace Magento\Customer\Model\Resource\Group\Grid;
 
-use Magento\Framework\Service\V1\Data\SearchCriteria;
+use Magento\Framework\Api\SearchCriteria;
 
 /**
  * Unit test for \Magento\Customer\Model\Resource\Group\Grid\ServiceCollection
@@ -34,13 +34,13 @@ class ServiceCollectionTest extends \PHPUnit_Framework_TestCase
     /** @var \Magento\TestFramework\Helper\ObjectManager */
     protected $objectManager;
 
-    /** @var \Magento\Framework\Service\V1\Data\FilterBuilder */
+    /** @var \Magento\Framework\Api\FilterBuilder */
     protected $filterBuilder;
 
-    /** @var \Magento\Framework\Service\V1\Data\SearchCriteriaBuilder */
+    /** @var \Magento\Framework\Api\SearchCriteriaBuilder */
     protected $searchCriteriaBuilder;
 
-    /** @var \Magento\Framework\Service\V1\Data\SortOrderBuilder */
+    /** @var \Magento\Framework\Api\SortOrderBuilder */
     protected $sortOrderBuilder;
 
     /** @var \Magento\Customer\Service\V1\Data\SearchResults */
@@ -55,16 +55,16 @@ class ServiceCollectionTest extends \PHPUnit_Framework_TestCase
     public function setUp()
     {
         $this->objectManager = new \Magento\TestFramework\Helper\ObjectManager($this);
-        $this->filterBuilder = $this->objectManager->getObject('\Magento\Framework\Service\V1\Data\FilterBuilder');
+        $this->filterBuilder = $this->objectManager->getObject('\Magento\Framework\Api\FilterBuilder');
         $filterGroupBuilder = $this->objectManager
-            ->getObject('Magento\Framework\Service\V1\Data\Search\FilterGroupBuilder');
-        /** @var \Magento\Framework\Service\V1\Data\SearchCriteriaBuilder $searchBuilder */
+            ->getObject('Magento\Framework\Api\Search\FilterGroupBuilder');
+        /** @var \Magento\Framework\Api\SearchCriteriaBuilder $searchBuilder */
         $this->searchCriteriaBuilder = $this->objectManager->getObject(
-            'Magento\Framework\Service\V1\Data\SearchCriteriaBuilder',
+            'Magento\Framework\Api\SearchCriteriaBuilder',
             ['filterGroupBuilder' => $filterGroupBuilder]
         );
         $this->sortOrderBuilder = $this->objectManager->getObject(
-            '\Magento\Framework\Service\V1\Data\SortOrderBuilder'
+            '\Magento\Framework\Api\SortOrderBuilder'
         );
         $this->groupServiceMock = $this->getMockBuilder('\Magento\Customer\Service\V1\CustomerGroupServiceInterface')
             ->getMock();
diff --git a/dev/tests/unit/testsuite/Magento/Customer/Model/VisitorTest.php b/dev/tests/unit/testsuite/Magento/Customer/Model/VisitorTest.php
index 2a29852f17b..92f4a1afb5b 100644
--- a/dev/tests/unit/testsuite/Magento/Customer/Model/VisitorTest.php
+++ b/dev/tests/unit/testsuite/Magento/Customer/Model/VisitorTest.php
@@ -75,7 +75,8 @@ class VisitorTest extends \PHPUnit_Framework_TestCase
                 'getIdFieldName',
                 'save',
                 'addCommitCallback',
-                'commit'
+                'commit',
+                'clean'
             ])->disableOriginalConstructor()->getMock();
         $this->resource->expects($this->any())->method('getIdFieldName')->will($this->returnValue('visitor_id'));
         $this->resource->expects($this->any())->method('addCommitCallback')->will($this->returnSelf());
@@ -179,4 +180,10 @@ class VisitorTest extends \PHPUnit_Framework_TestCase
         $this->visitor->bindQuoteDestroy($observer);
         $this->assertTrue($this->visitor->getDoQuoteDestroy());
     }
+
+    public function testClean()
+    {
+        $this->resource->expects($this->once())->method('clean')->with($this->visitor)->will($this->returnSelf());
+        $this->visitor->clean();
+    }
 }
diff --git a/dev/tests/unit/testsuite/Magento/Customer/Service/V1/CustomerAccountServiceTest.php b/dev/tests/unit/testsuite/Magento/Customer/Service/V1/CustomerAccountServiceTest.php
index 67091b05057..37555bc3c3d 100755
--- a/dev/tests/unit/testsuite/Magento/Customer/Service/V1/CustomerAccountServiceTest.php
+++ b/dev/tests/unit/testsuite/Magento/Customer/Service/V1/CustomerAccountServiceTest.php
@@ -26,14 +26,14 @@ namespace Magento\Customer\Service\V1;
 
 use Magento\Customer\Model\Converter;
 use Magento\Customer\Model\CustomerRegistry;
-use Magento\Framework\Service\V1\Data\SearchCriteriaBuilder;
+use Magento\Framework\Api\SearchCriteriaBuilder;
 use Magento\Framework\Exception\InputException;
 use Magento\Framework\Exception\NoSuchEntityException;
 use Magento\Customer\Service\V1\Data\CustomerBuilder;
-use Magento\Framework\Service\Data\AttributeValueBuilder;
-use Magento\Framework\Service\V1\Data\FilterBuilder;
+use Magento\Framework\Api\AttributeValueBuilder;
+use Magento\Framework\Api\FilterBuilder;
 use Magento\Framework\Mail\Exception as MailException;
-use Magento\Framework\Service\ExtensibleDataObjectConverter;
+use Magento\Framework\Api\ExtensibleDataObjectConverter;
 
 /**
  * Test for \Magento\Customer\Service\V1\CustomerAccountService
@@ -157,10 +157,10 @@ class CustomerAccountServiceTest extends \PHPUnit_Framework_TestCase
         $this->_objectManager = new \Magento\TestFramework\Helper\ObjectManager($this);
 
         $filterGroupBuilder = $this->_objectManager
-            ->getObject('Magento\Framework\Service\V1\Data\Search\FilterGroupBuilder');
+            ->getObject('Magento\Framework\Api\Search\FilterGroupBuilder');
         /** @var SearchCriteriaBuilder $searchBuilder */
         $this->_searchBuilder = $this->_objectManager->getObject(
-            'Magento\Framework\Service\V1\Data\SearchCriteriaBuilder',
+            'Magento\Framework\Api\SearchCriteriaBuilder',
             ['filterGroupBuilder' => $filterGroupBuilder]
         );
 
@@ -1275,13 +1275,13 @@ class CustomerAccountServiceTest extends \PHPUnit_Framework_TestCase
 
     public function testCreateCustomer()
     {
+        $password = 'password';
         $customerData = array(
             'customer_id' => self::ID,
             'email' => self::EMAIL,
             'firstname' => self::FIRSTNAME,
             'lastname' => self::LASTNAME,
             'create_in' => 'Admin',
-            'password' => 'password'
         );
         $this->_customerBuilder->populateWithArray($customerData);
         $customerEntity = $this->_customerBuilder->create();
@@ -1335,17 +1335,20 @@ class CustomerAccountServiceTest extends \PHPUnit_Framework_TestCase
 
         $customerService = $this->_createService();
 
-        $this->assertSame($customerEntity, $customerService->createCustomer($customerDetails));
+        $this->assertSame(
+            $customerEntity,
+            $customerService->createCustomer($customerDetails, $password)
+        );
     }
 
     public function testCreateNewCustomer()
     {
+        $password = 'password';
         $customerData = array(
             'email' => self::EMAIL,
             'firstname' => self::FIRSTNAME,
             'lastname' => self::LASTNAME,
             'create_in' => 'Admin',
-            'password' => 'password'
         );
         $this->_customerBuilder->populateWithArray($customerData);
         $customerEntity = $this->_customerBuilder->create();
@@ -1398,7 +1401,10 @@ class CustomerAccountServiceTest extends \PHPUnit_Framework_TestCase
 
         $customerService = $this->_createService();
 
-        $this->assertSame($customerEntity, $customerService->createCustomer($customerDetails));
+        $this->assertSame(
+            $customerEntity,
+            $customerService->createCustomer($customerDetails, $password)
+        );
     }
 
     /**
@@ -1407,12 +1413,12 @@ class CustomerAccountServiceTest extends \PHPUnit_Framework_TestCase
      */
     public function testCreateCustomerWithException()
     {
+        $password = 'password';
         $customerData = array(
             'email' => self::EMAIL,
             'firstname' => self::FIRSTNAME,
             'lastname' => self::LASTNAME,
             'create_in' => 'Admin',
-            'password' => 'password'
         );
         $this->_customerBuilder->populateWithArray($customerData);
         $customerEntity = $this->_customerBuilder->create();
@@ -1463,17 +1469,17 @@ class CustomerAccountServiceTest extends \PHPUnit_Framework_TestCase
             ->will($this->throwException(new \Exception('exception message')));
 
         $customerService = $this->_createService();
-        $customerService->createCustomer($customerDetails);
+        $customerService->createCustomer($customerDetails, $password);
     }
 
     public function testCreateCustomerWithInputException()
     {
+        $password = 'password';
         $customerData = array(
             'email' => self::EMAIL,
             'firstname' => self::FIRSTNAME,
             'lastname' => self::LASTNAME,
             'create_in' => 'Admin',
-            'password' => 'password'
         );
         $this->_customerBuilder->populateWithArray($customerData);
         $customerEntity = $this->_customerBuilder->create();
@@ -1511,7 +1517,7 @@ class CustomerAccountServiceTest extends \PHPUnit_Framework_TestCase
         $customerService = $this->_createService();
 
         try {
-            $customerService->createCustomer($customerDetails);
+            $customerService->createCustomer($customerDetails, $password);
         } catch (InputException $inputException) {
             $this->assertEquals(InputException::DEFAULT_MESSAGE, $inputException->getRawMessage());
             $this->assertEquals(InputException::DEFAULT_MESSAGE, $inputException->getMessage());
@@ -1655,7 +1661,7 @@ class CustomerAccountServiceTest extends \PHPUnit_Framework_TestCase
         );
 
         $customerService = $this->_createService();
-        $filterBuilder = $this->_objectManager->getObject('\Magento\Framework\Service\V1\Data\FilterBuilder');
+        $filterBuilder = $this->_objectManager->getObject('\Magento\Framework\Api\FilterBuilder');
         $filter = $filterBuilder->setField('email')->setValue('customer@search.example.com')->create();
         $this->_searchBuilder->addFilter([$filter]);
 
@@ -1725,7 +1731,7 @@ class CustomerAccountServiceTest extends \PHPUnit_Framework_TestCase
         );
 
         $customerService = $this->_createService();
-        $filterBuilder = $this->_objectManager->getObject('\Magento\Framework\Service\V1\Data\FilterBuilder');
+        $filterBuilder = $this->_objectManager->getObject('\Magento\Framework\Api\FilterBuilder');
         $filter = $filterBuilder->setField('email')->setValue(self::EMAIL)->create();
         $this->_searchBuilder->addFilter([$filter]);
 
@@ -1855,6 +1861,8 @@ class CustomerAccountServiceTest extends \PHPUnit_Framework_TestCase
 
     public function testCreateAccountMailException()
     {
+        $password = 'password';
+
         $this->_customerFactoryMock->expects($this->any())
             ->method('create')
             ->will($this->returnValue($this->_customerModelMock));
@@ -1872,8 +1880,6 @@ class CustomerAccountServiceTest extends \PHPUnit_Framework_TestCase
             ->method('getEmail')
             ->will($this->returnValue('somebody@example.com'));
 
-
-
         $this->_customerModelMock->expects($this->any())
             ->method('getId')
             ->will($this->returnValue(true));
@@ -1916,13 +1922,12 @@ class CustomerAccountServiceTest extends \PHPUnit_Framework_TestCase
             ->will($this->returnValue($mockCustomer));
 
         $service = $this->_createService();
-        $service->createCustomer($mockCustomerDetail, 'abc123');
+        $service->createCustomer($mockCustomerDetail, $password);
         // If we get no mail exception, the test in considered a success
     }
 
     public function testGetCustomerByEmail()
     {
-
         $this->_converter = $this->getMockBuilder('Magento\Customer\Model\Converter')
             ->disableOriginalConstructor()->getMock();
 
diff --git a/dev/tests/unit/testsuite/Magento/Customer/Service/V1/CustomerAddressServiceTest.php b/dev/tests/unit/testsuite/Magento/Customer/Service/V1/CustomerAddressServiceTest.php
index a6c0127f987..1b37a67682c 100644
--- a/dev/tests/unit/testsuite/Magento/Customer/Service/V1/CustomerAddressServiceTest.php
+++ b/dev/tests/unit/testsuite/Magento/Customer/Service/V1/CustomerAddressServiceTest.php
@@ -27,7 +27,7 @@ use Magento\Framework\Exception\InputException;
 use Magento\Framework\Exception\NoSuchEntityException;
 use Magento\Customer\Service\V1\Data\RegionBuilder;
 use Magento\Customer\Service\V1\Data\CustomerBuilder;
-use Magento\Framework\Service\Data\AttributeValueBuilder;
+use Magento\Framework\Api\AttributeValueBuilder;
 
 /**
  * \Magento\Customer\Service\V1\CustomerAddressService
diff --git a/dev/tests/unit/testsuite/Magento/Customer/Service/V1/Data/AddressConverterTest.php b/dev/tests/unit/testsuite/Magento/Customer/Service/V1/Data/AddressConverterTest.php
index 49e72b5882f..9660223cb5c 100644
--- a/dev/tests/unit/testsuite/Magento/Customer/Service/V1/Data/AddressConverterTest.php
+++ b/dev/tests/unit/testsuite/Magento/Customer/Service/V1/Data/AddressConverterTest.php
@@ -24,7 +24,7 @@
 namespace Magento\Customer\Service\V1\Data;
 
 use Magento\Customer\Service\V1\AddressMetadataService;
-use Magento\Framework\Service\Data\AttributeValue;
+use Magento\Framework\Api\AttributeValue;
 
 class AddressConverterTest extends \PHPUnit_Framework_TestCase
 {
@@ -127,7 +127,7 @@ class AddressConverterTest extends \PHPUnit_Framework_TestCase
         );
 
         $addressData = $this->_sampleAddressDataObject();
-        $valueBuilder = $this->_objectManager->getObject('Magento\Framework\Service\Data\AttributeValueBuilder');
+        $valueBuilder = $this->_objectManager->getObject('Magento\Framework\Api\AttributeValueBuilder');
         /** @var \Magento\Customer\Service\V1\Data\AddressBuilder $addressDataBuilder */
         $addressDataBuilder = $this->_objectManager->getObject(
             'Magento\Customer\Service\V1\Data\AddressBuilder',
@@ -150,7 +150,7 @@ class AddressConverterTest extends \PHPUnit_Framework_TestCase
     {
         $regionBuilder = $this->_objectManager->getObject('\Magento\Customer\Service\V1\Data\RegionBuilder')
             ->setRegion('Texas')->setRegionId(1)->setRegionCode('TX');
-        $valueBuilder = $this->_objectManager->getObject('Magento\Framework\Service\Data\AttributeValueBuilder');
+        $valueBuilder = $this->_objectManager->getObject('Magento\Framework\Api\AttributeValueBuilder');
         /** @var \Magento\Customer\Service\V1\Data\AddressBuilder $addressData */
         $addressData = $this->_objectManager->getObject(
             'Magento\Customer\Service\V1\Data\AddressBuilder',
diff --git a/dev/tests/unit/testsuite/Magento/Customer/Service/V1/Data/AddressTest.php b/dev/tests/unit/testsuite/Magento/Customer/Service/V1/Data/AddressTest.php
index 3c4a83db7d9..5c075fdff02 100644
--- a/dev/tests/unit/testsuite/Magento/Customer/Service/V1/Data/AddressTest.php
+++ b/dev/tests/unit/testsuite/Magento/Customer/Service/V1/Data/AddressTest.php
@@ -26,8 +26,8 @@ namespace Magento\Customer\Service\V1\Data;
 use Magento\Customer\Service\V1\Data\Address;
 use Magento\Customer\Service\V1\Data\AddressBuilder;
 use Magento\Customer\Service\V1\Data\RegionBuilder;
-use Magento\Framework\Service\Data\AttributeValue;
-use Magento\Framework\Service\Data\AttributeValueBuilder;
+use Magento\Framework\Api\AttributeValue;
+use Magento\Framework\Api\AttributeValueBuilder;
 
 class AddressTest extends \PHPUnit_Framework_TestCase
 {
@@ -94,7 +94,7 @@ class AddressTest extends \PHPUnit_Framework_TestCase
     /** @var \Magento\Customer\Service\V1\CustomerMetadataService */
     private $_customerMetadataService;
 
-    /** @var \Magento\Framework\Service\Data\AttributeValueBuilder */
+    /** @var \Magento\Framework\Api\AttributeValueBuilder */
     private $_valueBuilder;
 
     /**
@@ -125,7 +125,7 @@ class AddressTest extends \PHPUnit_Framework_TestCase
             )
         );
         $this->_valueBuilder = $this->objectManagerHelper
-            ->getObject('Magento\Framework\Service\Data\AttributeValueBuilder');
+            ->getObject('Magento\Framework\Api\AttributeValueBuilder');
         $this->_addressBuilder = $this->objectManagerHelper->getObject(
             'Magento\Customer\Service\V1\Data\AddressBuilder',
             [
diff --git a/dev/tests/unit/testsuite/Magento/Customer/Service/V1/Data/CustomerBuilderTest.php b/dev/tests/unit/testsuite/Magento/Customer/Service/V1/Data/CustomerBuilderTest.php
index 559f6ab808f..e987df4569d 100644
--- a/dev/tests/unit/testsuite/Magento/Customer/Service/V1/Data/CustomerBuilderTest.php
+++ b/dev/tests/unit/testsuite/Magento/Customer/Service/V1/Data/CustomerBuilderTest.php
@@ -23,10 +23,7 @@
  */
 namespace Magento\Customer\Service\V1\Data;
 
-use Magento\Framework\Service\Data\AttributeValue;
-use Magento\Customer\Service\V1\Data\Eav\AttributeMetadataBuilder;
-use Magento\Framework\Service\Data\AbstractExtensibleObject;
-use Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder;
+use Magento\Framework\Api\AttributeValue;
 
 class CustomerBuilderTest extends \PHPUnit_Framework_TestCase
 {
@@ -42,7 +39,7 @@ class CustomerBuilderTest extends \PHPUnit_Framework_TestCase
     /** @var \Magento\Customer\Service\V1\AddressMetadataService */
     private $_addressMetadataService;
 
-    /** @var \Magento\Framework\Service\Data\AttributeValueBuilder */
+    /** @var \Magento\Framework\Api\AttributeValueBuilder */
     private $_valueBuilder;
 
     protected function setUp()
@@ -84,7 +81,7 @@ class CustomerBuilderTest extends \PHPUnit_Framework_TestCase
                 )
             );
         $this->_valueBuilder = $this->_objectManager->getObject(
-            'Magento\Framework\Service\Data\AttributeValueBuilder'
+            'Magento\Framework\Api\AttributeValueBuilder'
         );
         $this->_customerBuilder = $this->_objectManager->getObject(
             'Magento\Customer\Service\V1\Data\CustomerBuilder',
@@ -258,13 +255,10 @@ class CustomerBuilderTest extends \PHPUnit_Framework_TestCase
     public function testSetCustomAttribute()
     {
         $this->_customerBuilder->populateWithArray(array());
-        $address = $this->_customerBuilder->setCustomAttribute(
-            'warehouse_zip',
-            '78777'
-        )->setCustomAttribute(
-                'warehouse_alternate',
-                '90051'
-            )->create();
+        $address = $this->_customerBuilder
+            ->setCustomAttribute('warehouse_zip', '78777')
+            ->setCustomAttribute('warehouse_alternate', '90051')
+            ->create();
         $this->assertEquals('78777', $address->getCustomAttribute('warehouse_zip')->getValue());
         $this->assertEquals('90051', $address->getCustomAttribute('warehouse_alternate')->getValue());
 
@@ -477,7 +471,7 @@ class CustomerBuilderTest extends \PHPUnit_Framework_TestCase
 
         $this->assertEquals(
             $expectedCustomerData,
-            \Magento\Framework\Service\ExtensibleDataObjectConverter::toFlatArray($customer)
+            \Magento\Framework\Api\ExtensibleDataObjectConverter::toFlatArray($customer)
         );
     }
 }
diff --git a/dev/tests/unit/testsuite/Magento/Customer/Service/V1/Data/CustomerTest.php b/dev/tests/unit/testsuite/Magento/Customer/Service/V1/Data/CustomerTest.php
index 790908a1cfb..91bab28761a 100644
--- a/dev/tests/unit/testsuite/Magento/Customer/Service/V1/Data/CustomerTest.php
+++ b/dev/tests/unit/testsuite/Magento/Customer/Service/V1/Data/CustomerTest.php
@@ -23,7 +23,7 @@
  */
 namespace Magento\Customer\Service\V1\Data;
 
-use Magento\Framework\Service\Data\AttributeValue;
+use Magento\Framework\Api\AttributeValue;
 
 /**
  * Customer
@@ -95,7 +95,7 @@ class CustomerTest extends \PHPUnit_Framework_TestCase
                 new \Magento\Framework\Object(['attribute_code' => 'locale'])
             ])
         );
-        $valueBuilder = $this->_objectManager->getObject('Magento\Framework\Service\Data\AttributeValueBuilder');
+        $valueBuilder = $this->_objectManager->getObject('Magento\Framework\Api\AttributeValueBuilder');
         $this->_customerBuilder = $this->_objectManager->getObject(
             'Magento\Customer\Service\V1\Data\CustomerBuilder',
             [
diff --git a/dev/tests/unit/testsuite/Magento/Customer/Service/V1/Data/Eav/OptionTest.php b/dev/tests/unit/testsuite/Magento/Customer/Service/V1/Data/Eav/OptionTest.php
deleted file mode 100644
index 44dd81e8af8..00000000000
--- a/dev/tests/unit/testsuite/Magento/Customer/Service/V1/Data/Eav/OptionTest.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-namespace Magento\Customer\Service\V1\Data\Eav;
-
-use Magento\Customer\Service\V1\Data\Eav\Option;
-use Magento\Customer\Service\V1\Data\Eav\OptionBuilder;
-
-class OptionTest extends \PHPUnit_Framework_TestCase
-{
-    const LABEL = 'LABEL';
-
-    const VALUE = 'VALUE';
-
-    public function testConstructorAndGetters()
-    {
-        $helper = new \Magento\TestFramework\Helper\ObjectManager($this);
-        $optionBuilder = $helper->getObject('\Magento\Customer\Service\V1\Data\Eav\OptionBuilder')
-            ->setLabel(self::LABEL)->setValue(self::VALUE);
-        $option = new Option($optionBuilder);
-        $this->assertSame(self::LABEL, $option->getLabel());
-        $this->assertSame(self::VALUE, $option->getValue());
-    }
-}
diff --git a/dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/BuilderTest.php b/dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/BuilderTest.php
similarity index 86%
rename from dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/BuilderTest.php
rename to dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/BuilderTest.php
index 61c9b5cf360..2d4ccee5d96 100644
--- a/dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/BuilderTest.php
+++ b/dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/BuilderTest.php
@@ -21,7 +21,7 @@
  * @copyright Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license   http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
-namespace Magento\Framework\Service\Code\Generator;
+namespace Magento\Framework\Api\Code\Generator;
 
 use Magento\Framework\Code\Generator\Io;
 use Magento\TestFramework\Helper\ObjectManager;
@@ -31,9 +31,9 @@ use Magento\TestFramework\Helper\ObjectManager;
  */
 class BuilderTest extends \PHPUnit_Framework_TestCase
 {
-    const SOURCE_CLASS_NAME = 'Magento\Framework\Service\Code\Generator\Sample';
-    const RESULT_CLASS_NAME = 'Magento\Framework\Service\Code\Generator\SampleBuilder';
-    const GENERATOR_CLASS_NAME = 'Magento\Framework\Service\Code\Generator\Builder';
+    const SOURCE_CLASS_NAME = 'Magento\Framework\Api\Code\Generator\Sample';
+    const RESULT_CLASS_NAME = 'Magento\Framework\Api\Code\Generator\SampleBuilder';
+    const GENERATOR_CLASS_NAME = 'Magento\Framework\Api\Code\Generator\Builder';
     const OUTPUT_FILE_NAME = 'SampleBuilder.php';
     /**
      * @var Io | \PHPUnit_Framework_MockObject_MockObject
@@ -46,9 +46,9 @@ class BuilderTest extends \PHPUnit_Framework_TestCase
     protected $generator;
 
     /**
-     * @var \Magento\Framework\Autoload\IncludePath | \PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\Code\Generator\FileResolver | \PHPUnit_Framework_MockObject_MockObject
      */
-    protected $autoloaderMock;
+    protected $fileResolverMock;
 
     /**
      * @var \Magento\Framework\Code\Generator\CodeGenerator\Zend | \PHPUnit_Framework_MockObject_MockObject
@@ -65,8 +65,8 @@ class BuilderTest extends \PHPUnit_Framework_TestCase
             '',
             false
         );
-        $this->autoloaderMock = $this->getMock(
-            'Magento\Framework\Autoload\IncludePath',
+        $this->fileResolverMock = $this->getMock(
+            'Magento\Framework\Code\Generator\FileResolver',
             [],
             [],
             '',
@@ -88,7 +88,7 @@ class BuilderTest extends \PHPUnit_Framework_TestCase
                 'resultClassName' => self::RESULT_CLASS_NAME,
                 'ioObject' => $this->ioObjectMock,
                 'classGenerator' => $this->classGenerator,
-                'autoLoader' => $this->autoloaderMock
+                'fileResolver' => $this->fileResolverMock
             ]
         );
     }
@@ -103,11 +103,11 @@ class BuilderTest extends \PHPUnit_Framework_TestCase
         $resultFileName = self::OUTPUT_FILE_NAME;
 
         //Mocking _validateData call
-        $this->autoloaderMock->expects($this->at(0))
+        $this->fileResolverMock->expects($this->at(0))
             ->method('getFile')
             ->with(self::SOURCE_CLASS_NAME)
             ->will($this->returnValue($sourceFileName));
-        $this->autoloaderMock->expects($this->at(1))
+        $this->fileResolverMock->expects($this->at(1))
             ->method('getFile')
             ->with(self::RESULT_CLASS_NAME)
             ->will($this->returnValue(false));
diff --git a/dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/DataBuilderTest.php b/dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/DataBuilderTest.php
similarity index 79%
rename from dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/DataBuilderTest.php
rename to dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/DataBuilderTest.php
index 3ee9d291f3c..eeb35b66f7a 100644
--- a/dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/DataBuilderTest.php
+++ b/dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/DataBuilderTest.php
@@ -22,7 +22,7 @@
  * @license   http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-namespace Magento\Framework\Service\Code\Generator;
+namespace Magento\Framework\Api\Code\Generator;
 
 use Magento\Framework\Code\Generator\Io;
 use Magento\TestFramework\Helper\ObjectManager;
@@ -36,9 +36,9 @@ class DataBuilderTest extends \PHPUnit_Framework_TestCase
      * The test is based on assumption that the classes will be injecting "DataBuilder" as dependency which will
      * indicate the compiler to identify and code generate based on ExtensibleSample implementations' interface
      */
-    const SOURCE_CLASS_NAME = 'Magento\Framework\Service\Code\Generator\ExtensibleSample';
-    const RESULT_CLASS_NAME = 'Magento\Framework\Service\Code\Generator\ExtensibleSampleDataBuilder';
-    const GENERATOR_CLASS_NAME = 'Magento\Framework\Service\Code\Generator\DataBuilder';
+    const SOURCE_CLASS_NAME = 'Magento\Framework\Api\Code\Generator\ExtensibleSample';
+    const RESULT_CLASS_NAME = 'Magento\Framework\Api\Code\Generator\ExtensibleSampleDataBuilder';
+    const GENERATOR_CLASS_NAME = 'Magento\Framework\Api\Code\Generator\DataBuilder';
     const OUTPUT_FILE_NAME = 'ExtensibleSampleDataBuilder.php';
     /**
      * @var Io | \PHPUnit_Framework_MockObject_MockObject
@@ -51,15 +51,18 @@ class DataBuilderTest extends \PHPUnit_Framework_TestCase
     protected $generator;
 
     /**
-     * @var \Magento\Framework\Autoload\IncludePath | \PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\Code\Generator\FileResolver | \PHPUnit_Framework_MockObject_MockObject
      */
-    protected $autoloaderMock;
+    protected $fileResolverMock;
 
     /**
      * @var \Magento\Framework\Code\Generator\CodeGenerator\Zend | \PHPUnit_Framework_MockObject_MockObject
      */
     protected $classGenerator;
 
+    /** @var \Magento\Framework\App\ObjectManager|\PHPUnit_Framework_MockObject_MockObject */
+    protected $objectManagerMock;
+
     protected function setUp()
     {
         require_once __DIR__ . '/_files/ExtensibleSampleInterface.php';
@@ -71,8 +74,8 @@ class DataBuilderTest extends \PHPUnit_Framework_TestCase
             '',
             false
         );
-        $this->autoloaderMock = $this->getMock(
-            'Magento\Framework\Autoload\IncludePath',
+        $this->fileResolverMock = $this->getMock(
+            'Magento\Framework\Code\Generator\FileResolver',
             [],
             [],
             '',
@@ -88,6 +91,8 @@ class DataBuilderTest extends \PHPUnit_Framework_TestCase
             false
         );
 
+        $this->objectManagerMock = $this->getMock('Magento\Framework\App\ObjectManager', [], [], '', false);
+        \Magento\Framework\App\ObjectManager::setInstance($this->objectManagerMock);
 
         $this->generator = $objectManager->getObject(
             self::GENERATOR_CLASS_NAME,
@@ -96,7 +101,7 @@ class DataBuilderTest extends \PHPUnit_Framework_TestCase
                 'resultClassName' => self::RESULT_CLASS_NAME,
                 'ioObject' => $this->ioObjectMock,
                 'classGenerator' => $this->classGenerator,
-                'autoLoader' => $this->autoloaderMock
+                'fileResolver' => $this->fileResolverMock
             ]
         );
     }
@@ -106,17 +111,16 @@ class DataBuilderTest extends \PHPUnit_Framework_TestCase
      */
     public function testGenerate()
     {
-        //$this->markTestIncomplete('Incomplete feature');
         $generatedCode = file_get_contents(__DIR__ . '/_files/ExtensibleSampleDataBuilder.txt');
         $sourceFileName = 'ExtensibleSample.php';
         $resultFileName = self::OUTPUT_FILE_NAME;
 
         //Mocking _validateData call
-        $this->autoloaderMock->expects($this->at(0))
+        $this->fileResolverMock->expects($this->at(0))
             ->method('getFile')
-            ->with(self::SOURCE_CLASS_NAME)
+            ->with(self::SOURCE_CLASS_NAME . "Interface")
             ->will($this->returnValue($sourceFileName));
-        $this->autoloaderMock->expects($this->at(1))
+        $this->fileResolverMock->expects($this->at(1))
             ->method('getFile')
             ->with(self::RESULT_CLASS_NAME)
             ->will($this->returnValue(false));
diff --git a/dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/GenerateBuilderTest.php b/dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/GenerateBuilderTest.php
similarity index 87%
rename from dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/GenerateBuilderTest.php
rename to dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/GenerateBuilderTest.php
index 59033b46115..c2f7d9ccea9 100644
--- a/dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/GenerateBuilderTest.php
+++ b/dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/GenerateBuilderTest.php
@@ -21,7 +21,7 @@
  * @copyright Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license   http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
-namespace Magento\Framework\Service\Code\Generator;
+namespace Magento\Framework\Api\Code\Generator;
 
 /**
  * Class BuilderTest
@@ -53,13 +53,14 @@ class GenerateBuilderTest extends \PHPUnit_Framework_TestCase
     public function testGenerate()
     {
         require_once __DIR__ . '/_files/Sample.php';
+        /** @var \Magento\Framework\Api\Code\Generator\Builder $model */
         $model = $this->getMock(
-            'Magento\Framework\Service\Code\Generator\Builder',
+            '\Magento\Framework\Api\Code\Generator\Builder',
             [
                 '_validateData'
             ],
             [
-                '\Magento\Framework\Service\Code\Generator\Sample',
+                '\Magento\Framework\Api\Code\Generator\Sample',
                 null,
                 $this->ioObjectMock,
                 null,
@@ -69,7 +70,7 @@ class GenerateBuilderTest extends \PHPUnit_Framework_TestCase
         $sampleBuilderCode = file_get_contents(__DIR__ . '/_files/SampleBuilder.txt');
         $this->ioObjectMock->expects($this->once())
             ->method('getResultFileName')
-            ->with('\Magento\Framework\Service\Code\Generator\SampleBuilder')
+            ->with('\Magento\Framework\Api\Code\Generator\SampleBuilder')
             ->will($this->returnValue('SampleBuilder.php'));
         $this->ioObjectMock->expects($this->once())
             ->method('writeResultFile')
diff --git a/dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/GenerateMapperTest.php b/dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/GenerateMapperTest.php
similarity index 90%
rename from dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/GenerateMapperTest.php
rename to dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/GenerateMapperTest.php
index 0effd4a0c81..aaf56f6d3ef 100644
--- a/dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/GenerateMapperTest.php
+++ b/dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/GenerateMapperTest.php
@@ -21,7 +21,7 @@
  * @copyright Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license   http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
-namespace Magento\Framework\Service\Code\Generator;
+namespace Magento\Framework\Api\Code\Generator;
 
 /**
  * Class MapperTest
@@ -54,12 +54,12 @@ class GenerateMapperTest extends \PHPUnit_Framework_TestCase
     {
         require_once __DIR__ . '/_files/Sample.php';
         $model = $this->getMock(
-            'Magento\Framework\Service\Code\Generator\Mapper',
+            'Magento\Framework\Api\Code\Generator\Mapper',
             [
                 '_validateData'
             ],
             [
-                '\Magento\Framework\Service\Code\Generator\Sample',
+                '\Magento\Framework\Api\Code\Generator\Sample',
                 null,
                 $this->ioObjectMock,
                 null,
@@ -69,7 +69,7 @@ class GenerateMapperTest extends \PHPUnit_Framework_TestCase
         $sampleMapperCode = file_get_contents(__DIR__ . '/_files/SampleMapper.txt');
         $this->ioObjectMock->expects($this->once())
             ->method('getResultFileName')
-            ->with('\Magento\Framework\Service\Code\Generator\SampleMapper')
+            ->with('\Magento\Framework\Api\Code\Generator\SampleMapper')
             ->will($this->returnValue('SampleMapper.php'));
         $this->ioObjectMock->expects($this->once())
             ->method('writeResultFile')
diff --git a/dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/GenerateSearchResultsBuilderTest.php b/dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/GenerateSearchResultsBuilderTest.php
similarity index 87%
rename from dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/GenerateSearchResultsBuilderTest.php
rename to dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/GenerateSearchResultsBuilderTest.php
index 4af404ba580..0a991beb96c 100644
--- a/dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/GenerateSearchResultsBuilderTest.php
+++ b/dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/GenerateSearchResultsBuilderTest.php
@@ -21,9 +21,9 @@
  * @copyright Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license   http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
-namespace Magento\Framework\Service\Code\Generator;
+namespace Magento\Framework\Api\Code\Generator;
 
-use Magento\Framework\Service\Code\Generator\SearchResultsBuilder;
+use Magento\Framework\Api\Code\Generator\SearchResultsBuilder;
 
 /**
  * Class SearchResultBuilderTest
@@ -56,12 +56,12 @@ class GenerateSearchResultsBuilderTest extends \PHPUnit_Framework_TestCase
     {
         require_once __DIR__ . '/_files/Sample.php';
         $model = $this->getMock(
-            'Magento\Framework\Service\Code\Generator\SearchResultsBuilder',
+            'Magento\Framework\Api\Code\Generator\SearchResultsBuilder',
             [
                 '_validateData'
             ],
             [
-                '\Magento\Framework\Service\Code\Generator\Sample',
+                '\Magento\Framework\Api\Code\Generator\Sample',
                 null,
                 $this->ioObjectMock,
                 null,
@@ -71,7 +71,7 @@ class GenerateSearchResultsBuilderTest extends \PHPUnit_Framework_TestCase
         $sampleSearchResultBuilderCode = file_get_contents(__DIR__ . '/_files/SampleSearchResultsBuilder.txt');
         $this->ioObjectMock->expects($this->once())
             ->method('getResultFileName')
-            ->with('\Magento\Framework\Service\Code\Generator\SampleSearchResultsBuilder')
+            ->with('\Magento\Framework\Api\Code\Generator\SampleSearchResultsBuilder')
             ->will($this->returnValue('SampleSearchResultsBuilder.php'));
         $this->ioObjectMock->expects($this->once())
             ->method('writeResultFile')
diff --git a/dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/GenerateSearchResultsTest.php b/dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/GenerateSearchResultsTest.php
similarity index 87%
rename from dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/GenerateSearchResultsTest.php
rename to dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/GenerateSearchResultsTest.php
index a2d0c66423e..5f37d35f525 100644
--- a/dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/GenerateSearchResultsTest.php
+++ b/dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/GenerateSearchResultsTest.php
@@ -21,9 +21,9 @@
  * @copyright Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license   http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
-namespace Magento\Framework\Service\Code\Generator;
+namespace Magento\Framework\Api\Code\Generator;
 
-use Magento\Framework\Service\Code\Generator\SearchResults;
+use Magento\Framework\Api\Code\Generator\SearchResults;
 
 /**
  * Class SearchResultTest
@@ -56,12 +56,12 @@ class GenerateSearchResultsTest extends \PHPUnit_Framework_TestCase
     {
         require_once __DIR__ . '/_files/Sample.php';
         $model = $this->getMock(
-            'Magento\Framework\Service\Code\Generator\SearchResults',
+            'Magento\Framework\Api\Code\Generator\SearchResults',
             [
                 '_validateData'
             ],
             [
-                '\Magento\Framework\Service\Code\Generator\Sample',
+                '\Magento\Framework\Api\Code\Generator\Sample',
                 null,
                 $this->ioObjectMock,
                 null,
@@ -71,7 +71,7 @@ class GenerateSearchResultsTest extends \PHPUnit_Framework_TestCase
         $sampleSearchResultBuilderCode = file_get_contents(__DIR__ . '/_files/SampleSearchResults.txt');
         $this->ioObjectMock->expects($this->once())
             ->method('getResultFileName')
-            ->with('\Magento\Framework\Service\Code\Generator\SampleSearchResults')
+            ->with('\Magento\Framework\Api\Code\Generator\SampleSearchResults')
             ->will($this->returnValue('SampleSearchResults.php'));
         $this->ioObjectMock->expects($this->once())
             ->method('writeResultFile')
diff --git a/dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/MapperTest.php b/dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/MapperTest.php
similarity index 86%
rename from dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/MapperTest.php
rename to dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/MapperTest.php
index 66207b268d7..3732db6efa1 100644
--- a/dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/MapperTest.php
+++ b/dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/MapperTest.php
@@ -21,7 +21,7 @@
  * @copyright Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license   http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
-namespace Magento\Framework\Service\Code\Generator;
+namespace Magento\Framework\Api\Code\Generator;
 
 use Magento\Framework\Code\Generator\Io;
 use Magento\TestFramework\Helper\ObjectManager;
@@ -31,9 +31,9 @@ use Magento\TestFramework\Helper\ObjectManager;
  */
 class MapperTest extends \PHPUnit_Framework_TestCase
 {
-    const SOURCE_CLASS_NAME = 'Magento\Framework\Service\Code\Generator\Sample';
-    const RESULT_CLASS_NAME = 'Magento\Framework\Service\Code\Generator\SampleMapper';
-    const GENERATOR_CLASS_NAME = 'Magento\Framework\Service\Code\Generator\Mapper';
+    const SOURCE_CLASS_NAME = 'Magento\Framework\Api\Code\Generator\Sample';
+    const RESULT_CLASS_NAME = 'Magento\Framework\Api\Code\Generator\SampleMapper';
+    const GENERATOR_CLASS_NAME = 'Magento\Framework\Api\Code\Generator\Mapper';
     const OUTPUT_FILE_NAME = 'SampleMapper.php';
     /**
      * @var Io | \PHPUnit_Framework_MockObject_MockObject
@@ -46,9 +46,9 @@ class MapperTest extends \PHPUnit_Framework_TestCase
     protected $generator;
 
     /**
-     * @var \Magento\Framework\Autoload\IncludePath | \PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\Code\Generator\FileResolver | \PHPUnit_Framework_MockObject_MockObject
      */
-    protected $autoloaderMock;
+    protected $fileResolvererMock;
 
     /**
      * @var \Magento\Framework\Code\Generator\CodeGenerator\Zend | \PHPUnit_Framework_MockObject_MockObject
@@ -64,8 +64,8 @@ class MapperTest extends \PHPUnit_Framework_TestCase
             '',
             false
         );
-        $this->autoloaderMock = $this->getMock(
-            'Magento\Framework\Autoload\IncludePath',
+        $this->fileResolvererMock = $this->getMock(
+            'Magento\Framework\Code\Generator\FileResolver',
             [],
             [],
             '',
@@ -87,7 +87,7 @@ class MapperTest extends \PHPUnit_Framework_TestCase
                 'resultClassName' => self::RESULT_CLASS_NAME,
                 'ioObject' => $this->ioObjectMock,
                 'classGenerator' => $this->classGenerator,
-                'autoLoader' => $this->autoloaderMock
+                'fileResolver' => $this->fileResolvererMock
             ]
         );
     }
@@ -102,11 +102,11 @@ class MapperTest extends \PHPUnit_Framework_TestCase
         $resultFileName = self::OUTPUT_FILE_NAME;
 
         //Mocking _validateData call
-        $this->autoloaderMock->expects($this->at(0))
+        $this->fileResolvererMock->expects($this->at(0))
             ->method('getFile')
             ->with(self::SOURCE_CLASS_NAME)
             ->will($this->returnValue($sourceFileName));
-        $this->autoloaderMock->expects($this->at(1))
+        $this->fileResolvererMock->expects($this->at(1))
             ->method('getFile')
             ->with(self::RESULT_CLASS_NAME)
             ->will($this->returnValue(false));
diff --git a/dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/SearchResultsBuilderTest.php b/dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/SearchResultsBuilderTest.php
similarity index 86%
rename from dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/SearchResultsBuilderTest.php
rename to dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/SearchResultsBuilderTest.php
index eebadd7f6ab..acdca27b258 100644
--- a/dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/SearchResultsBuilderTest.php
+++ b/dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/SearchResultsBuilderTest.php
@@ -21,7 +21,7 @@
  * @copyright Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license   http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
-namespace Magento\Framework\Service\Code\Generator;
+namespace Magento\Framework\Api\Code\Generator;
 
 use Magento\Framework\Code\Generator\Io;
 use Magento\TestFramework\Helper\ObjectManager;
@@ -31,9 +31,9 @@ use Magento\TestFramework\Helper\ObjectManager;
  */
 class SearchResultsBuilderTest extends \PHPUnit_Framework_TestCase
 {
-    const SOURCE_CLASS_NAME = 'Magento\Framework\Service\Code\Generator\Sample';
-    const RESULT_CLASS_NAME = 'Magento\Framework\Service\Code\Generator\SampleSearchResultsBuilder';
-    const GENERATOR_CLASS_NAME = 'Magento\Framework\Service\Code\Generator\SearchResultsBuilder';
+    const SOURCE_CLASS_NAME = 'Magento\Framework\Api\Code\Generator\Sample';
+    const RESULT_CLASS_NAME = 'Magento\Framework\Api\Code\Generator\SampleSearchResultsBuilder';
+    const GENERATOR_CLASS_NAME = 'Magento\Framework\Api\Code\Generator\SearchResultsBuilder';
     const OUTPUT_FILE_NAME = 'SampleSearchResultsBuilder.php';
 
     /**
@@ -47,9 +47,9 @@ class SearchResultsBuilderTest extends \PHPUnit_Framework_TestCase
     protected $generator;
 
     /**
-     * @var \Magento\Framework\Autoload\IncludePath | \PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\Code\Generator\FileResolver | \PHPUnit_Framework_MockObject_MockObject
      */
-    protected $autoloaderMock;
+    protected $fileResolverMock;
 
     /**
      * @var \Magento\Framework\Code\Generator\CodeGenerator\Zend | \PHPUnit_Framework_MockObject_MockObject
@@ -65,8 +65,8 @@ class SearchResultsBuilderTest extends \PHPUnit_Framework_TestCase
             '',
             false
         );
-        $this->autoloaderMock = $this->getMock(
-            'Magento\Framework\Autoload\IncludePath',
+        $this->fileResolverMock = $this->getMock(
+            'Magento\Framework\Code\Generator\FileResolver',
             [],
             [],
             '',
@@ -88,7 +88,7 @@ class SearchResultsBuilderTest extends \PHPUnit_Framework_TestCase
                 'resultClassName' => self::RESULT_CLASS_NAME,
                 'ioObject' => $this->ioObjectMock,
                 'classGenerator' => $this->classGenerator,
-                'autoLoader' => $this->autoloaderMock
+                'fileResolver' => $this->fileResolverMock
             ]
         );
     }
@@ -103,11 +103,11 @@ class SearchResultsBuilderTest extends \PHPUnit_Framework_TestCase
         $resultFileName = self::OUTPUT_FILE_NAME;
 
         //Mocking _validateData call
-        $this->autoloaderMock->expects($this->at(0))
+        $this->fileResolverMock->expects($this->at(0))
             ->method('getFile')
             ->with(self::SOURCE_CLASS_NAME)
             ->will($this->returnValue($sourceFileName));
-        $this->autoloaderMock->expects($this->at(1))
+        $this->fileResolverMock->expects($this->at(1))
             ->method('getFile')
             ->with(self::RESULT_CLASS_NAME)
             ->will($this->returnValue(false));
diff --git a/dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/SearchResultsTest.php b/dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/SearchResultsTest.php
similarity index 86%
rename from dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/SearchResultsTest.php
rename to dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/SearchResultsTest.php
index c27513612f6..cdc9ccd86a0 100644
--- a/dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/SearchResultsTest.php
+++ b/dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/SearchResultsTest.php
@@ -21,7 +21,7 @@
  * @copyright Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license   http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
-namespace Magento\Framework\Service\Code\Generator;
+namespace Magento\Framework\Api\Code\Generator;
 
 use Magento\Framework\Code\Generator\Io;
 use Magento\TestFramework\Helper\ObjectManager;
@@ -31,9 +31,9 @@ use Magento\TestFramework\Helper\ObjectManager;
  */
 class SearchResultsTest extends \PHPUnit_Framework_TestCase
 {
-    const SOURCE_CLASS_NAME = 'Magento\Framework\Service\Code\Generator\Sample';
-    const RESULT_CLASS_NAME = 'Magento\Framework\Service\Code\Generator\SampleSearchResults';
-    const GENERATOR_CLASS_NAME = 'Magento\Framework\Service\Code\Generator\SearchResults';
+    const SOURCE_CLASS_NAME = 'Magento\Framework\Api\Code\Generator\Sample';
+    const RESULT_CLASS_NAME = 'Magento\Framework\Api\Code\Generator\SampleSearchResults';
+    const GENERATOR_CLASS_NAME = 'Magento\Framework\Api\Code\Generator\SearchResults';
     const OUTPUT_FILE_NAME = 'SampleSearchResults.php';
 
     /**
@@ -47,9 +47,9 @@ class SearchResultsTest extends \PHPUnit_Framework_TestCase
     protected $generator;
 
     /**
-     * @var \Magento\Framework\Autoload\IncludePath | \PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\Code\Generator\FileResolver | \PHPUnit_Framework_MockObject_MockObject
      */
-    protected $autoloaderMock;
+    protected $fileResolverMock;
 
     /**
      * @var \Magento\Framework\Code\Generator\CodeGenerator\Zend | \PHPUnit_Framework_MockObject_MockObject
@@ -65,8 +65,8 @@ class SearchResultsTest extends \PHPUnit_Framework_TestCase
             '',
             false
         );
-        $this->autoloaderMock = $this->getMock(
-            'Magento\Framework\Autoload\IncludePath',
+        $this->fileResolverMock = $this->getMock(
+            'Magento\Framework\Code\Generator\FileResolver',
             [],
             [],
             '',
@@ -88,7 +88,7 @@ class SearchResultsTest extends \PHPUnit_Framework_TestCase
                 'resultClassName' => self::RESULT_CLASS_NAME,
                 'ioObject' => $this->ioObjectMock,
                 'classGenerator' => $this->classGenerator,
-                'autoLoader' => $this->autoloaderMock
+                'fileResolver' => $this->fileResolverMock
             ]
         );
     }
@@ -103,11 +103,11 @@ class SearchResultsTest extends \PHPUnit_Framework_TestCase
         $resultFileName = self::OUTPUT_FILE_NAME;
 
         //Mocking _validateData call
-        $this->autoloaderMock->expects($this->at(0))
+        $this->fileResolverMock->expects($this->at(0))
             ->method('getFile')
             ->with(self::SOURCE_CLASS_NAME)
             ->will($this->returnValue($sourceFileName));
-        $this->autoloaderMock->expects($this->at(1))
+        $this->fileResolverMock->expects($this->at(1))
             ->method('getFile')
             ->with(self::RESULT_CLASS_NAME)
             ->will($this->returnValue(false));
diff --git a/dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/_files/ExtensibleSample.php b/dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/_files/ExtensibleSample.php
similarity index 92%
rename from dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/_files/ExtensibleSample.php
rename to dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/_files/ExtensibleSample.php
index ec8d8f28dd3..518308504d3 100644
--- a/dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/_files/ExtensibleSample.php
+++ b/dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/_files/ExtensibleSample.php
@@ -22,7 +22,7 @@
  * @license   http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-namespace Magento\Framework\Service\Code\Generator;
+namespace Magento\Framework\Api\Code\Generator;
 
 use Magento\Framework\Model\AbstractExtensibleModel;
 
@@ -30,7 +30,7 @@ use Magento\Framework\Model\AbstractExtensibleModel;
  * Class ExtensibleSample
  */
 class ExtensibleSample extends AbstractExtensibleModel implements
-    \Magento\Framework\Service\Code\Generator\ExtensibleSampleInterface
+    \Magento\Framework\Api\Code\Generator\ExtensibleSampleInterface
 {
     /**
      * {@inheritdoc}
diff --git a/dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/_files/ExtensibleSampleDataBuilder.txt b/dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/_files/ExtensibleSampleDataBuilder.txt
new file mode 100644
index 00000000000..5fd08f8ccfc
--- /dev/null
+++ b/dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/_files/ExtensibleSampleDataBuilder.txt
@@ -0,0 +1,60 @@
+namespace Magento\Framework\Api\Code\Generator;
+
+/**
+ * DataBuilder class for
+ * \Magento\Framework\Api\Code\Generator\ExtensibleSampleInterface
+ */
+class ExtensibleSampleDataBuilder extends \Magento\Framework\Api\CompositeExtensibleDataBuilder
+{
+    /**
+     * @param array $items
+     * @return $this
+     */
+    public function setItems($items)
+    {
+        $this->set('items', $items);
+        return $this;
+    }
+
+    /**
+     * @param string $name
+     * @return $this
+     */
+    public function setName($name)
+    {
+        $this->set('name', $name);
+        return $this;
+    }
+
+    /**
+     * @param int $count
+     * @return $this
+     */
+    public function setCount($count)
+    {
+        $this->set('count', $count);
+        return $this;
+    }
+
+    /**
+     * @param int $createdAt
+     * @return $this
+     */
+    public function setCreatedAt($createdAt)
+    {
+        $this->set('created_at', $createdAt);
+        return $this;
+    }
+
+    /**
+     * Initialize the builder
+     *
+     * @param \Magento\Framework\ObjectManager $objectManager
+     * @param \Magento\Framework\Api\MetadataServiceInterface $metadataService
+     * @param \Magento\Framework\ObjectManager\Config $objectManagerConfig
+     */
+    public function __construct(\Magento\Framework\ObjectManager $objectManager, \Magento\Framework\Api\MetadataServiceInterface $metadataService, \Magento\Framework\ObjectManager\Config $objectManagerConfig)
+    {
+        parent::__construct($objectManager, $metadataService, $objectManagerConfig, 'Magento\Framework\Api\Code\Generator\ExtensibleSampleInterface');
+    }
+}
diff --git a/dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/_files/ExtensibleSampleInterface.php b/dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/_files/ExtensibleSampleInterface.php
similarity index 92%
rename from dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/_files/ExtensibleSampleInterface.php
rename to dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/_files/ExtensibleSampleInterface.php
index d57f001c173..eabd788b9c4 100644
--- a/dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/_files/ExtensibleSampleInterface.php
+++ b/dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/_files/ExtensibleSampleInterface.php
@@ -22,9 +22,9 @@
  * @license   http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-namespace Magento\Framework\Service\Code\Generator;
+namespace Magento\Framework\Api\Code\Generator;
 
-use Magento\Framework\Api\Data\ExtensibleDataInterface;
+use Magento\Framework\Api\ExtensibleDataInterface;
 
 /**
  * Interface for ExtensibleSample
diff --git a/dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/_files/Sample.php b/dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/_files/Sample.php
similarity index 95%
rename from dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/_files/Sample.php
rename to dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/_files/Sample.php
index 5c68f84fb31..3eaf564f748 100644
--- a/dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/_files/Sample.php
+++ b/dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/_files/Sample.php
@@ -22,7 +22,7 @@
  * @license   http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-namespace Magento\Framework\Service\Code\Generator;
+namespace Magento\Framework\Api\Code\Generator;
 
 /**
  * Class Sample for Proxy and Factory generation
diff --git a/dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/_files/SampleBuilder.txt b/dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/_files/SampleBuilder.txt
new file mode 100644
index 00000000000..cd38526a024
--- /dev/null
+++ b/dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/_files/SampleBuilder.txt
@@ -0,0 +1,15 @@
+namespace \Magento\Framework\Api\Code\Generator;
+
+/**
+ * Builder class for \Magento\Framework\Api\Code\Generator\Sample
+ */
+class SampleBuilder extends \Magento\Framework\Api\ExtensibleObjectBuilder
+{
+    /**
+     * {@inheritdoc}
+     */
+    public function setMessages($messages)
+    {
+        return $this->_set(\Magento\Framework\Api\Code\Generator\Sample::MESSAGES, $messages);
+    }
+}
diff --git a/dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/_files/SampleMapper.txt b/dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/_files/SampleMapper.txt
similarity index 56%
rename from dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/_files/SampleMapper.txt
rename to dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/_files/SampleMapper.txt
index 6c0f698e38c..ae1c42a3ae3 100644
--- a/dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/_files/SampleMapper.txt
+++ b/dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/_files/SampleMapper.txt
@@ -1,19 +1,19 @@
-namespace \Magento\Framework\Service\Code\Generator;
+namespace \Magento\Framework\Api\Code\Generator;
 
 /**
- * Mapper class for \Magento\Framework\Service\Code\Generator\Sample
+ * Mapper class for \Magento\Framework\Api\Code\Generator\Sample
  */
 class SampleMapper
 {
     /**
      * sampleBuilder
      *
-     * @var \Magento\Framework\Service\Code\Generator\SampleBuilder
+     * @var \Magento\Framework\Api\Code\Generator\SampleBuilder
      */
     protected $sampleBuilder = null;
 
     /**
-     * Magento\Framework\Service\Code\Generator\Sample[]
+     * Magento\Framework\Api\Code\Generator\Sample[]
      *
      * @var array
      */
@@ -22,9 +22,9 @@ class SampleMapper
     /**
      * Mapper constructor
      *
-     * @param \Magento\Framework\Service\Code\Generator\Sample $sampleBuilder
+     * @param \Magento\Framework\Api\Code\Generator\Sample $sampleBuilder
      */
-    public function __construct(\Magento\Framework\Service\Code\Generator\SampleBuilder $sampleBuilder)
+    public function __construct(\Magento\Framework\Api\Code\Generator\SampleBuilder $sampleBuilder)
     {
         $this->sampleBuilder = $sampleBuilder;
     }
@@ -33,7 +33,7 @@ class SampleMapper
      * Extract data object from model
      *
      * @param \Magento\Framework\Model\AbstractModel $object
-     * @return \Magento\Framework\Service\Code\Generator\Sample
+     * @return \Magento\Framework\Api\Code\Generator\Sample
      */
     public function extractDto(\Magento\Framework\Model\AbstractModel $object)
     {
diff --git a/dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/_files/SampleSearchResults.txt b/dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/_files/SampleSearchResults.txt
new file mode 100644
index 00000000000..3cb581c9bb1
--- /dev/null
+++ b/dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/_files/SampleSearchResults.txt
@@ -0,0 +1,14 @@
+namespace \Magento\Framework\Api\Code\Generator;
+
+class SampleSearchResults extends \Magento\Framework\Api\SearchResults
+{
+    /**
+     * Returns array of items
+     *
+     * @return \Magento\Framework\Api\Code\Generator\Sample[]
+     */
+    public function getItems()
+    {
+        return parent::getItems();
+    }
+}
diff --git a/dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/_files/SampleSearchResultsBuilder.txt b/dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/_files/SampleSearchResultsBuilder.txt
new file mode 100644
index 00000000000..4bacbf1bd8f
--- /dev/null
+++ b/dev/tests/unit/testsuite/Magento/Framework/Api/Code/Generator/_files/SampleSearchResultsBuilder.txt
@@ -0,0 +1,17 @@
+namespace \Magento\Framework\Api\Code\Generator;
+
+/**
+ * SearchResultsBuilder class for \Magento\Framework\Api\Code\Generator\Sample
+ */
+class SampleSearchResultsBuilder extends \Magento\Framework\Api\AbstractSearchResultsBuilder
+{
+    /**
+     * SearchResultsBuilder constructor
+     *
+     * @param
+     */
+    public function __construct(\Magento\Framework\Api\ObjectFactory $objectFactory, \Magento\Framework\Api\AttributeValueBuilder $valueBuilder, \Magento\Framework\Api\Config\MetadataConfig $metadataService, \Magento\Framework\Api\SearchCriteriaBuilder $searchCriteriaBuilder, \Magento\Framework\Api\Code\Generator\SampleBuilder $itemObjectBuilder)
+    {
+        parent::__construct($objectFactory, $valueBuilder, $metadataService, $searchCriteriaBuilder, $itemObjectBuilder);
+    }
+}
diff --git a/dev/tests/unit/testsuite/Magento/Framework/Service/Config/ConverterTest.php b/dev/tests/unit/testsuite/Magento/Framework/Api/Config/ConverterTest.php
similarity index 92%
rename from dev/tests/unit/testsuite/Magento/Framework/Service/Config/ConverterTest.php
rename to dev/tests/unit/testsuite/Magento/Framework/Api/Config/ConverterTest.php
index 2fcf2ebc156..099ed2a7d71 100644
--- a/dev/tests/unit/testsuite/Magento/Framework/Service/Config/ConverterTest.php
+++ b/dev/tests/unit/testsuite/Magento/Framework/Api/Config/ConverterTest.php
@@ -21,12 +21,12 @@
  * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
-namespace Magento\Framework\Service\Config;
+namespace Magento\Framework\Api\Config;
 
 class ConverterTest extends \PHPUnit_Framework_TestCase
 {
     /**
-     * @var \Magento\Framework\Service\Config\Converter
+     * @var \Magento\Framework\Api\Config\Converter
      */
     protected $_converter;
 
@@ -35,7 +35,7 @@ class ConverterTest extends \PHPUnit_Framework_TestCase
      */
     protected function setUp()
     {
-        $this->_converter = new \Magento\Framework\Service\Config\Converter();
+        $this->_converter = new \Magento\Framework\Api\Config\Converter();
     }
 
     /**
diff --git a/dev/tests/unit/testsuite/Magento/Framework/Service/Config/ReaderTest.php b/dev/tests/unit/testsuite/Magento/Framework/Api/Config/ReaderTest.php
similarity index 77%
rename from dev/tests/unit/testsuite/Magento/Framework/Service/Config/ReaderTest.php
rename to dev/tests/unit/testsuite/Magento/Framework/Api/Config/ReaderTest.php
index b76599297c9..b30c03fa988 100644
--- a/dev/tests/unit/testsuite/Magento/Framework/Service/Config/ReaderTest.php
+++ b/dev/tests/unit/testsuite/Magento/Framework/Api/Config/ReaderTest.php
@@ -21,12 +21,12 @@
  * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
-namespace Magento\Framework\Service\Config;
+namespace Magento\Framework\Api\Config;
 
 class ReaderTest extends \PHPUnit_Framework_TestCase
 {
     /**
-     * @var \Magento\Framework\Service\Config\Reader
+     * @var \Magento\Framework\Api\Config\Reader
      */
     protected $_reader;
 
@@ -38,16 +38,16 @@ class ReaderTest extends \PHPUnit_Framework_TestCase
         $fileResolver = $this->getMockBuilder('Magento\Framework\App\Config\FileResolver')
             ->disableOriginalConstructor()
             ->getMock();
-        $converter = $this->getMockBuilder('Magento\Framework\Service\Config\Converter')
+        $converter = $this->getMockBuilder('Magento\Framework\Api\Config\Converter')
             ->disableOriginalConstructor()
             ->getMock();
-        $schema = $this->getMockBuilder('Magento\Framework\Service\Config\SchemaLocator')
+        $schema = $this->getMockBuilder('Magento\Framework\Api\Config\SchemaLocator')
             ->disableOriginalConstructor()
             ->getMock();
         $validator = $this->getMockBuilder('\Magento\Framework\Config\ValidationStateInterface')
             ->disableOriginalConstructor()
             ->getMock();
-        $this->_reader = new \Magento\Framework\Service\Config\Reader($fileResolver, $converter, $schema, $validator);
+        $this->_reader = new \Magento\Framework\Api\Config\Reader($fileResolver, $converter, $schema, $validator);
     }
 
     /**
@@ -55,6 +55,6 @@ class ReaderTest extends \PHPUnit_Framework_TestCase
      */
     public function testInstanceof()
     {
-        $this->assertInstanceOf('Magento\Framework\Service\Config\Reader', $this->_reader);
+        $this->assertInstanceOf('Magento\Framework\Api\Config\Reader', $this->_reader);
     }
 }
diff --git a/dev/tests/unit/testsuite/Magento/Framework/Service/Config/SchemaLocatorTest.php b/dev/tests/unit/testsuite/Magento/Framework/Api/Config/SchemaLocatorTest.php
similarity index 82%
rename from dev/tests/unit/testsuite/Magento/Framework/Service/Config/SchemaLocatorTest.php
rename to dev/tests/unit/testsuite/Magento/Framework/Api/Config/SchemaLocatorTest.php
index 8547e4e0789..007917ef8e4 100644
--- a/dev/tests/unit/testsuite/Magento/Framework/Service/Config/SchemaLocatorTest.php
+++ b/dev/tests/unit/testsuite/Magento/Framework/Api/Config/SchemaLocatorTest.php
@@ -21,26 +21,26 @@
  * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
-namespace Magento\Framework\Service\Config;
+namespace Magento\Framework\Api\Config;
 
 /**
- * Test for \Magento\Framework\Service\Config\SchemaLocator
+ * Test for \Magento\Framework\Api\Config\SchemaLocator
  */
 class SchemaLocatorTest extends \PHPUnit_Framework_TestCase
 {
     /**
-     * @var \Magento\Framework\Service\Config\SchemaLocator
+     * @var \Magento\Framework\Api\Config\SchemaLocator
      */
     protected $_model;
 
     protected function setUp()
     {
-        $this->_model = new \Magento\Framework\Service\Config\SchemaLocator();
+        $this->_model = new \Magento\Framework\Api\Config\SchemaLocator();
     }
 
     public function testGetSchema()
     {
-        $expected = str_replace('\\', '/', BP . '/lib/internal/Magento/Framework/Service/etc/data_object.xsd');
+        $expected = str_replace('\\', '/', BP . '/lib/internal/Magento/Framework/Api/etc/data_object.xsd');
         $actual = str_replace('\\', '/', $this->_model->getSchema());
         $this->assertEquals($expected, $actual);
     }
@@ -48,7 +48,7 @@ class SchemaLocatorTest extends \PHPUnit_Framework_TestCase
     public function testGetPerFileSchema()
     {
         $actual = str_replace('\\', '/', $this->_model->getPerFileSchema());
-        $expected = str_replace('\\', '/', BP . '/lib/internal/Magento/Framework/Service/etc/data_object.xsd');
+        $expected = str_replace('\\', '/', BP . '/lib/internal/Magento/Framework/Api/etc/data_object.xsd');
         $this->assertEquals($expected, $actual);
     }
 }
diff --git a/dev/tests/unit/testsuite/Magento/Framework/Service/Config/_files/data_object_valid.xml b/dev/tests/unit/testsuite/Magento/Framework/Api/Config/_files/data_object_valid.xml
similarity index 96%
rename from dev/tests/unit/testsuite/Magento/Framework/Service/Config/_files/data_object_valid.xml
rename to dev/tests/unit/testsuite/Magento/Framework/Api/Config/_files/data_object_valid.xml
index f59381a1f0a..0fda4b3c84e 100644
--- a/dev/tests/unit/testsuite/Magento/Framework/Service/Config/_files/data_object_valid.xml
+++ b/dev/tests/unit/testsuite/Magento/Framework/Api/Config/_files/data_object_valid.xml
@@ -23,7 +23,7 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 -->
-<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../../../lib/internal/Magento/Framework/Service/etc/data_object.xsd">
+<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../../../lib/internal/Magento/Framework/Api/etc/data_object.xsd">
     <custom_attributes for="Magento\Tax\Service\V1\Data\TaxRate">
     </custom_attributes>
     <custom_attributes for="Magento\Catalog\Service\Data\V1\Product">
diff --git a/dev/tests/unit/testsuite/Magento/Framework/Service/Data/AttributeValueTest.php b/dev/tests/unit/testsuite/Magento/Framework/Api/Data/AttributeValueTest.php
similarity index 92%
rename from dev/tests/unit/testsuite/Magento/Framework/Service/Data/AttributeValueTest.php
rename to dev/tests/unit/testsuite/Magento/Framework/Api/Data/AttributeValueTest.php
index 4c04e2db132..c748e9820c3 100644
--- a/dev/tests/unit/testsuite/Magento/Framework/Service/Data/AttributeValueTest.php
+++ b/dev/tests/unit/testsuite/Magento/Framework/Api/Data/AttributeValueTest.php
@@ -21,9 +21,9 @@
  * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
-namespace Magento\Framework\Service\Data;
+namespace Magento\Framework\Api\Data;
 
-use Magento\Framework\Validator\Test\True;
+use Magento\Framework\Api\AttributeValue;
 
 class AttributeValueTest extends \PHPUnit_Framework_TestCase
 {
@@ -40,7 +40,7 @@ class AttributeValueTest extends \PHPUnit_Framework_TestCase
     public function testConstructorAndGettersWithString()
     {
         $helper = new \Magento\TestFramework\Helper\ObjectManager($this);
-        $attributeBuilder = $helper->getObject('\Magento\Framework\Service\Data\AttributeValueBuilder')
+        $attributeBuilder = $helper->getObject('\Magento\Framework\Api\AttributeValueBuilder')
             ->setAttributeCode(self::ATTRIBUTE_CODE)
             ->setValue(self::STRING_VALUE);
         $attribute = new AttributeValue($attributeBuilder);
@@ -52,7 +52,7 @@ class AttributeValueTest extends \PHPUnit_Framework_TestCase
     public function testConstructorAndGettersWithInteger()
     {
         $helper = new \Magento\TestFramework\Helper\ObjectManager($this);
-        $attributeBuilder = $helper->getObject('\Magento\Framework\Service\Data\AttributeValueBuilder')
+        $attributeBuilder = $helper->getObject('\Magento\Framework\Api\AttributeValueBuilder')
             ->setAttributeCode(self::ATTRIBUTE_CODE)
             ->setValue(self::INTEGER_VALUE);
         $attribute = new AttributeValue($attributeBuilder);
@@ -64,7 +64,7 @@ class AttributeValueTest extends \PHPUnit_Framework_TestCase
     public function testConstructorAndGettersWithFloat()
     {
         $helper = new \Magento\TestFramework\Helper\ObjectManager($this);
-        $attributeBuilder = $helper->getObject('\Magento\Framework\Service\Data\AttributeValueBuilder')
+        $attributeBuilder = $helper->getObject('\Magento\Framework\Api\AttributeValueBuilder')
             ->setAttributeCode(self::ATTRIBUTE_CODE)
             ->setValue(self::FLOAT_VALUE);
         $attribute = new AttributeValue($attributeBuilder);
@@ -76,7 +76,7 @@ class AttributeValueTest extends \PHPUnit_Framework_TestCase
     public function testConstructorAndGettersWithBoolean()
     {
         $helper = new \Magento\TestFramework\Helper\ObjectManager($this);
-        $attributeBuilder = $helper->getObject('\Magento\Framework\Service\Data\AttributeValueBuilder')
+        $attributeBuilder = $helper->getObject('\Magento\Framework\Api\AttributeValueBuilder')
             ->setAttributeCode(self::ATTRIBUTE_CODE)
             ->setValue(self::BOOLEAN_VALUE);
         $attribute = new AttributeValue($attributeBuilder);
diff --git a/dev/tests/unit/testsuite/Magento/Framework/Service/SimpleDataObjectConverterTest.php b/dev/tests/unit/testsuite/Magento/Framework/Api/SimpleDataObjectConverterTest.php
similarity index 99%
rename from dev/tests/unit/testsuite/Magento/Framework/Service/SimpleDataObjectConverterTest.php
rename to dev/tests/unit/testsuite/Magento/Framework/Api/SimpleDataObjectConverterTest.php
index 6d61092068c..5bb5caaff24 100644
--- a/dev/tests/unit/testsuite/Magento/Framework/Service/SimpleDataObjectConverterTest.php
+++ b/dev/tests/unit/testsuite/Magento/Framework/Api/SimpleDataObjectConverterTest.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-namespace Magento\Framework\Service;
+namespace Magento\Framework\Api;
 
 use Magento\Customer\Service\V1\Data\Customer;
 
@@ -69,7 +69,7 @@ class SimpleDataObjectConverterTest extends \PHPUnit_Framework_TestCase
     protected function setUp()
     {
         $objectManager = new \Magento\TestFramework\Helper\ObjectManager($this);
-        $this->dataObjectConverter = $objectManager->getObject('Magento\Framework\Service\SimpleDataObjectConverter');
+        $this->dataObjectConverter = $objectManager->getObject('Magento\Framework\Api\SimpleDataObjectConverter');
         parent::setUp();
     }
 
diff --git a/dev/tests/unit/testsuite/Magento/Framework/App/Filesystem/DirectoryListTest.php b/dev/tests/unit/testsuite/Magento/Framework/App/Filesystem/DirectoryListTest.php
index 72c443b10dc..3d4c681120a 100644
--- a/dev/tests/unit/testsuite/Magento/Framework/App/Filesystem/DirectoryListTest.php
+++ b/dev/tests/unit/testsuite/Magento/Framework/App/Filesystem/DirectoryListTest.php
@@ -34,10 +34,7 @@ class DirectoryListTest extends \PHPUnit_Framework_TestCase
 
     public function testDirectoriesCustomization()
     {
-        $config = [
-            DirectoryList::APP => [DirectoryList::PATH => 'foo', DirectoryList::URL_PATH => 'bar'],
-            'unknown' => [DirectoryList::PATH => '/baz'],
-        ];
+        $config = [DirectoryList::APP => [DirectoryList::PATH => 'foo', DirectoryList::URL_PATH => 'bar']];
         $object = new DirectoryList('/root/dir', $config);
         $this->assertFileExists($object->getPath(DirectoryList::SYS_TMP));
         $this->assertEquals('/root/dir/foo', $object->getPath(DirectoryList::APP));
@@ -48,4 +45,13 @@ class DirectoryListTest extends \PHPUnit_Framework_TestCase
         );
         $object->getPath('unknown');
     }
+
+    /**
+     * @expectedException \InvalidArgumentException
+     * @expectedExceptionMessage Unknown type: test
+     */
+    public function testUnknownDirectory()
+    {
+        new DirectoryList('/root/dir', ['test' => [DirectoryList::PATH => '/baz']]);
+    }
 }
diff --git a/dev/tests/unit/testsuite/Magento/Framework/App/Response/HttpTest.php b/dev/tests/unit/testsuite/Magento/Framework/App/Response/HttpTest.php
index 0af640c1449..11c5c2a8c2e 100644
--- a/dev/tests/unit/testsuite/Magento/Framework/App/Response/HttpTest.php
+++ b/dev/tests/unit/testsuite/Magento/Framework/App/Response/HttpTest.php
@@ -268,6 +268,12 @@ class HttpTest extends \PHPUnit_Framework_TestCase
      */
     public function testWakeUpWithException()
     {
+        /* ensure that the test preconditions are met */
+        $objectManagerClass = new \ReflectionClass('Magento\Framework\App\ObjectManager');
+        $instanceProperty = $objectManagerClass->getProperty('_instance');
+        $instanceProperty->setAccessible(true);
+        $instanceProperty->setValue(null);
+
         $this->model->__wakeup();
         $this->assertNull($this->cookieMetadataFactoryMock);
         $this->assertNull($this->cookieManagerMock);
diff --git a/dev/tests/unit/testsuite/Magento/Framework/App/StateTest.php b/dev/tests/unit/testsuite/Magento/Framework/App/StateTest.php
index e54fa456a43..ca5b2eaaa3c 100644
--- a/dev/tests/unit/testsuite/Magento/Framework/App/StateTest.php
+++ b/dev/tests/unit/testsuite/Magento/Framework/App/StateTest.php
@@ -43,14 +43,7 @@ class StateTest extends \PHPUnit_Framework_TestCase
             '',
             false
         );
-        $this->model = new \Magento\Framework\App\State($this->scopeMock, '0');
-    }
-
-    public function testIsInstalled()
-    {
-        $this->assertFalse($this->model->isInstalled());
-        $this->model->setInstallDate(strtotime('now'));
-        $this->assertTrue($this->model->isInstalled());
+        $this->model = new \Magento\Framework\App\State($this->scopeMock);
     }
 
     public function testSetGetUpdateMode()
diff --git a/dev/tests/unit/testsuite/Magento/Framework/Code/Generator/EntityAbstractTest.php b/dev/tests/unit/testsuite/Magento/Framework/Code/Generator/EntityAbstractTest.php
index 7799f849508..202f82b2bee 100644
--- a/dev/tests/unit/testsuite/Magento/Framework/Code/Generator/EntityAbstractTest.php
+++ b/dev/tests/unit/testsuite/Magento/Framework/Code/Generator/EntityAbstractTest.php
@@ -80,7 +80,11 @@ class EntityAbstractTest extends \PHPUnit_Framework_TestCase
             '_classGenerator',
             $this->_model
         );
-        $this->assertAttributeInstanceOf('Magento\Framework\Autoload\IncludePath', '_autoloader', $this->_model);
+        $this->assertAttributeInstanceOf(
+            'Magento\Framework\Code\Generator\FileResolver',
+            'fileResolver',
+            $this->_model
+        );
 
         // with source class name
         $this->_model = $this->getMockForAbstractClass(
@@ -99,16 +103,16 @@ class EntityAbstractTest extends \PHPUnit_Framework_TestCase
             '',
             false
         );
-        $autoloader = $this->getMock('Magento\Framework\Autoload\IncludePath', array(), array(), '', false);
+        $fileResolver = $this->getMock('Magento\Framework\Code\Generator\FileResolver', array(), array(), '', false);
 
         $this->_model = $this->getMockForAbstractClass(
             'Magento\Framework\Code\Generator\EntityAbstract',
-            array(self::SOURCE_CLASS, self::RESULT_CLASS, $ioObject, $codeGenerator, $autoloader)
+            array(self::SOURCE_CLASS, self::RESULT_CLASS, $ioObject, $codeGenerator, $fileResolver)
         );
         $this->assertAttributeEquals(self::RESULT_CLASS, '_resultClassName', $this->_model);
         $this->assertAttributeEquals($ioObject, '_ioObject', $this->_model);
         $this->assertAttributeEquals($codeGenerator, '_classGenerator', $this->_model);
-        $this->assertAttributeEquals($autoloader, '_autoloader', $this->_model);
+        $this->assertAttributeEquals($fileResolver, 'fileResolver', $this->_model);
     }
 
     /**
@@ -270,7 +274,7 @@ class EntityAbstractTest extends \PHPUnit_Framework_TestCase
             '',
             false
         );
-        $autoloader = $this->getMock('Magento\Framework\Autoload\IncludePath', array('getFile'), array(), '', false);
+        $fileresolver = $this->getMock('Magento\Framework\Code\Generator\FileResolver', ['getFile'], [], '', false);
 
         $ioObject->expects(
             $this->any()
@@ -296,7 +300,7 @@ class EntityAbstractTest extends \PHPUnit_Framework_TestCase
             $this->returnValue(self::RESULT_DIRECTORY)
         );
 
-        $autoloader->expects(
+        $fileresolver->expects(
             $this->at(0)
         )->method(
             'getFile'
@@ -306,7 +310,7 @@ class EntityAbstractTest extends \PHPUnit_Framework_TestCase
             $this->returnValue($classExistsFirst)
         );
         if ($classExistsFirst) {
-            $autoloader->expects(
+            $fileresolver->expects(
                 $this->at(1)
             )->method(
                 'getFile'
@@ -321,7 +325,7 @@ class EntityAbstractTest extends \PHPUnit_Framework_TestCase
         if ($classExistsFirst) {
             $expectedInvocations = 2;
         }
-        $autoloader->expects($this->exactly($expectedInvocations))->method('getFile');
+        $fileresolver->expects($this->exactly($expectedInvocations))->method('getFile');
 
         $expectedInvocations = 1;
         if (!$classExistsFirst || $classExistsSecond) {
@@ -349,7 +353,7 @@ class EntityAbstractTest extends \PHPUnit_Framework_TestCase
             'result_class' => self::RESULT_CLASS,
             'io_object' => $ioObject,
             'code_generator' => null,
-            'autoloader' => $autoloader
+            'autoloader' => $fileresolver
         );
     }
 
diff --git a/dev/tests/unit/testsuite/Magento/Install/Model/Config/ConverterTest.php b/dev/tests/unit/testsuite/Magento/Framework/Code/Generator/FileResolverTest.php
similarity index 59%
rename from dev/tests/unit/testsuite/Magento/Install/Model/Config/ConverterTest.php
rename to dev/tests/unit/testsuite/Magento/Framework/Code/Generator/FileResolverTest.php
index 1840da8e815..fcbf45ac0b9 100644
--- a/dev/tests/unit/testsuite/Magento/Install/Model/Config/ConverterTest.php
+++ b/dev/tests/unit/testsuite/Magento/Framework/Code/Generator/FileResolverTest.php
@@ -1,6 +1,8 @@
 <?php
 /**
- * \Magento\Install\Model\Config_Converter
+ * Unit test for \Magento\Framework\Code\Generator\FileResolver
+ *
+ * Only one method is unit testable, other methods require integration testing.
  *
  * Magento
  *
@@ -23,28 +25,25 @@
  * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
-namespace Magento\Install\Model\Config;
+namespace Magento\Framework\Code\Generator;
+
+use \Magento\TestFramework\Helper\ObjectManager;
 
-class ConverterTest extends \PHPUnit_Framework_TestCase
+class FileResolverTest extends \PHPUnit_Framework_TestCase
 {
+
     /**
-     * @var \Magento\Install\Model\Config\Converter
+     * @var \Magento\Framework\Code\Generator\FileResolver
      */
-    protected $_model;
+    protected $model;
 
     public function setUp()
     {
-        $this->_model = new \Magento\Install\Model\Config\Converter();
+        $this->model = (new ObjectManager($this))->getObject('Magento\Framework\Code\Generator\FileResolver');
     }
 
-    public function testConvert()
+    public function testGetFilePath()
     {
-        $dom = new \DOMDocument();
-        $xmlFile = __DIR__ . '/_files/install_wizard.xml';
-        $dom->loadXML(file_get_contents($xmlFile));
-
-        $convertedFile = __DIR__ . '/_files/install_wizard_config.php';
-        $expectedResult = include $convertedFile;
-        $this->assertEquals($expectedResult, $this->_model->convert($dom), '', 0, 20);
+        $this->assertSame('Path/To/My/Class.php', $this->model->getFilePath('Path\To\My_Class'));
     }
 }
diff --git a/dev/tests/unit/testsuite/Magento/Framework/Code/Generator/IoTest.php b/dev/tests/unit/testsuite/Magento/Framework/Code/Generator/IoTest.php
index 29f08596025..36c4dfee260 100644
--- a/dev/tests/unit/testsuite/Magento/Framework/Code/Generator/IoTest.php
+++ b/dev/tests/unit/testsuite/Magento/Framework/Code/Generator/IoTest.php
@@ -60,7 +60,7 @@ class IoTest extends \PHPUnit_Framework_TestCase
     /**
      * @var \Magento\Framework\Autoload\IncludePath|\PHPUnit_Framework_MockObject_MockObject
      */
-    protected $_autoLoaderMock;
+    protected $fileResolverMock;
 
     protected function setUp()
     {
@@ -72,14 +72,14 @@ class IoTest extends \PHPUnit_Framework_TestCase
             array()
         );
 
-        $this->_autoLoaderMock = $this->getMock(
-            'Magento\Framework\Autoload\IncludePath',
+        $this->fileResolverMock = $this->getMock(
+            'Magento\Framework\Code\Generator\FileResolver',
             array('getFilePath'),
             array(),
             '',
             false
         );
-        $this->_autoLoaderMock->expects(
+        $this->fileResolverMock->expects(
             $this->any()
         )->method(
             'getFilePath'
@@ -91,7 +91,7 @@ class IoTest extends \PHPUnit_Framework_TestCase
 
         $this->_object = new \Magento\Framework\Code\Generator\Io(
             $this->_filesystemDriverMock,
-            $this->_autoLoaderMock,
+            $this->fileResolverMock,
             self::GENERATION_DIRECTORY
         );
     }
@@ -100,7 +100,7 @@ class IoTest extends \PHPUnit_Framework_TestCase
     {
         unset($this->_generationDirectory);
         unset($this->_filesystemMock);
-        unset($this->_autoLoaderMock);
+        unset($this->fileResolverMock);
         unset($this->_object);
         unset($this->_filesystemDriverMock);
     }
diff --git a/dev/tests/unit/testsuite/Magento/Framework/Code/GeneratorTest.php b/dev/tests/unit/testsuite/Magento/Framework/Code/GeneratorTest.php
index e5ddefbf8e9..3ee1604c0b4 100644
--- a/dev/tests/unit/testsuite/Magento/Framework/Code/GeneratorTest.php
+++ b/dev/tests/unit/testsuite/Magento/Framework/Code/GeneratorTest.php
@@ -51,7 +51,7 @@ class GeneratorTest extends \PHPUnit_Framework_TestCase
     /**
      * @var \PHPUnit_Framework_MockObject_MockObject|\Magento\Framework\Autoload\IncludePath
      */
-    protected $autoloader;
+    protected $fileResolver;
 
     /**
      * @var \PHPUnit_Framework_MockObject_MockObject|Generator\Io
@@ -65,8 +65,8 @@ class GeneratorTest extends \PHPUnit_Framework_TestCase
 
     protected function setUp()
     {
-        $this->autoloader = $this->getMock(
-            'Magento\Framework\Autoload\IncludePath',
+        $this->fileResolver = $this->getMock(
+            'Magento\Framework\Code\Generator\FileResolver',
             array('getFile'),
             array(),
             '',
@@ -80,13 +80,13 @@ class GeneratorTest extends \PHPUnit_Framework_TestCase
     protected function tearDown()
     {
         unset($this->model);
-        unset($this->autoloader);
+        unset($this->fileResolver);
     }
 
     public function testGetGeneratedEntities()
     {
         $this->model = new \Magento\Framework\Code\Generator(
-            $this->autoloader,
+            $this->fileResolver,
             $this->ioObjectMock,
             array('factory', 'proxy', 'interceptor')
         );
@@ -99,13 +99,13 @@ class GeneratorTest extends \PHPUnit_Framework_TestCase
      */
     public function testGenerateClass($className, $entityType)
     {
-        $this->autoloader->expects($this->any())
+        $this->fileResolver->expects($this->any())
             ->method('getFile')
             ->with($className . $entityType)
             ->will($this->returnValue(false));
 
         $this->model = new \Magento\Framework\Code\Generator(
-            $this->autoloader,
+            $this->fileResolver,
             $this->ioObjectMock,
             array(
                 'factory' => '\Magento\Framework\ObjectManager\Code\Generator\Factory',
@@ -122,13 +122,13 @@ class GeneratorTest extends \PHPUnit_Framework_TestCase
      */
     public function testGenerateClassWithExistName($className, $entityType)
     {
-        $this->autoloader->expects($this->once())
+        $this->fileResolver->expects($this->once())
             ->method('getFile')
             ->with($className . $entityType)
             ->will($this->returnValue(true));
 
         $this->model = new \Magento\Framework\Code\Generator(
-            $this->autoloader,
+            $this->fileResolver,
             $this->ioObjectMock,
             array(
                 'factory' => '\Magento\Framework\ObjectManager\Code\Generator\Factory',
@@ -145,9 +145,9 @@ class GeneratorTest extends \PHPUnit_Framework_TestCase
 
     public function testGenerateClassWithWrongName()
     {
-        $this->autoloader->expects($this->never())->method('getFile');
+        $this->fileResolver->expects($this->never())->method('getFile');
 
-        $this->model = new \Magento\Framework\Code\Generator($this->autoloader, $this->ioObjectMock);
+        $this->model = new \Magento\Framework\Code\Generator($this->fileResolver, $this->ioObjectMock);
 
         $this->assertEquals(
             \Magento\Framework\Code\Generator::GENERATION_ERROR,
@@ -160,10 +160,10 @@ class GeneratorTest extends \PHPUnit_Framework_TestCase
      */
     public function testGenerateClassWithError()
     {
-        $this->autoloader->expects($this->once())->method('getFile')->will($this->returnValue(false));
+        $this->fileResolver->expects($this->once())->method('getFile')->will($this->returnValue(false));
 
         $this->model = new \Magento\Framework\Code\Generator(
-            $this->autoloader,
+            $this->fileResolver,
             $this->ioObjectMock,
             array(
                 'factory' => '\Magento\Framework\ObjectManager\Code\Generator\Factory',
diff --git a/dev/tests/unit/testsuite/Magento/Framework/Filesystem/DirectoryListTest.php b/dev/tests/unit/testsuite/Magento/Framework/Filesystem/DirectoryListTest.php
index 97d992cbd50..6e984092649 100644
--- a/dev/tests/unit/testsuite/Magento/Framework/Filesystem/DirectoryListTest.php
+++ b/dev/tests/unit/testsuite/Magento/Framework/Filesystem/DirectoryListTest.php
@@ -30,18 +30,49 @@ class DirectoryListTest extends \PHPUnit_Framework_TestCase
         $this->assertArrayHasKey(DirectoryList::SYS_TMP, DirectoryList::getDefaultConfig());
     }
 
-    public function testGetters()
+    /**
+     * @param array $config
+     * @param string $expectedError
+     * @dataProvider validateDataProvider
+     */
+    public function testValidate($config, $expectedError)
     {
-        $customDirs = [
-            'foo' => [DirectoryList::PATH => '/foo/dir'],
-            DirectoryList::SYS_TMP => [DirectoryList::PATH => '/bar/dir', DirectoryList::URL_PATH => 'bar']
+        $this->setExpectedException('\InvalidArgumentException', $expectedError);
+        DirectoryList::validate($config);
+    }
+
+    /**
+     * @return array
+     */
+    public function validateDataProvider()
+    {
+        return [
+            ['', 'Unexpected value type.'],
+            [1, 'Unexpected value type.'],
+            [[DirectoryList::SYS_TMP => ''], 'Unexpected value type.'],
+            [[DirectoryList::SYS_TMP => 1], 'Unexpected value type.'],
+            [[DirectoryList::SYS_TMP => []], 'Missing required keys at: ' . DirectoryList::SYS_TMP],
         ];
+    }
+
+    public function testGetters()
+    {
+        $customDirs = [DirectoryList::SYS_TMP => [DirectoryList::PATH => '/bar/dir', DirectoryList::URL_PATH => 'bar']];
         $object = new DirectoryList('/root/dir', $customDirs);
         $this->assertEquals('/bar/dir', $object->getPath(DirectoryList::SYS_TMP));
         $this->assertEquals('bar', $object->getUrlPath(DirectoryList::SYS_TMP));
         $this->assertEquals('/root/dir', $object->getRoot());
     }
 
+    /**
+     * @expectedException \InvalidArgumentException
+     * @expectedExceptionMessage Unknown type: foo
+     */
+    public function testUnknownType()
+    {
+        new DirectoryList('/root/dir', ['foo' => [DirectoryList::PATH => '/foo/dir']]);
+    }
+
     /**
      * @param string $method
      * @expectedException \Magento\Framework\Filesystem\FilesystemException
diff --git a/dev/tests/unit/testsuite/Magento/Framework/Interception/Code/Generator/InterceptorTest.php b/dev/tests/unit/testsuite/Magento/Framework/Interception/Code/Generator/InterceptorTest.php
index 7ef1c4eb0e2..84ae043980f 100644
--- a/dev/tests/unit/testsuite/Magento/Framework/Interception/Code/Generator/InterceptorTest.php
+++ b/dev/tests/unit/testsuite/Magento/Framework/Interception/Code/Generator/InterceptorTest.php
@@ -39,11 +39,11 @@ class InterceptorTest extends \PHPUnit_Framework_TestCase
     /**
      * @var \PHPUnit_Framework_MockObject
      */
-    protected $autoloaderMock;
+    protected $fileResolverMock;
 
     protected function setUp()
     {
-        $this->ioObjectMock = $this->getMock('\Magento\Framework\Code\Generator\Io', array(), array(), '', false);
+        $this->ioObjectMock = $this->getMock('\Magento\Framework\Code\Generator\Io', [], [], '', false);
         $this->classGeneratorMock = $this->getMock(
             '\Magento\Framework\Code\Generator\CodeGenerator\CodeGeneratorInterface',
             array(),
@@ -51,7 +51,7 @@ class InterceptorTest extends \PHPUnit_Framework_TestCase
             '',
             false
         );
-        $this->autoloaderMock = $this->getMock('\Magento\Framework\Autoload\IncludePath', array(), array(), '', false);
+        $this->fileResolverMock = $this->getMock('Magento\Framework\Code\Generator\FileResolver', [], [], '', false);
     }
 
     public function testGetDefaultResultClassName()
@@ -59,7 +59,7 @@ class InterceptorTest extends \PHPUnit_Framework_TestCase
         // resultClassName should be stdClass_Interceptor
         $model = $this->getMock('\Magento\Framework\Interception\Code\Generator\Interceptor',
             array('_validateData'),
-            array('Exception', null, $this->ioObjectMock, $this->classGeneratorMock, $this->autoloaderMock)
+            array('Exception', null, $this->ioObjectMock, $this->classGeneratorMock, $this->fileResolverMock)
         );
 
         $this->classGeneratorMock->expects($this->once())->method('setName')
diff --git a/dev/tests/unit/testsuite/Magento/Framework/Model/AbstractExtensibleModelTest.php b/dev/tests/unit/testsuite/Magento/Framework/Model/AbstractExtensibleModelTest.php
index d7ee416e3ab..b0984d320f7 100644
--- a/dev/tests/unit/testsuite/Magento/Framework/Model/AbstractExtensibleModelTest.php
+++ b/dev/tests/unit/testsuite/Magento/Framework/Model/AbstractExtensibleModelTest.php
@@ -172,13 +172,13 @@ class AbstractExtensibleModelTest extends \PHPUnit_Framework_TestCase
     /**
      * @param string[] $attributesAsArray
      * @param \Magento\Framework\Model\AbstractExtensibleModel $model
-     * @return \Magento\Framework\Api\Data\AttributeInterface[]
+     * @return \Magento\Framework\Api\AttributeInterface[]
      */
     protected function addCustomAttributesToModel($attributesAsArray, $model)
     {
         $objectManager = new ObjectManagerHelper($this);
-        /** @var \Magento\Framework\Service\Data\AttributeValueBuilder $attributeValueBuilder */
-        $attributeValueBuilder = $objectManager->getObject('Magento\Framework\Service\Data\AttributeValueBuilder');
+        /** @var \Magento\Framework\Api\AttributeValueBuilder $attributeValueBuilder */
+        $attributeValueBuilder = $objectManager->getObject('Magento\Framework\Api\AttributeValueBuilder');
         $addedAttributes = [];
         foreach ($attributesAsArray as $attributeCode => $attributeValue) {
             $addedAttributes[$attributeCode] = $attributeValueBuilder
diff --git a/dev/tests/unit/testsuite/Magento/Framework/Module/Setup/MigrationTest.php b/dev/tests/unit/testsuite/Magento/Framework/Module/Setup/MigrationTest.php
index ffd87dcf717..f0c633c03d3 100644
--- a/dev/tests/unit/testsuite/Magento/Framework/Module/Setup/MigrationTest.php
+++ b/dev/tests/unit/testsuite/Magento/Framework/Module/Setup/MigrationTest.php
@@ -259,7 +259,7 @@ class MigrationTest extends \PHPUnit_Framework_TestCase
             $this->getMock('Magento\Framework\App\Config\ScopeConfigInterface'),
             $this->getMock('Magento\Framework\Module\ModuleListInterface'),
             $this->getMock('Magento\Framework\Module\Dir\Reader', array(), array(), '', false, false),
-            $this->getMock('Magento\Install\Model\Resource\Resource', array(), array(), '', false),
+            $this->getMock('Magento\Framework\Module\Resource', array(), array(), '', false),
             $this->getMock('Magento\Core\Model\Resource\Theme\CollectionFactory', array(), array(), '', false),
             $this->getMock('Magento\Core\Model\Theme\CollectionFactory', array(), array(), '', false),
             $this->getMock('Magento\Framework\Module\Setup\MigrationFactory', array(), array(), '', false),
diff --git a/dev/tests/unit/testsuite/Magento/Framework/Module/UpdaterTest.php b/dev/tests/unit/testsuite/Magento/Framework/Module/UpdaterTest.php
index 4ba40bc456d..507e6789bcc 100644
--- a/dev/tests/unit/testsuite/Magento/Framework/Module/UpdaterTest.php
+++ b/dev/tests/unit/testsuite/Magento/Framework/Module/UpdaterTest.php
@@ -30,11 +30,6 @@ class UpdaterTest extends \PHPUnit_Framework_TestCase
      */
     protected $_factoryMock;
 
-    /**
-     * @var \PHPUnit_Framework_MockObject_MockObject
-     */
-    protected $_appStateMock;
-
     /**
      * @var \PHPUnit_Framework_MockObject_MockObject
      */
@@ -69,7 +64,6 @@ class UpdaterTest extends \PHPUnit_Framework_TestCase
             '',
             false
         );
-        $this->_appStateMock = $this->getMock('Magento\Framework\App\State', array(), array(), '', false);
         $this->_moduleListMock = $this->getMock('Magento\Framework\Module\ModuleListInterface');
         $this->_resourceResolver = $this->getMock('Magento\Framework\Module\ResourceResolverInterface');
         $this->_resourceSetupMock = $this->getMock(
@@ -94,46 +88,12 @@ class UpdaterTest extends \PHPUnit_Framework_TestCase
 
         $this->_model = new \Magento\Framework\Module\Updater(
             $this->_factoryMock,
-            $this->_appStateMock,
             $this->_moduleListMock,
             $this->_resourceResolver,
             $this->moduleManager
         );
     }
 
-    public function testUpdateScheme()
-    {
-        $this->moduleManager->expects($this->once())
-            ->method('isDbSchemaUpToDate')
-            ->with('Test_Module', 'catalog_setup')
-            ->will($this->returnValue(false));
-        $this->_factoryMock->expects($this->any())
-            ->method('create')
-            ->with('catalog_setup', 'Test_Module')
-            ->will($this->returnValue($this->_resourceSetupMock))
-        ;
-        $this->_appStateMock->expects($this->at(0))->method('setUpdateMode')->with(true);
-        $this->_appStateMock->expects($this->at(1))->method('setUpdateMode')->with(false);
-        $this->_resourceSetupMock->expects($this->once())->method('applyUpdates');
-        $this->_resourceSetupMock->expects($this->once())
-            ->method('getCallAfterApplyAllUpdates')
-            ->will($this->returnValue(true));
-        $this->_resourceSetupMock->expects($this->once())->method('afterApplyAllUpdates');
-
-        $this->_model->updateScheme();
-    }
-
-    public function testUpdateSchemeNoUpdates()
-    {
-        $this->moduleManager->expects($this->once())
-            ->method('isDbSchemaUpToDate')
-            ->with('Test_Module', 'catalog_setup')
-            ->will($this->returnValue(true));
-        $this->_factoryMock->expects($this->never())
-            ->method('create');
-        $this->_model->updateScheme();
-    }
-
     /**
      * @covers \Magento\Framework\Module\Updater::updateData
      */
@@ -150,10 +110,6 @@ class UpdaterTest extends \PHPUnit_Framework_TestCase
 
     public function testUpdateData()
     {
-        $this->moduleManager->expects($this->once())
-            ->method('isDbSchemaUpToDate')
-            ->with('Test_Module', 'catalog_setup')
-            ->will($this->returnValue(true));
         $this->moduleManager->expects($this->once())
             ->method('isDbDataUpToDate')
             ->with('Test_Module', 'catalog_setup')
@@ -163,33 +119,21 @@ class UpdaterTest extends \PHPUnit_Framework_TestCase
             ->with('catalog_setup', 'Test_Module')
             ->will($this->returnValue($this->_resourceSetupMock))
         ;
-        $this->_appStateMock->expects($this->at(0))->method('setUpdateMode')->with(true);
-        $this->_appStateMock->expects($this->at(1))->method('setUpdateMode')->with(false);
         $this->_resourceSetupMock->expects($this->once())
             ->method('applyDataUpdates');
 
-        $this->_model->updateScheme();
         $this->_model->updateData();
     }
 
     public function testUpdateDataNoUpdates()
     {
-        $this->moduleManager->expects($this->once())
-            ->method('isDbSchemaUpToDate')
-            ->with('Test_Module', 'catalog_setup')
-            ->will($this->returnValue(true));
         $this->moduleManager->expects($this->once())
             ->method('isDbDataUpToDate')
             ->with('Test_Module', 'catalog_setup')
             ->will($this->returnValue(true));
         $this->_factoryMock->expects($this->never())
             ->method('create');
-        $this->_appStateMock->expects($this->at(0))->method('setUpdateMode')->with(true);
-        $this->_appStateMock->expects($this->at(1))->method('setUpdateMode')->with(false);
-        $this->_factoryMock->expects($this->never())
-            ->method('create');
 
-        $this->_model->updateScheme();
         $this->_model->updateData();
     }
 }
diff --git a/dev/tests/unit/testsuite/Magento/Framework/ObjectManager/Code/Generator/ConverterTest.php b/dev/tests/unit/testsuite/Magento/Framework/ObjectManager/Code/Generator/ConverterTest.php
index 167a36251d3..354b967c803 100644
--- a/dev/tests/unit/testsuite/Magento/Framework/ObjectManager/Code/Generator/ConverterTest.php
+++ b/dev/tests/unit/testsuite/Magento/Framework/ObjectManager/Code/Generator/ConverterTest.php
@@ -46,9 +46,9 @@ class ConverterTest extends \PHPUnit_Framework_TestCase
     protected $generator;
 
     /**
-     * @var \Magento\Framework\Autoload\IncludePath | \PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\Code\Generator\FileResolver | \PHPUnit_Framework_MockObject_MockObject
      */
-    protected $autoloaderMock;
+    protected $fileResolverMock;
 
     /**
      * @var \Magento\Framework\Code\Generator\CodeGenerator\Zend | \PHPUnit_Framework_MockObject_MockObject
@@ -64,8 +64,8 @@ class ConverterTest extends \PHPUnit_Framework_TestCase
             '',
             false
         );
-        $this->autoloaderMock = $this->getMock(
-            'Magento\Framework\Autoload\IncludePath',
+        $this->fileResolverMock = $this->getMock(
+            'Magento\Framework\Code\Generator\FileResolver',
             [],
             [],
             '',
@@ -87,7 +87,7 @@ class ConverterTest extends \PHPUnit_Framework_TestCase
                 'resultClassName' => self::RESULT_CLASS_NAME,
                 'ioObject' => $this->ioObjectMock,
                 'classGenerator' => $this->classGenerator,
-                'autoLoader' => $this->autoloaderMock
+                'fileResolver' => $this->fileResolverMock
             ]
         );
     }
@@ -99,11 +99,11 @@ class ConverterTest extends \PHPUnit_Framework_TestCase
         $resultFileName = 'SampleConverter.php';
 
         //Mocking _validateData call
-        $this->autoloaderMock->expects($this->at(0))
+        $this->fileResolverMock->expects($this->at(0))
             ->method('getFile')
             ->with(self::SOURCE_CLASS_NAME)
             ->will($this->returnValue($sourceFileName));
-        $this->autoloaderMock->expects($this->at(1))
+        $this->fileResolverMock->expects($this->at(1))
             ->method('getFile')
             ->with(self::RESULT_CLASS_NAME)
             ->will($this->returnValue(false));
diff --git a/dev/tests/unit/testsuite/Magento/Framework/ObjectManager/Code/Generator/GenerateRepositoryTest.php b/dev/tests/unit/testsuite/Magento/Framework/ObjectManager/Code/Generator/GenerateRepositoryTest.php
index 1254703f3a3..1b8b6597441 100644
--- a/dev/tests/unit/testsuite/Magento/Framework/ObjectManager/Code/Generator/GenerateRepositoryTest.php
+++ b/dev/tests/unit/testsuite/Magento/Framework/ObjectManager/Code/Generator/GenerateRepositoryTest.php
@@ -91,21 +91,21 @@ class GenerateRepositoryTest extends \PHPUnit_Framework_TestCase
         $sourceClassName = 'Magento_Module_Controller_Index';
         $resultClassName = 'Magento_Module_Controller';
 
-        $includePathMock = $this->getMockBuilder('Magento\Framework\Autoload\IncludePath')
+        $fileResolverMock = $this->getMockBuilder('Magento\Framework\Code\Generator\FileResolver')
             ->disableOriginalConstructor()
             ->setMethods(['getFile'])
             ->getMock();
-        $includePathMock->expects($this->at(0))
+        $fileResolverMock->expects($this->at(0))
             ->method('getFile')
             ->with($sourceClassName)
             ->will($this->returnValue(true));
-        $includePathMock->expects($this->at(1))
+        $fileResolverMock->expects($this->at(1))
             ->method('getFile')
             ->with($resultClassName)
             ->will($this->returnValue(false));
 
         $repository = new Repository(
-            null, null, null, null, $includePathMock
+            null, null, null, null, $fileResolverMock
         );
         $repository->init($sourceClassName, $resultClassName);
         $this->assertFalse($repository->generate());
diff --git a/dev/tests/unit/testsuite/Magento/Framework/ObjectManager/Code/Generator/RepositoryTest.php b/dev/tests/unit/testsuite/Magento/Framework/ObjectManager/Code/Generator/RepositoryTest.php
index f6b61de9581..822f87d71db 100644
--- a/dev/tests/unit/testsuite/Magento/Framework/ObjectManager/Code/Generator/RepositoryTest.php
+++ b/dev/tests/unit/testsuite/Magento/Framework/ObjectManager/Code/Generator/RepositoryTest.php
@@ -46,9 +46,9 @@ class RepositoryTest extends \PHPUnit_Framework_TestCase
     protected $generator;
 
     /**
-     * @var \Magento\Framework\Autoload\IncludePath | \PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\Code\Generator\FileResolver | \PHPUnit_Framework_MockObject_MockObject
      */
-    protected $autoloaderMock;
+    protected $fileResolverMock;
 
     /**
      * @var \Magento\Framework\Code\Generator\CodeGenerator\Zend | \PHPUnit_Framework_MockObject_MockObject
@@ -64,8 +64,8 @@ class RepositoryTest extends \PHPUnit_Framework_TestCase
             '',
             false
         );
-        $this->autoloaderMock = $this->getMock(
-            'Magento\Framework\Autoload\IncludePath',
+        $this->fileResolverMock = $this->getMock(
+            'Magento\Framework\Code\Generator\FileResolver',
             [],
             [],
             '',
@@ -87,7 +87,7 @@ class RepositoryTest extends \PHPUnit_Framework_TestCase
                 'resultClassName' => self::RESULT_CLASS_NAME,
                 'ioObject' => $this->ioObjectMock,
                 'classGenerator' => $this->classGenerator,
-                'autoLoader' => $this->autoloaderMock
+                'fileResolver' => $this->fileResolverMock
             ]
         );
     }
@@ -102,11 +102,11 @@ class RepositoryTest extends \PHPUnit_Framework_TestCase
         $resultFileName = self::OUTPUT_FILE_NAME;
 
         //Mocking _validateData call
-        $this->autoloaderMock->expects($this->at(0))
+        $this->fileResolverMock->expects($this->at(0))
             ->method('getFile')
             ->with(self::SOURCE_CLASS_NAME)
             ->will($this->returnValue($sourceFileName));
-        $this->autoloaderMock->expects($this->at(1))
+        $this->fileResolverMock->expects($this->at(1))
             ->method('getFile')
             ->with(self::RESULT_CLASS_NAME)
             ->will($this->returnValue(false));
diff --git a/dev/tests/unit/testsuite/Magento/Framework/ObjectManager/Code/Generator/_files/SampleRepository.txt b/dev/tests/unit/testsuite/Magento/Framework/ObjectManager/Code/Generator/_files/SampleRepository.txt
index e905faec608..b66f7aa5225 100644
--- a/dev/tests/unit/testsuite/Magento/Framework/ObjectManager/Code/Generator/_files/SampleRepository.txt
+++ b/dev/tests/unit/testsuite/Magento/Framework/ObjectManager/Code/Generator/_files/SampleRepository.txt
@@ -82,10 +82,10 @@ class SampleRepository
     /**
      * Find entities by criteria
      *
-     * @param \Magento\Framework\Service\V1\Data\SearchCriteria  $criteria
+     * @param \Magento\Framework\Api\SearchCriteria  $criteria
      * @return \Magento\Framework\ObjectManager\Code\Generator\Sample[]
      */
-    public function find(\Magento\Framework\Service\V1\Data\SearchCriteria $criteria)
+    public function find(\Magento\Framework\Api\SearchCriteria $criteria)
     {
         $collection = $this->sampleCollectionFactory->create();
         foreach($criteria->getFilterGroups() as $filterGroup) {
diff --git a/dev/tests/unit/testsuite/Magento/Webapi/Model/Config/ClassReflector/TypeProcessorTest.php b/dev/tests/unit/testsuite/Magento/Framework/Reflection/TypeProcessorTest.php
similarity index 93%
rename from dev/tests/unit/testsuite/Magento/Webapi/Model/Config/ClassReflector/TypeProcessorTest.php
rename to dev/tests/unit/testsuite/Magento/Framework/Reflection/TypeProcessorTest.php
index a005e4c949a..0700d9c7658 100644
--- a/dev/tests/unit/testsuite/Magento/Webapi/Model/Config/ClassReflector/TypeProcessorTest.php
+++ b/dev/tests/unit/testsuite/Magento/Framework/Reflection/TypeProcessorTest.php
@@ -21,26 +21,24 @@
  * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
-namespace Magento\Webapi\Model\Config\ClassReflector;
+namespace Magento\Framework\Reflection;
 
 /**
  * Type processor Test
  */
 class TypeProcessorTest extends \PHPUnit_Framework_TestCase
 {
-    /** @var \Magento\Webapi\Model\Config\ClassReflector\TypeProcessor */
+    /**
+     * @var \Magento\Framework\Reflection\TypeProcessor
+     */
     protected $_typeProcessor;
 
-    /** @var \Magento\Webapi\Helper\Data|\PHPUnit_Framework_MockObject_MockObject */
-    protected $_helperMock;
-
     /**
      * Set up helper.
      */
     protected function setUp()
     {
-        $this->_helperMock = $this->getMock('Magento\Webapi\Helper\Data', array(), array(), '', false);
-        $this->_typeProcessor = new \Magento\Webapi\Model\Config\ClassReflector\TypeProcessor($this->_helperMock);
+        $this->_typeProcessor = new \Magento\Framework\Reflection\TypeProcessor();
     }
 
     /**
@@ -191,7 +189,7 @@ class TypeProcessorTest extends \PHPUnit_Framework_TestCase
     }
 
     /**
-     * @expectedException \Magento\Webapi\Exception
+     * @expectedException \Magento\Framework\Exception\SerializationException
      * @expectedExceptionMessage Invalid type for value :"1". Expected Type: "int[]".
      */
     public function testProcessSimpleTypeInvalidType()
diff --git a/dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/_files/ExtensibleSampleDataBuilder.txt b/dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/_files/ExtensibleSampleDataBuilder.txt
deleted file mode 100644
index a01defa3a7b..00000000000
--- a/dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/_files/ExtensibleSampleDataBuilder.txt
+++ /dev/null
@@ -1,53 +0,0 @@
-namespace Magento\Framework\Service\Code\Generator;
-
-/**
- * DataBuilder class for \Magento\Framework\Service\Code\Generator\ExtensibleSample
- */
-class ExtensibleSampleDataBuilder extends \Magento\Framework\Service\Data\ExtensibleDataBuilder
-{
-    /**
-     * @param array $items
-     */
-    public function setItems($items)
-    {
-        $this->data['items'] = $items;
-        return $this;
-    }
-
-    /**
-     * @param string $name
-     */
-    public function setName($name)
-    {
-        $this->data['name'] = $name;
-        return $this;
-    }
-
-    /**
-     * @param int $count
-     */
-    public function setCount($count)
-    {
-        $this->data['count'] = $count;
-        return $this;
-    }
-
-    /**
-     * @param int $createdAt
-     */
-    public function setCreatedAt($createdAt)
-    {
-        $this->data['created_at'] = $createdAt;
-        return $this;
-    }
-
-    /**
-     * Initialize the builder
-     *
-     * @param \Magento\Framework\ObjectManager $objectManager
-     */
-    public function __construct(\Magento\Framework\ObjectManager $objectManager)
-    {
-        parent::__construct($objectManager, 'Magento\Framework\Service\Code\Generator\ExtensibleSampleInterface');
-    }
-}
diff --git a/dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/_files/SampleBuilder.txt b/dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/_files/SampleBuilder.txt
deleted file mode 100644
index 6a29dca8479..00000000000
--- a/dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/_files/SampleBuilder.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-namespace \Magento\Framework\Service\Code\Generator;
-
-/**
- * Builder class for \Magento\Framework\Service\Code\Generator\Sample
- */
-class SampleBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder
-{
-    /**
-     * {@inheritdoc}
-     */
-    public function setMessages($messages)
-    {
-        $this->_set(\Magento\Framework\Service\Code\Generator\Sample::MESSAGES, $messages);
-    }
-}
diff --git a/dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/_files/SampleSearchResults.txt b/dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/_files/SampleSearchResults.txt
deleted file mode 100644
index e98e4d3a8dc..00000000000
--- a/dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/_files/SampleSearchResults.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-namespace \Magento\Framework\Service\Code\Generator;
-
-class SampleSearchResults extends \Magento\Framework\Service\V1\Data\SearchResults
-{
-    /**
-     * Returns array of items
-     *
-     * @return \Magento\Framework\Service\Code\Generator\Sample[]
-     */
-    public function getItems()
-    {
-        return parent::getItems();
-    }
-}
diff --git a/dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/_files/SampleSearchResultsBuilder.txt b/dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/_files/SampleSearchResultsBuilder.txt
deleted file mode 100644
index e8debda5672..00000000000
--- a/dev/tests/unit/testsuite/Magento/Framework/Service/Code/Generator/_files/SampleSearchResultsBuilder.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-namespace \Magento\Framework\Service\Code\Generator;
-
-/**
- * SearchResultsBuilder class for \Magento\Framework\Service\Code\Generator\Sample
- */
-class SampleSearchResultsBuilder extends \Magento\Framework\Service\V1\Data\AbstractSearchResultsBuilder
-{
-    /**
-     * SearchResultsBuilder constructor
-     *
-     * @param
-     */
-    public function __construct(\Magento\Framework\Service\Data\ObjectFactory $objectFactory, \Magento\Framework\Service\Data\AttributeValueBuilder $valueBuilder, \Magento\Framework\Service\Config\MetadataConfig $metadataService, \Magento\Framework\Service\V1\Data\SearchCriteriaBuilder $searchCriteriaBuilder, \Magento\Framework\Service\Code\Generator\SampleBuilder $itemObjectBuilder)
-    {
-        parent::__construct($objectFactory, $valueBuilder, $metadataService, $searchCriteriaBuilder, $itemObjectBuilder);
-    }
-}
diff --git a/dev/tests/unit/testsuite/Magento/Framework/Shell/ComplexParameterTest.php b/dev/tests/unit/testsuite/Magento/Framework/Shell/ComplexParameterTest.php
new file mode 100644
index 00000000000..47462978636
--- /dev/null
+++ b/dev/tests/unit/testsuite/Magento/Framework/Shell/ComplexParameterTest.php
@@ -0,0 +1,79 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright  Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Framework\Shell;
+
+class ComplexParameterTest extends \PHPUnit_Framework_TestCase
+{
+    public function testGetFromArray()
+    {
+        $object = new ComplexParameter('baz');
+        $this->assertSame([], $object->getFromArray(['--foo', '--bar']));
+        $this->assertSame([], $object->getFromArray(['--foo', '--bar', '--baz']));
+        $this->assertSame([1 => ''], $object->getFromArray(['--foo', '--bar', '--baz=1']));
+    }
+
+    /**
+     * @param string $str
+     * @param array $expected
+     * @dataProvider getFromStringDataProvider
+     */
+    public function testGetFromString($str, $expected)
+    {
+        $object = new ComplexParameter('foo');
+        $this->assertSame($expected, $object->getFromString($str));
+    }
+
+    /**
+     * @return array
+     */
+    public function getFromStringDataProvider()
+    {
+        return [
+            ['--not-matching', []],
+            ['--foo', []],
+            ['--foo=', []],
+            ['--foo=1', [1 => '']],
+            ['--foo=bar=1&baz=2', ['bar' => '1', 'baz' => '2']],
+            ['--foo=bar[1]=2&baz[3]=4', ['bar' => [1 => '2'], 'baz' => [3 => '4']]],
+            ['--foo=bar[one]=value1&bar[two]=value2', ['bar' => ['one' => 'value1', 'two' => 'value2']]],
+        ];
+    }
+
+    public function testPattern()
+    {
+        $object = new ComplexParameter('f', '/^-%s=(bar|baz)$/');
+        $this->assertSame([], $object->getFromString('-f=1'));
+        $this->assertSame(['bar' => ''], $object->getFromString('-f=bar'));
+        $this->assertSame(['baz' => ''], $object->getFromString('-f=baz'));
+    }
+
+    public function testMergeFromArgv()
+    {
+        $object = new ComplexParameter('foo');
+        $server = ['argv' => ['--foo=bar=value1', '--nonfoo=value2']];
+        $into = ['baz' => 'value3'];
+        $this->assertSame(['baz' => 'value3', 'bar' => 'value1'], $object->mergeFromArgv($server, $into));
+    }
+}
diff --git a/dev/tests/unit/testsuite/Magento/Framework/ShellTest.php b/dev/tests/unit/testsuite/Magento/Framework/ShellTest.php
index 3157981660e..4d805db8f0a 100644
--- a/dev/tests/unit/testsuite/Magento/Framework/ShellTest.php
+++ b/dev/tests/unit/testsuite/Magento/Framework/ShellTest.php
@@ -127,7 +127,7 @@ class ShellTest extends \PHPUnit_Framework_TestCase
 
     /**
      * @expectedException \Magento\Framework\Exception
-     * @expectedExceptionMessage Command `non_existing_command 2>&1` returned non-zero exit code
+     * @expectedExceptionMessage Command returned non-zero exit code:
      * @expectedExceptionCode 0
      */
     public function testExecuteFailure()
diff --git a/dev/tests/unit/testsuite/Magento/GroupedProduct/Service/V1/Product/Link/Data/ProductLink/ProductEntity/ConverterTest.php b/dev/tests/unit/testsuite/Magento/GroupedProduct/Service/V1/Product/Link/Data/ProductLink/ProductEntity/ConverterTest.php
index 349efdb57d3..511fc1853a5 100644
--- a/dev/tests/unit/testsuite/Magento/GroupedProduct/Service/V1/Product/Link/Data/ProductLink/ProductEntity/ConverterTest.php
+++ b/dev/tests/unit/testsuite/Magento/GroupedProduct/Service/V1/Product/Link/Data/ProductLink/ProductEntity/ConverterTest.php
@@ -25,7 +25,7 @@
 namespace Magento\GroupedProduct\Service\V1\Product\Link\Data\ProductLink\ProductEntity;
 
 use \Magento\Catalog\Service\V1\Product\Link\Data\ProductLink;
-use \Magento\Framework\Service\Data\AttributeValue;
+use \Magento\Framework\Api\AttributeValue;
 
 class ConverterTest extends \PHPUnit_Framework_TestCase
 {
diff --git a/dev/tests/unit/testsuite/Magento/Install/Model/Config/_files/install_wizard.xml b/dev/tests/unit/testsuite/Magento/Install/Model/Config/_files/install_wizard.xml
deleted file mode 100644
index f93d58889dc..00000000000
--- a/dev/tests/unit/testsuite/Magento/Install/Model/Config/_files/install_wizard.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Academic Free License (AFL 3.0)
- * that is bundled with this package in the file LICENSE_AFL.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/afl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
- */
--->
-<install_wizard xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="./install_wizard.xsd">
-    <steps>
-        <step id="begin" controller="wizard" action="begin">
-            <label translate="true">License Agreement</label>
-        </step>
-        <step id="locale" controller="wizard" action="locale">
-            <label translate="true">Localization</label>
-        </step>
-    </steps>
-    <filesystem_prerequisites>
-        <directory alias="etc" recursive="false" existence="true" writable="true" />
-        <directory alias="var" recursive="true" existence="true" writable="true" />
-    </filesystem_prerequisites>
-</install_wizard>
diff --git a/dev/tests/unit/testsuite/Magento/Install/Model/Config/_files/install_wizard_config.php b/dev/tests/unit/testsuite/Magento/Install/Model/Config/_files/install_wizard_config.php
deleted file mode 100644
index b0c458e8101..00000000000
--- a/dev/tests/unit/testsuite/Magento/Install/Model/Config/_files/install_wizard_config.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-return array(
-    'steps' => array(
-        'begin' => array(
-            'name' => 'begin',
-            'controller' => 'wizard',
-            'action' => 'begin',
-            'code' => 'License Agreement'
-        ),
-        'locale' => array('name' => 'locale', 'controller' => 'wizard', 'action' => 'locale', 'code' => 'Localization')
-    ),
-    'filesystem_prerequisites' => array(
-        'writables' => array(
-            'etc' => array('existence' => '1', 'recursive' => '0'),
-            'var' => array('existence' => '1', 'recursive' => '1')
-        ),
-        'notWritables' => array()
-    )
-);
diff --git a/dev/tests/unit/testsuite/Magento/Install/Model/WizardTest.php b/dev/tests/unit/testsuite/Magento/Install/Model/WizardTest.php
deleted file mode 100644
index e1b60b2447e..00000000000
--- a/dev/tests/unit/testsuite/Magento/Install/Model/WizardTest.php
+++ /dev/null
@@ -1,84 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-
-/**
- * Test class for \Magento\Install\Model\Wizard
- */
-namespace Magento\Install\Model;
-
-/**
- * Class WizardTest
- *
- */
-class WizardTest extends \PHPUnit_Framework_TestCase
-{
-    /**
-     * @var \Magento\Install\Model\Config
-     */
-    protected $_configMock;
-
-    /**
-     * @var \Magento\Framework\UrlInterface
-     */
-    protected $_urlBuilderMock;
-
-    /**
-     * @var \Magento\Install\Model\Wizard
-     */
-    protected $_model;
-
-    /**
-     * @var \Magento\TestFramework\Helper\ObjectManager
-     */
-    protected $_objectManager;
-
-    /**
-     * @var \Magento\Framework\App\RequestInterface
-     */
-    protected $_requestMock;
-
-    /**
-     * Set up before test
-     */
-    public function setUp()
-    {
-        $this->_objectManager = new \Magento\TestFramework\Helper\ObjectManager($this);
-        $this->_configMock = $this->getMock('\Magento\Install\Model\Config', array(), array(), '', false);
-        $this->_configMock->expects($this->any())->method('getWizardSteps')->will($this->returnValue(array()));
-        $this->_urlBuilderMock = $this->getMock('\Magento\Framework\UrlInterface', array(), array(), '', false);
-        $this->_requestMock = $this->getMock('\Magento\Framework\App\RequestInterface', array(), array(), '', false);
-        $this->_model = $this->_objectManager->getObject(
-            'Magento\Install\Model\Wizard',
-            array('urlBuilder' => $this->_urlBuilderMock, 'installConfig' => $this->_configMock)
-        );
-    }
-
-    /**
-     * Test get step with empty request
-     */
-    public function testGetStepByRequest()
-    {
-        $this->assertFalse($this->_model->getStepByRequest($this->_requestMock));
-    }
-}
diff --git a/dev/tests/unit/testsuite/Magento/Log/Model/LogTest.php b/dev/tests/unit/testsuite/Magento/Log/Model/LogTest.php
index f16c957f892..f2917050667 100644
--- a/dev/tests/unit/testsuite/Magento/Log/Model/LogTest.php
+++ b/dev/tests/unit/testsuite/Magento/Log/Model/LogTest.php
@@ -57,7 +57,7 @@ class LogTest extends \PHPUnit_Framework_TestCase
     {
         $this->registry = $this->getMock('Magento\Framework\Registry');
         $this->scopeConfig = $this->getMock('Magento\Framework\App\Config\ScopeConfigInterface');
-        $resource = $this->getMockBuilder('Magento\Customer\Model\Resource\Visitor')
+        $resource = $this->getMockBuilder('\Magento\Log\Model\Resource\Log')
             ->setMethods(['clean', 'getIdFieldName'])
             ->disableOriginalConstructor()
             ->getMock();
diff --git a/dev/tests/unit/testsuite/Magento/Paypal/Model/Express/CheckoutTest.php b/dev/tests/unit/testsuite/Magento/Paypal/Model/Express/CheckoutTest.php
index dfe08cdc4e6..ffc1cdedfbb 100644
--- a/dev/tests/unit/testsuite/Magento/Paypal/Model/Express/CheckoutTest.php
+++ b/dev/tests/unit/testsuite/Magento/Paypal/Model/Express/CheckoutTest.php
@@ -164,7 +164,7 @@ class CheckoutTest extends \PHPUnit_Framework_TestCase
 
         $this->customerSessionMock->expects($this->once())
             ->method('regenerateId');
-        
+
         $addressDataBuilderMock = $this->getMockBuilder('\Magento\Customer\Service\V1\Data\AddressBuilder')
             ->disableOriginalConstructor()
             ->getMock();
@@ -190,7 +190,7 @@ class CheckoutTest extends \PHPUnit_Framework_TestCase
         $addressDataBuilderMock->expects($this->any())
             ->method('create')
             ->willReturn($addressDataMock);
-        
+
         $addressMock = $this->getMock('\Magento\Sales\Model\Quote\Address', [], [], '', false);
         $this->quoteMock->expects($this->any())
             ->method('getBillingAddress')
diff --git a/dev/tests/unit/testsuite/Magento/Rss/Controller/Adminhtml/Feed/IndexTest.php b/dev/tests/unit/testsuite/Magento/Rss/Controller/Adminhtml/Feed/IndexTest.php
index 6e94d8bcd69..44701f5f9c6 100644
--- a/dev/tests/unit/testsuite/Magento/Rss/Controller/Adminhtml/Feed/IndexTest.php
+++ b/dev/tests/unit/testsuite/Magento/Rss/Controller/Adminhtml/Feed/IndexTest.php
@@ -75,8 +75,8 @@ class IndexTest extends \PHPUnit_Framework_TestCase
             ->disableOriginalConstructor()->getMock();
 
         $objectManagerHelper = new ObjectManagerHelper($this);
-        $this->controller = $objectManagerHelper->getObject(
-            'Magento\Rss\Controller\Feed\Index',
+        $controllerArguments = $objectManagerHelper->getConstructArguments(
+            'Magento\Rss\Controller\Adminhtml\Feed\Index',
             [
                 'rssManager' => $this->rssManager,
                 'scopeConfig' => $this->scopeConfigInterface,
@@ -85,6 +85,14 @@ class IndexTest extends \PHPUnit_Framework_TestCase
                 'response' => $this->response
             ]
         );
+        $objectManager = $controllerArguments['context']->getObjectManager();
+        $urlInterface = $this->getMock('Magento\Backend\Model\UrlInterface');
+        $objectManager->expects($this->at(0))->method('get')->with('Magento\Backend\Model\UrlInterface')
+            ->will($this->returnValue($urlInterface));
+        $this->controller = $objectManagerHelper->getObject(
+            'Magento\Rss\Controller\Adminhtml\Feed\Index',
+            $controllerArguments
+        );
     }
 
     public function testExecute()
diff --git a/dev/tests/unit/testsuite/Magento/Rss/Controller/Feed/IndexTest.php b/dev/tests/unit/testsuite/Magento/Rss/Controller/Feed/IndexTest.php
index ca27de6c0c3..63eaf1744cd 100644
--- a/dev/tests/unit/testsuite/Magento/Rss/Controller/Feed/IndexTest.php
+++ b/dev/tests/unit/testsuite/Magento/Rss/Controller/Feed/IndexTest.php
@@ -87,6 +87,7 @@ class IndexTest extends \PHPUnit_Framework_TestCase
         $this->scopeConfigInterface->expects($this->once())->method('getValue')->will($this->returnValue(true));
         $dataProvider = $this->getMock('Magento\Framework\App\Rss\DataProviderInterface');
         $dataProvider->expects($this->once())->method('isAllowed')->will($this->returnValue(true));
+        $dataProvider->expects($this->once())->method('isAuthRequired')->will($this->returnValue(false));
 
         $rssModel = $this->getMock('Magento\Rss\Model\Rss', ['setDataProvider', 'createRssXml'], [], '', false);
         $rssModel->expects($this->once())->method('setDataProvider')->will($this->returnSelf());
diff --git a/dev/tests/unit/testsuite/Magento/Sales/Model/Observer/Frontend/Quote/Address/CollectTotalsTest.php b/dev/tests/unit/testsuite/Magento/Sales/Model/Observer/Frontend/Quote/Address/CollectTotalsTest.php
index 75c485174cc..77d2fdf6184 100644
--- a/dev/tests/unit/testsuite/Magento/Sales/Model/Observer/Frontend/Quote/Address/CollectTotalsTest.php
+++ b/dev/tests/unit/testsuite/Magento/Sales/Model/Observer/Frontend/Quote/Address/CollectTotalsTest.php
@@ -165,9 +165,9 @@ class CollectTotalsTest extends \PHPUnit_Framework_TestCase
 
     public function testDispatchWithDisableAutoGroupChange()
     {
-        /** @var \Magento\Framework\Service\Data\AttributeValueBuilder $attributeValueBuilder */
+        /** @var \Magento\Framework\Api\AttributeValueBuilder $attributeValueBuilder */
         $attributeValueBuilder = $this->objectManager
-            ->getObject('Magento\Framework\Service\Data\AttributeValueBuilder');
+            ->getObject('Magento\Framework\Api\AttributeValueBuilder');
         $attributeValueBuilder->setAttributeCode('disable_auto_group_change')->setValue(true);
         $this->customerDataMock->expects(
             $this->exactly(2)
@@ -184,9 +184,9 @@ class CollectTotalsTest extends \PHPUnit_Framework_TestCase
 
     public function testDispatchWithDisableVatValidator()
     {
-        /** @var \Magento\Framework\Service\Data\AttributeValueBuilder $attributeValueBuilder */
+        /** @var \Magento\Framework\Api\AttributeValueBuilder $attributeValueBuilder */
         $attributeValueBuilder = $this->objectManager
-            ->getObject('Magento\Framework\Service\Data\AttributeValueBuilder');
+            ->getObject('Magento\Framework\Api\AttributeValueBuilder');
         $attributeValueBuilder->setAttributeCode('disable_auto_group_change')->setValue(false);
         $this->customerDataMock->expects(
             $this->exactly(2)
@@ -213,9 +213,9 @@ class CollectTotalsTest extends \PHPUnit_Framework_TestCase
 
     public function testDispatchWithCustomerCountryNotInEUAndNotLoggedCustomerInGroup()
     {
-        /** @var \Magento\Framework\Service\Data\AttributeValueBuilder $attributeValueBuilder */
+        /** @var \Magento\Framework\Api\AttributeValueBuilder $attributeValueBuilder */
         $attributeValueBuilder = $this->objectManager
-            ->getObject('Magento\Framework\Service\Data\AttributeValueBuilder');
+            ->getObject('Magento\Framework\Api\AttributeValueBuilder');
         $attributeValueBuilder->setAttributeCode('disable_auto_group_change')->setValue(false);
         /** Preconditions */
         $this->customerDataMock->expects(
@@ -271,9 +271,9 @@ class CollectTotalsTest extends \PHPUnit_Framework_TestCase
 
     public function testDispatchWithDefaultCustomerGroupId()
     {
-        /** @var \Magento\Framework\Service\Data\AttributeValueBuilder $attributeValueBuilder */
+        /** @var \Magento\Framework\Api\AttributeValueBuilder $attributeValueBuilder */
         $attributeValueBuilder = $this->objectManager
-            ->getObject('Magento\Framework\Service\Data\AttributeValueBuilder');
+            ->getObject('Magento\Framework\Api\AttributeValueBuilder');
         $attributeValueBuilder->setAttributeCode('disable_auto_group_change')->setValue(false);
         /** Preconditions */
         $this->customerDataMock->expects(
@@ -351,9 +351,9 @@ class CollectTotalsTest extends \PHPUnit_Framework_TestCase
 
     public function testDispatchWithCustomerCountryInEU()
     {
-        /** @var \Magento\Framework\Service\Data\AttributeValueBuilder $attributeValueBuilder */
+        /** @var \Magento\Framework\Api\AttributeValueBuilder $attributeValueBuilder */
         $attributeValueBuilder = $this->objectManager
-            ->getObject('Magento\Framework\Service\Data\AttributeValueBuilder');
+            ->getObject('Magento\Framework\Api\AttributeValueBuilder');
         $attributeValueBuilder->setAttributeCode('disable_auto_group_change')->setValue(false);
         /** Preconditions */
         $this->customerDataMock->expects($this->exactly(2))
diff --git a/dev/tests/unit/testsuite/Magento/Sales/Model/Order/Payment/TransactionRepositoryTest.php b/dev/tests/unit/testsuite/Magento/Sales/Model/Order/Payment/TransactionRepositoryTest.php
index d7cfd952ce4..ee180ca3893 100644
--- a/dev/tests/unit/testsuite/Magento/Sales/Model/Order/Payment/TransactionRepositoryTest.php
+++ b/dev/tests/unit/testsuite/Magento/Sales/Model/Order/Payment/TransactionRepositoryTest.php
@@ -45,12 +45,12 @@ class TransactionRepositoryTest extends \PHPUnit_Framework_TestCase
     protected $transactionCollectionFactory;
 
     /**
-     * @var \Magento\Framework\Service\V1\Data\FilterBuilder|\PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\Api\FilterBuilder|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $filterBuilder;
 
     /**
-     * @var \Magento\Framework\Service\V1\Data\SearchCriteriaBuilder|\PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\Api\SearchCriteriaBuilder|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $searchCriteriaBuilder;
 
@@ -70,9 +70,9 @@ class TransactionRepositoryTest extends \PHPUnit_Framework_TestCase
             '',
             false
         );
-        $this->filterBuilder = $this->getMock('Magento\Framework\Service\V1\Data\FilterBuilder', [], [], '', false);
+        $this->filterBuilder = $this->getMock('Magento\Framework\Api\FilterBuilder', [], [], '', false);
         $this->searchCriteriaBuilder = $this->getMock(
-            'Magento\Framework\Service\V1\Data\SearchCriteriaBuilder',
+            'Magento\Framework\Api\SearchCriteriaBuilder',
             [],
             [],
             '',
@@ -106,7 +106,7 @@ class TransactionRepositoryTest extends \PHPUnit_Framework_TestCase
     public function testGet($id, array $collectionIds, $conditionType)
     {
         $filter = $this->getMock(
-            'Magento\Framework\Service\V1\Data\Filter',
+            'Magento\Framework\Api\Filter',
             ['getConditionType', 'getField', 'getValue'],
             [],
             '',
@@ -119,11 +119,11 @@ class TransactionRepositoryTest extends \PHPUnit_Framework_TestCase
         $this->filterBuilder->expects($this->once())->method('setConditionType')->with('eq')->willReturnSelf();
         $this->filterBuilder->expects($this->once())->method('create')->willReturn($filter);
 
-        $filterGroup = $this->getMock('Magento\Framework\Service\V1\Data\Search\FilterGroup', [], [], '', false);
+        $filterGroup = $this->getMock('Magento\Framework\Api\Search\FilterGroup', [], [], '', false);
         $filterGroup->expects($this->any())
             ->method('getFilters')
             ->willReturn($filter);
-        $searchCriteria = $this->getMock('Magento\Framework\Service\V1\Data\SearchCriteria', [], [], '', false);
+        $searchCriteria = $this->getMock('Magento\Framework\Api\SearchCriteria', [], [], '', false);
         $searchCriteria->expects($this->any())
             ->method('getFilterGroups')
             ->willReturn([$filterGroup]);
@@ -150,9 +150,9 @@ class TransactionRepositoryTest extends \PHPUnit_Framework_TestCase
         $transactionModelMock->expects($this->any())->method('getId')->will($this->returnValue($id));
         $collection = $this->prepareCollection($transactionModelMock, $collectionIds);
 
-        $searchCriteriaMock = $this->getMock('Magento\Framework\Service\V1\Data\SearchCriteria', [], [], '', false);
-        $filterGroup = $this->getMock('Magento\Framework\Service\V1\Data\Search\FilterGroup', [], [], '', false);
-        $filter = $this->getMock('Magento\Framework\Service\V1\Data\Filter', [], [], '', false);
+        $searchCriteriaMock = $this->getMock('Magento\Framework\Api\SearchCriteria', [], [], '', false);
+        $filterGroup = $this->getMock('Magento\Framework\Api\Search\FilterGroup', [], [], '', false);
+        $filter = $this->getMock('Magento\Framework\Api\Filter', [], [], '', false);
 
         $searchCriteriaMock->expects($this->once())->method('getFilterGroups')->will(
             $this->returnValue([$filterGroup])
diff --git a/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Action/CreditmemoCommentsListTest.php b/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Action/CreditmemoCommentsListTest.php
index 01b7278f669..55c3db8149b 100644
--- a/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Action/CreditmemoCommentsListTest.php
+++ b/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Action/CreditmemoCommentsListTest.php
@@ -44,12 +44,12 @@ class CreditmemoCommentsListTest extends \PHPUnit_Framework_TestCase
     protected $commentMapperMock;
 
     /**
-     * @var \Magento\Framework\Service\V1\Data\SearchCriteriaBuilder|\PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\Api\SearchCriteriaBuilder|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $criteriaBuilderMock;
 
     /**
-     * @var \Magento\Framework\Service\V1\Data\FilterBuilder|\PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\Api\FilterBuilder|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $filterBuilderMock;
 
@@ -69,7 +69,7 @@ class CreditmemoCommentsListTest extends \PHPUnit_Framework_TestCase
     protected $dataObjectMock;
 
     /**
-     * @var \Magento\Framework\Service\V1\Data\SearchCriteria|\PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\Api\SearchCriteria|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $searchCriteriaMock;
 
@@ -90,14 +90,14 @@ class CreditmemoCommentsListTest extends \PHPUnit_Framework_TestCase
             false
         );
         $this->criteriaBuilderMock = $this->getMock(
-            'Magento\Framework\Service\V1\Data\SearchCriteriaBuilder',
+            'Magento\Framework\Api\SearchCriteriaBuilder',
             ['create', 'addFilter'],
             [],
             '',
             false
         );
         $this->filterBuilderMock = $this->getMock(
-            'Magento\Framework\Service\V1\Data\FilterBuilder',
+            'Magento\Framework\Api\FilterBuilder',
             ['setField', 'setValue', 'create'],
             [],
             '',
@@ -125,7 +125,7 @@ class CreditmemoCommentsListTest extends \PHPUnit_Framework_TestCase
             false
         );
         $this->searchCriteriaMock = $this->getMock(
-            'Magento\Framework\Service\V1\Data\SearchCriteria',
+            'Magento\Framework\Api\SearchCriteria',
             [],
             [],
             '',
diff --git a/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Action/CreditmemoListTest.php b/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Action/CreditmemoListTest.php
index 43e7690f2ba..f8dad4e82fa 100644
--- a/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Action/CreditmemoListTest.php
+++ b/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Action/CreditmemoListTest.php
@@ -49,7 +49,7 @@ class CreditmemoListTest extends \PHPUnit_Framework_TestCase
     protected $searchResultsBuilderMock;
 
     /**
-     * @var \Magento\Framework\Service\V1\Data\SearchCriteria|\PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\Api\SearchCriteria|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $searchCriteriaMock;
 
@@ -92,7 +92,7 @@ class CreditmemoListTest extends \PHPUnit_Framework_TestCase
             false
         );
         $this->searchCriteriaMock = $this->getMock(
-            'Magento\Framework\Service\V1\Data\SearchCriteria',
+            'Magento\Framework\Api\SearchCriteria',
             [],
             [],
             '',
diff --git a/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Action/InvoiceCommentsListTest.php b/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Action/InvoiceCommentsListTest.php
index 5636a851eba..16f1b03fcbb 100644
--- a/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Action/InvoiceCommentsListTest.php
+++ b/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Action/InvoiceCommentsListTest.php
@@ -44,12 +44,12 @@ class InvoiceCommentsListTest extends \PHPUnit_Framework_TestCase
     protected $commentMapperMock;
 
     /**
-     * @var \Magento\Framework\Service\V1\Data\SearchCriteriaBuilder|\PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\Api\SearchCriteriaBuilder|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $criteriaBuilderMock;
 
     /**
-     * @var \Magento\Framework\Service\V1\Data\FilterBuilder|\PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\Api\FilterBuilder|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $filterBuilderMock;
 
@@ -69,7 +69,7 @@ class InvoiceCommentsListTest extends \PHPUnit_Framework_TestCase
     protected $dataObjectMock;
 
     /**
-     * @var \Magento\Framework\Service\V1\Data\SearchCriteria|\PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\Api\SearchCriteria|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $searchCriteriaMock;
 
@@ -90,14 +90,14 @@ class InvoiceCommentsListTest extends \PHPUnit_Framework_TestCase
             false
         );
         $this->criteriaBuilderMock = $this->getMock(
-            'Magento\Framework\Service\V1\Data\SearchCriteriaBuilder',
+            'Magento\Framework\Api\SearchCriteriaBuilder',
             ['create', 'addFilter'],
             [],
             '',
             false
         );
         $this->filterBuilderMock = $this->getMock(
-            'Magento\Framework\Service\V1\Data\FilterBuilder',
+            'Magento\Framework\Api\FilterBuilder',
             ['setField', 'setValue', 'create'],
             [],
             '',
@@ -125,7 +125,7 @@ class InvoiceCommentsListTest extends \PHPUnit_Framework_TestCase
             false
         );
         $this->searchCriteriaMock = $this->getMock(
-            'Magento\Framework\Service\V1\Data\SearchCriteria',
+            'Magento\Framework\Api\SearchCriteria',
             [],
             [],
             '',
diff --git a/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Action/InvoiceListTest.php b/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Action/InvoiceListTest.php
index c254aca1021..b405a81d6e5 100644
--- a/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Action/InvoiceListTest.php
+++ b/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Action/InvoiceListTest.php
@@ -49,7 +49,7 @@ class InvoiceListTest extends \PHPUnit_Framework_TestCase
     protected $searchResultsBuilderMock;
 
     /**
-     * @var \Magento\Framework\Service\V1\Data\SearchCriteria|\PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\Api\SearchCriteria|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $searchCriteriaMock;
 
@@ -90,7 +90,7 @@ class InvoiceListTest extends \PHPUnit_Framework_TestCase
             false
         );
         $this->searchCriteriaMock = $this->getMock(
-            'Magento\Framework\Service\V1\Data\SearchCriteria',
+            'Magento\Framework\Api\SearchCriteria',
             [],
             [],
             '',
diff --git a/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Action/OrderCommentsListTest.php b/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Action/OrderCommentsListTest.php
index ca486146b7e..0622a80b234 100644
--- a/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Action/OrderCommentsListTest.php
+++ b/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Action/OrderCommentsListTest.php
@@ -44,12 +44,12 @@ class OrderCommentsListTest extends \PHPUnit_Framework_TestCase
     protected $historyMapperMock;
 
     /**
-     * @var \Magento\Framework\Service\V1\Data\SearchCriteriaBuilder|\PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\Api\SearchCriteriaBuilder|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $criteriaBuilderMock;
 
     /**
-     * @var \Magento\Framework\Service\V1\Data\FilterBuilder|\PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\Api\FilterBuilder|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $filterBuilderMock;
 
@@ -69,7 +69,7 @@ class OrderCommentsListTest extends \PHPUnit_Framework_TestCase
     protected $dataObjectMock;
 
     /**
-     * @var \Magento\Framework\Service\V1\Data\SearchCriteria|\PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\Api\SearchCriteria|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $searchCriteriaMock;
 
@@ -90,14 +90,14 @@ class OrderCommentsListTest extends \PHPUnit_Framework_TestCase
             false
         );
         $this->criteriaBuilderMock = $this->getMock(
-            'Magento\Framework\Service\V1\Data\SearchCriteriaBuilder',
+            'Magento\Framework\Api\SearchCriteriaBuilder',
             ['create', 'addFilter'],
             [],
             '',
             false
         );
         $this->filterBuilderMock = $this->getMock(
-            'Magento\Framework\Service\V1\Data\FilterBuilder',
+            'Magento\Framework\Api\FilterBuilder',
             ['setField', 'setValue', 'create'],
             [],
             '',
@@ -125,7 +125,7 @@ class OrderCommentsListTest extends \PHPUnit_Framework_TestCase
             false
         );
         $this->searchCriteriaMock = $this->getMock(
-            'Magento\Framework\Service\V1\Data\SearchCriteria',
+            'Magento\Framework\Api\SearchCriteria',
             [],
             [],
             '',
diff --git a/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Action/OrderGetTest.php b/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Action/OrderGetTest.php
index 44deab926bc..56c2a1a0932 100644
--- a/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Action/OrderGetTest.php
+++ b/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Action/OrderGetTest.php
@@ -80,7 +80,7 @@ class OrderGetTest extends \PHPUnit_Framework_TestCase
             false
         );
         $this->searchCriteriaMock = $this->getMock(
-            'Magento\Framework\Service\V1\Data\SearchCriteria',
+            'Magento\Framework\Api\SearchCriteria',
             [],
             [],
             '',
diff --git a/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Action/OrderListTest.php b/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Action/OrderListTest.php
index 074a9612f86..54d7626697f 100644
--- a/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Action/OrderListTest.php
+++ b/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Action/OrderListTest.php
@@ -49,7 +49,7 @@ class OrderListTest extends \PHPUnit_Framework_TestCase
     protected $searchResultsBuilderMock;
 
     /**
-     * @var \Magento\Framework\Service\V1\Data\SearchCriteria|\PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\Api\SearchCriteria|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $searchCriteriaMock;
 
@@ -90,7 +90,7 @@ class OrderListTest extends \PHPUnit_Framework_TestCase
             false
         );
         $this->searchCriteriaMock = $this->getMock(
-            'Magento\Framework\Service\V1\Data\SearchCriteria',
+            'Magento\Framework\Api\SearchCriteria',
             [],
             [],
             '',
diff --git a/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Action/ShipmentCommentsListTest.php b/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Action/ShipmentCommentsListTest.php
index 798e6bf4a00..27c92c3ca81 100644
--- a/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Action/ShipmentCommentsListTest.php
+++ b/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Action/ShipmentCommentsListTest.php
@@ -44,12 +44,12 @@ class ShipmentCommentsListTest extends \PHPUnit_Framework_TestCase
     protected $commentMapperMock;
 
     /**
-     * @var \Magento\Framework\Service\V1\Data\SearchCriteriaBuilder|\PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\Api\SearchCriteriaBuilder|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $criteriaBuilderMock;
 
     /**
-     * @var \Magento\Framework\Service\V1\Data\FilterBuilder|\PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\Api\FilterBuilder|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $filterBuilderMock;
 
@@ -69,7 +69,7 @@ class ShipmentCommentsListTest extends \PHPUnit_Framework_TestCase
     protected $dataObjectMock;
 
     /**
-     * @var \Magento\Framework\Service\V1\Data\SearchCriteria|\PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\Api\SearchCriteria|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $searchCriteriaMock;
 
@@ -90,14 +90,14 @@ class ShipmentCommentsListTest extends \PHPUnit_Framework_TestCase
             false
         );
         $this->criteriaBuilderMock = $this->getMock(
-            'Magento\Framework\Service\V1\Data\SearchCriteriaBuilder',
+            'Magento\Framework\Api\SearchCriteriaBuilder',
             ['create', 'addFilter'],
             [],
             '',
             false
         );
         $this->filterBuilderMock = $this->getMock(
-            'Magento\Framework\Service\V1\Data\FilterBuilder',
+            'Magento\Framework\Api\FilterBuilder',
             ['setField', 'setValue', 'create'],
             [],
             '',
@@ -125,7 +125,7 @@ class ShipmentCommentsListTest extends \PHPUnit_Framework_TestCase
             false
         );
         $this->searchCriteriaMock = $this->getMock(
-            'Magento\Framework\Service\V1\Data\SearchCriteria',
+            'Magento\Framework\Api\SearchCriteria',
             [],
             [],
             '',
diff --git a/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Action/ShipmentListTest.php b/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Action/ShipmentListTest.php
index ffff77e2ffe..0e2b8834375 100644
--- a/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Action/ShipmentListTest.php
+++ b/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Action/ShipmentListTest.php
@@ -49,7 +49,7 @@ class ShipmentListTest extends \PHPUnit_Framework_TestCase
     protected $searchResultsBuilderMock;
 
     /**
-     * @var \Magento\Framework\Service\V1\Data\SearchCriteria|\PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\Api\SearchCriteria|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $searchCriteriaMock;
 
@@ -90,7 +90,7 @@ class ShipmentListTest extends \PHPUnit_Framework_TestCase
             false
         );
         $this->searchCriteriaMock = $this->getMock(
-            'Magento\Framework\Service\V1\Data\SearchCriteria',
+            'Magento\Framework\Api\SearchCriteria',
             [],
             [],
             '',
diff --git a/dev/tests/unit/testsuite/Magento/Sales/Service/V1/CreditmemoReadTest.php b/dev/tests/unit/testsuite/Magento/Sales/Service/V1/CreditmemoReadTest.php
index 7dc3c992749..27b63c3b26b 100644
--- a/dev/tests/unit/testsuite/Magento/Sales/Service/V1/CreditmemoReadTest.php
+++ b/dev/tests/unit/testsuite/Magento/Sales/Service/V1/CreditmemoReadTest.php
@@ -99,7 +99,7 @@ class CreditmemoReadTest extends \PHPUnit_Framework_TestCase
      */
     public function testSearch()
     {
-        $searchCriteria = $this->getMock('Magento\Framework\Service\V1\Data\SearchCriteria', [], [], '', false);
+        $searchCriteria = $this->getMock('Magento\Framework\Api\SearchCriteria', [], [], '', false);
         $this->creditmemoListMock->expects($this->once())
             ->method('invoke')
             ->with($searchCriteria)
diff --git a/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Data/CommentTest.php b/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Data/CommentTest.php
index 22aba6f29d3..8708817fe92 100644
--- a/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Data/CommentTest.php
+++ b/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Data/CommentTest.php
@@ -28,7 +28,7 @@ class CommentTest extends \PHPUnit_Framework_TestCase
     public function testGetComment()
     {
         $data = ['comment' => 'test_value_comment'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -44,7 +44,7 @@ class CommentTest extends \PHPUnit_Framework_TestCase
     public function testGetCreatedAt()
     {
         $data = ['created_at' => 'test_value_created_at'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -60,7 +60,7 @@ class CommentTest extends \PHPUnit_Framework_TestCase
     public function testGetEntityId()
     {
         $data = ['entity_id' => 'test_value_entity_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -76,7 +76,7 @@ class CommentTest extends \PHPUnit_Framework_TestCase
     public function testGetIsCustomerNotified()
     {
         $data = ['is_customer_notified' => 'test_value_is_customer_notified'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -92,7 +92,7 @@ class CommentTest extends \PHPUnit_Framework_TestCase
     public function testGetIsVisibleOnFront()
     {
         $data = ['is_visible_on_front' => 'test_value_is_visible_on_front'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -108,7 +108,7 @@ class CommentTest extends \PHPUnit_Framework_TestCase
     public function testGetParentId()
     {
         $data = ['parent_id' => 'test_value_parent_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
diff --git a/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Data/CreditmemoItemTest.php b/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Data/CreditmemoItemTest.php
index d97dce25910..50dc20e0298 100644
--- a/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Data/CreditmemoItemTest.php
+++ b/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Data/CreditmemoItemTest.php
@@ -28,7 +28,7 @@ class CreditmemoItemTest extends \PHPUnit_Framework_TestCase
     public function testGetAdditionalData()
     {
         $data = ['additional_data' => 'test_value_additional_data'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -44,7 +44,7 @@ class CreditmemoItemTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseCost()
     {
         $data = ['base_cost' => 'test_value_base_cost'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -60,7 +60,7 @@ class CreditmemoItemTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseDiscountAmount()
     {
         $data = ['base_discount_amount' => 'test_value_base_discount_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -76,7 +76,7 @@ class CreditmemoItemTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseHiddenTaxAmount()
     {
         $data = ['base_hidden_tax_amount' => 'test_value_base_hidden_tax_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -92,7 +92,7 @@ class CreditmemoItemTest extends \PHPUnit_Framework_TestCase
     public function testGetBasePrice()
     {
         $data = ['base_price' => 'test_value_base_price'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -108,7 +108,7 @@ class CreditmemoItemTest extends \PHPUnit_Framework_TestCase
     public function testGetBasePriceInclTax()
     {
         $data = ['base_price_incl_tax' => 'test_value_base_price_incl_tax'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -124,7 +124,7 @@ class CreditmemoItemTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseRowTotal()
     {
         $data = ['base_row_total' => 'test_value_base_row_total'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -140,7 +140,7 @@ class CreditmemoItemTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseRowTotalInclTax()
     {
         $data = ['base_row_total_incl_tax' => 'test_value_base_row_total_incl_tax'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -156,7 +156,7 @@ class CreditmemoItemTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseTaxAmount()
     {
         $data = ['base_tax_amount' => 'test_value_base_tax_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -172,7 +172,7 @@ class CreditmemoItemTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseWeeeTaxAppliedAmount()
     {
         $data = ['base_weee_tax_applied_amount' => 'test_value_base_weee_tax_applied_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -188,7 +188,7 @@ class CreditmemoItemTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseWeeeTaxAppliedRowAmnt()
     {
         $data = ['base_weee_tax_applied_row_amnt' => 'test_value_base_weee_tax_applied_row_amnt'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -204,7 +204,7 @@ class CreditmemoItemTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseWeeeTaxDisposition()
     {
         $data = ['base_weee_tax_disposition' => 'test_value_base_weee_tax_disposition'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -220,7 +220,7 @@ class CreditmemoItemTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseWeeeTaxRowDisposition()
     {
         $data = ['base_weee_tax_row_disposition' => 'test_value_base_weee_tax_row_disposition'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -236,7 +236,7 @@ class CreditmemoItemTest extends \PHPUnit_Framework_TestCase
     public function testGetDescription()
     {
         $data = ['description' => 'test_value_description'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -252,7 +252,7 @@ class CreditmemoItemTest extends \PHPUnit_Framework_TestCase
     public function testGetDiscountAmount()
     {
         $data = ['discount_amount' => 'test_value_discount_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -268,7 +268,7 @@ class CreditmemoItemTest extends \PHPUnit_Framework_TestCase
     public function testGetEntityId()
     {
         $data = ['entity_id' => 'test_value_entity_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -284,7 +284,7 @@ class CreditmemoItemTest extends \PHPUnit_Framework_TestCase
     public function testGetHiddenTaxAmount()
     {
         $data = ['hidden_tax_amount' => 'test_value_hidden_tax_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -300,7 +300,7 @@ class CreditmemoItemTest extends \PHPUnit_Framework_TestCase
     public function testGetName()
     {
         $data = ['name' => 'test_value_name'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -316,7 +316,7 @@ class CreditmemoItemTest extends \PHPUnit_Framework_TestCase
     public function testGetOrderItemId()
     {
         $data = ['order_item_id' => 'test_value_order_item_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -332,7 +332,7 @@ class CreditmemoItemTest extends \PHPUnit_Framework_TestCase
     public function testGetParentId()
     {
         $data = ['parent_id' => 'test_value_parent_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -348,7 +348,7 @@ class CreditmemoItemTest extends \PHPUnit_Framework_TestCase
     public function testGetPrice()
     {
         $data = ['price' => 'test_value_price'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -364,7 +364,7 @@ class CreditmemoItemTest extends \PHPUnit_Framework_TestCase
     public function testGetPriceInclTax()
     {
         $data = ['price_incl_tax' => 'test_value_price_incl_tax'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -380,7 +380,7 @@ class CreditmemoItemTest extends \PHPUnit_Framework_TestCase
     public function testGetProductId()
     {
         $data = ['product_id' => 'test_value_product_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -396,7 +396,7 @@ class CreditmemoItemTest extends \PHPUnit_Framework_TestCase
     public function testGetQty()
     {
         $data = ['qty' => 'test_value_qty'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -412,7 +412,7 @@ class CreditmemoItemTest extends \PHPUnit_Framework_TestCase
     public function testGetRowTotal()
     {
         $data = ['row_total' => 'test_value_row_total'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -428,7 +428,7 @@ class CreditmemoItemTest extends \PHPUnit_Framework_TestCase
     public function testGetRowTotalInclTax()
     {
         $data = ['row_total_incl_tax' => 'test_value_row_total_incl_tax'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -444,7 +444,7 @@ class CreditmemoItemTest extends \PHPUnit_Framework_TestCase
     public function testGetSku()
     {
         $data = ['sku' => 'test_value_sku'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -460,7 +460,7 @@ class CreditmemoItemTest extends \PHPUnit_Framework_TestCase
     public function testGetTaxAmount()
     {
         $data = ['tax_amount' => 'test_value_tax_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -476,7 +476,7 @@ class CreditmemoItemTest extends \PHPUnit_Framework_TestCase
     public function testGetWeeeTaxApplied()
     {
         $data = ['weee_tax_applied' => 'test_value_weee_tax_applied'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -492,7 +492,7 @@ class CreditmemoItemTest extends \PHPUnit_Framework_TestCase
     public function testGetWeeeTaxAppliedAmount()
     {
         $data = ['weee_tax_applied_amount' => 'test_value_weee_tax_applied_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -508,7 +508,7 @@ class CreditmemoItemTest extends \PHPUnit_Framework_TestCase
     public function testGetWeeeTaxAppliedRowAmount()
     {
         $data = ['weee_tax_applied_row_amount' => 'test_value_weee_tax_applied_row_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -524,7 +524,7 @@ class CreditmemoItemTest extends \PHPUnit_Framework_TestCase
     public function testGetWeeeTaxDisposition()
     {
         $data = ['weee_tax_disposition' => 'test_value_weee_tax_disposition'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -540,7 +540,7 @@ class CreditmemoItemTest extends \PHPUnit_Framework_TestCase
     public function testGetWeeeTaxRowDisposition()
     {
         $data = ['weee_tax_row_disposition' => 'test_value_weee_tax_row_disposition'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
diff --git a/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Data/CreditmemoTest.php b/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Data/CreditmemoTest.php
index 6bff45d0ebb..f034b4e39e0 100644
--- a/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Data/CreditmemoTest.php
+++ b/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Data/CreditmemoTest.php
@@ -34,7 +34,7 @@ class CreditmemoTest extends \PHPUnit_Framework_TestCase
     public function testGetAdjustment()
     {
         $data = ['adjustment' => 'test_value_adjustment'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -50,7 +50,7 @@ class CreditmemoTest extends \PHPUnit_Framework_TestCase
     public function testGetAdjustmentNegative()
     {
         $data = ['adjustment_negative' => 'test_value_adjustment_negative'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -66,7 +66,7 @@ class CreditmemoTest extends \PHPUnit_Framework_TestCase
     public function testGetAdjustmentPositive()
     {
         $data = ['adjustment_positive' => 'test_value_adjustment_positive'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -82,7 +82,7 @@ class CreditmemoTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseAdjustment()
     {
         $data = ['base_adjustment' => 'test_value_base_adjustment'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -98,7 +98,7 @@ class CreditmemoTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseAdjustmentNegative()
     {
         $data = ['base_adjustment_negative' => 'test_value_base_adjustment_negative'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -114,7 +114,7 @@ class CreditmemoTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseAdjustmentPositive()
     {
         $data = ['base_adjustment_positive' => 'test_value_base_adjustment_positive'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -130,7 +130,7 @@ class CreditmemoTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseCurrencyCode()
     {
         $data = ['base_currency_code' => 'test_value_base_currency_code'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -146,7 +146,7 @@ class CreditmemoTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseDiscountAmount()
     {
         $data = ['base_discount_amount' => 'test_value_base_discount_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -162,7 +162,7 @@ class CreditmemoTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseGrandTotal()
     {
         $data = ['base_grand_total' => 'test_value_base_grand_total'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -178,7 +178,7 @@ class CreditmemoTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseHiddenTaxAmount()
     {
         $data = ['base_hidden_tax_amount' => 'test_value_base_hidden_tax_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -194,7 +194,7 @@ class CreditmemoTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseShippingAmount()
     {
         $data = ['base_shipping_amount' => 'test_value_base_shipping_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -210,7 +210,7 @@ class CreditmemoTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseShippingHiddenTaxAmnt()
     {
         $data = ['base_shipping_hidden_tax_amnt' => 'test_value_base_shipping_hidden_tax_amnt'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -226,7 +226,7 @@ class CreditmemoTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseShippingInclTax()
     {
         $data = ['base_shipping_incl_tax' => 'test_value_base_shipping_incl_tax'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -242,7 +242,7 @@ class CreditmemoTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseShippingTaxAmount()
     {
         $data = ['base_shipping_tax_amount' => 'test_value_base_shipping_tax_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -258,7 +258,7 @@ class CreditmemoTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseSubtotal()
     {
         $data = ['base_subtotal' => 'test_value_base_subtotal'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -274,7 +274,7 @@ class CreditmemoTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseSubtotalInclTax()
     {
         $data = ['base_subtotal_incl_tax' => 'test_value_base_subtotal_incl_tax'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -290,7 +290,7 @@ class CreditmemoTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseTaxAmount()
     {
         $data = ['base_tax_amount' => 'test_value_base_tax_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -306,7 +306,7 @@ class CreditmemoTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseToGlobalRate()
     {
         $data = ['base_to_global_rate' => 'test_value_base_to_global_rate'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -322,7 +322,7 @@ class CreditmemoTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseToOrderRate()
     {
         $data = ['base_to_order_rate' => 'test_value_base_to_order_rate'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -338,7 +338,7 @@ class CreditmemoTest extends \PHPUnit_Framework_TestCase
     public function testGetBillingAddressId()
     {
         $data = ['billing_address_id' => 'test_value_billing_address_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -354,7 +354,7 @@ class CreditmemoTest extends \PHPUnit_Framework_TestCase
     public function testGetCreatedAt()
     {
         $data = ['created_at' => 'test_value_created_at'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -370,7 +370,7 @@ class CreditmemoTest extends \PHPUnit_Framework_TestCase
     public function testGetCreditmemoStatus()
     {
         $data = ['creditmemo_status' => 'test_value_creditmemo_status'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -386,7 +386,7 @@ class CreditmemoTest extends \PHPUnit_Framework_TestCase
     public function testGetDiscountAmount()
     {
         $data = ['discount_amount' => 'test_value_discount_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -402,7 +402,7 @@ class CreditmemoTest extends \PHPUnit_Framework_TestCase
     public function testGetDiscountDescription()
     {
         $data = ['discount_description' => 'test_value_discount_description'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -418,7 +418,7 @@ class CreditmemoTest extends \PHPUnit_Framework_TestCase
     public function testGetEmailSent()
     {
         $data = ['email_sent' => 'test_value_email_sent'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -434,7 +434,7 @@ class CreditmemoTest extends \PHPUnit_Framework_TestCase
     public function testGetEntityId()
     {
         $data = ['entity_id' => 'test_value_entity_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -450,7 +450,7 @@ class CreditmemoTest extends \PHPUnit_Framework_TestCase
     public function testGetGlobalCurrencyCode()
     {
         $data = ['global_currency_code' => 'test_value_global_currency_code'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -466,7 +466,7 @@ class CreditmemoTest extends \PHPUnit_Framework_TestCase
     public function testGetGrandTotal()
     {
         $data = ['grand_total' => 'test_value_grand_total'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -482,7 +482,7 @@ class CreditmemoTest extends \PHPUnit_Framework_TestCase
     public function testGetHiddenTaxAmount()
     {
         $data = ['hidden_tax_amount' => 'test_value_hidden_tax_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -498,7 +498,7 @@ class CreditmemoTest extends \PHPUnit_Framework_TestCase
     public function testGetIncrementId()
     {
         $data = ['increment_id' => 'test_value_increment_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -514,7 +514,7 @@ class CreditmemoTest extends \PHPUnit_Framework_TestCase
     public function testGetInvoiceId()
     {
         $data = ['invoice_id' => 'test_value_invoice_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -530,7 +530,7 @@ class CreditmemoTest extends \PHPUnit_Framework_TestCase
     public function testGetOrderCurrencyCode()
     {
         $data = ['order_currency_code' => 'test_value_order_currency_code'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -546,7 +546,7 @@ class CreditmemoTest extends \PHPUnit_Framework_TestCase
     public function testGetOrderId()
     {
         $data = ['order_id' => 'test_value_order_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -562,7 +562,7 @@ class CreditmemoTest extends \PHPUnit_Framework_TestCase
     public function testGetShippingAddressId()
     {
         $data = ['shipping_address_id' => 'test_value_shipping_address_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -578,7 +578,7 @@ class CreditmemoTest extends \PHPUnit_Framework_TestCase
     public function testGetShippingAmount()
     {
         $data = ['shipping_amount' => 'test_value_shipping_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -594,7 +594,7 @@ class CreditmemoTest extends \PHPUnit_Framework_TestCase
     public function testGetShippingHiddenTaxAmount()
     {
         $data = ['shipping_hidden_tax_amount' => 'test_value_shipping_hidden_tax_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -610,7 +610,7 @@ class CreditmemoTest extends \PHPUnit_Framework_TestCase
     public function testGetShippingInclTax()
     {
         $data = ['shipping_incl_tax' => 'test_value_shipping_incl_tax'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -626,7 +626,7 @@ class CreditmemoTest extends \PHPUnit_Framework_TestCase
     public function testGetShippingTaxAmount()
     {
         $data = ['shipping_tax_amount' => 'test_value_shipping_tax_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -642,7 +642,7 @@ class CreditmemoTest extends \PHPUnit_Framework_TestCase
     public function testGetState()
     {
         $data = ['state' => 'test_value_state'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -658,7 +658,7 @@ class CreditmemoTest extends \PHPUnit_Framework_TestCase
     public function testGetStoreCurrencyCode()
     {
         $data = ['store_currency_code' => 'test_value_store_currency_code'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -674,7 +674,7 @@ class CreditmemoTest extends \PHPUnit_Framework_TestCase
     public function testGetStoreId()
     {
         $data = ['store_id' => 'test_value_store_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -690,7 +690,7 @@ class CreditmemoTest extends \PHPUnit_Framework_TestCase
     public function testGetStoreToBaseRate()
     {
         $data = ['store_to_base_rate' => 'test_value_store_to_base_rate'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -706,7 +706,7 @@ class CreditmemoTest extends \PHPUnit_Framework_TestCase
     public function testGetStoreToOrderRate()
     {
         $data = ['store_to_order_rate' => 'test_value_store_to_order_rate'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -722,7 +722,7 @@ class CreditmemoTest extends \PHPUnit_Framework_TestCase
     public function testGetSubtotal()
     {
         $data = ['subtotal' => 'test_value_subtotal'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -738,7 +738,7 @@ class CreditmemoTest extends \PHPUnit_Framework_TestCase
     public function testGetSubtotalInclTax()
     {
         $data = ['subtotal_incl_tax' => 'test_value_subtotal_incl_tax'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -754,7 +754,7 @@ class CreditmemoTest extends \PHPUnit_Framework_TestCase
     public function testGetTaxAmount()
     {
         $data = ['tax_amount' => 'test_value_tax_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -770,7 +770,7 @@ class CreditmemoTest extends \PHPUnit_Framework_TestCase
     public function testGetTransactionId()
     {
         $data = ['transaction_id' => 'test_value_transaction_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -786,7 +786,7 @@ class CreditmemoTest extends \PHPUnit_Framework_TestCase
     public function testGetUpdatedAt()
     {
         $data = ['updated_at' => 'test_value_updated_at'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -802,7 +802,7 @@ class CreditmemoTest extends \PHPUnit_Framework_TestCase
     public function testGetItems()
     {
         $data = ['items' => 'test_value_items'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
diff --git a/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Data/InvoiceItemTest.php b/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Data/InvoiceItemTest.php
index e2a6a614942..98bd2fc7d3e 100644
--- a/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Data/InvoiceItemTest.php
+++ b/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Data/InvoiceItemTest.php
@@ -28,7 +28,7 @@ class InvoiceItemTest extends \PHPUnit_Framework_TestCase
     public function testGetAdditionalData()
     {
         $data = ['additional_data' => 'test_value_additional_data'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -44,7 +44,7 @@ class InvoiceItemTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseCost()
     {
         $data = ['base_cost' => 'test_value_base_cost'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -60,7 +60,7 @@ class InvoiceItemTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseDiscountAmount()
     {
         $data = ['base_discount_amount' => 'test_value_base_discount_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -76,7 +76,7 @@ class InvoiceItemTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseHiddenTaxAmount()
     {
         $data = ['base_hidden_tax_amount' => 'test_value_base_hidden_tax_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -92,7 +92,7 @@ class InvoiceItemTest extends \PHPUnit_Framework_TestCase
     public function testGetBasePrice()
     {
         $data = ['base_price' => 'test_value_base_price'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -108,7 +108,7 @@ class InvoiceItemTest extends \PHPUnit_Framework_TestCase
     public function testGetBasePriceInclTax()
     {
         $data = ['base_price_incl_tax' => 'test_value_base_price_incl_tax'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -124,7 +124,7 @@ class InvoiceItemTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseRowTotal()
     {
         $data = ['base_row_total' => 'test_value_base_row_total'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -140,7 +140,7 @@ class InvoiceItemTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseRowTotalInclTax()
     {
         $data = ['base_row_total_incl_tax' => 'test_value_base_row_total_incl_tax'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -156,7 +156,7 @@ class InvoiceItemTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseTaxAmount()
     {
         $data = ['base_tax_amount' => 'test_value_base_tax_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -172,7 +172,7 @@ class InvoiceItemTest extends \PHPUnit_Framework_TestCase
     public function testGetDescription()
     {
         $data = ['description' => 'test_value_description'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -188,7 +188,7 @@ class InvoiceItemTest extends \PHPUnit_Framework_TestCase
     public function testGetDiscountAmount()
     {
         $data = ['discount_amount' => 'test_value_discount_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -204,7 +204,7 @@ class InvoiceItemTest extends \PHPUnit_Framework_TestCase
     public function testGetEntityId()
     {
         $data = ['entity_id' => 'test_value_entity_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -220,7 +220,7 @@ class InvoiceItemTest extends \PHPUnit_Framework_TestCase
     public function testGetHiddenTaxAmount()
     {
         $data = ['hidden_tax_amount' => 'test_value_hidden_tax_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -236,7 +236,7 @@ class InvoiceItemTest extends \PHPUnit_Framework_TestCase
     public function testGetName()
     {
         $data = ['name' => 'test_value_name'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -252,7 +252,7 @@ class InvoiceItemTest extends \PHPUnit_Framework_TestCase
     public function testGetOrderItemId()
     {
         $data = ['order_item_id' => 'test_value_order_item_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -268,7 +268,7 @@ class InvoiceItemTest extends \PHPUnit_Framework_TestCase
     public function testGetParentId()
     {
         $data = ['parent_id' => 'test_value_parent_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -284,7 +284,7 @@ class InvoiceItemTest extends \PHPUnit_Framework_TestCase
     public function testGetPrice()
     {
         $data = ['price' => 'test_value_price'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -300,7 +300,7 @@ class InvoiceItemTest extends \PHPUnit_Framework_TestCase
     public function testGetPriceInclTax()
     {
         $data = ['price_incl_tax' => 'test_value_price_incl_tax'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -316,7 +316,7 @@ class InvoiceItemTest extends \PHPUnit_Framework_TestCase
     public function testGetProductId()
     {
         $data = ['product_id' => 'test_value_product_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -332,7 +332,7 @@ class InvoiceItemTest extends \PHPUnit_Framework_TestCase
     public function testGetQty()
     {
         $data = ['qty' => 'test_value_qty'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -348,7 +348,7 @@ class InvoiceItemTest extends \PHPUnit_Framework_TestCase
     public function testGetRowTotal()
     {
         $data = ['row_total' => 'test_value_row_total'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -364,7 +364,7 @@ class InvoiceItemTest extends \PHPUnit_Framework_TestCase
     public function testGetRowTotalInclTax()
     {
         $data = ['row_total_incl_tax' => 'test_value_row_total_incl_tax'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -380,7 +380,7 @@ class InvoiceItemTest extends \PHPUnit_Framework_TestCase
     public function testGetSku()
     {
         $data = ['sku' => 'test_value_sku'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -396,7 +396,7 @@ class InvoiceItemTest extends \PHPUnit_Framework_TestCase
     public function testGetTaxAmount()
     {
         $data = ['tax_amount' => 'test_value_tax_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
diff --git a/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Data/InvoiceTest.php b/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Data/InvoiceTest.php
index ca989eb45db..12b3ae28282 100644
--- a/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Data/InvoiceTest.php
+++ b/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Data/InvoiceTest.php
@@ -34,7 +34,7 @@ class InvoiceTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseCurrencyCode()
     {
         $data = ['base_currency_code' => 'test_value_base_currency_code'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -50,7 +50,7 @@ class InvoiceTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseDiscountAmount()
     {
         $data = ['base_discount_amount' => 'test_value_base_discount_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -66,7 +66,7 @@ class InvoiceTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseGrandTotal()
     {
         $data = ['base_grand_total' => 'test_value_base_grand_total'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -82,7 +82,7 @@ class InvoiceTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseHiddenTaxAmount()
     {
         $data = ['base_hidden_tax_amount' => 'test_value_base_hidden_tax_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -98,7 +98,7 @@ class InvoiceTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseShippingAmount()
     {
         $data = ['base_shipping_amount' => 'test_value_base_shipping_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -114,7 +114,7 @@ class InvoiceTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseShippingHiddenTaxAmnt()
     {
         $data = ['base_shipping_hidden_tax_amnt' => 'test_value_base_shipping_hidden_tax_amnt'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -130,7 +130,7 @@ class InvoiceTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseShippingInclTax()
     {
         $data = ['base_shipping_incl_tax' => 'test_value_base_shipping_incl_tax'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -146,7 +146,7 @@ class InvoiceTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseShippingTaxAmount()
     {
         $data = ['base_shipping_tax_amount' => 'test_value_base_shipping_tax_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -162,7 +162,7 @@ class InvoiceTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseSubtotal()
     {
         $data = ['base_subtotal' => 'test_value_base_subtotal'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -178,7 +178,7 @@ class InvoiceTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseSubtotalInclTax()
     {
         $data = ['base_subtotal_incl_tax' => 'test_value_base_subtotal_incl_tax'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -194,7 +194,7 @@ class InvoiceTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseTaxAmount()
     {
         $data = ['base_tax_amount' => 'test_value_base_tax_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -210,7 +210,7 @@ class InvoiceTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseTotalRefunded()
     {
         $data = ['base_total_refunded' => 'test_value_base_total_refunded'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -226,7 +226,7 @@ class InvoiceTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseToGlobalRate()
     {
         $data = ['base_to_global_rate' => 'test_value_base_to_global_rate'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -242,7 +242,7 @@ class InvoiceTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseToOrderRate()
     {
         $data = ['base_to_order_rate' => 'test_value_base_to_order_rate'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -258,7 +258,7 @@ class InvoiceTest extends \PHPUnit_Framework_TestCase
     public function testGetBillingAddressId()
     {
         $data = ['billing_address_id' => 'test_value_billing_address_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -274,7 +274,7 @@ class InvoiceTest extends \PHPUnit_Framework_TestCase
     public function testGetCanVoidFlag()
     {
         $data = ['can_void_flag' => 'test_value_can_void_flag'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -290,7 +290,7 @@ class InvoiceTest extends \PHPUnit_Framework_TestCase
     public function testGetCreatedAt()
     {
         $data = ['created_at' => 'test_value_created_at'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -306,7 +306,7 @@ class InvoiceTest extends \PHPUnit_Framework_TestCase
     public function testGetDiscountAmount()
     {
         $data = ['discount_amount' => 'test_value_discount_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -322,7 +322,7 @@ class InvoiceTest extends \PHPUnit_Framework_TestCase
     public function testGetDiscountDescription()
     {
         $data = ['discount_description' => 'test_value_discount_description'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -338,7 +338,7 @@ class InvoiceTest extends \PHPUnit_Framework_TestCase
     public function testGetEmailSent()
     {
         $data = ['email_sent' => 'test_value_email_sent'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -354,7 +354,7 @@ class InvoiceTest extends \PHPUnit_Framework_TestCase
     public function testGetEntityId()
     {
         $data = ['entity_id' => 'test_value_entity_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -370,7 +370,7 @@ class InvoiceTest extends \PHPUnit_Framework_TestCase
     public function testGetGlobalCurrencyCode()
     {
         $data = ['global_currency_code' => 'test_value_global_currency_code'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -386,7 +386,7 @@ class InvoiceTest extends \PHPUnit_Framework_TestCase
     public function testGetGrandTotal()
     {
         $data = ['grand_total' => 'test_value_grand_total'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -402,7 +402,7 @@ class InvoiceTest extends \PHPUnit_Framework_TestCase
     public function testGetHiddenTaxAmount()
     {
         $data = ['hidden_tax_amount' => 'test_value_hidden_tax_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -418,7 +418,7 @@ class InvoiceTest extends \PHPUnit_Framework_TestCase
     public function testGetIncrementId()
     {
         $data = ['increment_id' => 'test_value_increment_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -434,7 +434,7 @@ class InvoiceTest extends \PHPUnit_Framework_TestCase
     public function testGetIsUsedForRefund()
     {
         $data = ['is_used_for_refund' => 'test_value_is_used_for_refund'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -450,7 +450,7 @@ class InvoiceTest extends \PHPUnit_Framework_TestCase
     public function testGetOrderCurrencyCode()
     {
         $data = ['order_currency_code' => 'test_value_order_currency_code'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -466,7 +466,7 @@ class InvoiceTest extends \PHPUnit_Framework_TestCase
     public function testGetOrderId()
     {
         $data = ['order_id' => 'test_value_order_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -482,7 +482,7 @@ class InvoiceTest extends \PHPUnit_Framework_TestCase
     public function testGetShippingAddressId()
     {
         $data = ['shipping_address_id' => 'test_value_shipping_address_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -498,7 +498,7 @@ class InvoiceTest extends \PHPUnit_Framework_TestCase
     public function testGetShippingAmount()
     {
         $data = ['shipping_amount' => 'test_value_shipping_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -514,7 +514,7 @@ class InvoiceTest extends \PHPUnit_Framework_TestCase
     public function testGetShippingHiddenTaxAmount()
     {
         $data = ['shipping_hidden_tax_amount' => 'test_value_shipping_hidden_tax_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -530,7 +530,7 @@ class InvoiceTest extends \PHPUnit_Framework_TestCase
     public function testGetShippingInclTax()
     {
         $data = ['shipping_incl_tax' => 'test_value_shipping_incl_tax'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -546,7 +546,7 @@ class InvoiceTest extends \PHPUnit_Framework_TestCase
     public function testGetShippingTaxAmount()
     {
         $data = ['shipping_tax_amount' => 'test_value_shipping_tax_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -562,7 +562,7 @@ class InvoiceTest extends \PHPUnit_Framework_TestCase
     public function testGetState()
     {
         $data = ['state' => 'test_value_state'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -578,7 +578,7 @@ class InvoiceTest extends \PHPUnit_Framework_TestCase
     public function testGetStoreCurrencyCode()
     {
         $data = ['store_currency_code' => 'test_value_store_currency_code'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -594,7 +594,7 @@ class InvoiceTest extends \PHPUnit_Framework_TestCase
     public function testGetStoreId()
     {
         $data = ['store_id' => 'test_value_store_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -610,7 +610,7 @@ class InvoiceTest extends \PHPUnit_Framework_TestCase
     public function testGetStoreToBaseRate()
     {
         $data = ['store_to_base_rate' => 'test_value_store_to_base_rate'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -626,7 +626,7 @@ class InvoiceTest extends \PHPUnit_Framework_TestCase
     public function testGetStoreToOrderRate()
     {
         $data = ['store_to_order_rate' => 'test_value_store_to_order_rate'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -642,7 +642,7 @@ class InvoiceTest extends \PHPUnit_Framework_TestCase
     public function testGetSubtotal()
     {
         $data = ['subtotal' => 'test_value_subtotal'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -658,7 +658,7 @@ class InvoiceTest extends \PHPUnit_Framework_TestCase
     public function testGetSubtotalInclTax()
     {
         $data = ['subtotal_incl_tax' => 'test_value_subtotal_incl_tax'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -674,7 +674,7 @@ class InvoiceTest extends \PHPUnit_Framework_TestCase
     public function testGetTaxAmount()
     {
         $data = ['tax_amount' => 'test_value_tax_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -690,7 +690,7 @@ class InvoiceTest extends \PHPUnit_Framework_TestCase
     public function testGetTotalQty()
     {
         $data = ['total_qty' => 'test_value_total_qty'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -706,7 +706,7 @@ class InvoiceTest extends \PHPUnit_Framework_TestCase
     public function testGetTransactionId()
     {
         $data = ['transaction_id' => 'test_value_transaction_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -722,7 +722,7 @@ class InvoiceTest extends \PHPUnit_Framework_TestCase
     public function testGetUpdatedAt()
     {
         $data = ['updated_at' => 'test_value_updated_at'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -738,7 +738,7 @@ class InvoiceTest extends \PHPUnit_Framework_TestCase
     public function testGetItems()
     {
         $data = ['items' => 'test_value_items'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
diff --git a/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Data/OrderAddressTest.php b/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Data/OrderAddressTest.php
index 38a5cae1496..7dcfff01cb8 100644
--- a/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Data/OrderAddressTest.php
+++ b/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Data/OrderAddressTest.php
@@ -28,7 +28,7 @@ class OrderAddressTest extends \PHPUnit_Framework_TestCase
     public function testGetAddressType()
     {
         $data = ['address_type' => 'test_value_address_type'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -44,7 +44,7 @@ class OrderAddressTest extends \PHPUnit_Framework_TestCase
     public function testGetCity()
     {
         $data = ['city' => 'test_value_city'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -60,7 +60,7 @@ class OrderAddressTest extends \PHPUnit_Framework_TestCase
     public function testGetCompany()
     {
         $data = ['company' => 'test_value_company'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -76,7 +76,7 @@ class OrderAddressTest extends \PHPUnit_Framework_TestCase
     public function testGetCountryId()
     {
         $data = ['country_id' => 'test_value_country_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -92,7 +92,7 @@ class OrderAddressTest extends \PHPUnit_Framework_TestCase
     public function testGetCustomerAddressId()
     {
         $data = ['customer_address_id' => 'test_value_customer_address_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -108,7 +108,7 @@ class OrderAddressTest extends \PHPUnit_Framework_TestCase
     public function testGetCustomerId()
     {
         $data = ['customer_id' => 'test_value_customer_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -124,7 +124,7 @@ class OrderAddressTest extends \PHPUnit_Framework_TestCase
     public function testGetEmail()
     {
         $data = ['email' => 'test_value_email'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -140,7 +140,7 @@ class OrderAddressTest extends \PHPUnit_Framework_TestCase
     public function testGetEntityId()
     {
         $data = ['entity_id' => 'test_value_entity_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -156,7 +156,7 @@ class OrderAddressTest extends \PHPUnit_Framework_TestCase
     public function testGetFax()
     {
         $data = ['fax' => 'test_value_fax'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -172,7 +172,7 @@ class OrderAddressTest extends \PHPUnit_Framework_TestCase
     public function testGetFirstname()
     {
         $data = ['firstname' => 'test_value_firstname'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -188,7 +188,7 @@ class OrderAddressTest extends \PHPUnit_Framework_TestCase
     public function testGetLastname()
     {
         $data = ['lastname' => 'test_value_lastname'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -204,7 +204,7 @@ class OrderAddressTest extends \PHPUnit_Framework_TestCase
     public function testGetMiddlename()
     {
         $data = ['middlename' => 'test_value_middlename'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -220,7 +220,7 @@ class OrderAddressTest extends \PHPUnit_Framework_TestCase
     public function testGetParentId()
     {
         $data = ['parent_id' => 'test_value_parent_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -236,7 +236,7 @@ class OrderAddressTest extends \PHPUnit_Framework_TestCase
     public function testGetPostcode()
     {
         $data = ['postcode' => 'test_value_postcode'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -252,7 +252,7 @@ class OrderAddressTest extends \PHPUnit_Framework_TestCase
     public function testGetPrefix()
     {
         $data = ['prefix' => 'test_value_prefix'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -268,7 +268,7 @@ class OrderAddressTest extends \PHPUnit_Framework_TestCase
     public function testGetQuoteAddressId()
     {
         $data = ['quote_address_id' => 'test_value_quote_address_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -284,7 +284,7 @@ class OrderAddressTest extends \PHPUnit_Framework_TestCase
     public function testGetRegion()
     {
         $data = ['region' => 'test_value_region'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -300,7 +300,7 @@ class OrderAddressTest extends \PHPUnit_Framework_TestCase
     public function testGetRegionId()
     {
         $data = ['region_id' => 'test_value_region_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -316,7 +316,7 @@ class OrderAddressTest extends \PHPUnit_Framework_TestCase
     public function testGetStreet()
     {
         $data = ['street' => 'test_value_street'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -332,7 +332,7 @@ class OrderAddressTest extends \PHPUnit_Framework_TestCase
     public function testGetSuffix()
     {
         $data = ['suffix' => 'test_value_suffix'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -348,7 +348,7 @@ class OrderAddressTest extends \PHPUnit_Framework_TestCase
     public function testGetTelephone()
     {
         $data = ['telephone' => 'test_value_telephone'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -364,7 +364,7 @@ class OrderAddressTest extends \PHPUnit_Framework_TestCase
     public function testGetVatId()
     {
         $data = ['vat_id' => 'test_value_vat_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -380,7 +380,7 @@ class OrderAddressTest extends \PHPUnit_Framework_TestCase
     public function testGetVatIsValid()
     {
         $data = ['vat_is_valid' => 'test_value_vat_is_valid'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -396,7 +396,7 @@ class OrderAddressTest extends \PHPUnit_Framework_TestCase
     public function testGetVatRequestDate()
     {
         $data = ['vat_request_date' => 'test_value_vat_request_date'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -412,7 +412,7 @@ class OrderAddressTest extends \PHPUnit_Framework_TestCase
     public function testGetVatRequestId()
     {
         $data = ['vat_request_id' => 'test_value_vat_request_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -428,7 +428,7 @@ class OrderAddressTest extends \PHPUnit_Framework_TestCase
     public function testGetVatRequestSuccess()
     {
         $data = ['vat_request_success' => 'test_value_vat_request_success'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
diff --git a/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Data/OrderItemTest.php b/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Data/OrderItemTest.php
index 591296027d2..2caacd1c38c 100644
--- a/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Data/OrderItemTest.php
+++ b/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Data/OrderItemTest.php
@@ -34,7 +34,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetAdditionalData()
     {
         $data = ['additional_data' => 'test_value_additional_data'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -50,7 +50,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetAmountRefunded()
     {
         $data = ['amount_refunded' => 'test_value_amount_refunded'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -66,7 +66,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetAppliedRuleIds()
     {
         $data = ['applied_rule_ids' => 'test_value_applied_rule_ids'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -82,7 +82,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseAmountRefunded()
     {
         $data = ['base_amount_refunded' => 'test_value_base_amount_refunded'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -98,7 +98,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseCost()
     {
         $data = ['base_cost' => 'test_value_base_cost'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -114,7 +114,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseDiscountAmount()
     {
         $data = ['base_discount_amount' => 'test_value_base_discount_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -130,7 +130,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseDiscountInvoiced()
     {
         $data = ['base_discount_invoiced' => 'test_value_base_discount_invoiced'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -146,7 +146,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseDiscountRefunded()
     {
         $data = ['base_discount_refunded' => 'test_value_base_discount_refunded'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -162,7 +162,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseHiddenTaxAmount()
     {
         $data = ['base_hidden_tax_amount' => 'test_value_base_hidden_tax_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -178,7 +178,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseHiddenTaxInvoiced()
     {
         $data = ['base_hidden_tax_invoiced' => 'test_value_base_hidden_tax_invoiced'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -194,7 +194,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseHiddenTaxRefunded()
     {
         $data = ['base_hidden_tax_refunded' => 'test_value_base_hidden_tax_refunded'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -210,7 +210,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseOriginalPrice()
     {
         $data = ['base_original_price' => 'test_value_base_original_price'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -226,7 +226,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetBasePrice()
     {
         $data = ['base_price' => 'test_value_base_price'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -242,7 +242,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetBasePriceInclTax()
     {
         $data = ['base_price_incl_tax' => 'test_value_base_price_incl_tax'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -258,7 +258,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseRowInvoiced()
     {
         $data = ['base_row_invoiced' => 'test_value_base_row_invoiced'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -274,7 +274,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseRowTotal()
     {
         $data = ['base_row_total' => 'test_value_base_row_total'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -290,7 +290,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseRowTotalInclTax()
     {
         $data = ['base_row_total_incl_tax' => 'test_value_base_row_total_incl_tax'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -306,7 +306,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseTaxAmount()
     {
         $data = ['base_tax_amount' => 'test_value_base_tax_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -322,7 +322,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseTaxBeforeDiscount()
     {
         $data = ['base_tax_before_discount' => 'test_value_base_tax_before_discount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -338,7 +338,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseTaxInvoiced()
     {
         $data = ['base_tax_invoiced' => 'test_value_base_tax_invoiced'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -354,7 +354,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseTaxRefunded()
     {
         $data = ['base_tax_refunded' => 'test_value_base_tax_refunded'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -370,7 +370,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseWeeeTaxAppliedAmount()
     {
         $data = ['base_weee_tax_applied_amount' => 'test_value_base_weee_tax_applied_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -386,7 +386,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseWeeeTaxAppliedRowAmnt()
     {
         $data = ['base_weee_tax_applied_row_amnt' => 'test_value_base_weee_tax_applied_row_amnt'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -402,7 +402,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseWeeeTaxDisposition()
     {
         $data = ['base_weee_tax_disposition' => 'test_value_base_weee_tax_disposition'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -418,7 +418,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseWeeeTaxRowDisposition()
     {
         $data = ['base_weee_tax_row_disposition' => 'test_value_base_weee_tax_row_disposition'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -434,7 +434,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetCreatedAt()
     {
         $data = ['created_at' => 'test_value_created_at'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -450,7 +450,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetDescription()
     {
         $data = ['description' => 'test_value_description'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -466,7 +466,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetDiscountAmount()
     {
         $data = ['discount_amount' => 'test_value_discount_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -482,7 +482,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetDiscountInvoiced()
     {
         $data = ['discount_invoiced' => 'test_value_discount_invoiced'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -498,7 +498,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetDiscountPercent()
     {
         $data = ['discount_percent' => 'test_value_discount_percent'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -514,7 +514,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetDiscountRefunded()
     {
         $data = ['discount_refunded' => 'test_value_discount_refunded'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -530,7 +530,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetEventId()
     {
         $data = ['event_id' => 'test_value_event_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -546,7 +546,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetExtOrderItemId()
     {
         $data = ['ext_order_item_id' => 'test_value_ext_order_item_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -562,7 +562,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetFreeShipping()
     {
         $data = ['free_shipping' => 'test_value_free_shipping'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -578,7 +578,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetGwBasePrice()
     {
         $data = ['gw_base_price' => 'test_value_gw_base_price'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -594,7 +594,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetGwBasePriceInvoiced()
     {
         $data = ['gw_base_price_invoiced' => 'test_value_gw_base_price_invoiced'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -610,7 +610,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetGwBasePriceRefunded()
     {
         $data = ['gw_base_price_refunded' => 'test_value_gw_base_price_refunded'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -626,7 +626,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetGwBaseTaxAmount()
     {
         $data = ['gw_base_tax_amount' => 'test_value_gw_base_tax_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -642,7 +642,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetGwBaseTaxAmountInvoiced()
     {
         $data = ['gw_base_tax_amount_invoiced' => 'test_value_gw_base_tax_amount_invoiced'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -658,7 +658,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetGwBaseTaxAmountRefunded()
     {
         $data = ['gw_base_tax_amount_refunded' => 'test_value_gw_base_tax_amount_refunded'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -674,7 +674,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetGwId()
     {
         $data = ['gw_id' => 'test_value_gw_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -690,7 +690,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetGwPrice()
     {
         $data = ['gw_price' => 'test_value_gw_price'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -706,7 +706,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetGwPriceInvoiced()
     {
         $data = ['gw_price_invoiced' => 'test_value_gw_price_invoiced'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -722,7 +722,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetGwPriceRefunded()
     {
         $data = ['gw_price_refunded' => 'test_value_gw_price_refunded'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -738,7 +738,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetGwTaxAmount()
     {
         $data = ['gw_tax_amount' => 'test_value_gw_tax_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -754,7 +754,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetGwTaxAmountInvoiced()
     {
         $data = ['gw_tax_amount_invoiced' => 'test_value_gw_tax_amount_invoiced'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -770,7 +770,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetGwTaxAmountRefunded()
     {
         $data = ['gw_tax_amount_refunded' => 'test_value_gw_tax_amount_refunded'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -786,7 +786,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetHiddenTaxAmount()
     {
         $data = ['hidden_tax_amount' => 'test_value_hidden_tax_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -802,7 +802,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetHiddenTaxCanceled()
     {
         $data = ['hidden_tax_canceled' => 'test_value_hidden_tax_canceled'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -818,7 +818,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetHiddenTaxInvoiced()
     {
         $data = ['hidden_tax_invoiced' => 'test_value_hidden_tax_invoiced'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -834,7 +834,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetHiddenTaxRefunded()
     {
         $data = ['hidden_tax_refunded' => 'test_value_hidden_tax_refunded'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -850,7 +850,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetIsNominal()
     {
         $data = ['is_nominal' => 'test_value_is_nominal'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -866,7 +866,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetIsQtyDecimal()
     {
         $data = ['is_qty_decimal' => 'test_value_is_qty_decimal'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -882,7 +882,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetIsVirtual()
     {
         $data = ['is_virtual' => 'test_value_is_virtual'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -898,7 +898,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetItemId()
     {
         $data = ['item_id' => 'test_value_item_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -914,7 +914,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetLockedDoInvoice()
     {
         $data = ['locked_do_invoice' => 'test_value_locked_do_invoice'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -930,7 +930,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetLockedDoShip()
     {
         $data = ['locked_do_ship' => 'test_value_locked_do_ship'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -946,7 +946,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetName()
     {
         $data = ['name' => 'test_value_name'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -962,7 +962,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetNoDiscount()
     {
         $data = ['no_discount' => 'test_value_no_discount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -978,7 +978,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetOrderId()
     {
         $data = ['order_id' => 'test_value_order_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -994,7 +994,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetOriginalPrice()
     {
         $data = ['original_price' => 'test_value_original_price'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1010,7 +1010,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetParentItemId()
     {
         $data = ['parent_item_id' => 'test_value_parent_item_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1026,7 +1026,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetPrice()
     {
         $data = ['price' => 'test_value_price'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1042,7 +1042,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetPriceInclTax()
     {
         $data = ['price_incl_tax' => 'test_value_price_incl_tax'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1058,7 +1058,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetProductId()
     {
         $data = ['product_id' => 'test_value_product_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1074,7 +1074,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetProductOptions()
     {
         $data = ['product_options' => 'test_value_product_options'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1090,7 +1090,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetProductType()
     {
         $data = ['product_type' => 'test_value_product_type'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1106,7 +1106,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetQtyBackordered()
     {
         $data = ['qty_backordered' => 'test_value_qty_backordered'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1122,7 +1122,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetQtyCanceled()
     {
         $data = ['qty_canceled' => 'test_value_qty_canceled'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1138,7 +1138,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetQtyInvoiced()
     {
         $data = ['qty_invoiced' => 'test_value_qty_invoiced'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1154,7 +1154,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetQtyOrdered()
     {
         $data = ['qty_ordered' => 'test_value_qty_ordered'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1170,7 +1170,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetQtyRefunded()
     {
         $data = ['qty_refunded' => 'test_value_qty_refunded'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1186,7 +1186,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetQtyReturned()
     {
         $data = ['qty_returned' => 'test_value_qty_returned'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1202,7 +1202,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetQtyShipped()
     {
         $data = ['qty_shipped' => 'test_value_qty_shipped'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1218,7 +1218,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetQuoteItemId()
     {
         $data = ['quote_item_id' => 'test_value_quote_item_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1234,7 +1234,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetRowInvoiced()
     {
         $data = ['row_invoiced' => 'test_value_row_invoiced'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1250,7 +1250,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetRowTotal()
     {
         $data = ['row_total' => 'test_value_row_total'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1266,7 +1266,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetRowTotalInclTax()
     {
         $data = ['row_total_incl_tax' => 'test_value_row_total_incl_tax'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1282,7 +1282,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetRowWeight()
     {
         $data = ['row_weight' => 'test_value_row_weight'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1298,7 +1298,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetSku()
     {
         $data = ['sku' => 'test_value_sku'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1314,7 +1314,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetStoreId()
     {
         $data = ['store_id' => 'test_value_store_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1330,7 +1330,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetTaxAmount()
     {
         $data = ['tax_amount' => 'test_value_tax_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1346,7 +1346,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetTaxBeforeDiscount()
     {
         $data = ['tax_before_discount' => 'test_value_tax_before_discount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1362,7 +1362,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetTaxCanceled()
     {
         $data = ['tax_canceled' => 'test_value_tax_canceled'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1378,7 +1378,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetTaxInvoiced()
     {
         $data = ['tax_invoiced' => 'test_value_tax_invoiced'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1394,7 +1394,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetTaxPercent()
     {
         $data = ['tax_percent' => 'test_value_tax_percent'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1410,7 +1410,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetTaxRefunded()
     {
         $data = ['tax_refunded' => 'test_value_tax_refunded'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1426,7 +1426,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetUpdatedAt()
     {
         $data = ['updated_at' => 'test_value_updated_at'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1442,7 +1442,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetWeeeTaxApplied()
     {
         $data = ['weee_tax_applied' => 'test_value_weee_tax_applied'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1458,7 +1458,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetWeeeTaxAppliedAmount()
     {
         $data = ['weee_tax_applied_amount' => 'test_value_weee_tax_applied_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1474,7 +1474,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetWeeeTaxAppliedRowAmount()
     {
         $data = ['weee_tax_applied_row_amount' => 'test_value_weee_tax_applied_row_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1490,7 +1490,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetWeeeTaxDisposition()
     {
         $data = ['weee_tax_disposition' => 'test_value_weee_tax_disposition'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1506,7 +1506,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetWeeeTaxRowDisposition()
     {
         $data = ['weee_tax_row_disposition' => 'test_value_weee_tax_row_disposition'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1522,7 +1522,7 @@ class OrderItemTest extends \PHPUnit_Framework_TestCase
     public function testGetWeight()
     {
         $data = ['weight' => 'test_value_weight'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
diff --git a/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Data/OrderPaymentTest.php b/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Data/OrderPaymentTest.php
index cbcaa761612..b088d6677a3 100644
--- a/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Data/OrderPaymentTest.php
+++ b/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Data/OrderPaymentTest.php
@@ -34,7 +34,7 @@ class OrderPaymentTest extends \PHPUnit_Framework_TestCase
     public function testGetAccountStatus()
     {
         $data = ['account_status' => 'test_value_account_status'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -50,7 +50,7 @@ class OrderPaymentTest extends \PHPUnit_Framework_TestCase
     public function testGetAdditionalData()
     {
         $data = ['additional_data' => 'test_value_additional_data'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -66,7 +66,7 @@ class OrderPaymentTest extends \PHPUnit_Framework_TestCase
     public function testGetAdditionalInformation()
     {
         $data = ['additional_information' => 'test_value_additional_information'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -82,7 +82,7 @@ class OrderPaymentTest extends \PHPUnit_Framework_TestCase
     public function testGetAddressStatus()
     {
         $data = ['address_status' => 'test_value_address_status'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -98,7 +98,7 @@ class OrderPaymentTest extends \PHPUnit_Framework_TestCase
     public function testGetAmountAuthorized()
     {
         $data = ['amount_authorized' => 'test_value_amount_authorized'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -114,7 +114,7 @@ class OrderPaymentTest extends \PHPUnit_Framework_TestCase
     public function testGetAmountCanceled()
     {
         $data = ['amount_canceled' => 'test_value_amount_canceled'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -130,7 +130,7 @@ class OrderPaymentTest extends \PHPUnit_Framework_TestCase
     public function testGetAmountOrdered()
     {
         $data = ['amount_ordered' => 'test_value_amount_ordered'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -146,7 +146,7 @@ class OrderPaymentTest extends \PHPUnit_Framework_TestCase
     public function testGetAmountPaid()
     {
         $data = ['amount_paid' => 'test_value_amount_paid'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -162,7 +162,7 @@ class OrderPaymentTest extends \PHPUnit_Framework_TestCase
     public function testGetAmountRefunded()
     {
         $data = ['amount_refunded' => 'test_value_amount_refunded'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -178,7 +178,7 @@ class OrderPaymentTest extends \PHPUnit_Framework_TestCase
     public function testGetAnetTransMethod()
     {
         $data = ['anet_trans_method' => 'test_value_anet_trans_method'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -194,7 +194,7 @@ class OrderPaymentTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseAmountAuthorized()
     {
         $data = ['base_amount_authorized' => 'test_value_base_amount_authorized'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -210,7 +210,7 @@ class OrderPaymentTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseAmountCanceled()
     {
         $data = ['base_amount_canceled' => 'test_value_base_amount_canceled'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -226,7 +226,7 @@ class OrderPaymentTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseAmountOrdered()
     {
         $data = ['base_amount_ordered' => 'test_value_base_amount_ordered'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -242,7 +242,7 @@ class OrderPaymentTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseAmountPaid()
     {
         $data = ['base_amount_paid' => 'test_value_base_amount_paid'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -258,7 +258,7 @@ class OrderPaymentTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseAmountPaidOnline()
     {
         $data = ['base_amount_paid_online' => 'test_value_base_amount_paid_online'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -274,7 +274,7 @@ class OrderPaymentTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseAmountRefunded()
     {
         $data = ['base_amount_refunded' => 'test_value_base_amount_refunded'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -290,7 +290,7 @@ class OrderPaymentTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseAmountRefundedOnline()
     {
         $data = ['base_amount_refunded_online' => 'test_value_base_amount_refunded_online'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -306,7 +306,7 @@ class OrderPaymentTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseShippingAmount()
     {
         $data = ['base_shipping_amount' => 'test_value_base_shipping_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -322,7 +322,7 @@ class OrderPaymentTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseShippingCaptured()
     {
         $data = ['base_shipping_captured' => 'test_value_base_shipping_captured'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -338,7 +338,7 @@ class OrderPaymentTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseShippingRefunded()
     {
         $data = ['base_shipping_refunded' => 'test_value_base_shipping_refunded'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -354,7 +354,7 @@ class OrderPaymentTest extends \PHPUnit_Framework_TestCase
     public function testGetCcApproval()
     {
         $data = ['cc_approval' => 'test_value_cc_approval'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -370,7 +370,7 @@ class OrderPaymentTest extends \PHPUnit_Framework_TestCase
     public function testGetCcAvsStatus()
     {
         $data = ['cc_avs_status' => 'test_value_cc_avs_status'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -386,7 +386,7 @@ class OrderPaymentTest extends \PHPUnit_Framework_TestCase
     public function testGetCcCidStatus()
     {
         $data = ['cc_cid_status' => 'test_value_cc_cid_status'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -402,7 +402,7 @@ class OrderPaymentTest extends \PHPUnit_Framework_TestCase
     public function testGetCcDebugRequestBody()
     {
         $data = ['cc_debug_request_body' => 'test_value_cc_debug_request_body'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -418,7 +418,7 @@ class OrderPaymentTest extends \PHPUnit_Framework_TestCase
     public function testGetCcDebugResponseBody()
     {
         $data = ['cc_debug_response_body' => 'test_value_cc_debug_response_body'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -434,7 +434,7 @@ class OrderPaymentTest extends \PHPUnit_Framework_TestCase
     public function testGetCcDebugResponseSerialized()
     {
         $data = ['cc_debug_response_serialized' => 'test_value_cc_debug_response_serialized'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -450,7 +450,7 @@ class OrderPaymentTest extends \PHPUnit_Framework_TestCase
     public function testGetCcExpMonth()
     {
         $data = ['cc_exp_month' => 'test_value_cc_exp_month'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -466,7 +466,7 @@ class OrderPaymentTest extends \PHPUnit_Framework_TestCase
     public function testGetCcExpYear()
     {
         $data = ['cc_exp_year' => 'test_value_cc_exp_year'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -482,7 +482,7 @@ class OrderPaymentTest extends \PHPUnit_Framework_TestCase
     public function testGetCcLast4()
     {
         $data = ['cc_last4' => 'test_value_cc_last4'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -498,7 +498,7 @@ class OrderPaymentTest extends \PHPUnit_Framework_TestCase
     public function testGetCcNumberEnc()
     {
         $data = ['cc_number_enc' => 'test_value_cc_number_enc'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -514,7 +514,7 @@ class OrderPaymentTest extends \PHPUnit_Framework_TestCase
     public function testGetCcOwner()
     {
         $data = ['cc_owner' => 'test_value_cc_owner'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -530,7 +530,7 @@ class OrderPaymentTest extends \PHPUnit_Framework_TestCase
     public function testGetCcSecureVerify()
     {
         $data = ['cc_secure_verify' => 'test_value_cc_secure_verify'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -546,7 +546,7 @@ class OrderPaymentTest extends \PHPUnit_Framework_TestCase
     public function testGetCcSsIssue()
     {
         $data = ['cc_ss_issue' => 'test_value_cc_ss_issue'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -562,7 +562,7 @@ class OrderPaymentTest extends \PHPUnit_Framework_TestCase
     public function testGetCcSsStartMonth()
     {
         $data = ['cc_ss_start_month' => 'test_value_cc_ss_start_month'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -578,7 +578,7 @@ class OrderPaymentTest extends \PHPUnit_Framework_TestCase
     public function testGetCcSsStartYear()
     {
         $data = ['cc_ss_start_year' => 'test_value_cc_ss_start_year'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -594,7 +594,7 @@ class OrderPaymentTest extends \PHPUnit_Framework_TestCase
     public function testGetCcStatus()
     {
         $data = ['cc_status' => 'test_value_cc_status'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -610,7 +610,7 @@ class OrderPaymentTest extends \PHPUnit_Framework_TestCase
     public function testGetCcStatusDescription()
     {
         $data = ['cc_status_description' => 'test_value_cc_status_description'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -626,7 +626,7 @@ class OrderPaymentTest extends \PHPUnit_Framework_TestCase
     public function testGetCcTransId()
     {
         $data = ['cc_trans_id' => 'test_value_cc_trans_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -642,7 +642,7 @@ class OrderPaymentTest extends \PHPUnit_Framework_TestCase
     public function testGetCcType()
     {
         $data = ['cc_type' => 'test_value_cc_type'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -658,7 +658,7 @@ class OrderPaymentTest extends \PHPUnit_Framework_TestCase
     public function testGetEcheckAccountName()
     {
         $data = ['echeck_account_name' => 'test_value_echeck_account_name'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -674,7 +674,7 @@ class OrderPaymentTest extends \PHPUnit_Framework_TestCase
     public function testGetEcheckAccountType()
     {
         $data = ['echeck_account_type' => 'test_value_echeck_account_type'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -690,7 +690,7 @@ class OrderPaymentTest extends \PHPUnit_Framework_TestCase
     public function testGetEcheckBankName()
     {
         $data = ['echeck_bank_name' => 'test_value_echeck_bank_name'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -706,7 +706,7 @@ class OrderPaymentTest extends \PHPUnit_Framework_TestCase
     public function testGetEcheckRoutingNumber()
     {
         $data = ['echeck_routing_number' => 'test_value_echeck_routing_number'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -722,7 +722,7 @@ class OrderPaymentTest extends \PHPUnit_Framework_TestCase
     public function testGetEcheckType()
     {
         $data = ['echeck_type' => 'test_value_echeck_type'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -738,7 +738,7 @@ class OrderPaymentTest extends \PHPUnit_Framework_TestCase
     public function testGetEntityId()
     {
         $data = ['entity_id' => 'test_value_entity_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -754,7 +754,7 @@ class OrderPaymentTest extends \PHPUnit_Framework_TestCase
     public function testGetLastTransId()
     {
         $data = ['last_trans_id' => 'test_value_last_trans_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -770,7 +770,7 @@ class OrderPaymentTest extends \PHPUnit_Framework_TestCase
     public function testGetMethod()
     {
         $data = ['method' => 'test_value_method'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -786,7 +786,7 @@ class OrderPaymentTest extends \PHPUnit_Framework_TestCase
     public function testGetParentId()
     {
         $data = ['parent_id' => 'test_value_parent_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -802,7 +802,7 @@ class OrderPaymentTest extends \PHPUnit_Framework_TestCase
     public function testGetPoNumber()
     {
         $data = ['po_number' => 'test_value_po_number'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -818,7 +818,7 @@ class OrderPaymentTest extends \PHPUnit_Framework_TestCase
     public function testGetProtectionEligibility()
     {
         $data = ['protection_eligibility' => 'test_value_protection_eligibility'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -834,7 +834,7 @@ class OrderPaymentTest extends \PHPUnit_Framework_TestCase
     public function testGetQuotePaymentId()
     {
         $data = ['quote_payment_id' => 'test_value_quote_payment_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -850,7 +850,7 @@ class OrderPaymentTest extends \PHPUnit_Framework_TestCase
     public function testGetShippingAmount()
     {
         $data = ['shipping_amount' => 'test_value_shipping_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -866,7 +866,7 @@ class OrderPaymentTest extends \PHPUnit_Framework_TestCase
     public function testGetShippingCaptured()
     {
         $data = ['shipping_captured' => 'test_value_shipping_captured'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -882,7 +882,7 @@ class OrderPaymentTest extends \PHPUnit_Framework_TestCase
     public function testGetShippingRefunded()
     {
         $data = ['shipping_refunded' => 'test_value_shipping_refunded'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
diff --git a/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Data/OrderStatusHistoryTest.php b/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Data/OrderStatusHistoryTest.php
index 6c2c10cb26e..72eed2ed39e 100644
--- a/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Data/OrderStatusHistoryTest.php
+++ b/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Data/OrderStatusHistoryTest.php
@@ -28,7 +28,7 @@ class OrderStatusHistoryTest extends \PHPUnit_Framework_TestCase
     public function testGetComment()
     {
         $data = ['comment' => 'test_value_comment'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -44,7 +44,7 @@ class OrderStatusHistoryTest extends \PHPUnit_Framework_TestCase
     public function testGetCreatedAt()
     {
         $data = ['created_at' => 'test_value_created_at'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -60,7 +60,7 @@ class OrderStatusHistoryTest extends \PHPUnit_Framework_TestCase
     public function testGetEntityId()
     {
         $data = ['entity_id' => 'test_value_entity_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -76,7 +76,7 @@ class OrderStatusHistoryTest extends \PHPUnit_Framework_TestCase
     public function testGetEntityName()
     {
         $data = ['entity_name' => 'test_value_entity_name'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -92,7 +92,7 @@ class OrderStatusHistoryTest extends \PHPUnit_Framework_TestCase
     public function testGetIsCustomerNotified()
     {
         $data = ['is_customer_notified' => 'test_value_is_customer_notified'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -108,7 +108,7 @@ class OrderStatusHistoryTest extends \PHPUnit_Framework_TestCase
     public function testGetIsVisibleOnFront()
     {
         $data = ['is_visible_on_front' => 'test_value_is_visible_on_front'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -124,7 +124,7 @@ class OrderStatusHistoryTest extends \PHPUnit_Framework_TestCase
     public function testGetParentId()
     {
         $data = ['parent_id' => 'test_value_parent_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -140,7 +140,7 @@ class OrderStatusHistoryTest extends \PHPUnit_Framework_TestCase
     public function testGetStatus()
     {
         $data = ['status' => 'test_value_status'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
diff --git a/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Data/OrderTest.php b/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Data/OrderTest.php
index 1c973d5cdab..430546cbe41 100644
--- a/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Data/OrderTest.php
+++ b/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Data/OrderTest.php
@@ -35,7 +35,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetAdjustmentNegative()
     {
         $data = ['adjustment_negative' => 'test_value_adjustment_negative'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -51,7 +51,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetAdjustmentPositive()
     {
         $data = ['adjustment_positive' => 'test_value_adjustment_positive'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -67,7 +67,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetAppliedRuleIds()
     {
         $data = ['applied_rule_ids' => 'test_value_applied_rule_ids'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -83,7 +83,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseAdjustmentNegative()
     {
         $data = ['base_adjustment_negative' => 'test_value_base_adjustment_negative'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -99,7 +99,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseAdjustmentPositive()
     {
         $data = ['base_adjustment_positive' => 'test_value_base_adjustment_positive'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -115,7 +115,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseCurrencyCode()
     {
         $data = ['base_currency_code' => 'test_value_base_currency_code'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -131,7 +131,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseDiscountAmount()
     {
         $data = ['base_discount_amount' => 'test_value_base_discount_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -147,7 +147,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseDiscountCanceled()
     {
         $data = ['base_discount_canceled' => 'test_value_base_discount_canceled'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -163,7 +163,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseDiscountInvoiced()
     {
         $data = ['base_discount_invoiced' => 'test_value_base_discount_invoiced'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -179,7 +179,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseDiscountRefunded()
     {
         $data = ['base_discount_refunded' => 'test_value_base_discount_refunded'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -195,7 +195,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseGrandTotal()
     {
         $data = ['base_grand_total' => 'test_value_base_grand_total'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -211,7 +211,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseHiddenTaxAmount()
     {
         $data = ['base_hidden_tax_amount' => 'test_value_base_hidden_tax_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -227,7 +227,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseHiddenTaxInvoiced()
     {
         $data = ['base_hidden_tax_invoiced' => 'test_value_base_hidden_tax_invoiced'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -243,7 +243,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseHiddenTaxRefunded()
     {
         $data = ['base_hidden_tax_refunded' => 'test_value_base_hidden_tax_refunded'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -259,7 +259,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseShippingAmount()
     {
         $data = ['base_shipping_amount' => 'test_value_base_shipping_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -275,7 +275,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseShippingCanceled()
     {
         $data = ['base_shipping_canceled' => 'test_value_base_shipping_canceled'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -291,7 +291,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseShippingDiscountAmount()
     {
         $data = ['base_shipping_discount_amount' => 'test_value_base_shipping_discount_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -307,7 +307,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseShippingHiddenTaxAmnt()
     {
         $data = ['base_shipping_hidden_tax_amnt' => 'test_value_base_shipping_hidden_tax_amnt'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -323,7 +323,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseShippingInclTax()
     {
         $data = ['base_shipping_incl_tax' => 'test_value_base_shipping_incl_tax'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -339,7 +339,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseShippingInvoiced()
     {
         $data = ['base_shipping_invoiced' => 'test_value_base_shipping_invoiced'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -355,7 +355,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseShippingRefunded()
     {
         $data = ['base_shipping_refunded' => 'test_value_base_shipping_refunded'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -371,7 +371,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseShippingTaxAmount()
     {
         $data = ['base_shipping_tax_amount' => 'test_value_base_shipping_tax_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -387,7 +387,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseShippingTaxRefunded()
     {
         $data = ['base_shipping_tax_refunded' => 'test_value_base_shipping_tax_refunded'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -403,7 +403,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseSubtotal()
     {
         $data = ['base_subtotal' => 'test_value_base_subtotal'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -419,7 +419,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseSubtotalCanceled()
     {
         $data = ['base_subtotal_canceled' => 'test_value_base_subtotal_canceled'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -435,7 +435,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseSubtotalInclTax()
     {
         $data = ['base_subtotal_incl_tax' => 'test_value_base_subtotal_incl_tax'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -451,7 +451,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseSubtotalInvoiced()
     {
         $data = ['base_subtotal_invoiced' => 'test_value_base_subtotal_invoiced'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -467,7 +467,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseSubtotalRefunded()
     {
         $data = ['base_subtotal_refunded' => 'test_value_base_subtotal_refunded'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -483,7 +483,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseTaxAmount()
     {
         $data = ['base_tax_amount' => 'test_value_base_tax_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -499,7 +499,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseTaxCanceled()
     {
         $data = ['base_tax_canceled' => 'test_value_base_tax_canceled'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -515,7 +515,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseTaxInvoiced()
     {
         $data = ['base_tax_invoiced' => 'test_value_base_tax_invoiced'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -531,7 +531,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseTaxRefunded()
     {
         $data = ['base_tax_refunded' => 'test_value_base_tax_refunded'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -547,7 +547,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseTotalCanceled()
     {
         $data = ['base_total_canceled' => 'test_value_base_total_canceled'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -563,7 +563,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseTotalDue()
     {
         $data = ['base_total_due' => 'test_value_base_total_due'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -579,7 +579,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseTotalInvoiced()
     {
         $data = ['base_total_invoiced' => 'test_value_base_total_invoiced'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -595,7 +595,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseTotalInvoicedCost()
     {
         $data = ['base_total_invoiced_cost' => 'test_value_base_total_invoiced_cost'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -611,7 +611,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseTotalOfflineRefunded()
     {
         $data = ['base_total_offline_refunded' => 'test_value_base_total_offline_refunded'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -627,7 +627,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseTotalOnlineRefunded()
     {
         $data = ['base_total_online_refunded' => 'test_value_base_total_online_refunded'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -643,7 +643,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseTotalPaid()
     {
         $data = ['base_total_paid' => 'test_value_base_total_paid'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -659,7 +659,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseTotalQtyOrdered()
     {
         $data = ['base_total_qty_ordered' => 'test_value_base_total_qty_ordered'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -675,7 +675,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseTotalRefunded()
     {
         $data = ['base_total_refunded' => 'test_value_base_total_refunded'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -691,7 +691,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseToGlobalRate()
     {
         $data = ['base_to_global_rate' => 'test_value_base_to_global_rate'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -707,7 +707,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetBaseToOrderRate()
     {
         $data = ['base_to_order_rate' => 'test_value_base_to_order_rate'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -723,7 +723,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetBillingAddressId()
     {
         $data = ['billing_address_id' => 'test_value_billing_address_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -739,7 +739,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetCanShipPartially()
     {
         $data = ['can_ship_partially' => 'test_value_can_ship_partially'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -755,7 +755,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetCanShipPartiallyItem()
     {
         $data = ['can_ship_partially_item' => 'test_value_can_ship_partially_item'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -771,7 +771,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetCouponCode()
     {
         $data = ['coupon_code' => 'test_value_coupon_code'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -787,7 +787,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetCreatedAt()
     {
         $data = ['created_at' => 'test_value_created_at'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -803,7 +803,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetCustomerDob()
     {
         $data = ['customer_dob' => 'test_value_customer_dob'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -819,7 +819,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetCustomerEmail()
     {
         $data = ['customer_email' => 'test_value_customer_email'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -835,7 +835,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetCustomerFirstname()
     {
         $data = ['customer_firstname' => 'test_value_customer_firstname'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -851,7 +851,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetCustomerGender()
     {
         $data = ['customer_gender' => 'test_value_customer_gender'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -867,7 +867,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetCustomerGroupId()
     {
         $data = ['customer_group_id' => 'test_value_customer_group_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -883,7 +883,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetCustomerId()
     {
         $data = ['customer_id' => 'test_value_customer_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -899,7 +899,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetCustomerIsGuest()
     {
         $data = ['customer_is_guest' => 'test_value_customer_is_guest'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -915,7 +915,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetCustomerLastname()
     {
         $data = ['customer_lastname' => 'test_value_customer_lastname'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -931,7 +931,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetCustomerMiddlename()
     {
         $data = ['customer_middlename' => 'test_value_customer_middlename'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -947,7 +947,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetCustomerNote()
     {
         $data = ['customer_note' => 'test_value_customer_note'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -963,7 +963,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetCustomerNoteNotify()
     {
         $data = ['customer_note_notify' => 'test_value_customer_note_notify'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -979,7 +979,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetCustomerPrefix()
     {
         $data = ['customer_prefix' => 'test_value_customer_prefix'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -995,7 +995,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetCustomerSuffix()
     {
         $data = ['customer_suffix' => 'test_value_customer_suffix'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1011,7 +1011,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetCustomerTaxvat()
     {
         $data = ['customer_taxvat' => 'test_value_customer_taxvat'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1027,7 +1027,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetDiscountAmount()
     {
         $data = ['discount_amount' => 'test_value_discount_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1043,7 +1043,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetDiscountCanceled()
     {
         $data = ['discount_canceled' => 'test_value_discount_canceled'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1059,7 +1059,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetDiscountDescription()
     {
         $data = ['discount_description' => 'test_value_discount_description'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1075,7 +1075,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetDiscountInvoiced()
     {
         $data = ['discount_invoiced' => 'test_value_discount_invoiced'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1091,7 +1091,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetDiscountRefunded()
     {
         $data = ['discount_refunded' => 'test_value_discount_refunded'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1107,7 +1107,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetEditIncrement()
     {
         $data = ['edit_increment' => 'test_value_edit_increment'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1123,7 +1123,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetEmailSent()
     {
         $data = ['email_sent' => 'test_value_email_sent'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1139,7 +1139,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetEntityId()
     {
         $data = ['entity_id' => 'test_value_entity_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1155,7 +1155,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetExtCustomerId()
     {
         $data = ['ext_customer_id' => 'test_value_ext_customer_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1171,7 +1171,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetExtOrderId()
     {
         $data = ['ext_order_id' => 'test_value_ext_order_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1187,7 +1187,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetForcedShipmentWithInvoice()
     {
         $data = ['forced_shipment_with_invoice' => 'test_value_forced_shipment_with_invoice'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1203,7 +1203,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetGlobalCurrencyCode()
     {
         $data = ['global_currency_code' => 'test_value_global_currency_code'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1219,7 +1219,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetGrandTotal()
     {
         $data = ['grand_total' => 'test_value_grand_total'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1235,7 +1235,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetHiddenTaxAmount()
     {
         $data = ['hidden_tax_amount' => 'test_value_hidden_tax_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1251,7 +1251,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetHiddenTaxInvoiced()
     {
         $data = ['hidden_tax_invoiced' => 'test_value_hidden_tax_invoiced'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1267,7 +1267,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetHiddenTaxRefunded()
     {
         $data = ['hidden_tax_refunded' => 'test_value_hidden_tax_refunded'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1283,7 +1283,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetHoldBeforeState()
     {
         $data = ['hold_before_state' => 'test_value_hold_before_state'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1299,7 +1299,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetHoldBeforeStatus()
     {
         $data = ['hold_before_status' => 'test_value_hold_before_status'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1315,7 +1315,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetIncrementId()
     {
         $data = ['increment_id' => 'test_value_increment_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1331,7 +1331,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetIsVirtual()
     {
         $data = ['is_virtual' => 'test_value_is_virtual'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1347,7 +1347,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetOrderCurrencyCode()
     {
         $data = ['order_currency_code' => 'test_value_order_currency_code'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1363,7 +1363,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetOriginalIncrementId()
     {
         $data = ['original_increment_id' => 'test_value_original_increment_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1379,7 +1379,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetPaymentAuthorizationAmount()
     {
         $data = ['payment_authorization_amount' => 'test_value_payment_authorization_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1395,7 +1395,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetPaymentAuthExpiration()
     {
         $data = ['payment_auth_expiration' => 'test_value_payment_auth_expiration'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1411,7 +1411,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetProtectCode()
     {
         $data = ['protect_code' => 'test_value_protect_code'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1427,7 +1427,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetQuoteAddressId()
     {
         $data = ['quote_address_id' => 'test_value_quote_address_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1443,7 +1443,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetQuoteId()
     {
         $data = ['quote_id' => 'test_value_quote_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1459,7 +1459,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetRelationChildId()
     {
         $data = ['relation_child_id' => 'test_value_relation_child_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1475,7 +1475,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetRelationChildRealId()
     {
         $data = ['relation_child_real_id' => 'test_value_relation_child_real_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1491,7 +1491,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetRelationParentId()
     {
         $data = ['relation_parent_id' => 'test_value_relation_parent_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1507,7 +1507,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetRelationParentRealId()
     {
         $data = ['relation_parent_real_id' => 'test_value_relation_parent_real_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1523,7 +1523,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetRemoteIp()
     {
         $data = ['remote_ip' => 'test_value_remote_ip'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1539,7 +1539,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetShippingAddressId()
     {
         $data = ['shipping_address_id' => 'test_value_shipping_address_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1555,7 +1555,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetShippingAmount()
     {
         $data = ['shipping_amount' => 'test_value_shipping_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1571,7 +1571,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetShippingCanceled()
     {
         $data = ['shipping_canceled' => 'test_value_shipping_canceled'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1587,7 +1587,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetShippingDescription()
     {
         $data = ['shipping_description' => 'test_value_shipping_description'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1603,7 +1603,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetShippingDiscountAmount()
     {
         $data = ['shipping_discount_amount' => 'test_value_shipping_discount_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1619,7 +1619,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetShippingHiddenTaxAmount()
     {
         $data = ['shipping_hidden_tax_amount' => 'test_value_shipping_hidden_tax_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1635,7 +1635,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetShippingInclTax()
     {
         $data = ['shipping_incl_tax' => 'test_value_shipping_incl_tax'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1651,7 +1651,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetShippingInvoiced()
     {
         $data = ['shipping_invoiced' => 'test_value_shipping_invoiced'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1667,7 +1667,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetShippingMethod()
     {
         $data = ['shipping_method' => 'test_value_shipping_method'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1683,7 +1683,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetShippingRefunded()
     {
         $data = ['shipping_refunded' => 'test_value_shipping_refunded'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1699,7 +1699,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetShippingTaxAmount()
     {
         $data = ['shipping_tax_amount' => 'test_value_shipping_tax_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1715,7 +1715,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetShippingTaxRefunded()
     {
         $data = ['shipping_tax_refunded' => 'test_value_shipping_tax_refunded'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1731,7 +1731,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetState()
     {
         $data = ['state' => 'test_value_state'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1747,7 +1747,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetStatus()
     {
         $data = ['status' => 'test_value_status'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1763,7 +1763,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetStoreCurrencyCode()
     {
         $data = ['store_currency_code' => 'test_value_store_currency_code'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1779,7 +1779,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetStoreId()
     {
         $data = ['store_id' => 'test_value_store_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1795,7 +1795,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetStoreName()
     {
         $data = ['store_name' => 'test_value_store_name'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1811,7 +1811,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetStoreToBaseRate()
     {
         $data = ['store_to_base_rate' => 'test_value_store_to_base_rate'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1827,7 +1827,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetStoreToOrderRate()
     {
         $data = ['store_to_order_rate' => 'test_value_store_to_order_rate'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1843,7 +1843,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetSubtotal()
     {
         $data = ['subtotal' => 'test_value_subtotal'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1859,7 +1859,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetSubtotalCanceled()
     {
         $data = ['subtotal_canceled' => 'test_value_subtotal_canceled'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1875,7 +1875,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetSubtotalInclTax()
     {
         $data = ['subtotal_incl_tax' => 'test_value_subtotal_incl_tax'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1891,7 +1891,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetSubtotalInvoiced()
     {
         $data = ['subtotal_invoiced' => 'test_value_subtotal_invoiced'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1907,7 +1907,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetSubtotalRefunded()
     {
         $data = ['subtotal_refunded' => 'test_value_subtotal_refunded'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1923,7 +1923,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetTaxAmount()
     {
         $data = ['tax_amount' => 'test_value_tax_amount'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1939,7 +1939,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetTaxCanceled()
     {
         $data = ['tax_canceled' => 'test_value_tax_canceled'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1955,7 +1955,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetTaxInvoiced()
     {
         $data = ['tax_invoiced' => 'test_value_tax_invoiced'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1971,7 +1971,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetTaxRefunded()
     {
         $data = ['tax_refunded' => 'test_value_tax_refunded'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -1987,7 +1987,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetTotalCanceled()
     {
         $data = ['total_canceled' => 'test_value_total_canceled'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -2003,7 +2003,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetTotalDue()
     {
         $data = ['total_due' => 'test_value_total_due'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -2019,7 +2019,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetTotalInvoiced()
     {
         $data = ['total_invoiced' => 'test_value_total_invoiced'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -2035,7 +2035,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetTotalItemCount()
     {
         $data = ['total_item_count' => 'test_value_total_item_count'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -2051,7 +2051,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetTotalOfflineRefunded()
     {
         $data = ['total_offline_refunded' => 'test_value_total_offline_refunded'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -2067,7 +2067,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetTotalOnlineRefunded()
     {
         $data = ['total_online_refunded' => 'test_value_total_online_refunded'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -2083,7 +2083,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetTotalPaid()
     {
         $data = ['total_paid' => 'test_value_total_paid'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -2099,7 +2099,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetTotalQtyOrdered()
     {
         $data = ['total_qty_ordered' => 'test_value_total_qty_ordered'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -2115,7 +2115,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetTotalRefunded()
     {
         $data = ['total_refunded' => 'test_value_total_refunded'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -2131,7 +2131,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetUpdatedAt()
     {
         $data = ['updated_at' => 'test_value_updated_at'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -2147,7 +2147,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetWeight()
     {
         $data = ['weight' => 'test_value_weight'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -2163,7 +2163,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetXForwardedFor()
     {
         $data = ['x_forwarded_for' => 'test_value_x_forwarded_for'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -2179,7 +2179,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetItems()
     {
         $data = ['items' => 'test_value_items'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -2195,7 +2195,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetBillingAddress()
     {
         $data = ['billing_address' => 'test_value_billing_address'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -2211,7 +2211,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetShippingAddress()
     {
         $data = ['shipping_address' => 'test_value_shipping_address'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -2227,7 +2227,7 @@ class OrderTest extends \PHPUnit_Framework_TestCase
     public function testGetPayments()
     {
         $data = ['payments' => 'test_value_payments'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
diff --git a/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Data/ShipmentItemTest.php b/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Data/ShipmentItemTest.php
index 8123abfc2b3..d267bfc852e 100644
--- a/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Data/ShipmentItemTest.php
+++ b/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Data/ShipmentItemTest.php
@@ -28,7 +28,7 @@ class ShipmentItemTest extends \PHPUnit_Framework_TestCase
     public function testGetAdditionalData()
     {
         $data = ['additional_data' => 'test_value_additional_data'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -44,7 +44,7 @@ class ShipmentItemTest extends \PHPUnit_Framework_TestCase
     public function testGetDescription()
     {
         $data = ['description' => 'test_value_description'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -60,7 +60,7 @@ class ShipmentItemTest extends \PHPUnit_Framework_TestCase
     public function testGetEntityId()
     {
         $data = ['entity_id' => 'test_value_entity_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -76,7 +76,7 @@ class ShipmentItemTest extends \PHPUnit_Framework_TestCase
     public function testGetName()
     {
         $data = ['name' => 'test_value_name'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -92,7 +92,7 @@ class ShipmentItemTest extends \PHPUnit_Framework_TestCase
     public function testGetOrderItemId()
     {
         $data = ['order_item_id' => 'test_value_order_item_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -108,7 +108,7 @@ class ShipmentItemTest extends \PHPUnit_Framework_TestCase
     public function testGetParentId()
     {
         $data = ['parent_id' => 'test_value_parent_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -124,7 +124,7 @@ class ShipmentItemTest extends \PHPUnit_Framework_TestCase
     public function testGetPrice()
     {
         $data = ['price' => 'test_value_price'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -140,7 +140,7 @@ class ShipmentItemTest extends \PHPUnit_Framework_TestCase
     public function testGetProductId()
     {
         $data = ['product_id' => 'test_value_product_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -156,7 +156,7 @@ class ShipmentItemTest extends \PHPUnit_Framework_TestCase
     public function testGetQty()
     {
         $data = ['qty' => 'test_value_qty'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -172,7 +172,7 @@ class ShipmentItemTest extends \PHPUnit_Framework_TestCase
     public function testGetRowTotal()
     {
         $data = ['row_total' => 'test_value_row_total'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -188,7 +188,7 @@ class ShipmentItemTest extends \PHPUnit_Framework_TestCase
     public function testGetSku()
     {
         $data = ['sku' => 'test_value_sku'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -204,7 +204,7 @@ class ShipmentItemTest extends \PHPUnit_Framework_TestCase
     public function testGetWeight()
     {
         $data = ['weight' => 'test_value_weight'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
diff --git a/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Data/ShipmentTest.php b/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Data/ShipmentTest.php
index 907aefed9e9..925d6f80882 100644
--- a/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Data/ShipmentTest.php
+++ b/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Data/ShipmentTest.php
@@ -28,7 +28,7 @@ class ShipmentTest extends \PHPUnit_Framework_TestCase
     public function testGetBillingAddressId()
     {
         $data = ['billing_address_id' => 'test_value_billing_address_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -44,7 +44,7 @@ class ShipmentTest extends \PHPUnit_Framework_TestCase
     public function testGetCreatedAt()
     {
         $data = ['created_at' => 'test_value_created_at'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -60,7 +60,7 @@ class ShipmentTest extends \PHPUnit_Framework_TestCase
     public function testGetCustomerId()
     {
         $data = ['customer_id' => 'test_value_customer_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -76,7 +76,7 @@ class ShipmentTest extends \PHPUnit_Framework_TestCase
     public function testGetEmailSent()
     {
         $data = ['email_sent' => 'test_value_email_sent'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -92,7 +92,7 @@ class ShipmentTest extends \PHPUnit_Framework_TestCase
     public function testGetEntityId()
     {
         $data = ['entity_id' => 'test_value_entity_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -108,7 +108,7 @@ class ShipmentTest extends \PHPUnit_Framework_TestCase
     public function testGetIncrementId()
     {
         $data = ['increment_id' => 'test_value_increment_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -124,7 +124,7 @@ class ShipmentTest extends \PHPUnit_Framework_TestCase
     public function testGetOrderId()
     {
         $data = ['order_id' => 'test_value_order_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -140,7 +140,7 @@ class ShipmentTest extends \PHPUnit_Framework_TestCase
     public function testGetPackages()
     {
         $data = ['packages' => 'test_value_packages'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -156,7 +156,7 @@ class ShipmentTest extends \PHPUnit_Framework_TestCase
     public function testGetShipmentStatus()
     {
         $data = ['shipment_status' => 'test_value_shipment_status'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -172,7 +172,7 @@ class ShipmentTest extends \PHPUnit_Framework_TestCase
     public function testGetShippingAddressId()
     {
         $data = ['shipping_address_id' => 'test_value_shipping_address_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -188,7 +188,7 @@ class ShipmentTest extends \PHPUnit_Framework_TestCase
     public function testGetShippingLabel()
     {
         $data = ['shipping_label' => 'test_value_shipping_label'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -204,7 +204,7 @@ class ShipmentTest extends \PHPUnit_Framework_TestCase
     public function testGetStoreId()
     {
         $data = ['store_id' => 'test_value_store_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -220,7 +220,7 @@ class ShipmentTest extends \PHPUnit_Framework_TestCase
     public function testGetTotalQty()
     {
         $data = ['total_qty' => 'test_value_total_qty'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -236,7 +236,7 @@ class ShipmentTest extends \PHPUnit_Framework_TestCase
     public function testGetTotalWeight()
     {
         $data = ['total_weight' => 'test_value_total_weight'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -252,7 +252,7 @@ class ShipmentTest extends \PHPUnit_Framework_TestCase
     public function testGetUpdatedAt()
     {
         $data = ['updated_at' => 'test_value_updated_at'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
diff --git a/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Data/ShipmentTrackTest.php b/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Data/ShipmentTrackTest.php
index 77cc1739e13..f464b174a0a 100644
--- a/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Data/ShipmentTrackTest.php
+++ b/dev/tests/unit/testsuite/Magento/Sales/Service/V1/Data/ShipmentTrackTest.php
@@ -28,7 +28,7 @@ class ShipmentTrackTest extends \PHPUnit_Framework_TestCase
     public function testGetCarrierCode()
     {
         $data = ['carrier_code' => 'test_value_carrier_code'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -44,7 +44,7 @@ class ShipmentTrackTest extends \PHPUnit_Framework_TestCase
     public function testGetCreatedAt()
     {
         $data = ['created_at' => 'test_value_created_at'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -60,7 +60,7 @@ class ShipmentTrackTest extends \PHPUnit_Framework_TestCase
     public function testGetDescription()
     {
         $data = ['description' => 'test_value_description'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -76,7 +76,7 @@ class ShipmentTrackTest extends \PHPUnit_Framework_TestCase
     public function testGetEntityId()
     {
         $data = ['entity_id' => 'test_value_entity_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -92,7 +92,7 @@ class ShipmentTrackTest extends \PHPUnit_Framework_TestCase
     public function testGetOrderId()
     {
         $data = ['order_id' => 'test_value_order_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -108,7 +108,7 @@ class ShipmentTrackTest extends \PHPUnit_Framework_TestCase
     public function testGetParentId()
     {
         $data = ['parent_id' => 'test_value_parent_id'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -124,7 +124,7 @@ class ShipmentTrackTest extends \PHPUnit_Framework_TestCase
     public function testGetQty()
     {
         $data = ['qty' => 'test_value_qty'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -140,7 +140,7 @@ class ShipmentTrackTest extends \PHPUnit_Framework_TestCase
     public function testGetTitle()
     {
         $data = ['title' => 'test_value_title'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -156,7 +156,7 @@ class ShipmentTrackTest extends \PHPUnit_Framework_TestCase
     public function testGetTrackNumber()
     {
         $data = ['track_number' => 'test_value_track_number'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -172,7 +172,7 @@ class ShipmentTrackTest extends \PHPUnit_Framework_TestCase
     public function testGetUpdatedAt()
     {
         $data = ['updated_at' => 'test_value_updated_at'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
@@ -188,7 +188,7 @@ class ShipmentTrackTest extends \PHPUnit_Framework_TestCase
     public function testGetWeight()
     {
         $data = ['weight' => 'test_value_weight'];
-        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder')
+        $abstractBuilderMock = $this->getMockBuilder('Magento\Framework\Api\ExtensibleObjectBuilder')
             ->setMethods(['getData'])
             ->disableOriginalConstructor()
             ->getMockForAbstractClass();
diff --git a/dev/tests/unit/testsuite/Magento/Sales/Service/V1/InvoiceReadTest.php b/dev/tests/unit/testsuite/Magento/Sales/Service/V1/InvoiceReadTest.php
index 3caefcc0551..ed4df9ca148 100644
--- a/dev/tests/unit/testsuite/Magento/Sales/Service/V1/InvoiceReadTest.php
+++ b/dev/tests/unit/testsuite/Magento/Sales/Service/V1/InvoiceReadTest.php
@@ -99,7 +99,7 @@ class InvoiceReadTest extends \PHPUnit_Framework_TestCase
      */
     public function testSearch()
     {
-        $searchCriteria = $this->getMock('Magento\Framework\Service\V1\Data\SearchCriteria', [], [], '', false);
+        $searchCriteria = $this->getMock('Magento\Framework\Api\SearchCriteria', [], [], '', false);
         $this->invoiceListMock->expects($this->once())
             ->method('invoke')
             ->with($searchCriteria)
diff --git a/dev/tests/unit/testsuite/Magento/Sales/Service/V1/OrderReadTest.php b/dev/tests/unit/testsuite/Magento/Sales/Service/V1/OrderReadTest.php
index 302b128cf01..34ce6fd7508 100644
--- a/dev/tests/unit/testsuite/Magento/Sales/Service/V1/OrderReadTest.php
+++ b/dev/tests/unit/testsuite/Magento/Sales/Service/V1/OrderReadTest.php
@@ -112,7 +112,7 @@ class OrderReadTest extends \PHPUnit_Framework_TestCase
      */
     public function testSearch()
     {
-        $searchCriteria = $this->getMock('Magento\Framework\Service\V1\Data\SearchCriteria', [], [], '', false);
+        $searchCriteria = $this->getMock('Magento\Framework\Api\SearchCriteria', [], [], '', false);
         $this->orderListMock->expects($this->once())
             ->method('invoke')
             ->with($searchCriteria)
diff --git a/dev/tests/unit/testsuite/Magento/Sales/Service/V1/ShipmentReadTest.php b/dev/tests/unit/testsuite/Magento/Sales/Service/V1/ShipmentReadTest.php
index d2fffc4c0e0..0179ded9b53 100644
--- a/dev/tests/unit/testsuite/Magento/Sales/Service/V1/ShipmentReadTest.php
+++ b/dev/tests/unit/testsuite/Magento/Sales/Service/V1/ShipmentReadTest.php
@@ -112,7 +112,7 @@ class ShipmentReadTest extends \PHPUnit_Framework_TestCase
      */
     public function testSearch()
     {
-        $searchCriteria = $this->getMock('Magento\Framework\Service\V1\Data\SearchCriteria', [], [], '', false);
+        $searchCriteria = $this->getMock('Magento\Framework\Api\SearchCriteria', [], [], '', false);
         $this->shipmentListMock->expects($this->once())
             ->method('invoke')
             ->with($searchCriteria)
diff --git a/dev/tests/unit/testsuite/Magento/Sales/Service/V1/TransactionReadTest.php b/dev/tests/unit/testsuite/Magento/Sales/Service/V1/TransactionReadTest.php
index d117dbe1905..6010d00c1ae 100644
--- a/dev/tests/unit/testsuite/Magento/Sales/Service/V1/TransactionReadTest.php
+++ b/dev/tests/unit/testsuite/Magento/Sales/Service/V1/TransactionReadTest.php
@@ -97,9 +97,9 @@ class TransactionReadTest extends \PHPUnit_Framework_TestCase
     public function testSearch()
     {
         /**
-         * @var \Magento\Framework\Service\V1\Data\SearchCriteria $searchCriteria
+         * @var \Magento\Framework\Api\SearchCriteria $searchCriteria
          */
-        $searchCriteria = $this->getMock('Magento\Framework\Service\V1\Data\SearchCriteria', [], [], '', false);
+        $searchCriteria = $this->getMock('Magento\Framework\Api\SearchCriteria', [], [], '', false);
         $transactions = $this->getMock('Magento\Sales\Model\Order\Payment\Transaction', [], [], '', false);
         $transactionDto = $this->getMock('Magento\Sales\Service\V1\Data\Transaction', [], [], '', false);
         $searchResults = $this->getMock('Magento\Sales\Service\V1\Data\TransactionSearchResults', [], [], '', false);
diff --git a/dev/tests/unit/testsuite/Magento/Store/Model/Config/Reader/DefaultReaderTest.php b/dev/tests/unit/testsuite/Magento/Store/Model/Config/Reader/DefaultReaderTest.php
index 783b1dcb237..2be2729031a 100644
--- a/dev/tests/unit/testsuite/Magento/Store/Model/Config/Reader/DefaultReaderTest.php
+++ b/dev/tests/unit/testsuite/Magento/Store/Model/Config/Reader/DefaultReaderTest.php
@@ -40,11 +40,6 @@ class DefaultReaderTest extends \PHPUnit_Framework_TestCase
      */
     protected $_collectionFactory;
 
-    /**
-     * @var \PHPUnit_Framework_MockObject_MockObject
-     */
-    protected $_appStateMock;
-
     protected function setUp()
     {
         $this->_initialConfigMock = $this->getMock('Magento\Framework\App\Config\Initial', array(), array(), '', false);
@@ -55,13 +50,10 @@ class DefaultReaderTest extends \PHPUnit_Framework_TestCase
             '',
             false
         );
-        $this->_appStateMock = $this->getMock('Magento\Framework\App\State', array(), array(), '', false);
-        $this->_appStateMock->expects($this->any())->method('isInstalled')->will($this->returnValue(true));
         $this->_model = new \Magento\Store\Model\Config\Reader\DefaultReader(
             $this->_initialConfigMock,
             new \Magento\Framework\App\Config\Scope\Converter(),
-            $this->_collectionFactory,
-            $this->_appStateMock
+            $this->_collectionFactory
         );
     }
 
diff --git a/dev/tests/unit/testsuite/Magento/Store/Model/Config/Reader/StoreTest.php b/dev/tests/unit/testsuite/Magento/Store/Model/Config/Reader/StoreTest.php
index f763f4dd951..5036fead596 100644
--- a/dev/tests/unit/testsuite/Magento/Store/Model/Config/Reader/StoreTest.php
+++ b/dev/tests/unit/testsuite/Magento/Store/Model/Config/Reader/StoreTest.php
@@ -50,11 +50,6 @@ class StoreTest extends \PHPUnit_Framework_TestCase
      */
     protected $_storeMock;
 
-    /**
-     * @var \PHPUnit_Framework_MockObject_MockObject
-     */
-    protected $_appStateMock;
-
     protected function setUp()
     {
         $this->_scopePullMock = $this->getMock('Magento\Framework\App\Config\ScopePool', [], [], '', false);
@@ -71,9 +66,6 @@ class StoreTest extends \PHPUnit_Framework_TestCase
         $this->_storeMock = $this->getMock('Magento\Store\Model\Store', [], [], '', false);
         $storeFactoryMock->expects($this->any())->method('create')->will($this->returnValue($this->_storeMock));
 
-        $this->_appStateMock = $this->getMock('Magento\Framework\App\State', [], [], '', false);
-        $this->_appStateMock->expects($this->any())->method('isInstalled')->will($this->returnValue(true));
-
         $placeholderProcessor = $this->getMock(
             'Magento\Store\Model\Config\Processor\Placeholder',
             [],
@@ -88,7 +80,6 @@ class StoreTest extends \PHPUnit_Framework_TestCase
             new \Magento\Store\Model\Config\Converter($placeholderProcessor),
             $this->_collectionFactory,
             $storeFactoryMock,
-            $this->_appStateMock,
             $this->_storeManagerMock
         );
     }
diff --git a/dev/tests/unit/testsuite/Magento/Store/Model/Config/Reader/WebsiteTest.php b/dev/tests/unit/testsuite/Magento/Store/Model/Config/Reader/WebsiteTest.php
index 061ed34a1c1..784c8dce08b 100644
--- a/dev/tests/unit/testsuite/Magento/Store/Model/Config/Reader/WebsiteTest.php
+++ b/dev/tests/unit/testsuite/Magento/Store/Model/Config/Reader/WebsiteTest.php
@@ -50,11 +50,6 @@ class WebsiteTest extends \PHPUnit_Framework_TestCase
      */
     protected $_websiteMock;
 
-    /**
-     * @var \PHPUnit_Framework_MockObject_MockObject
-     */
-    protected $_appStateMock;
-
     protected function setUp()
     {
         $this->_initialConfigMock = $this->getMock('Magento\Framework\App\Config\Initial', array(), array(), '', false);
@@ -76,16 +71,12 @@ class WebsiteTest extends \PHPUnit_Framework_TestCase
         $this->_websiteMock = $this->getMock('Magento\Store\Model\Website', array(), array(), '', false);
         $websiteFactoryMock->expects($this->any())->method('create')->will($this->returnValue($this->_websiteMock));
 
-        $this->_appStateMock = $this->getMock('Magento\Framework\App\State', array(), array(), '', false);
-        $this->_appStateMock->expects($this->any())->method('isInstalled')->will($this->returnValue(true));
-
         $this->_model = new \Magento\Store\Model\Config\Reader\Website(
             $this->_initialConfigMock,
             $this->_scopePullMock,
             new \Magento\Framework\App\Config\Scope\Converter(),
             $this->_collectionFactory,
-            $websiteFactoryMock,
-            $this->_appStateMock
+            $websiteFactoryMock
         );
     }
 
diff --git a/dev/tests/unit/testsuite/Magento/Store/Model/StorageFactoryTest.php b/dev/tests/unit/testsuite/Magento/Store/Model/StorageFactoryTest.php
index c28ada75cde..a16558c3a51 100644
--- a/dev/tests/unit/testsuite/Magento/Store/Model/StorageFactoryTest.php
+++ b/dev/tests/unit/testsuite/Magento/Store/Model/StorageFactoryTest.php
@@ -198,35 +198,8 @@ class StorageFactoryTest extends \PHPUnit_Framework_TestCase
             }));
     }
 
-    public function testGetInNotInstalledModeWithInternalCache()
+    public function testGetModeWithInternalCache()
     {
-        $this->_appStateMock->expects($this->exactly(2))->method('isInstalled')->will($this->returnValue(false));
-
-        $this->_objectManagerMock->expects(
-            $this->once()
-        )->method(
-            'create'
-        )->with(
-            $this->_defaultStorage
-        )->will(
-            $this->returnValue($this->_storeManager)
-        );
-
-        $this->_eventManagerMock->expects($this->never())->method('dispatch');
-        $this->_logMock->expects($this->never())->method('initForStore');
-        $this->_sidResolverMock->expects($this->never())->method('setUseSessionInUrl');
-
-        /** test create instance */
-        $this->assertEquals($this->_storeManager, $this->_model->get($this->_arguments));
-
-        /** test read instance from internal cache */
-        $this->assertEquals($this->_storeManager, $this->_model->get($this->_arguments));
-    }
-
-    public function testGetInstalledModeWithInternalCache()
-    {
-        $this->_appStateMock->expects($this->exactly(2))->method('isInstalled')->will($this->returnValue(true));
-
         $store = $this->getMock('Magento\Store\Model\Store', [], [], '', false);
 
         $this->_storeManager->expects($this->exactly(3))->method('getStore')->will($this->returnValue($store));
@@ -288,8 +261,6 @@ class StorageFactoryTest extends \PHPUnit_Framework_TestCase
      */
     public function testGetWithInvalidStorageClassName()
     {
-        $this->_appStateMock->expects($this->once())->method('isInstalled')->will($this->returnValue(true));
-
         $invalidObject = $this->getMock('Magento\Store\Model\Store', [], [], '', false);
 
         $this->_objectManagerMock->expects(
@@ -332,7 +303,6 @@ class StorageFactoryTest extends \PHPUnit_Framework_TestCase
     {
         $this->_arguments['scopeCode'] = $scopeCode;
         $this->_arguments['scopeType'] = $scopeType;
-        $this->_appStateMock->expects($this->once())->method('isInstalled')->will($this->returnValue(true));
 
         $this->website->expects($defaultGroupId === null ? $this->never() : $this->atLeastOnce())
             ->method('getDefaultGroupId')
@@ -372,7 +342,6 @@ class StorageFactoryTest extends \PHPUnit_Framework_TestCase
         $this->_arguments['scopeType'] = 'unknown';
 
         $this->_objectManagerMock->expects($this->once())->method('create')->will($this->returnValue($this->storage));
-        $this->_appStateMock->expects($this->once())->method('isInstalled')->will($this->returnValue(true));
 
         $this->_model->get($this->_arguments);
     }
@@ -389,8 +358,6 @@ class StorageFactoryTest extends \PHPUnit_Framework_TestCase
         $this->_arguments['scopeCode'] = $scopeCode;
         $this->_arguments['scopeType'] = $scopeType;
 
-        $this->_appStateMock->expects($this->once())->method('isInstalled')->will($this->returnValue(true));
-
         $this->website->expects($this->any())->method('getDefaultGroupId')->will($this->returnValue(11));
 
         $this->group->expects($this->any())->method('getDefaultStoreId')->will($this->returnValue(21));
@@ -431,8 +398,6 @@ class StorageFactoryTest extends \PHPUnit_Framework_TestCase
      */
     public function testGetFromRequest($isActiveStore, $isDefault, $cookieCall = '')
     {
-        $this->_appStateMock->expects($this->once())->method('isInstalled')->will($this->returnValue(true));
-
         $storeDefault = $this->getMock('Magento\Store\Model\Store', [], [], '', false);
         if (!$isDefault) {
             $storeDefault->expects($this->atLeastOnce())->method('getId')->will($this->returnValue(22));
diff --git a/dev/tests/unit/testsuite/Magento/Tax/Model/TaxClass/Type/CustomerTest.php b/dev/tests/unit/testsuite/Magento/Tax/Model/TaxClass/Type/CustomerTest.php
index 0a8473e1bc5..e9562a5dd6d 100644
--- a/dev/tests/unit/testsuite/Magento/Tax/Model/TaxClass/Type/CustomerTest.php
+++ b/dev/tests/unit/testsuite/Magento/Tax/Model/TaxClass/Type/CustomerTest.php
@@ -29,7 +29,7 @@ class CustomerTest extends \PHPUnit_Framework_TestCase
     {
         $objectManagerHelper = new \Magento\TestFramework\Helper\ObjectManager($this);
 
-        $searchResultsMock  = $this->getMockBuilder('Magento\Framework\Service\V1\Data\SearchResults')
+        $searchResultsMock  = $this->getMockBuilder('Magento\Framework\Api\SearchResults')
             ->setMethods(['getItems'])
             ->disableOriginalConstructor()
             ->getMock();
@@ -38,11 +38,11 @@ class CustomerTest extends \PHPUnit_Framework_TestCase
             ->will($this->returnValue(['randomValue']));
 
         $filterBuilder = $objectManagerHelper
-            ->getObject('\Magento\Framework\Service\V1\Data\FilterBuilder');
+            ->getObject('\Magento\Framework\Api\FilterBuilder');
         $filterGroupBuilder = $objectManagerHelper
-            ->getObject('\Magento\Framework\Service\V1\Data\Search\FilterGroupBuilder');
+            ->getObject('\Magento\Framework\Api\Search\FilterGroupBuilder');
         $searchCriteriaBuilder = $objectManagerHelper->getObject(
-            'Magento\Framework\Service\V1\Data\SearchCriteriaBuilder',
+            'Magento\Framework\Api\SearchCriteriaBuilder',
             [
                 'filterGroupBuilder' => $filterGroupBuilder
             ]
diff --git a/dev/tests/unit/testsuite/Magento/Tax/Service/V1/TaxClassServiceTest.php b/dev/tests/unit/testsuite/Magento/Tax/Service/V1/TaxClassServiceTest.php
index 72bb7ce3924..86aae952ca9 100644
--- a/dev/tests/unit/testsuite/Magento/Tax/Service/V1/TaxClassServiceTest.php
+++ b/dev/tests/unit/testsuite/Magento/Tax/Service/V1/TaxClassServiceTest.php
@@ -28,7 +28,7 @@ use Magento\Framework\Exception\InputException;
 use Magento\Tax\Service\V1\Data\TaxClass;
 use Magento\Tax\Service\V1\Data\TaxClassBuilder;
 use Magento\Tax\Service\V1\Data\TaxClassKey;
-use Magento\Framework\Service\V1\Data\SearchCriteria;
+use Magento\Framework\Api\SearchCriteria;
 
 /**
  * Test for \Magento\Tax\Service\V1\TaxClassService
@@ -50,7 +50,7 @@ class TaxClassServiceTest extends \PHPUnit_Framework_TestCase
     private $searchResultBuilder;
 
     /**
-     * @var \Magento\Framework\Service\V1\Data\SearchCriteriaBuilder|\PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\Api\SearchCriteriaBuilder|\PHPUnit_Framework_MockObject_MockObject
      */
     private $searchCriteriaBuilderMock;
 
@@ -85,7 +85,7 @@ class TaxClassServiceTest extends \PHPUnit_Framework_TestCase
     private $objectManager;
 
     /**
-     * @var \Magento\Framework\Service\V1\Data\SortOrderBuilder;
+     * @var \Magento\Framework\Api\SortOrderBuilder;
      */
     private $sortOrderBuilder;
 
@@ -112,7 +112,7 @@ class TaxClassServiceTest extends \PHPUnit_Framework_TestCase
         $this->taxClassService = $this->createService();
 
         $this->sortOrderBuilder = $this->objectManager->getObject(
-            'Magento\Framework\Service\V1\Data\SortOrderBuilder'
+            'Magento\Framework\Api\SortOrderBuilder'
         );
     }
 
@@ -442,7 +442,7 @@ class TaxClassServiceTest extends \PHPUnit_Framework_TestCase
             $this->searchCriteriaBuilderMock->expects($this->exactly(2))
                 ->method('addFilter')
                 ->will($this->returnValue($this->searchCriteriaBuilderMock));
-            /** @var \Magento\Framework\Service\V1\Data\SearchCriteria $searchCriteria */
+            /** @var \Magento\Framework\Api\SearchCriteria $searchCriteria */
             $searchCriteria = $this->createSearchCriteria();
             $this->searchCriteriaBuilderMock->expects($this->once())
                 ->method('create')
@@ -546,7 +546,7 @@ class TaxClassServiceTest extends \PHPUnit_Framework_TestCase
             ->getMock();
 
         $this->searchCriteriaBuilderMock = $this->getMockBuilder(
-            'Magento\Framework\Service\V1\Data\SearchCriteriaBuilder'
+            'Magento\Framework\Api\SearchCriteriaBuilder'
         )->disableOriginalConstructor()
             ->getMock();
 
@@ -565,21 +565,21 @@ class TaxClassServiceTest extends \PHPUnit_Framework_TestCase
     }
 
     /**
-     * @return \Magento\Framework\Service\V1\Data\SearchCriteria
+     * @return \Magento\Framework\Api\SearchCriteria
      */
     private function createSearchCriteria()
     {
-        /** @var \Magento\Framework\Service\V1\Data\Search\FilterGroupBuilder $filterGroupBuilder */
+        /** @var \Magento\Framework\Api\Search\FilterGroupBuilder $filterGroupBuilder */
         $filterGroupBuilder = $this->objectManager->getObject(
-            'Magento\Framework\Service\V1\Data\Search\FilterGroupBuilder'
+            'Magento\Framework\Api\Search\FilterGroupBuilder'
         );
-        /** @var \Magento\Framework\Service\V1\Data\SearchCriteriaBuilder $searchCriteriaBuilder */
+        /** @var \Magento\Framework\Api\SearchCriteriaBuilder $searchCriteriaBuilder */
         $searchCriteriaBuilder = $this->objectManager->getObject(
-            'Magento\Framework\Service\V1\Data\SearchCriteriaBuilder',
+            'Magento\Framework\Api\SearchCriteriaBuilder',
             ['filterGroupBuilder' => $filterGroupBuilder]
         );
-        /** @var \Magento\Framework\Service\V1\Data\FilterBuilder $filterBuilder */
-        $filterBuilder = $this->objectManager->getObject('Magento\Framework\Service\V1\Data\FilterBuilder');
+        /** @var \Magento\Framework\Api\FilterBuilder $filterBuilder */
+        $filterBuilder = $this->objectManager->getObject('Magento\Framework\Api\FilterBuilder');
         $productTaxClass = [TaxClass::KEY_NAME => 'Taxable Goods', TaxClass::KEY_TYPE => 'PRODUCT'];
         $customerTaxClass = [TaxClass::KEY_NAME => 'Retail Customer', TaxClass::KEY_TYPE => 'CUSTOMER'];
 
@@ -602,11 +602,11 @@ class TaxClassServiceTest extends \PHPUnit_Framework_TestCase
          */
         $searchCriteriaBuilder->addFilter([$filter1, $filter2]);
         $searchCriteriaBuilder->addFilter([$filter3, $filter4]);
-        /**@var \Magento\Framework\Service\V1\Data\SortOrderBuilder $sortOrderBuilder */
+        /**@var \Magento\Framework\Api\SortOrderBuilder $sortOrderBuilder */
         $sortOrderBuilder = $this->objectManager->getObject(
-            'Magento\Framework\Service\V1\Data\SortOrderBuilder'
+            'Magento\Framework\Api\SortOrderBuilder'
         );
-        /** @var \Magento\Framework\Service\V1\Data\SortOrder $sortOrder */
+        /** @var \Magento\Framework\Api\SortOrder $sortOrder */
         $sortOrder = $sortOrderBuilder->setField('class_name')->setDirection(SearchCriteria::SORT_ASC)->create();
         $searchCriteria = $searchCriteriaBuilder
             ->setCurrentPage(1)
diff --git a/dev/tests/unit/testsuite/Magento/Tax/Service/V1/TaxRateServiceTest.php b/dev/tests/unit/testsuite/Magento/Tax/Service/V1/TaxRateServiceTest.php
index 33d0dc7ba1d..0aa9402853c 100644
--- a/dev/tests/unit/testsuite/Magento/Tax/Service/V1/TaxRateServiceTest.php
+++ b/dev/tests/unit/testsuite/Magento/Tax/Service/V1/TaxRateServiceTest.php
@@ -27,9 +27,9 @@ use Magento\Framework\Exception\NoSuchEntityException;
 use Magento\Tax\Model\Calculation\Rate as RateModel;
 use Magento\Tax\Service\V1\Data\TaxRate;
 use Magento\TestFramework\Helper\ObjectManager;
-use Magento\Framework\Service\V1\Data\SearchCriteriaBuilder;
+use Magento\Framework\Api\SearchCriteriaBuilder;
 use Magento\Tax\Model\Calculation\RateFactory;
-use Magento\Framework\Service\V1\Data\SearchCriteria;
+use Magento\Framework\Api\SearchCriteria;
 
 /**
  * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
@@ -114,10 +114,10 @@ class TaxRateServiceTest extends \PHPUnit_Framework_TestCase
             'Magento\Tax\Service\V1\Data\TaxRateSearchResultsBuilder'
         );
         $filterGroupBuilder = $this->objectManager
-            ->getObject('Magento\Framework\Service\V1\Data\Search\FilterGroupBuilder');
+            ->getObject('Magento\Framework\Api\Search\FilterGroupBuilder');
         /** @var SearchCriteriaBuilder $searchBuilder */
         $this->searchCriteriaBuilder = $this->objectManager->getObject(
-            'Magento\Framework\Service\V1\Data\SearchCriteriaBuilder',
+            'Magento\Framework\Api\SearchCriteriaBuilder',
             ['filterGroupBuilder' => $filterGroupBuilder]
         );
 
@@ -524,7 +524,7 @@ class TaxRateServiceTest extends \PHPUnit_Framework_TestCase
             ]
         );
 
-        $filterBuilder = $this->objectManager->getObject('\Magento\Framework\Service\V1\Data\FilterBuilder');
+        $filterBuilder = $this->objectManager->getObject('\Magento\Framework\Api\FilterBuilder');
         $filter = $filterBuilder->setField(TaxRate::KEY_REGION_ID)->setValue(self::REGION_ID)->create();
         $this->searchCriteriaBuilder->addFilter([$filter]);
 
@@ -580,9 +580,9 @@ class TaxRateServiceTest extends \PHPUnit_Framework_TestCase
             ->with($this->rateModelMock)
             ->will($this->returnValue($taxRate));
 
-        $filterBuilder = $this->objectManager->getObject('\Magento\Framework\Service\V1\Data\FilterBuilder');
+        $filterBuilder = $this->objectManager->getObject('\Magento\Framework\Api\FilterBuilder');
         $filter = $filterBuilder->setField(TaxRate::KEY_REGION_ID)->setValue(self::REGION_ID)->create();
-        $sortOrderBuilder = $this->objectManager->getObject('\Magento\Framework\Service\V1\Data\SortOrderBuilder');
+        $sortOrderBuilder = $this->objectManager->getObject('\Magento\Framework\Api\SortOrderBuilder');
         $sortOrder = $sortOrderBuilder
             ->setField(TaxRate::KEY_REGION_ID)
             ->setDirection(SearchCriteria::SORT_ASC)
diff --git a/dev/tests/unit/testsuite/Magento/Tax/Service/V1/TaxRuleServiceTest.php b/dev/tests/unit/testsuite/Magento/Tax/Service/V1/TaxRuleServiceTest.php
index 61f05b36684..31d13cc278c 100644
--- a/dev/tests/unit/testsuite/Magento/Tax/Service/V1/TaxRuleServiceTest.php
+++ b/dev/tests/unit/testsuite/Magento/Tax/Service/V1/TaxRuleServiceTest.php
@@ -30,7 +30,7 @@ use Magento\Tax\Service\V1\Data\TaxRule;
 use Magento\Tax\Service\V1\Data\TaxClass;
 use Magento\Tax\Model\ClassModel as TaxClassModel;
 use Magento\TestFramework\Helper\ObjectManager;
-use Magento\Framework\Service\V1\Data\SearchCriteria;
+use Magento\Framework\Api\SearchCriteria;
 
 /**
  * Class TaxRuleServiceTest
@@ -65,12 +65,12 @@ class TaxRuleServiceTest extends \PHPUnit_Framework_TestCase
     private $taxRuleModelFactoryMock;
 
     /**
-     * @var \Magento\Framework\Service\V1\Data\FilterBuilder | \PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\Api\FilterBuilder | \PHPUnit_Framework_MockObject_MockObject
      */
     protected $filterBuilderMock;
 
     /**
-     * @var \Magento\Framework\Service\V1\Data\SearchCriteriaBuilder | \PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\Api\SearchCriteriaBuilder | \PHPUnit_Framework_MockObject_MockObject
      */
     protected $searchCriteriaBuilderMock;
 
@@ -113,11 +113,11 @@ class TaxRuleServiceTest extends \PHPUnit_Framework_TestCase
         $taxRuleResultsBuilder = $this->objectManager->getObject(
             'Magento\Tax\Service\V1\Data\TaxRuleSearchResultsBuilder'
         );
-        $this->filterBuilderMock = $this->getMockBuilder('\Magento\Framework\Service\V1\Data\FilterBuilder')
+        $this->filterBuilderMock = $this->getMockBuilder('\Magento\Framework\Api\FilterBuilder')
             ->disableOriginalConstructor()
             ->getMock();
         $this->searchCriteriaBuilderMock = $this->getMockBuilder(
-            '\Magento\Framework\Service\V1\Data\SearchCriteriaBuilder'
+            '\Magento\Framework\Api\SearchCriteriaBuilder'
         )
             ->disableOriginalConstructor()
             ->getMock();
@@ -460,8 +460,8 @@ class TaxRuleServiceTest extends \PHPUnit_Framework_TestCase
     public function testSearchTaxRulesEmptyResult()
     {
         /** @var \PHPUnit_Framework_MockObject_MockObject |
-         * \Magento\Framework\Service\V1\Data\SearchCriteria $mockSearchCriteria */
-        $mockSearchCriteria = $this->getMockBuilder('\Magento\Framework\Service\V1\Data\SearchCriteria')
+         * \Magento\Framework\Api\SearchCriteria $mockSearchCriteria */
+        $mockSearchCriteria = $this->getMockBuilder('\Magento\Framework\Api\SearchCriteria')
             ->disableOriginalConstructor()
             ->getMock();
 
@@ -517,17 +517,17 @@ class TaxRuleServiceTest extends \PHPUnit_Framework_TestCase
             ->method('getSize')
             ->will($this->returnValue(1));
 
-        $filterBuilder = $this->objectManager->getObject('\Magento\Framework\Service\V1\Data\FilterBuilder');
+        $filterBuilder = $this->objectManager->getObject('\Magento\Framework\Api\FilterBuilder');
         $filter = $filterBuilder->setField('code')->setValue('code')->setConditionType('eq')->create();
 
         $filterGroupBuilder = $this->objectManager
-            ->getObject('Magento\Framework\Service\V1\Data\Search\FilterGroupBuilder');
-        /** @var \Magento\Framework\Service\V1\Data\SearchCriteriaBuilder $searchCriteriaBuilder */
+            ->getObject('Magento\Framework\Api\Search\FilterGroupBuilder');
+        /** @var \Magento\Framework\Api\SearchCriteriaBuilder $searchCriteriaBuilder */
         $searchCriteriaBuilder = $this->objectManager->getObject(
-            'Magento\Framework\Service\V1\Data\SearchCriteriaBuilder',
+            'Magento\Framework\Api\SearchCriteriaBuilder',
             ['filterGroupBuilder' => $filterGroupBuilder]
         );
-        $sortOrderBuilder = $this->objectManager->getObject('\Magento\Framework\Service\V1\Data\SortOrderBuilder');
+        $sortOrderBuilder = $this->objectManager->getObject('\Magento\Framework\Api\SortOrderBuilder');
         $sortOrder = $sortOrderBuilder
             ->setField('id')
             ->setDirection(SearchCriteria::SORT_ASC)
@@ -628,15 +628,15 @@ class TaxRuleServiceTest extends \PHPUnit_Framework_TestCase
             ->with($this->logicalOr([$filterOne], [$filterTwo]))
             ->will($this->returnSelf());
 
-        $searchCriteria = $this->getMockBuilder('\Magento\Framework\Service\V1\Data\SearchCriteria')
+        $searchCriteria = $this->getMockBuilder('\Magento\Framework\Api\SearchCriteria')
             ->disableOriginalConstructor()
             ->getMock();
 
-        $mockFilters = $this->getMockBuilder('\Magento\Framework\Service\V1\Data\Filter')
+        $mockFilters = $this->getMockBuilder('\Magento\Framework\Api\Filter')
             ->disableOriginalConstructor()
             ->getMock();
 
-        $mockFilterGroups = $this->getMockBuilder('\Magento\Framework\Service\V1\Data\Search\FilterGroup')
+        $mockFilterGroups = $this->getMockBuilder('\Magento\Framework\Api\Search\FilterGroup')
             ->disableOriginalConstructor()
             ->getMock();
 
diff --git a/dev/tests/unit/testsuite/Magento/Webapi/Controller/Rest/Request/Deserializer/JsonTest.php b/dev/tests/unit/testsuite/Magento/Webapi/Controller/Rest/Request/Deserializer/JsonTest.php
index 1c75c6157a2..5619bfa1b60 100644
--- a/dev/tests/unit/testsuite/Magento/Webapi/Controller/Rest/Request/Deserializer/JsonTest.php
+++ b/dev/tests/unit/testsuite/Magento/Webapi/Controller/Rest/Request/Deserializer/JsonTest.php
@@ -66,6 +66,12 @@ class JsonTest extends \PHPUnit_Framework_TestCase
         $this->_jsonDeserializer->deserialize(false);
     }
 
+    public function testDeserializerOauthInputException()
+    {
+        $this->setExpectedException('\Magento\Webapi\Exception', 'Request body should not be empty.');
+        $this->_jsonDeserializer->deserialize('');
+    }
+
     public function testDeserialize()
     {
         /** Prepare mocks for SUT constructor. */
diff --git a/dev/tests/unit/testsuite/Magento/Webapi/Controller/Rest/Request/Deserializer/XmlTest.php b/dev/tests/unit/testsuite/Magento/Webapi/Controller/Rest/Request/Deserializer/XmlTest.php
index c75820267ef..0ac5ecc05ec 100644
--- a/dev/tests/unit/testsuite/Magento/Webapi/Controller/Rest/Request/Deserializer/XmlTest.php
+++ b/dev/tests/unit/testsuite/Magento/Webapi/Controller/Rest/Request/Deserializer/XmlTest.php
@@ -61,6 +61,12 @@ class XmlTest extends \PHPUnit_Framework_TestCase
         $this->_xmlDeserializer->deserialize(false);
     }
 
+    public function testDeserializerOauthInputException()
+    {
+        $this->setExpectedException('\Magento\Webapi\Exception', 'Request body is expected.');
+        $this->_xmlDeserializer->deserialize('');
+    }
+
     public function testDeserialize()
     {
         /** Prepare mocks for SUT constructor. */
diff --git a/dev/tests/unit/testsuite/Magento/Webapi/Controller/RestTest.php b/dev/tests/unit/testsuite/Magento/Webapi/Controller/RestTest.php
index 60a7e22a6b2..d1f49e3933e 100644
--- a/dev/tests/unit/testsuite/Magento/Webapi/Controller/RestTest.php
+++ b/dev/tests/unit/testsuite/Magento/Webapi/Controller/RestTest.php
@@ -99,7 +99,7 @@ class RestTest extends \PHPUnit_Framework_TestCase
     protected $userContextMock;
 
     /**
-     * @var \Magento\Webapi\Model\DataObjectProcessor|\PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\Reflection\DataObjectProcessor|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $dataObjectProcessorMock;
 
@@ -130,7 +130,7 @@ class RestTest extends \PHPUnit_Framework_TestCase
             ->disableOriginalConstructor()->getMock();
         $this->userContextMock = $this->getMockBuilder('Magento\Authorization\Model\UserContextInterface')
             ->disableOriginalConstructor()->setMethods(['getUserId'])->getMockForAbstractClass();
-        $this->dataObjectProcessorMock = $this->getMockBuilder('Magento\Webapi\Model\DataObjectProcessor')
+        $this->dataObjectProcessorMock = $this->getMockBuilder('Magento\Framework\Reflection\DataObjectProcessor')
             ->disableOriginalConstructor()->setMethods(['getMethodReturnType'])->getMockForAbstractClass();
     }
 
diff --git a/dev/tests/unit/testsuite/Magento/Webapi/Controller/Soap/Request/HandlerTest.php b/dev/tests/unit/testsuite/Magento/Webapi/Controller/Soap/Request/HandlerTest.php
index 8cb3d2286f4..99cc00e7e70 100644
--- a/dev/tests/unit/testsuite/Magento/Webapi/Controller/Soap/Request/HandlerTest.php
+++ b/dev/tests/unit/testsuite/Magento/Webapi/Controller/Soap/Request/HandlerTest.php
@@ -23,7 +23,7 @@
  */
 namespace Magento\Webapi\Controller\Soap\Request;
 
-use Magento\Framework\Service\SimpleDataObjectConverter;
+use Magento\Framework\Api\SimpleDataObjectConverter;
 use Magento\Webapi\Model\Soap\Config as SoapConfig;
 
 /**
@@ -52,7 +52,7 @@ class HandlerTest extends \PHPUnit_Framework_TestCase
     /** @var \Magento\Webapi\Helper\Data|\PHPUnit_Framework_MockObject_MockObject */
     protected $_serializerMock;
 
-    /** @var \Magento\Framework\Service\DataObjectProcessor|\PHPUnit_Framework_MockObject_MockObject */
+    /** @var \Magento\Framework\Reflection\DataObjectProcessor|\PHPUnit_Framework_MockObject_MockObject */
     protected $_dataObjectProcessorMock;
 
     /** @var array */
@@ -67,7 +67,7 @@ class HandlerTest extends \PHPUnit_Framework_TestCase
         $this->_objectManagerMock = $this->getMock('Magento\Framework\ObjectManager', [], [], '', false);
         $this->_authorizationMock = $this->getMock('Magento\Framework\AuthorizationInterface', [], [], '', false);
         $this->_dataObjectConverter = $this->getMock(
-            'Magento\Framework\Service\SimpleDataObjectConverter',
+            'Magento\Framework\Api\SimpleDataObjectConverter',
             ['convertStdObjectToArray'],
             [],
             '',
@@ -75,7 +75,7 @@ class HandlerTest extends \PHPUnit_Framework_TestCase
         );
         $this->_serializerMock = $this->getMock('Magento\Webapi\Controller\ServiceArgsSerializer', [], [], '', false);
         $this->_dataObjectProcessorMock = $this->getMock(
-            'Magento\Webapi\Model\DataObjectProcessor',
+            'Magento\Framework\Reflection\DataObjectProcessor',
             ['getMethodReturnType'],
             [],
             '',
diff --git a/dev/tests/unit/testsuite/Magento/Webapi/Model/Config/ClassReflectorTest.php b/dev/tests/unit/testsuite/Magento/Webapi/Model/Config/ClassReflectorTest.php
index 8eeedc203f0..21c3fb3a5fc 100644
--- a/dev/tests/unit/testsuite/Magento/Webapi/Model/Config/ClassReflectorTest.php
+++ b/dev/tests/unit/testsuite/Magento/Webapi/Model/Config/ClassReflectorTest.php
@@ -28,7 +28,7 @@ namespace Magento\Webapi\Model\Config;
  */
 class ClassReflectorTest extends \PHPUnit_Framework_TestCase
 {
-    /** @var \Magento\Webapi\Model\Config\ClassReflector\TypeProcessor|\PHPUnit_Framework_MockObject_MockObject */
+    /** @var \Magento\Framework\Reflection\TypeProcessor|\PHPUnit_Framework_MockObject_MockObject */
     protected $_typeProcessor;
 
     /** @var \Magento\Webapi\Model\Config\ClassReflector */
@@ -40,7 +40,7 @@ class ClassReflectorTest extends \PHPUnit_Framework_TestCase
     protected function setUp()
     {
         $this->_typeProcessor = $this->getMock(
-            '\Magento\Webapi\Model\Config\ClassReflector\TypeProcessor',
+            '\Magento\Framework\Reflection\TypeProcessor',
             array('process'),
             array(),
             '',
diff --git a/dev/tests/unit/testsuite/Magento/Webapi/Model/DataObjectProcessorTest.php b/dev/tests/unit/testsuite/Magento/Webapi/Model/DataObjectProcessorTest.php
index bf82cc4a2f1..c1dfbbbff32 100644
--- a/dev/tests/unit/testsuite/Magento/Webapi/Model/DataObjectProcessorTest.php
+++ b/dev/tests/unit/testsuite/Magento/Webapi/Model/DataObjectProcessorTest.php
@@ -41,7 +41,7 @@ class DataObjectProcessorTest extends \PHPUnit_Framework_TestCase
     protected function setup()
     {
         $objectManager = new \Magento\TestFramework\Helper\ObjectManager($this);
-        $this->dataObjectProcessor = $objectManager->getObject('Magento\Webapi\Model\DataObjectProcessor');
+        $this->dataObjectProcessor = $objectManager->getObject('Magento\Framework\Reflection\DataObjectProcessor');
         parent::setUp();
     }
 
diff --git a/dev/tests/unit/testsuite/Magento/Webapi/Model/Soap/ServerTest.php b/dev/tests/unit/testsuite/Magento/Webapi/Model/Soap/ServerTest.php
index 97b6eb20476..7fe5fece1e1 100644
--- a/dev/tests/unit/testsuite/Magento/Webapi/Model/Soap/ServerTest.php
+++ b/dev/tests/unit/testsuite/Magento/Webapi/Model/Soap/ServerTest.php
@@ -45,7 +45,7 @@ class ServerTest extends \PHPUnit_Framework_TestCase
     /** @var \Magento\Webapi\Model\Soap\Server\Factory */
     protected $_soapServerFactory;
 
-    /** @var \Magento\Webapi\Model\Config\ClassReflector\TypeProcessor|\PHPUnit_Framework_MockObject_MockObject */
+    /** @var \Magento\Framework\Reflection\TypeProcessor|\PHPUnit_Framework_MockObject_MockObject */
     protected $_typeProcessor;
 
     /** @var \PHPUnit_Framework_MockObject_MockObject */
@@ -94,7 +94,7 @@ class ServerTest extends \PHPUnit_Framework_TestCase
         )->disableOriginalConstructor()->getMock();
 
         $this->_typeProcessor = $this->getMock(
-            'Magento\Webapi\Model\Config\ClassReflector\TypeProcessor',
+            'Magento\Framework\Reflection\TypeProcessor',
             array(),
             array(),
             '',
diff --git a/dev/tests/unit/testsuite/Magento/Webapi/Model/Soap/Wsdl/ComplexTypeStrategyTest.php b/dev/tests/unit/testsuite/Magento/Webapi/Model/Soap/Wsdl/ComplexTypeStrategyTest.php
index 0f4e2171db7..6babf2c4e32 100644
--- a/dev/tests/unit/testsuite/Magento/Webapi/Model/Soap/Wsdl/ComplexTypeStrategyTest.php
+++ b/dev/tests/unit/testsuite/Magento/Webapi/Model/Soap/Wsdl/ComplexTypeStrategyTest.php
@@ -30,7 +30,7 @@ use Zend\Soap\Wsdl;
  */
 class ComplexTypeStrategyTest extends \PHPUnit_Framework_TestCase
 {
-    /** @var \Magento\Webapi\Model\Config\ClassReflector\TypeProcessor|\PHPUnit_Framework_MockObject_MockObject */
+    /** @var \Magento\Framework\Reflection\TypeProcessor|\PHPUnit_Framework_MockObject_MockObject */
     protected $_typeProcessor;
 
     /** @var \Magento\Webapi\Model\Soap\Wsdl|\PHPUnit_Framework_MockObject_MockObject */
@@ -45,7 +45,7 @@ class ComplexTypeStrategyTest extends \PHPUnit_Framework_TestCase
     protected function setUp()
     {
         $this->_typeProcessor = $this->getMockBuilder(
-            'Magento\Webapi\Model\Config\ClassReflector\TypeProcessor'
+            'Magento\Framework\Reflection\TypeProcessor'
         )->setMethods(
             array('getTypeData')
         )->disableOriginalConstructor()->getMock();
diff --git a/dev/tests/unit/testsuite/Magento/Webapi/Model/Soap/Wsdl/GeneratorTest.php b/dev/tests/unit/testsuite/Magento/Webapi/Model/Soap/Wsdl/GeneratorTest.php
index 29679944e47..2decf757f5b 100644
--- a/dev/tests/unit/testsuite/Magento/Webapi/Model/Soap/Wsdl/GeneratorTest.php
+++ b/dev/tests/unit/testsuite/Magento/Webapi/Model/Soap/Wsdl/GeneratorTest.php
@@ -39,7 +39,7 @@ class GeneratorTest extends \PHPUnit_Framework_TestCase
     /** @var \Magento\Webapi\Model\Cache\Type|\PHPUnit_Framework_MockObject_MockObject */
     protected $_cacheMock;
 
-    /** @var \Magento\Webapi\Model\Config\ClassReflector\TypeProcessor|\PHPUnit_Framework_MockObject_MockObject */
+    /** @var \Magento\Framework\Reflection\TypeProcessor|\PHPUnit_Framework_MockObject_MockObject */
     protected $_typeProcessor;
 
     /** @var \Magento\Framework\StoreManagerInterface|\PHPUnit_Framework_MockObject_MockObject */
@@ -83,7 +83,7 @@ class GeneratorTest extends \PHPUnit_Framework_TestCase
         $this->_cacheMock->expects($this->any())->method('save')->will($this->returnValue(true));
 
         $this->_typeProcessor = $this->getMock(
-            'Magento\Webapi\Model\Config\ClassReflector\TypeProcessor',
+            'Magento\Framework\Reflection\TypeProcessor',
             array(),
             array(),
             '',
diff --git a/dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/AssociativeArrayData.php b/dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/AssociativeArray.php
similarity index 90%
rename from dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/AssociativeArrayData.php
rename to dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/AssociativeArray.php
index 77fb941d7ea..5324cdc6b3a 100644
--- a/dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/AssociativeArrayData.php
+++ b/dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/AssociativeArray.php
@@ -23,9 +23,9 @@
  */
 namespace Magento\Webapi\Service\Entity;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObject;
+use Magento\Framework\Api\AbstractExtensibleObject;
 
-class AssociativeArrayData extends AbstractExtensibleObject
+class AssociativeArray extends AbstractExtensibleObject
 {
     /**
      * @return string[]
diff --git a/dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/AssociativeArrayDataBuilder.php b/dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/AssociativeArrayBuilder.php
similarity index 84%
rename from dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/AssociativeArrayDataBuilder.php
rename to dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/AssociativeArrayBuilder.php
index 55590856fcd..e7b8bf9198a 100644
--- a/dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/AssociativeArrayDataBuilder.php
+++ b/dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/AssociativeArrayBuilder.php
@@ -23,9 +23,9 @@
  */
 namespace Magento\Webapi\Service\Entity;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder;
+use Magento\Framework\Api\ExtensibleObjectBuilder;
 
-class AssociativeArrayDataBuilder extends AbstractExtensibleObjectBuilder
+class AssociativeArrayBuilder extends ExtensibleObjectBuilder
 {
     /**
      * @param string[] $associativeArray
@@ -33,7 +33,7 @@ class AssociativeArrayDataBuilder extends AbstractExtensibleObjectBuilder
      */
     public function setAssociativeArray($associativeArray)
     {
-        $this->_data['associativeArray'] = $associativeArray;
+        $this->data['associativeArray'] = $associativeArray;
         return $this;
     }
 }
diff --git a/dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/DataArrayData.php b/dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/DataArray.php
similarity index 85%
rename from dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/DataArrayData.php
rename to dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/DataArray.php
index 328e2963afc..83078d59fd8 100644
--- a/dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/DataArrayData.php
+++ b/dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/DataArray.php
@@ -23,12 +23,12 @@
  */
 namespace Magento\Webapi\Service\Entity;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObject;
+use Magento\Framework\Api\AbstractExtensibleObject;
 
-class DataArrayData extends AbstractExtensibleObject
+class DataArray extends AbstractExtensibleObject
 {
     /**
-     * @return \Magento\Webapi\Service\Entity\SimpleData[]|null
+     * @return \Magento\Webapi\Service\Entity\Simple[]|null
      */
     public function getItems()
     {
diff --git a/dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/DataArrayDataBuilder.php b/dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/DataArrayBuilder.php
similarity index 81%
rename from dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/DataArrayDataBuilder.php
rename to dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/DataArrayBuilder.php
index 0662e813eea..047b9e667fb 100644
--- a/dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/DataArrayDataBuilder.php
+++ b/dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/DataArrayBuilder.php
@@ -23,17 +23,17 @@
  */
 namespace Magento\Webapi\Service\Entity;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder;
+use Magento\Framework\Api\ExtensibleObjectBuilder;
 
-class DataArrayDataBuilder extends AbstractExtensibleObjectBuilder
+class DataArrayBuilder extends ExtensibleObjectBuilder
 {
     /**
-     * @param \Magento\Webapi\Service\Entity\SimpleData[] $items
+     * @param \Magento\Webapi\Service\Entity\Simple[] $items
      * @return $this
      */
     public function setItems($items)
     {
-        $this->_data['items'] = $items;
+        $this->data['items'] = $items;
         return $this;
     }
 }
diff --git a/dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/DataFromArrayTest.php b/dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/DataFromArrayTest.php
index 31a891d2017..a993bc884f4 100644
--- a/dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/DataFromArrayTest.php
+++ b/dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/DataFromArrayTest.php
@@ -23,8 +23,7 @@
  */
 namespace Magento\Webapi\Service\Entity;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObject;
-use Magento\Framework\Service\Data\AbstractExtensibleObjectTest;
+use Magento\Framework\Api\AbstractExtensibleObjectTest;
 use Magento\Webapi\Controller\ServiceArgsSerializer;
 
 class DataFromArrayTest extends \PHPUnit_Framework_TestCase
@@ -35,11 +34,12 @@ class DataFromArrayTest extends \PHPUnit_Framework_TestCase
     public function setUp()
     {
         $objectManager = new \Magento\TestFramework\Helper\ObjectManager($this);
-        $objectFactory = new \Magento\Webapi\Service\Entity\WebapiObjectManager($objectManager);
-        $typeProcessor = $objectManager->getObject('Magento\Webapi\Model\Config\ClassReflector\TypeProcessor');
+        $objectFactory = new \Magento\Webapi\Service\Entity\WebapiBuilderFactory($objectManager);
+        /** @var \Magento\Framework\Reflection\TypeProcessor $typeProcessor */
+        $typeProcessor = $objectManager->getObject('Magento\Framework\Reflection\TypeProcessor');
         $this->serializer = $objectManager->getObject(
             'Magento\Webapi\Controller\ServiceArgsSerializer',
-            ['typeProcessor' => $typeProcessor, 'objectManager' => $objectFactory]
+            ['typeProcessor' => $typeProcessor, 'builderFactory' => $objectFactory]
         );
     }
 
@@ -61,17 +61,17 @@ class DataFromArrayTest extends \PHPUnit_Framework_TestCase
             $data
         );
         $this->assertNotNull($result);
-        $this->assertTrue($result[0] instanceof NestedData);
+        $this->assertTrue($result[0] instanceof Nested);
         /** @var array $result */
         $this->assertEquals(1, count($result));
         $this->assertNotEmpty($result[0]);
         /** @var NestedData $arg */
         $arg = $result[0];
-        $this->assertTrue($arg instanceof NestedData);
+        $this->assertTrue($arg instanceof Nested);
         /** @var SimpleData $details */
         $details = $arg->getDetails();
         $this->assertNotNull($details);
-        $this->assertTrue($details instanceof SimpleData);
+        $this->assertTrue($details instanceof Simple);
         $this->assertEquals(15, $details->getEntityId());
         $this->assertEquals('Test', $details->getName());
     }
@@ -135,10 +135,10 @@ class DataFromArrayTest extends \PHPUnit_Framework_TestCase
         $first = $dataObjects[0];
         /** @var SimpleData $second */
         $second = $dataObjects[1];
-        $this->assertTrue($first instanceof SimpleData);
+        $this->assertTrue($first instanceof Simple);
         $this->assertEquals(14, $first->getEntityId());
         $this->assertEquals('First', $first->getName());
-        $this->assertTrue($second instanceof SimpleData);
+        $this->assertTrue($second instanceof Simple);
         $this->assertEquals(15, $second->getEntityId());
         $this->assertEquals('Second', $second->getName());
     }
@@ -156,7 +156,7 @@ class DataFromArrayTest extends \PHPUnit_Framework_TestCase
         $this->assertEquals(1, count($result));
         /** @var SimpleArrayData $dataObject */
         $dataObject = $result[0];
-        $this->assertTrue($dataObject instanceof SimpleArrayData);
+        $this->assertTrue($dataObject instanceof SimpleArray);
         /** @var array $ids */
         $ids = $dataObject->getIds();
         $this->assertNotNull($ids);
@@ -177,9 +177,9 @@ class DataFromArrayTest extends \PHPUnit_Framework_TestCase
         $this->assertNotNull($result);
         /** @var array $result */
         $this->assertEquals(1, count($result));
-        /** @var AssociativeArrayData $dataObject */
+        /** @var AssociativeArray $dataObject */
         $dataObject = $result[0];
-        $this->assertTrue($dataObject instanceof AssociativeArrayData);
+        $this->assertTrue($dataObject instanceof AssociativeArray);
         /** @var array $associativeArray */
         $associativeArray = $dataObject->getAssociativeArray();
         $this->assertNotNull($associativeArray);
@@ -204,7 +204,7 @@ class DataFromArrayTest extends \PHPUnit_Framework_TestCase
         $this->assertEquals(1, count($result));
         /** @var DataArrayData $dataObjects */
         $dataObjects = $result[0];
-        $this->assertTrue($dataObjects instanceof DataArrayData);
+        $this->assertTrue($dataObjects instanceof DataArray);
         /** @var array $items */
         $items = $dataObjects->getItems();
         $this->assertEquals(2, count($items));
@@ -212,10 +212,10 @@ class DataFromArrayTest extends \PHPUnit_Framework_TestCase
         $first = $items[0];
         /** @var SimpleData $second */
         $second = $items[1];
-        $this->assertTrue($first instanceof SimpleData);
+        $this->assertTrue($first instanceof Simple);
         $this->assertEquals(1, $first->getEntityId());
         $this->assertEquals('First', $first->getName());
-        $this->assertTrue($second instanceof SimpleData);
+        $this->assertTrue($second instanceof Simple);
         $this->assertEquals(2, $second->getEntityId());
         $this->assertEquals('Second', $second->getName());
     }
diff --git a/dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/NestedData.php b/dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/Nested.php
similarity index 86%
rename from dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/NestedData.php
rename to dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/Nested.php
index 56ec8b9e8e2..8433efe06f2 100644
--- a/dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/NestedData.php
+++ b/dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/Nested.php
@@ -23,12 +23,12 @@
  */
 namespace Magento\Webapi\Service\Entity;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObject;
+use Magento\Framework\Api\AbstractExtensibleObject;
 
-class NestedData extends AbstractExtensibleObject
+class Nested extends AbstractExtensibleObject
 {
     /**
-     * @return \Magento\Webapi\Service\Entity\SimpleData
+     * @return \Magento\Webapi\Service\Entity\Simple
      */
     public function getDetails()
     {
diff --git a/dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/NestedDataBuilder.php b/dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/NestedBuilder.php
similarity index 86%
rename from dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/NestedDataBuilder.php
rename to dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/NestedBuilder.php
index 4bb47fbe5c7..457bbafa6e0 100644
--- a/dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/NestedDataBuilder.php
+++ b/dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/NestedBuilder.php
@@ -23,9 +23,9 @@
  */
 namespace Magento\Webapi\Service\Entity;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder;
+use Magento\Framework\Api\ExtensibleObjectBuilder;
 
-class NestedDataBuilder extends AbstractExtensibleObjectBuilder
+class NestedBuilder extends ExtensibleObjectBuilder
 {
     /**
      * @param string $details
@@ -33,7 +33,7 @@ class NestedDataBuilder extends AbstractExtensibleObjectBuilder
      */
     public function setDetails($details)
     {
-        $this->_data['details'] = $details;
+        $this->data['details'] = $details;
         return $this;
     }
 }
diff --git a/dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/SimpleData.php b/dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/Simple.php
similarity index 91%
rename from dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/SimpleData.php
rename to dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/Simple.php
index f3087e923eb..bf3bb7515ee 100644
--- a/dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/SimpleData.php
+++ b/dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/Simple.php
@@ -23,9 +23,9 @@
  */
 namespace Magento\Webapi\Service\Entity;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObject;
+use Magento\Framework\Api\AbstractExtensibleObject;
 
-class SimpleData extends AbstractExtensibleObject
+class Simple extends AbstractExtensibleObject
 {
     /**
      * @return int|null
diff --git a/dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/SimpleArrayData.php b/dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/SimpleArray.php
similarity index 90%
rename from dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/SimpleArrayData.php
rename to dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/SimpleArray.php
index f1712e170f2..d33607708fd 100644
--- a/dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/SimpleArrayData.php
+++ b/dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/SimpleArray.php
@@ -23,9 +23,9 @@
  */
 namespace Magento\Webapi\Service\Entity;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObject;
+use Magento\Framework\Api\AbstractExtensibleObject;
 
-class SimpleArrayData extends AbstractExtensibleObject
+class SimpleArray extends AbstractExtensibleObject
 {
     /**
      * @return int[]
diff --git a/dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/SimpleArrayDataBuilder.php b/dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/SimpleArrayBuilder.php
similarity index 86%
rename from dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/SimpleArrayDataBuilder.php
rename to dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/SimpleArrayBuilder.php
index c4c5fd6b347..d11ae4a3c60 100644
--- a/dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/SimpleArrayDataBuilder.php
+++ b/dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/SimpleArrayBuilder.php
@@ -23,9 +23,9 @@
  */
 namespace Magento\Webapi\Service\Entity;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder;
+use Magento\Framework\Api\ExtensibleObjectBuilder;
 
-class SimpleArrayDataBuilder extends AbstractExtensibleObjectBuilder
+class SimpleArrayBuilder extends ExtensibleObjectBuilder
 {
     /**
      * @param array $ids
@@ -33,7 +33,7 @@ class SimpleArrayDataBuilder extends AbstractExtensibleObjectBuilder
      */
     public function setIds($ids)
     {
-        $this->_data['ids'] = $ids;
+        $this->data['ids'] = $ids;
         return $this;
     }
 }
diff --git a/dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/SimpleDataBuilder.php b/dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/SimpleBuilder.php
similarity index 85%
rename from dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/SimpleDataBuilder.php
rename to dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/SimpleBuilder.php
index 0a2c868b57f..3d5e4be77b3 100644
--- a/dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/SimpleDataBuilder.php
+++ b/dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/SimpleBuilder.php
@@ -23,9 +23,9 @@
  */
 namespace Magento\Webapi\Service\Entity;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder;
+use Magento\Framework\Api\ExtensibleObjectBuilder;
 
-class SimpleDataBuilder extends AbstractExtensibleObjectBuilder
+class SimpleBuilder extends ExtensibleObjectBuilder
 {
     /**
      * @param int $id
@@ -33,7 +33,7 @@ class SimpleDataBuilder extends AbstractExtensibleObjectBuilder
      */
     public function setEntityId($id)
     {
-        $this->_data['entityId'] = $id;
+        $this->data['entityId'] = $id;
         return $this;
     }
 
@@ -43,7 +43,7 @@ class SimpleDataBuilder extends AbstractExtensibleObjectBuilder
      */
     public function setName($name)
     {
-        $this->_data['name'] = $name;
+        $this->data['name'] = $name;
         return $this;
     }
 }
diff --git a/dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/TestService.php b/dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/TestService.php
index bf6edddcb52..23e531e8d8e 100644
--- a/dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/TestService.php
+++ b/dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/TestService.php
@@ -36,10 +36,10 @@ class TestService
     }
 
     /**
-     * @param \Magento\Webapi\Service\Entity\NestedData $nested
-     * @return \Magento\Webapi\Service\Entity\NestedData
+     * @param \Magento\Webapi\Service\Entity\Nested $nested
+     * @return \Magento\Webapi\Service\Entity\Nested
      */
-    public function nestedData(NestedData $nested)
+    public function nestedData(Nested $nested)
     {
         return $nested;
     }
@@ -63,8 +63,8 @@ class TestService
     }
 
     /**
-     * @param \Magento\Webapi\Service\Entity\SimpleData[] $dataObjects
-     * @return \Magento\Webapi\Service\Entity\SimpleData[]
+     * @param \Magento\Webapi\Service\Entity\Simple[] $dataObjects
+     * @return \Magento\Webapi\Service\Entity\Simple[]
      */
     public function dataArray(array $dataObjects)
     {
@@ -72,28 +72,28 @@ class TestService
     }
 
     /**
-     * @param \Magento\Webapi\Service\Entity\SimpleArrayData $arrayData
-     * @return \Magento\Webapi\Service\Entity\SimpleArrayData
+     * @param \Magento\Webapi\Service\Entity\SimpleArray $arrayData
+     * @return \Magento\Webapi\Service\Entity\SimpleArray
      */
-    public function nestedSimpleArray(SimpleArrayData $arrayData)
+    public function nestedSimpleArray(SimpleArray $arrayData)
     {
         return $arrayData;
     }
 
     /**
-     * @param \Magento\Webapi\Service\Entity\AssociativeArrayData $associativeArrayData
-     * @return \Magento\Webapi\Service\Entity\AssociativeArrayData
+     * @param \Magento\Webapi\Service\Entity\AssociativeArray $associativeArrayData
+     * @return \Magento\Webapi\Service\Entity\AssociativeArray
      */
-    public function nestedAssociativeArray(AssociativeArrayData $associativeArrayData)
+    public function nestedAssociativeArray(AssociativeArray $associativeArrayData)
     {
         return $associativeArrayData;
     }
 
     /**
-     * @param \Magento\Webapi\Service\Entity\DataArrayData $dataObjects
-     * @return \Magento\Webapi\Service\Entity\DataArrayData
+     * @param \Magento\Webapi\Service\Entity\DataArray $dataObjects
+     * @return \Magento\Webapi\Service\Entity\DataArray
      */
-    public function nestedDataArray(DataArrayData $dataObjects)
+    public function nestedDataArray(DataArray $dataObjects)
     {
         return $dataObjects;
     }
diff --git a/dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/WebapiObjectManager.php b/dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/WebapiBuilderFactory.php
similarity index 51%
rename from dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/WebapiObjectManager.php
rename to dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/WebapiBuilderFactory.php
index b395f8c83c5..dead3735e8a 100644
--- a/dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/WebapiObjectManager.php
+++ b/dev/tests/unit/testsuite/Magento/Webapi/Service/Entity/WebapiBuilderFactory.php
@@ -23,57 +23,32 @@
  */
 namespace Magento\Webapi\Service\Entity;
 
-class WebapiObjectManager implements \Magento\Framework\ObjectManager
+class WebapiBuilderFactory extends \Magento\Framework\Serialization\DataBuilderFactory
 {
     /**
-     * @var array
+     * @param \Magento\TestFramework\Helper\ObjectManager $objectManager
      */
-    private $configuration;
-
-    /**
-     * @var \Magento\TestFramework\Helper\ObjectManager
-     */
-    protected $factory;
-
-    /**
-     * @param \Magento\TestFramework\Helper\ObjectManager $factory
-     */
-    public function __construct(\Magento\TestFramework\Helper\ObjectManager $factory)
-    {
-        $this->factory = $factory;
-    }
-
-    /**
-     * Create new object instance
-     *
-     * @param string $type
-     * @param array $arguments
-     * @return mixed
-     */
-    public function create($type, array $arguments = array())
-    {
-        return $this->factory->getObject($type, $arguments);
-    }
-
-    /**
-     * Retrieve cached object instance
-     *
-     * @param string $type
-     * @return mixed
-     */
-    public function get($type)
+    public function __construct(\Magento\TestFramework\Helper\ObjectManager $objectManager)
     {
-        return $this->factory->getObject($type);
+        $this->objectManager = $objectManager;
     }
 
     /**
-     * Configure object manager
+     * Returns a builder for a given class name.
      *
-     * @param array $configuration
-     * @return void
+     * @param string $className
+     * @return \Magento\Framework\Api\ExtensibleDataBuilderInterface Builder Instance
      */
-    public function configure(array $configuration)
+    public function getDataBuilder($className)
     {
-        $this->configuration = $configuration;
+        $interfaceSuffix = 'Interface';
+        if (substr($className, -strlen($interfaceSuffix)) === $interfaceSuffix) {
+            /** If class name ends with Interface, replace it with Data suffix */
+            $builderClassName = substr($className, 0, -strlen($interfaceSuffix)) . 'Data';
+        } else {
+            $builderClassName = $className;
+        }
+        $builderClassName .= 'Builder';
+        return $this->objectManager->getObject($builderClassName);
     }
 }
diff --git a/dev/tests/unit/testsuite/Magento/Wishlist/Block/Item/ConfigureTest.php b/dev/tests/unit/testsuite/Magento/Wishlist/Block/Item/ConfigureTest.php
index d8eec8eb601..ca3f5ed43c9 100644
--- a/dev/tests/unit/testsuite/Magento/Wishlist/Block/Item/ConfigureTest.php
+++ b/dev/tests/unit/testsuite/Magento/Wishlist/Block/Item/ConfigureTest.php
@@ -66,6 +66,19 @@ class ConfigureTest extends \PHPUnit_Framework_TestCase
         );
     }
 
+    public function testGetWishlistOptions()
+    {
+        $typeId = 'simple';
+        $product = $this->getMockBuilder('Magento\Catalog\Model\Product')->disableOriginalConstructor()->getMock();
+        $product->expects($this->once())->method('getTypeId')->willReturn($typeId);
+        $this->_mockRegistry->expects($this->once())
+            ->method('registry')
+            ->with($this->equalTo('product'))
+            ->willReturn($product);
+
+        $this->assertEquals(['productType' => $typeId], $this->_model->getWishlistOptions());
+    }
+
     public function testGetProduct()
     {
         $product = 'some test product';
diff --git a/dev/tests/unit/testsuite/Magento/Wishlist/Block/Rss/EmailLinkTest.php b/dev/tests/unit/testsuite/Magento/Wishlist/Block/Rss/EmailLinkTest.php
new file mode 100644
index 00000000000..b406d8e5e9a
--- /dev/null
+++ b/dev/tests/unit/testsuite/Magento/Wishlist/Block/Rss/EmailLinkTest.php
@@ -0,0 +1,87 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Wishlist\Block\Rss;
+
+use Magento\TestFramework\Helper\ObjectManager as ObjectManagerHelper;
+
+class EmailLinkTest extends \PHPUnit_Framework_TestCase
+{
+    /** @var \Magento\Wishlist\Block\Rss\EmailLink */
+    protected $link;
+
+    /** @var ObjectManagerHelper */
+    protected $objectManagerHelper;
+
+    /** @var \Magento\Wishlist\Helper\Data|\PHPUnit_Framework_MockObject_MockObject */
+    protected $wishlistHelper;
+
+    /** @var \Magento\Framework\App\Rss\UrlBuilderInterface|\PHPUnit_Framework_MockObject_MockObject */
+    protected $urlBuilder;
+
+    protected function setUp()
+    {
+        $wishlist = $this->getMock('Magento\Wishlist\Model\Wishlist', ['getId', 'getSharingCode'], [], '', false);
+        $wishlist->expects($this->any())->method('getId')->will($this->returnValue(5));
+        $wishlist->expects($this->any())->method('getSharingCode')->will($this->returnValue('somesharingcode'));
+        $customer = $this->getMock('Magento\Customer\Service\V1\Data\Customer', [], [], '', false);
+        $customer->expects($this->any())->method('getId')->will($this->returnValue(8));
+        $customer->expects($this->any())->method('getEmail')->will($this->returnValue('test@example.com'));
+
+        $this->wishlistHelper = $this->getMock(
+            'Magento\Wishlist\Helper\Data',
+            ['getWishlist', 'getCustomer'],
+            [],
+            '',
+            false
+        );
+        $this->wishlistHelper->expects($this->any())->method('getWishlist')->will($this->returnValue($wishlist));
+        $this->wishlistHelper->expects($this->any())->method('getCustomer')->will($this->returnValue($customer));
+
+        $this->urlBuilder = $this->getMock('Magento\Framework\App\Rss\UrlBuilderInterface');
+        $this->objectManagerHelper = new ObjectManagerHelper($this);
+        $this->link = $this->objectManagerHelper->getObject(
+            'Magento\Wishlist\Block\Rss\EmailLink',
+            [
+                'wishlistHelper' => $this->wishlistHelper,
+                'rssUrlBuilder' => $this->urlBuilder
+            ]
+        );
+    }
+
+    public function testGetLink()
+    {
+        $this->urlBuilder->expects($this->atLeastOnce())->method('getUrl')
+            ->with($this->equalTo(array(
+                'type' => 'wishlist',
+                'data' => 'OCx0ZXN0QGV4YW1wbGUuY29t',
+                '_secure' => false,
+                'wishlist_id' => 5,
+                'sharing_code' => 'somesharingcode'
+            )))
+            ->will($this->returnValue('http://url.com/rss/feed/index/type/wishlist/wishlist_id/5'));
+        $this->assertEquals('http://url.com/rss/feed/index/type/wishlist/wishlist_id/5', $this->link->getLink());
+    }
+
+}
diff --git a/dev/tests/unit/testsuite/Magento/Wishlist/Block/Rss/LinkTest.php b/dev/tests/unit/testsuite/Magento/Wishlist/Block/Rss/LinkTest.php
index 8bc5d349f4c..ca22c973253 100644
--- a/dev/tests/unit/testsuite/Magento/Wishlist/Block/Rss/LinkTest.php
+++ b/dev/tests/unit/testsuite/Magento/Wishlist/Block/Rss/LinkTest.php
@@ -45,9 +45,8 @@ class LinkTest extends \PHPUnit_Framework_TestCase
 
     protected function setUp()
     {
-        $wishlist = $this->getMock('Magento\Wishlist\Model\Wishlist', [], [], '', false);
+        $wishlist = $this->getMock('Magento\Wishlist\Model\Wishlist', ['getId'], [], '', false);
         $wishlist->expects($this->any())->method('getId')->will($this->returnValue(5));
-
         $customer = $this->getMock('Magento\Customer\Service\V1\Data\Customer', [], [], '', false);
         $customer->expects($this->any())->method('getId')->will($this->returnValue(8));
         $customer->expects($this->any())->method('getEmail')->will($this->returnValue('test@example.com'));
diff --git a/dev/tests/unit/testsuite/Magento/Wishlist/Model/Rss/WishlistTest.php b/dev/tests/unit/testsuite/Magento/Wishlist/Model/Rss/WishlistTest.php
index 943592bb062..ad3fc2eb025 100644
--- a/dev/tests/unit/testsuite/Magento/Wishlist/Model/Rss/WishlistTest.php
+++ b/dev/tests/unit/testsuite/Magento/Wishlist/Model/Rss/WishlistTest.php
@@ -71,6 +71,11 @@ class WishlistTest extends \PHPUnit_Framework_TestCase
      */
     protected $layoutMock;
 
+    /**
+     * @var \Magento\Customer\Model\CustomerFactory
+     */
+    protected $customerFactory;
+
     /**
      * Set up mock objects for tested class
      *
@@ -88,24 +93,9 @@ class WishlistTest extends \PHPUnit_Framework_TestCase
             '',
             false
         );
-        $this->urlBuilderMock = $this->getMockForAbstractClass(
-            'Magento\Framework\UrlInterface',
-            [],
-            '',
-            true,
-            true,
-            true,
-            ['getUrl']
-        );
-        $this->scopeConfig = $this->getMockForAbstractClass(
-            'Magento\Framework\App\Config\ScopeConfigInterface',
-            [],
-            '',
-            true,
-            true,
-            true,
-            ['getConfig']
-        );
+        $this->urlBuilderMock = $this->getMockForAbstractClass('Magento\Framework\UrlInterface');
+        $this->scopeConfig = $this->getMock('Magento\Framework\App\Config\ScopeConfigInterface');
+
         $this->imageHelperMock = $this->getMock('Magento\Catalog\Helper\Image', [], [], '', false);
 
         $this->layoutMock = $this->getMockForAbstractClass(
@@ -118,6 +108,13 @@ class WishlistTest extends \PHPUnit_Framework_TestCase
             ['getBlock']
         );
 
+        $this->customerFactory = $this->getMockBuilder('Magento\Customer\Model\CustomerFactory')
+            ->setMethods(['create'])->disableOriginalConstructor()->getMock();
+
+        $requestMock = $this->getMock('\Magento\Framework\App\RequestInterface');
+        $requestMock->expects($this->any())->method('getParam')->with('sharing_code')
+            ->will($this->returnValue('somesharingcode'));
+
         $objectManager = new \Magento\TestFramework\Helper\ObjectManager($this);
         $this->model = $objectManager->getObject(
             'Magento\Wishlist\Model\Rss\Wishlist',
@@ -130,6 +127,8 @@ class WishlistTest extends \PHPUnit_Framework_TestCase
                 'scopeConfig' => $this->scopeConfig,
                 'rssFactory' => $this->rssFactoryMock,
                 'layout' => $this->layoutMock,
+                'request' => $requestMock,
+                'customerFactory' => $this->customerFactory
             ]
         );
     }
@@ -141,7 +140,7 @@ class WishlistTest extends \PHPUnit_Framework_TestCase
         $title = "$customerName's Wishlist";
         $wishlistModelMock = $this->getMock(
             'Magento\Wishlist\Model\Wishlist',
-            ['getId', '__wakeup', 'getCustomerId', 'getItemCollection'],
+            ['getId', '__wakeup', 'getCustomerId', 'getItemCollection', 'getSharingCode'],
             [],
             '',
             false
@@ -152,15 +151,20 @@ class WishlistTest extends \PHPUnit_Framework_TestCase
         $productUrl = 'http://product.url/';
         $productName = 'Product name';
 
+        $customer = $this->getMockBuilder('Magento\Customer\Model\Customer')
+            ->setMethods(['getName', '__wakeup', 'load'])
+            ->disableOriginalConstructor()->getMock();
+        $customer->expects($this->once())->method('load')->will($this->returnSelf());
+        $customer->expects($this->once())->method('getName')->will($this->returnValue('Customer Name'));
+
+        $this->customerFactory->expects($this->once())->method('create')->will($this->returnValue($customer));
+
         $this->wishlistHelperMock->expects($this->any())
             ->method('getWishlist')
             ->will($this->returnValue($wishlistModelMock));
         $this->wishlistHelperMock->expects($this->any())
             ->method('getCustomer')
             ->will($this->returnValue($customerServiceMock));
-        $this->wishlistHelperMock->expects($this->once())
-            ->method('getCustomerName')
-            ->will($this->returnValue($customerName));
         $wishlistModelMock->expects($this->once())
             ->method('getId')
             ->will($this->returnValue($wishlistId));
@@ -207,7 +211,6 @@ class WishlistTest extends \PHPUnit_Framework_TestCase
             )
         );
 
-
         $this->assertEquals($expectedResult, $this->model->getRssData());
     }
 
@@ -313,4 +316,16 @@ class WishlistTest extends \PHPUnit_Framework_TestCase
     {
         $this->assertEquals(60, $this->model->getCacheLifetime());
     }
+
+    public function testIsAuthRequired()
+    {
+        $wishlist = $this->getMockBuilder('Magento\Wishlist\Model\Wishlist')->setMethods(
+            ['getId', '__wakeup', 'getCustomerId', 'getItemCollection', 'getSharingCode']
+        )->disableOriginalConstructor()->getMock();
+        $wishlist->expects($this->any())->method('getSharingCode')
+            ->will($this->returnValue('somesharingcode'));
+        $this->wishlistHelperMock->expects($this->any())->method('getWishlist')
+            ->will($this->returnValue($wishlist));
+        $this->assertEquals(false, $this->model->isAuthRequired());
+    }
 }
diff --git a/dev/tools/Magento/Tools/Dependency/generate/bootstrap.php b/dev/tools/Magento/Tools/Dependency/generate/bootstrap.php
index feb6edff6de..8b94f8fb297 100644
--- a/dev/tools/Magento/Tools/Dependency/generate/bootstrap.php
+++ b/dev/tools/Magento/Tools/Dependency/generate/bootstrap.php
@@ -23,6 +23,3 @@
  */
 
 require_once __DIR__ . '/../../../../../../app/autoload.php';
-(new \Magento\Framework\Autoload\IncludePath())->addIncludePath(
-    array(BP . '/dev/tests/static/framework', BP . '/dev/tools')
-);
diff --git a/dev/tools/Magento/Tools/Di/compiler.php b/dev/tools/Magento/Tools/Di/compiler.php
index 8c3986a4e45..91aac919d29 100644
--- a/dev/tools/Magento/Tools/Di/compiler.php
+++ b/dev/tools/Magento/Tools/Di/compiler.php
@@ -22,7 +22,9 @@
  * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 require __DIR__ . '/../../../bootstrap.php';
+
 $rootDir = realpath(__DIR__ . '/../../../../../');
+use Magento\Framework\ObjectManager\Code\Generator\Converter;
 use Magento\Framework\ObjectManager\Code\Generator\Factory;
 use Magento\Framework\ObjectManager\Code\Generator\Repository;
 use Magento\Framework\ObjectManager\Code\Generator\Proxy;
@@ -32,35 +34,35 @@ use Magento\Tools\Di\Compiler\Directory;
 use Magento\Tools\Di\Code\Scanner;
 use Magento\Tools\Di\Definition\Compressor;
 use Magento\Tools\Di\Definition\Serializer;
-use Magento\Framework\Service\Code\Generator\Builder;
-use Magento\Framework\Service\Code\Generator\Mapper;
-use Magento\Framework\ObjectManager\Code\Generator\Converter;
-use Magento\Framework\Service\Code\Generator\SearchResults;
-use Magento\Framework\Service\Code\Generator\SearchResultsBuilder;
+use Magento\Framework\Api\Code\Generator\Builder;
+use Magento\Framework\Api\Code\Generator\Mapper;
+use Magento\Framework\Api\Code\Generator\SearchResults;
+use Magento\Framework\Api\Code\Generator\SearchResultsBuilder;
+use Magento\Framework\Api\Code\Generator\DataBuilder;
 
-$filePatterns = array('php' => '/.*\.php$/', 'di' => '/\/etc\/([a-zA-Z_]*\/di|di)\.xml$/');
+$filePatterns = ['php' => '/.*\.php$/', 'di' => '/\/etc\/([a-zA-Z_]*\/di|di)\.xml$/'];
 $codeScanDir = realpath($rootDir . '/app');
 try {
     $opt = new Zend_Console_Getopt(
-        array(
-            'serializer=w' => 'serializer function that should be used (serialize|binary) default = serialize',
-            'verbose|v' => 'output report after tool run',
+        [
+            'serializer=w'         => 'serializer function that should be used (serialize|binary) default = serialize',
+            'verbose|v'            => 'output report after tool run',
             'extra-classes-file=s' => 'path to file with extra proxies and factories to generate',
-            'generation=s' => 'absolute path to generated classes, <magento_root>/var/generation by default',
-            'di=s' => 'absolute path to DI definitions directory, <magento_root>/var/di by default'
-        )
+            'generation=s'         => 'absolute path to generated classes, <magento_root>/var/generation by default',
+            'di=s'                 => 'absolute path to DI definitions directory, <magento_root>/var/di by default'
+        ]
     );
     $opt->parse();
 
     $generationDir = $opt->getOption('generation') ? $opt->getOption('generation') : $rootDir . '/var/generation';
-    (new \Magento\Framework\Autoload\IncludePath())->addIncludePath($generationDir);
+    \Magento\Framework\Code\Generator\FileResolver::addIncludePath($generationDir);
 
     $diDir = $opt->getOption('di') ? $opt->getOption('di') : $rootDir . '/var/di';
     $compiledFile = $diDir . '/definitions.php';
     $relationsFile = $diDir . '/relations.php';
     $pluginDefFile = $diDir . '/plugins.php';
 
-    $compilationDirs = array($rootDir . '/app/code', $rootDir . '/lib/internal/Magento');
+    $compilationDirs = [$rootDir . '/app/code', $rootDir . '/lib/internal/Magento'];
 
     /** @var Writer\WriterInterface $logWriter Writer model for success messages */
     $logWriter = $opt->getOption('v') ? new Writer\Console() : new Writer\Quiet();
@@ -79,8 +81,8 @@ try {
     // 1.1 Code scan
     $directoryScanner = new Scanner\DirectoryScanner();
     $files = $directoryScanner->scan($codeScanDir, $filePatterns);
-    $files['additional'] = array($opt->getOption('extra-classes-file'));
-    $entities = array();
+    $files['additional'] = [$opt->getOption('extra-classes-file')];
+    $entities = [];
 
     $scanner = new Scanner\CompositeScanner();
     $scanner->addChild(new Scanner\PhpScanner($log), 'php');
@@ -90,37 +92,43 @@ try {
 
     $interceptorScanner = new Scanner\XmlInterceptorScanner();
     $entities['interceptors'] = $interceptorScanner->collectEntities($files['di']);
+    $fileResolver = new \Magento\Framework\Code\Generator\FileResolver();
 
     // 1.2 Generation of Factory and Additional Classes
     $generatorIo = new \Magento\Framework\Code\Generator\Io(
         new \Magento\Framework\Filesystem\Driver\File(),
-        null,
+        $fileResolver,
         $generationDir
     );
     $generator = new \Magento\Framework\Code\Generator(
-        null,
+        $fileResolver,
         $generatorIo,
-        array(
+        [
+            DataBuilder::ENTITY_TYPE => 'Magento\Framework\Api\Code\Generator\DataBuilder',
             \Magento\Framework\Interception\Code\Generator\Interceptor::ENTITY_TYPE =>
                 'Magento\Framework\Interception\Code\Generator\Interceptor',
-            SearchResultsBuilder::ENTITY_TYPE => 'Magento\Framework\Service\Code\Generator\SearchResultsBuilder',
+            SearchResultsBuilder::ENTITY_TYPE => 'Magento\Framework\Api\Code\Generator\SearchResultsBuilder',
             Proxy::ENTITY_TYPE => 'Magento\Framework\ObjectManager\Code\Generator\Proxy',
             Factory::ENTITY_TYPE => 'Magento\Framework\ObjectManager\Code\Generator\Factory',
-            Builder::ENTITY_TYPE => 'Magento\Framework\Service\Code\Generator\Builder',
-            Mapper::ENTITY_TYPE => 'Magento\Framework\Service\Code\Generator\Mapper',
+            Builder::ENTITY_TYPE => 'Magento\Framework\Api\Code\Generator\Builder',
+            Mapper::ENTITY_TYPE => 'Magento\Framework\Api\Code\Generator\Mapper',
             Repository::ENTITY_TYPE => 'Magento\Framework\ObjectManager\Code\Generator\Repository',
             Converter::ENTITY_TYPE => 'Magento\Framework\ObjectManager\Code\Generator\Converter',
-            SearchResults::ENTITY_TYPE => 'Magento\Framework\Service\Code\Generator\SearchResults',
-        )
+            SearchResults::ENTITY_TYPE => 'Magento\Framework\Api\Code\Generator\SearchResults',
+        ]
     );
-    $autoloader = new \Magento\Framework\Code\Generator\Autoloader($generator);
-    spl_autoload_register(array($autoloader, 'load'));
-    foreach (array('php', 'additional') as $type) {
+    $autoloader = new \Magento\Framework\Code\Generator\Autoloader($generator, $fileResolver);
+    spl_autoload_register([$autoloader, 'load']);
+    foreach (['php', 'additional'] as $type) {
         sort($entities[$type]);
         foreach ($entities[$type] as $entityName) {
             switch ($generator->generateClass($entityName)) {
                 case \Magento\Framework\Code\Generator::GENERATION_SUCCESS:
                     $log->add(Log::GENERATION_SUCCESS, $entityName);
+                    $file = $fileResolver->getFile($entityName);
+                    if ($file) {
+                        include_once $file;
+                    }
                     break;
 
                 case \Magento\Framework\Code\Generator::GENERATION_ERROR:
@@ -151,11 +159,15 @@ try {
     );
 
     // 2.1.1 Generation of Proxy and Interceptor Classes
-    foreach (array('interceptors', 'di') as $type) {
+    foreach (['interceptors', 'di'] as $type) {
         foreach ($entities[$type] as $entityName) {
             switch ($generator->generateClass($entityName)) {
                 case \Magento\Framework\Code\Generator::GENERATION_SUCCESS:
                     $log->add(Log::GENERATION_SUCCESS, $entityName);
+                    $file = $fileResolver->getFile($entityName);
+                    if ($file) {
+                        include_once $file;
+                    }
                     break;
 
                 case \Magento\Framework\Code\Generator::GENERATION_ERROR:
@@ -189,7 +201,7 @@ try {
     // 3. Plugin Definition Compilation
     $pluginScanner = new Scanner\CompositeScanner();
     $pluginScanner->addChild(new Scanner\PluginScanner(), 'di');
-    $pluginDefinitions = array();
+    $pluginDefinitions = [];
     $pluginList = $pluginScanner->collectEntities($files);
     $pluginDefinitionList = new \Magento\Framework\Interception\Definition\Runtime();
     foreach ($pluginList as $type => $entityList) {
@@ -218,5 +230,5 @@ try {
     exit(1);
 } catch (Exception $e) {
     fwrite(STDERR, "Compiler failed with exception: " . $e->getMessage());
-    exit(1);
+    throw($e);
 }
diff --git a/dev/tools/Magento/Tools/Di/entity_generator.php b/dev/tools/Magento/Tools/Di/entity_generator.php
index 21745c00408..58e72db1b02 100644
--- a/dev/tools/Magento/Tools/Di/entity_generator.php
+++ b/dev/tools/Magento/Tools/Di/entity_generator.php
@@ -29,12 +29,13 @@ use Magento\Framework\ObjectManager\Code\Generator\Factory;
 use Magento\Framework\ObjectManager\Code\Generator\Proxy;
 use Magento\Framework\Interception\Code\Generator\Interceptor;
 use Magento\Framework\Exception;
-use Magento\Framework\Service\Code\Generator\Builder;
-use Magento\Framework\Service\Code\Generator\Mapper;
+use Magento\Framework\Api\Code\Generator\Builder;
+use Magento\Framework\Api\Code\Generator\DataBuilder;
+use Magento\Framework\Api\Code\Generator\Mapper;
 use Magento\Framework\ObjectManager\Code\Generator\Repository;
 use Magento\Framework\ObjectManager\Code\Generator\Converter;
-use Magento\Framework\Service\Code\Generator\SearchResults;
-use Magento\Framework\Service\Code\Generator\SearchResultsBuilder;
+use Magento\Framework\Api\Code\Generator\SearchResults;
+use Magento\Framework\Api\Code\Generator\SearchResultsBuilder;
 
 require __DIR__ . '/../../../../../app/bootstrap.php';
 
@@ -70,7 +71,7 @@ try {
         $generationDir = $opt->getOption('g');
     }
 } catch (\Zend_Console_Getopt_Exception $e) {
-    $generator = new Generator();
+    $generator = new Generator(new \Magento\Framework\Code\Generator\FileResolver());
     $entities = $generator->getGeneratedEntities();
 
     $allowedTypes = 'Allowed entity types are: ' . implode(', ', $entities) . '.';
@@ -85,7 +86,7 @@ try {
     exit($example);
 }
 
-(new \Magento\Framework\Autoload\IncludePath())->addIncludePath($generationDir);
+\Magento\Framework\Code\Generator\FileResolver::addIncludePath($generationDir);
 
 //reinit generator with correct generation path
 $io = new Io(new File(), null, $generationDir);
@@ -93,8 +94,9 @@ $generator = new Generator(
     null,
     $io,
     [
+        DataBuilder::ENTITY_TYPE => 'Magento\Framework\Api\Code\Generator\DataBuilder',
         SearchResultsBuilder::ENTITY_TYPE =>
-            'Magento\Framework\Service\Code\Generator\SearchResultsBuilder',
+            'Magento\Framework\Api\Code\Generator\SearchResultsBuilder',
         Proxy::ENTITY_TYPE =>
             'Magento\Framework\ObjectManager\Code\Generator\Proxy',
         Factory::ENTITY_TYPE =>
@@ -102,15 +104,15 @@ $generator = new Generator(
         Interceptor::ENTITY_TYPE =>
             'Magento\Framework\Interception\Code\Generator\Interceptor',
         Builder::ENTITY_TYPE =>
-            'Magento\Framework\Service\Code\Generator\Builder',
+            'Magento\Framework\Api\Code\Generator\Builder',
         Mapper::ENTITY_TYPE =>
-            'Magento\Framework\Service\Code\Generator\Mapper',
+            'Magento\Framework\Api\Code\Generator\Mapper',
         Repository::ENTITY_TYPE =>
             'Magento\Framework\ObjectManager\Code\Generator\Repository',
         Converter::ENTITY_TYPE =>
             'Magento\Framework\ObjectManager\Code\Generator\Converter',
         SearchResults::ENTITY_TYPE =>
-            'Magento\Framework\Service\Code\Generator\SearchResults',
+            'Magento\Framework\Api\Code\Generator\SearchResults',
     ]
 );
 
diff --git a/dev/tools/Magento/Tools/I18n/Zend/Console/Getopt.php b/dev/tools/Magento/Tools/I18n/Zend/Console/Getopt.php
deleted file mode 100644
index 60d4b996515..00000000000
--- a/dev/tools/Magento/Tools/I18n/Zend/Console/Getopt.php
+++ /dev/null
@@ -1,966 +0,0 @@
-<?php
-/**
- * Zend_Console_Getopt is a class to parse options for command-line
- * applications.
- *
- * LICENSE
- *
- * This source file is subject to the new BSD license that is bundled
- * with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://framework.zend.com/license/new-bsd
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@zend.com so we can send you a copy immediately.
- *
- * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- * @version    $Id: Getopt.php 22191 2010-05-17 21:50:14Z jan $
- */
-
-/**
- * Zend_Console_Getopt is a class to parse options for command-line
- * applications.
- *
- * Terminology:
- * Argument: an element of the argv array.  This may be part of an option,
- *   or it may be a non-option command-line argument.
- * Flag: the letter or word set off by a '-' or '--'.  Example: in '--output filename',
- *   '--output' is the flag.
- * Parameter: the additional argument that is associated with the option.
- *   Example: in '--output filename', the 'filename' is the parameter.
- * Option: the combination of a flag and its parameter, if any.
- *   Example: in '--output filename', the whole thing is the option.
- *
- * The following features are supported:
- *
- * - Short flags like '-a'.  Short flags are preceded by a single
- *   dash.  Short flags may be clustered e.g. '-abc', which is the
- *   same as '-a' '-b' '-c'.
- * - Long flags like '--verbose'.  Long flags are preceded by a
- *   double dash.  Long flags may not be clustered.
- * - Options may have a parameter, e.g. '--output filename'.
- * - Parameters for long flags may also be set off with an equals sign,
- *   e.g. '--output=filename'.
- * - Parameters for long flags may be checked as string, word, or integer.
- * - Automatic generation of a helpful usage message.
- * - Signal end of options with '--'; subsequent arguments are treated
- *   as non-option arguments, even if they begin with '-'.
- * - Raise exception Zend_Console_Getopt_Exception in several cases
- *   when invalid flags or parameters are given.  Usage message is
- *   returned in the exception object.
- *
- * The format for specifying options uses a PHP associative array.
- * The key is has the format of a list of pipe-separated flag names,
- * followed by an optional '=' to indicate a required parameter or
- * '-' to indicate an optional parameter.  Following that, the type
- * of parameter may be specified as 's' for string, 'w' for word,
- * or 'i' for integer.
- *
- * Examples:
- * - 'user|username|u=s'  this means '--user' or '--username' or '-u'
- *   are synonyms, and the option requires a string parameter.
- * - 'p=i'  this means '-p' requires an integer parameter.  No synonyms.
- * - 'verbose|v-i'  this means '--verbose' or '-v' are synonyms, and
- *   they take an optional integer parameter.
- * - 'help|h'  this means '--help' or '-h' are synonyms, and
- *   they take no parameter.
- *
- * The values in the associative array are strings that are used as
- * brief descriptions of the options when printing a usage message.
- *
- * The simpler format for specifying options used by PHP's getopt()
- * function is also supported.  This is similar to GNU getopt and shell
- * getopt format.
- *
- * Example:  'abc:' means options '-a', '-b', and '-c'
- * are legal, and the latter requires a string parameter.
- *
- * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- * @version    Release: @package_version@
- * @since      Class available since Release 0.6.0
- *
- * @todo  Handle params with multiple values, e.g. --colors=red,green,blue
- *        Set value of parameter to the array of values.  Allow user to specify
- *        the separator with Zend_Console_Getopt::CONFIG_PARAMETER_SEPARATOR.
- *        If this config value is null or empty string, do not split values
- *        into arrays.  Default separator is comma (',').
- *
- * @todo  Handle params with multiple values specified with separate options
- *        e.g. --colors red --colors green --colors blue should give one
- *        option with an array(red, green, blue).
- *        Enable with Zend_Console_Getopt::CONFIG_CUMULATIVE_PARAMETERS.
- *        Default is that subsequent options overwrite the parameter value.
- *
- * @todo  Handle flags occurring multiple times, e.g. -v -v -v
- *        Set value of the option's parameter to the integer count of instances
- *        instead of a boolean.
- *        Enable with Zend_Console_Getopt::CONFIG_CUMULATIVE_FLAGS.
- *        Default is that the value is simply boolean true regardless of
- *        how many instances of the flag appear.
- *
- * @todo  Handle flags that implicitly print usage message, e.g. --help
- *
- * @todo  Handle freeform options, e.g. --set-variable
- *        Enable with Zend_Console_Getopt::CONFIG_FREEFORM_FLAGS
- *        All flag-like syntax is recognized, no flag generates an exception.
- *
- * @todo  Handle numeric options, e.g. -1, -2, -3, -1000
- *        Enable with Zend_Console_Getopt::CONFIG_NUMERIC_FLAGS
- *        The rule must specify a named flag and the '#' symbol as the
- *        parameter type. e.g.,  'lines=#'
- *
- * @todo  Enable user to specify header and footer content in the help message.
- *
- * @todo  Feature request to handle option interdependencies.
- *        e.g. if -b is specified, -a must be specified or else the
- *        usage is invalid.
- *
- * @todo  Feature request to implement callbacks.
- *        e.g. if -a is specified, run function 'handleOptionA'().
- */
-class Zend_Console_Getopt
-{
-
-    /**
-     * The options for a given application can be in multiple formats.
-     * modeGnu is for traditional 'ab:c:' style getopt format.
-     * modeZend is for a more structured format.
-     */
-    const MODE_ZEND                         = 'zend';
-    const MODE_GNU                          = 'gnu';
-
-    /**
-     * Constant tokens for various symbols used in the mode_zend
-     * rule format.
-     */
-    const PARAM_REQUIRED                    = '=';
-    const PARAM_OPTIONAL                    = '-';
-    const TYPE_STRING                       = 's';
-    const TYPE_WORD                         = 'w';
-    const TYPE_INTEGER                      = 'i';
-
-    /**
-     * These are constants for optional behavior of this class.
-     * ruleMode is either 'zend' or 'gnu' or a user-defined mode.
-     * dashDash is true if '--' signifies the end of command-line options.
-     * ignoreCase is true if '--opt' and '--OPT' are implicitly synonyms.
-     * parseAll is true if all options on the command line should be parsed, regardless of
-     * whether an argument appears before them.
-     */
-    const CONFIG_RULEMODE                   = 'ruleMode';
-    const CONFIG_DASHDASH                   = 'dashDash';
-    const CONFIG_IGNORECASE                 = 'ignoreCase';
-    const CONFIG_PARSEALL                   = 'parseAll';
-
-    /**
-     * Defaults for getopt configuration are:
-     * ruleMode is 'zend' format,
-     * dashDash (--) token is enabled,
-     * ignoreCase is not enabled,
-     * parseAll is enabled.
-     */
-    protected $_getoptConfig = array(
-        self::CONFIG_RULEMODE   => self::MODE_ZEND,
-        self::CONFIG_DASHDASH   => true,
-        self::CONFIG_IGNORECASE => false,
-        self::CONFIG_PARSEALL   => true,
-    );
-
-    /**
-     * Stores the command-line arguments for the calling applicaion.
-     *
-     * @var array
-     */
-    protected $_argv = array();
-
-    /**
-     * Stores the name of the calling applicaion.
-     *
-     * @var string
-     */
-    protected $_progname = '';
-
-    /**
-     * Stores the list of legal options for this application.
-     *
-     * @var array
-     */
-    protected $_rules = array();
-
-    /**
-     * Stores alternate spellings of legal options.
-     *
-     * @var array
-     */
-    protected $_ruleMap = array();
-
-    /**
-     * Stores options given by the user in the current invocation
-     * of the application, as well as parameters given in options.
-     *
-     * @var array
-     */
-    protected $_options = array();
-
-    /**
-     * Stores the command-line arguments other than options.
-     *
-     * @var array
-     */
-    protected $_remainingArgs = array();
-
-    /**
-     * State of the options: parsed or not yet parsed?
-     *
-     * @var boolean
-     */
-    protected $_parsed = false;
-
-    /**
-     * The constructor takes one to three parameters.
-     *
-     * The first parameter is $rules, which may be a string for
-     * gnu-style format, or a structured array for Zend-style format.
-     *
-     * The second parameter is $argv, and it is optional.  If not
-     * specified, $argv is inferred from the global argv.
-     *
-     * The third parameter is an array of configuration parameters
-     * to control the behavior of this instance of Getopt; it is optional.
-     *
-     * @param  array $rules
-     * @param  array $argv
-     * @param  array $getoptConfig
-     * @return void
-     */
-    public function __construct($rules, $argv = null, $getoptConfig = array())
-    {
-        if (!isset($_SERVER['argv'])) {
-            #require_once 'Zend/Console/Getopt/Exception.php';
-            if (ini_get('register_argc_argv') == false) {
-                throw new Zend_Console_Getopt_Exception(
-                    "argv is not available, because ini option 'register_argc_argv' is set Off"
-                );
-            } else {
-                throw new Zend_Console_Getopt_Exception(
-                    '$_SERVER["argv"] is not set, but Zend_Console_Getopt cannot work without this information.'
-                );
-            }
-        }
-
-        $this->_progname = $_SERVER['argv'][0];
-        $this->setOptions($getoptConfig);
-        $this->addRules($rules);
-        if (!is_array($argv)) {
-            $argv = array_slice($_SERVER['argv'], 1);
-        }
-        if (isset($argv)) {
-            $this->addArguments((array)$argv);
-        }
-    }
-
-    /**
-     * Return the state of the option seen on the command line of the
-     * current application invocation.  This function returns true, or the
-     * parameter to the option, if any.  If the option was not given,
-     * this function returns null.
-     *
-     * The magic __get method works in the context of naming the option
-     * as a virtual member of this class.
-     *
-     * @param  string $key
-     * @return string
-     */
-    public function __get($key)
-    {
-        return $this->getOption($key);
-    }
-
-    /**
-     * Test whether a given option has been seen.
-     *
-     * @param  string $key
-     * @return boolean
-     */
-    public function __isset($key)
-    {
-        $this->parse();
-        if (isset($this->_ruleMap[$key])) {
-            $key = $this->_ruleMap[$key];
-            return isset($this->_options[$key]);
-        }
-        return false;
-    }
-
-    /**
-     * Set the value for a given option.
-     *
-     * @param  string $key
-     * @param  string $value
-     * @return void
-     */
-    public function __set($key, $value)
-    {
-        $this->parse();
-        if (isset($this->_ruleMap[$key])) {
-            $key = $this->_ruleMap[$key];
-            $this->_options[$key] = $value;
-        }
-    }
-
-    /**
-     * Return the current set of options and parameters seen as a string.
-     *
-     * @return string
-     */
-    public function __toString()
-    {
-        return $this->toString();
-    }
-
-    /**
-     * Unset an option.
-     *
-     * @param  string $key
-     * @return void
-     */
-    public function __unset($key)
-    {
-        $this->parse();
-        if (isset($this->_ruleMap[$key])) {
-            $key = $this->_ruleMap[$key];
-            unset($this->_options[$key]);
-        }
-    }
-
-    /**
-     * Define additional command-line arguments.
-     * These are appended to those defined when the constructor was called.
-     *
-     * @param  array $argv
-     * @throws Zend_Console_Getopt_Exception When not given an array as parameter
-     * @return Zend_Console_Getopt Provides a fluent interface
-     */
-    public function addArguments($argv)
-    {
-        if(!is_array($argv)) {
-            #require_once 'Zend/Console/Getopt/Exception.php';
-            throw new Zend_Console_Getopt_Exception(
-                "Parameter #1 to addArguments should be an array");
-        }
-        $this->_argv = array_merge($this->_argv, $argv);
-        $this->_parsed = false;
-        return $this;
-    }
-
-    /**
-     * Define full set of command-line arguments.
-     * These replace any currently defined.
-     *
-     * @param  array $argv
-     * @throws Zend_Console_Getopt_Exception When not given an array as parameter
-     * @return Zend_Console_Getopt Provides a fluent interface
-     */
-    public function setArguments($argv)
-    {
-        if(!is_array($argv)) {
-            #require_once 'Zend/Console/Getopt/Exception.php';
-            throw new Zend_Console_Getopt_Exception(
-                "Parameter #1 to setArguments should be an array");
-        }
-        $this->_argv = $argv;
-        $this->_parsed = false;
-        return $this;
-    }
-
-    /**
-     * Define multiple configuration options from an associative array.
-     * These are not program options, but properties to configure
-     * the behavior of Zend_Console_Getopt.
-     *
-     * @param  array $getoptConfig
-     * @return Zend_Console_Getopt Provides a fluent interface
-     */
-    public function setOptions($getoptConfig)
-    {
-        if (isset($getoptConfig)) {
-            foreach ($getoptConfig as $key => $value) {
-                $this->setOption($key, $value);
-            }
-        }
-        return $this;
-    }
-
-    /**
-     * Define one configuration option as a key/value pair.
-     * These are not program options, but properties to configure
-     * the behavior of Zend_Console_Getopt.
-     *
-     * @param  string $configKey
-     * @param  string $configValue
-     * @return Zend_Console_Getopt Provides a fluent interface
-     */
-    public function setOption($configKey, $configValue)
-    {
-        if ($configKey !== null) {
-            $this->_getoptConfig[$configKey] = $configValue;
-        }
-        return $this;
-    }
-
-    /**
-     * Define additional option rules.
-     * These are appended to the rules defined when the constructor was called.
-     *
-     * @param  array $rules
-     * @return Zend_Console_Getopt Provides a fluent interface
-     */
-    public function addRules($rules)
-    {
-        $ruleMode = $this->_getoptConfig['ruleMode'];
-        switch ($this->_getoptConfig['ruleMode']) {
-            case self::MODE_ZEND:
-                if (is_array($rules)) {
-                    $this->_addRulesModeZend($rules);
-                    break;
-                }
-                // intentional fallthrough
-            case self::MODE_GNU:
-                $this->_addRulesModeGnu($rules);
-                break;
-            default:
-                /**
-                 * Call addRulesModeFoo() for ruleMode 'foo'.
-                 * The developer should subclass Getopt and
-                 * provide this method.
-                 */
-                $method = '_addRulesMode' . ucfirst($ruleMode);
-                $this->$method($rules);
-        }
-        $this->_parsed = false;
-        return $this;
-    }
-
-    /**
-     * Return the current set of options and parameters seen as a string.
-     *
-     * @return string
-     */
-    public function toString()
-    {
-        $this->parse();
-        $s = array();
-        foreach ($this->_options as $flag => $value) {
-            $s[] = $flag . '=' . ($value === true ? 'true' : $value);
-        }
-        return implode(' ', $s);
-    }
-
-    /**
-     * Return the current set of options and parameters seen
-     * as an array of canonical options and parameters.
-     *
-     * Clusters have been expanded, and option aliases
-     * have been mapped to their primary option names.
-     *
-     * @return array
-     */
-    public function toArray()
-    {
-        $this->parse();
-        $s = array();
-        foreach ($this->_options as $flag => $value) {
-            $s[] = $flag;
-            if ($value !== true) {
-                $s[] = $value;
-            }
-        }
-        return $s;
-    }
-
-    /**
-     * Return the current set of options and parameters seen in Json format.
-     *
-     * @return string
-     */
-    public function toJson()
-    {
-        $this->parse();
-        $j = array();
-        foreach ($this->_options as $flag => $value) {
-            $j['options'][] = array(
-                'option' => array(
-                    'flag' => $flag,
-                    'parameter' => $value
-                )
-            );
-        }
-
-        /**
-         * @see Zend_Json
-         */
-        #require_once 'Zend/Json.php';
-        $json = Zend_Json::encode($j);
-
-        return $json;
-    }
-
-    /**
-     * Return the current set of options and parameters seen in XML format.
-     *
-     * @return string
-     */
-    public function toXml()
-    {
-        $this->parse();
-        $doc = new DomDocument('1.0', 'utf-8');
-        $optionsNode = $doc->createElement('options');
-        $doc->appendChild($optionsNode);
-        foreach ($this->_options as $flag => $value) {
-            $optionNode = $doc->createElement('option');
-            $optionNode->setAttribute('flag', utf8_encode($flag));
-            if ($value !== true) {
-                $optionNode->setAttribute('parameter', utf8_encode($value));
-            }
-            $optionsNode->appendChild($optionNode);
-        }
-        $xml = $doc->saveXML();
-        return $xml;
-    }
-
-    /**
-     * Return a list of options that have been seen in the current argv.
-     *
-     * @return array
-     */
-    public function getOptions()
-    {
-        $this->parse();
-        return array_keys($this->_options);
-    }
-
-    /**
-     * Return the state of the option seen on the command line of the
-     * current application invocation.
-     *
-     * This function returns true, or the parameter value to the option, if any.
-     * If the option was not given, this function returns false.
-     *
-     * @param  string $flag
-     * @return mixed
-     */
-    public function getOption($flag)
-    {
-        $this->parse();
-        if ($this->_getoptConfig[self::CONFIG_IGNORECASE]) {
-            $flag = strtolower($flag);
-        }
-        if (isset($this->_ruleMap[$flag])) {
-            $flag = $this->_ruleMap[$flag];
-            if (isset($this->_options[$flag])) {
-                return $this->_options[$flag];
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Return the arguments from the command-line following all options found.
-     *
-     * @return array
-     */
-    public function getRemainingArgs()
-    {
-        $this->parse();
-        return $this->_remainingArgs;
-    }
-
-    /**
-     * Return a useful option reference, formatted for display in an
-     * error message.
-     *
-     * Note that this usage information is provided in most Exceptions
-     * generated by this class.
-     *
-     * @return string
-     */
-    public function getUsageMessage()
-    {
-        $usage = "Usage: {$this->_progname} [ options ]\n";
-        $maxLen = 20;
-        $lines = array();
-        foreach ($this->_rules as $rule) {
-            $flags = array();
-            if (is_array($rule['alias'])) {
-                foreach ($rule['alias'] as $flag) {
-                    $flags[] = (strlen($flag) == 1 ? '-' : '--') . $flag;
-                }
-            }
-            $linepart['name'] = implode('|', $flags);
-            if (isset($rule['param']) && $rule['param'] != 'none') {
-                $linepart['name'] .= ' ';
-                switch ($rule['param']) {
-                    case 'optional':
-                        $linepart['name'] .= "[ <{$rule['paramType']}> ]";
-                        break;
-                    case 'required':
-                        $linepart['name'] .= "<{$rule['paramType']}>";
-                        break;
-                }
-            }
-            if (strlen($linepart['name']) > $maxLen) {
-                $maxLen = strlen($linepart['name']);
-            }
-            $linepart['help'] = '';
-            if (isset($rule['help'])) {
-                $linepart['help'] .= $rule['help'];
-            }
-            $lines[] = $linepart;
-        }
-        foreach ($lines as $linepart) {
-            $usage .= sprintf("%s %s\n",
-            str_pad($linepart['name'], $maxLen),
-            $linepart['help']);
-        }
-        return $usage;
-    }
-
-    /**
-     * Define aliases for options.
-     *
-     * The parameter $aliasMap is an associative array
-     * mapping option name (short or long) to an alias.
-     *
-     * @param  array $aliasMap
-     * @throws Zend_Console_Getopt_Exception
-     * @return Zend_Console_Getopt Provides a fluent interface
-     */
-    public function setAliases($aliasMap)
-    {
-        foreach ($aliasMap as $flag => $alias)
-        {
-            if ($this->_getoptConfig[self::CONFIG_IGNORECASE]) {
-                $flag = strtolower($flag);
-                $alias = strtolower($alias);
-            }
-            if (!isset($this->_ruleMap[$flag])) {
-                continue;
-            }
-            $flag = $this->_ruleMap[$flag];
-            if (isset($this->_rules[$alias]) || isset($this->_ruleMap[$alias])) {
-                $o = (strlen($alias) == 1 ? '-' : '--') . $alias;
-                #require_once 'Zend/Console/Getopt/Exception.php';
-                throw new Zend_Console_Getopt_Exception(
-                    "Option \"$o\" is being defined more than once.");
-            }
-            $this->_rules[$flag]['alias'][] = $alias;
-            $this->_ruleMap[$alias] = $flag;
-        }
-        return $this;
-    }
-
-    /**
-     * Define help messages for options.
-     *
-     * The parameter $help_map is an associative array
-     * mapping option name (short or long) to the help string.
-     *
-     * @param  array $helpMap
-     * @return Zend_Console_Getopt Provides a fluent interface
-     */
-    public function setHelp($helpMap)
-    {
-        foreach ($helpMap as $flag => $help)
-        {
-            if (!isset($this->_ruleMap[$flag])) {
-                continue;
-            }
-            $flag = $this->_ruleMap[$flag];
-            $this->_rules[$flag]['help'] = $help;
-        }
-        return $this;
-    }
-
-    /**
-     * Parse command-line arguments and find both long and short
-     * options.
-     *
-     * Also find option parameters, and remaining arguments after
-     * all options have been parsed.
-     *
-     * @return Zend_Console_Getopt|null Provides a fluent interface
-     */
-    public function parse()
-    {
-        if ($this->_parsed === true) {
-            return;
-        }
-        $argv = $this->_argv;
-        $this->_options = array();
-        $this->_remainingArgs = array();
-        while (count($argv) > 0) {
-            if ($argv[0] == '--') {
-                array_shift($argv);
-                if ($this->_getoptConfig[self::CONFIG_DASHDASH]) {
-                    $this->_remainingArgs = array_merge($this->_remainingArgs, $argv);
-                    break;
-                }
-            }
-            if (substr($argv[0], 0, 2) == '--') {
-                $this->_parseLongOption($argv);
-            } else if (substr($argv[0], 0, 1) == '-' && ('-' != $argv[0] || count($argv) >1))  {
-                $this->_parseShortOptionCluster($argv);
-            } else if($this->_getoptConfig[self::CONFIG_PARSEALL]) {
-                $this->_remainingArgs[] = array_shift($argv);
-            } else {
-                /*
-                 * We should put all other arguments in _remainingArgs and stop parsing
-                 * since CONFIG_PARSEALL is false.
-                 */
-                $this->_remainingArgs = array_merge($this->_remainingArgs, $argv);
-                break;
-            }
-        }
-        $this->_parsed = true;
-        return $this;
-    }
-
-    /**
-     * Parse command-line arguments for a single long option.
-     * A long option is preceded by a double '--' character.
-     * Long options may not be clustered.
-     *
-     * @param  mixed &$argv
-     * @return void
-     */
-    protected function _parseLongOption(&$argv)
-    {
-        $optionWithParam = ltrim(array_shift($argv), '-');
-        $l = explode('=', $optionWithParam, 2);
-        $flag = array_shift($l);
-        $param = array_shift($l);
-        if (isset($param)) {
-            array_unshift($argv, $param);
-        }
-        $this->_parseSingleOption($flag, $argv);
-    }
-
-    /**
-     * Parse command-line arguments for short options.
-     * Short options are those preceded by a single '-' character.
-     * Short options may be clustered.
-     *
-     * @param  mixed &$argv
-     * @return void
-     */
-    protected function _parseShortOptionCluster(&$argv)
-    {
-        $flagCluster = ltrim(array_shift($argv), '-');
-        foreach (str_split($flagCluster) as $flag) {
-            $this->_parseSingleOption($flag, $argv);
-        }
-    }
-
-    /**
-     * Parse command-line arguments for a single option.
-     *
-     * @param  string $flag
-     * @param  mixed  $argv
-     * @throws Zend_Console_Getopt_Exception
-     * @return void
-     */
-    protected function _parseSingleOption($flag, &$argv)
-    {
-        if ($this->_getoptConfig[self::CONFIG_IGNORECASE]) {
-            $flag = strtolower($flag);
-        }
-        if (!isset($this->_ruleMap[$flag])) {
-            #require_once 'Zend/Console/Getopt/Exception.php';
-            throw new Zend_Console_Getopt_Exception(
-                "Option \"$flag\" is not recognized.",
-                $this->getUsageMessage());
-        }
-        $realFlag = $this->_ruleMap[$flag];
-        switch ($this->_rules[$realFlag]['param']) {
-            case 'required':
-                if (count($argv) > 0) {
-                    $param = array_shift($argv);
-                    $this->_checkParameterType($realFlag, $param);
-                } else {
-                    #require_once 'Zend/Console/Getopt/Exception.php';
-                    throw new Zend_Console_Getopt_Exception(
-                        "Option \"$flag\" requires a parameter.",
-                        $this->getUsageMessage());
-                }
-                break;
-            case 'optional':
-                if (count($argv) > 0 && substr($argv[0], 0, 1) != '-') {
-                    $param = array_shift($argv);
-                    $this->_checkParameterType($realFlag, $param);
-                } else {
-                    $param = true;
-                }
-                break;
-            default:
-                $param = true;
-        }
-        $this->_options[$realFlag] = $param;
-    }
-
-    /**
-     * Return true if the parameter is in a valid format for
-     * the option $flag.
-     * Throw an exception in most other cases.
-     *
-     * @param  string $flag
-     * @param  string $param
-     * @throws Zend_Console_Getopt_Exception
-     * @return bool
-     */
-    protected function _checkParameterType($flag, $param)
-    {
-        $type = 'string';
-        if (isset($this->_rules[$flag]['paramType'])) {
-            $type = $this->_rules[$flag]['paramType'];
-        }
-        switch ($type) {
-            case 'word':
-                if (preg_match('/\W/', $param)) {
-                    #require_once 'Zend/Console/Getopt/Exception.php';
-                    throw new Zend_Console_Getopt_Exception(
-                        "Option \"$flag\" requires a single-word parameter, but was given \"$param\".",
-                        $this->getUsageMessage());
-                }
-                break;
-            case 'integer':
-                if (preg_match('/\D/', $param)) {
-                    #require_once 'Zend/Console/Getopt/Exception.php';
-                    throw new Zend_Console_Getopt_Exception(
-                        "Option \"$flag\" requires an integer parameter, but was given \"$param\".",
-                        $this->getUsageMessage());
-                }
-                break;
-            case 'string':
-            default:
-                break;
-        }
-        return true;
-    }
-
-    /**
-     * Define legal options using the gnu-style format.
-     *
-     * @param  string $rules
-     * @return void
-     */
-    protected function _addRulesModeGnu($rules)
-    {
-        $ruleArray = array();
-
-        /**
-         * Options may be single alphanumeric characters.
-         * Options may have a ':' which indicates a required string parameter.
-         * No long options or option aliases are supported in GNU style.
-         */
-        preg_match_all('/([a-zA-Z0-9]:?)/', $rules, $ruleArray);
-        foreach ($ruleArray[1] as $rule) {
-            $r = array();
-            $flag = substr($rule, 0, 1);
-            if ($this->_getoptConfig[self::CONFIG_IGNORECASE]) {
-                $flag = strtolower($flag);
-            }
-            $r['alias'][] = $flag;
-            if (substr($rule, 1, 1) == ':') {
-                $r['param'] = 'required';
-                $r['paramType'] = 'string';
-            } else {
-                $r['param'] = 'none';
-            }
-            $this->_rules[$flag] = $r;
-            $this->_ruleMap[$flag] = $flag;
-        }
-    }
-
-    /**
-     * Define legal options using the Zend-style format.
-     *
-     * @param  array $rules
-     * @throws Zend_Console_Getopt_Exception
-     * @return void
-     */
-    protected function _addRulesModeZend($rules)
-    {
-        foreach ($rules as $ruleCode => $helpMessage)
-        {
-            // this may have to translate the long parm type if there
-            // are any complaints that =string will not work (even though that use
-            // case is not documented)
-            if (in_array(substr($ruleCode, -2, 1), array('-', '='))) {
-                $flagList  = substr($ruleCode, 0, -2);
-                $delimiter = substr($ruleCode, -2, 1);
-                $paramType = substr($ruleCode, -1);
-            } else {
-                $flagList = $ruleCode;
-                $delimiter = $paramType = null;
-            }
-            if ($this->_getoptConfig[self::CONFIG_IGNORECASE]) {
-                $flagList = strtolower($flagList);
-            }
-            $flags = explode('|', $flagList);
-            $rule = array();
-            $mainFlag = $flags[0];
-            foreach ($flags as $flag) {
-                if (empty($flag)) {
-                    #require_once 'Zend/Console/Getopt/Exception.php';
-                    throw new Zend_Console_Getopt_Exception(
-                        "Blank flag not allowed in rule \"$ruleCode\".");
-                }
-                if (strlen($flag) == 1) {
-                    if (isset($this->_ruleMap[$flag])) {
-                        #require_once 'Zend/Console/Getopt/Exception.php';
-                        throw new Zend_Console_Getopt_Exception(
-                            "Option \"-$flag\" is being defined more than once.");
-                    }
-                    $this->_ruleMap[$flag] = $mainFlag;
-                    $rule['alias'][] = $flag;
-                } else {
-                    if (isset($this->_rules[$flag]) || isset($this->_ruleMap[$flag])) {
-                        #require_once 'Zend/Console/Getopt/Exception.php';
-                        throw new Zend_Console_Getopt_Exception(
-                            "Option \"--$flag\" is being defined more than once.");
-                    }
-                    $this->_ruleMap[$flag] = $mainFlag;
-                    $rule['alias'][] = $flag;
-                }
-            }
-            if (isset($delimiter)) {
-                switch ($delimiter) {
-                    case self::PARAM_REQUIRED:
-                        $rule['param'] = 'required';
-                        break;
-                    case self::PARAM_OPTIONAL:
-                    default:
-                        $rule['param'] = 'optional';
-                }
-                switch (substr($paramType, 0, 1)) {
-                    case self::TYPE_WORD:
-                        $rule['paramType'] = 'word';
-                        break;
-                    case self::TYPE_INTEGER:
-                        $rule['paramType'] = 'integer';
-                        break;
-                    case self::TYPE_STRING:
-                    default:
-                        $rule['paramType'] = 'string';
-                }
-            } else {
-                $rule['param'] = 'none';
-            }
-            $rule['help'] = $helpMessage;
-            $this->_rules[$mainFlag] = $rule;
-        }
-    }
-
-}
diff --git a/dev/tools/Magento/Tools/I18n/Zend/Console/Getopt/Exception.php b/dev/tools/Magento/Tools/I18n/Zend/Console/Getopt/Exception.php
deleted file mode 100644
index adece5f0e11..00000000000
--- a/dev/tools/Magento/Tools/I18n/Zend/Console/Getopt/Exception.php
+++ /dev/null
@@ -1,62 +0,0 @@
-<?php
-/**
- * Zend Framework
- *
- * LICENSE
- *
- * This source file is subject to the new BSD license that is bundled
- * with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://framework.zend.com/license/new-bsd
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@zend.com so we can send you a copy immediately.
- *
- * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- * @version    $Id: Exception.php 20096 2010-01-06 02:05:09Z bkarwin $
- */
-
-
-/**
- * @see Zend_Console_Getopt_Exception
- */
-#require_once 'Zend/Exception.php';
-
-
-/**
- * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-class Zend_Console_Getopt_Exception extends Zend_Exception
-{
-    /**
-     * Usage
-     *
-     * @var string
-     */
-    protected $usage = '';
-
-    /**
-     * Constructor
-     *
-     * @param string $message
-     * @param string $usage
-     * @return void
-     */
-    public function __construct($message, $usage = '')
-    {
-        $this->usage = $usage;
-        parent::__construct($message);
-    }
-
-    /**
-     * Returns the usage
-     *
-     * @return string
-     */
-    public function getUsageMessage()
-    {
-        return $this->usage;
-    }
-}
diff --git a/dev/tools/Magento/Tools/I18n/Zend/Exception.php b/dev/tools/Magento/Tools/I18n/Zend/Exception.php
deleted file mode 100644
index 4947cec2e28..00000000000
--- a/dev/tools/Magento/Tools/I18n/Zend/Exception.php
+++ /dev/null
@@ -1,92 +0,0 @@
-<?php
-/**
- * Zend Framework
- *
- * LICENSE
- *
- * This source file is subject to the new BSD license that is bundled
- * with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://framework.zend.com/license/new-bsd
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@zend.com so we can send you a copy immediately.
- *
- * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- * @version    $Id: Exception.php 20978 2010-02-08 15:35:25Z matthew $
- */
-
-/**
- * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-class Zend_Exception extends Exception
-{
-    /**
-     * @var null|Exception
-     */
-    private $_previous = null;
-
-    /**
-     * Construct the exception
-     *
-     * @param  string $msg
-     * @param  int $code
-     * @param  Exception $previous
-     * @return void
-     */
-    public function __construct($msg = '', $code = 0, Exception $previous = null)
-    {
-        if (version_compare(PHP_VERSION, '5.3.0', '<')) {
-            parent::__construct($msg, (int) $code);
-            $this->_previous = $previous;
-        } else {
-            parent::__construct($msg, (int) $code, $previous);
-        }
-    }
-
-    /**
-     * Overloading
-     *
-     * For PHP < 5.3.0, provides access to the getPrevious() method.
-     * 
-     * @param  string $method 
-     * @param  array $args 
-     * @return mixed
-     */
-    public function __call($method, array $args)
-    {
-        if ('getprevious' == strtolower($method)) {
-            return $this->_getPrevious();
-        }
-        return null;
-    }
-
-    /**
-     * String representation of the exception
-     *
-     * @return string
-     */
-    public function __toString()
-    {
-        if (version_compare(PHP_VERSION, '5.3.0', '<')) {
-            if (null !== ($e = $this->getPrevious())) {
-                return $e->__toString() 
-                       . "\n\nNext " 
-                       . parent::__toString();
-            }
-        }
-        return parent::__toString();
-    }
-
-    /**
-     * Returns previous Exception
-     *
-     * @return Exception|null
-     */
-    protected function _getPrevious()
-    {
-        return $this->_previous;
-    }
-}
diff --git a/dev/tools/Magento/Tools/I18n/bootstrap.php b/dev/tools/Magento/Tools/I18n/bootstrap.php
index 1df747f6662..1d2cd7c116c 100644
--- a/dev/tools/Magento/Tools/I18n/bootstrap.php
+++ b/dev/tools/Magento/Tools/I18n/bootstrap.php
@@ -23,22 +23,8 @@
  */
 define('BP', realpath(__DIR__) . '/');
 
-/**
- * @param string $className
- * @return bool
- */
-function i18n_tool_autoloader($className)
-{
-    if (strpos($className, 'Magento\\Tools\\') !== false) {
-        $filePath = str_replace('\\', '/', str_replace('Magento\\Tools\\I18n\\', '', $className));
-        $filePath = BP . $filePath . '.php';
-    } elseif (strpos($className, 'Zend_') !== false) {
-        $filePath = BP . str_replace('_', '/', $className) . '.php';
-    }
-    if (isset($filePath) && file_exists($filePath)) {
-        include_once $filePath;
-    } else {
-        return false;
-    }
+$vendorDir = require BP . '../../../../../app/etc/vendor_path.php';
+$vendorAutoload = BP . "../../../../../{$vendorDir}/autoload.php";
+if (file_exists($vendorAutoload)) {
+    require_once $vendorAutoload;
 }
-spl_autoload_register('i18n_tool_autoloader');
diff --git a/dev/tools/Magento/Tools/Layout/xmlUpdater.php b/dev/tools/Magento/Tools/Layout/xmlUpdater.php
index 6f69cd8dda8..c1647dd55f1 100644
--- a/dev/tools/Magento/Tools/Layout/xmlUpdater.php
+++ b/dev/tools/Magento/Tools/Layout/xmlUpdater.php
@@ -25,8 +25,6 @@ $basePath = realpath(__DIR__ . '/../../../../../');
 require_once $basePath . '/app/autoload.php';
 require __DIR__ . '/Formatter.php';
 
-(new \Magento\Framework\Autoload\IncludePath())->addIncludePath(array($basePath . '/lib/internal'));
-
 try {
     $opt = new \Zend_Console_Getopt(
         array(
diff --git a/dev/tools/Magento/Tools/Migration/Acl/db.php b/dev/tools/Magento/Tools/Migration/Acl/db.php
index 6616c68218f..aadb20fa694 100644
--- a/dev/tools/Magento/Tools/Migration/Acl/db.php
+++ b/dev/tools/Magento/Tools/Migration/Acl/db.php
@@ -24,7 +24,7 @@
 
 $rootDir = realpath(__DIR__ . '/../../../..');
 require $rootDir . '/app/autoload.php';
-(new \Magento\Framework\Autoload\IncludePath())->addIncludePath(array($rootDir . '/lib', $rootDir . '/dev'));
+\Magento\Framework\Code\Generator\FileResolver::addIncludePath([$rootDir . '/lib', $rootDir . '/dev']);
 $defaultReportFile = 'report.log';
 
 try {
diff --git a/dev/tools/Magento/Tools/Migration/system_config.php b/dev/tools/Magento/Tools/Migration/system_config.php
index 8ce21c9a3fc..609815b7a24 100644
--- a/dev/tools/Magento/Tools/Migration/system_config.php
+++ b/dev/tools/Magento/Tools/Migration/system_config.php
@@ -21,7 +21,6 @@
  * @copyright  Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
-use Magento\Framework\Autoload\IncludePath;
 use Magento\Tools\Migration\System\Configuration\Formatter;
 use Magento\Tools\Migration\System\Configuration\Generator;
 use Magento\Tools\Migration\System\Configuration\Mapper\Field;
@@ -36,8 +35,10 @@ use Magento\Tools\Migration\System\Writer\Factory;
 use Magento\Tools\Migration\System\Configuration\Logger as Logger;
 
 $rootDir = realpath(__DIR__ . '../../../../../../');
+
 require __DIR__ . '/../../../../../app/autoload.php';
-(new IncludePath())->addIncludePath(array($rootDir . '/lib', $rootDir . '/dev'));
+\Magento\Framework\Code\Generator\FileResolver::addIncludePath([$rootDir . '/lib', $rootDir . '/dev']);
+
 $defaultReportFile = 'report.log';
 
 try {
diff --git a/dev/tools/Magento/Tools/View/deploy.php b/dev/tools/Magento/Tools/View/deploy.php
index 10a6c88aefd..b0cd9635d8c 100644
--- a/dev/tools/Magento/Tools/View/deploy.php
+++ b/dev/tools/Magento/Tools/View/deploy.php
@@ -31,8 +31,10 @@ $baseName = basename(__FILE__);
 $options = getopt('', array('langs::', 'dry-run', 'verbose::', 'help'));
 define('USAGE', "USAGE:\n\tphp -f {$baseName} -- [--langs=en_US,de_DE,...] [--verbose=0|1] [--dry-run] [--help]\n");
 require __DIR__ . '/../../../../../app/bootstrap.php';
-$autoloader = new \Magento\Framework\Autoload\IncludePath();
-$autoloader->addIncludePath([BP . '/dev/tests/static/framework', realpath(__DIR__ . '/../../..')]);
+
+\Magento\Framework\Code\Generator\FileResolver::addIncludePath(
+    [BP . '/dev/tests/static/framework', realpath(__DIR__ . '/../../..')]
+);
 
 // parse all options
 if (isset($options['help'])) {
diff --git a/dev/tools/bootstrap.php b/dev/tools/bootstrap.php
index 06ca15114a4..4581dbaa8bd 100644
--- a/dev/tools/bootstrap.php
+++ b/dev/tools/bootstrap.php
@@ -22,28 +22,3 @@
  * @license   http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 require_once __DIR__ . '/../../app/autoload.php';
-(new \Magento\Framework\Autoload\IncludePath())->addIncludePath(
-    array(
-        BP . '/app/code',
-        BP . '/lib/internal',
-    )
-);
-
-/**
- * @param string $className
- * @return bool
- */
-function tool_autoloader($className)
-{
-    if (strpos($className, 'Magento\\Tools\\') === false) {
-        return false;
-    }
-    $filePath = str_replace('\\', '/', $className);
-    $filePath = __DIR__ . '/' . $filePath . '.php';
-    if (file_exists($filePath)) {
-        include($filePath);
-    } else {
-        return false;
-    }
-}
-spl_autoload_register('tool_autoloader');
diff --git a/dev/tools/layout/xml-updater.php b/dev/tools/layout/xml-updater.php
index 9fdbd0fe7a8..e69ffb9fec0 100644
--- a/dev/tools/layout/xml-updater.php
+++ b/dev/tools/layout/xml-updater.php
@@ -25,10 +25,6 @@ $basePath = realpath(__DIR__ . '/../../../');
 require_once $basePath . '/app/autoload.php';
 require __DIR__ . '/Formatter.php';
 
-(new \Magento\Framework\Autoload\IncludePath())->addIncludePath(array(
-    $basePath . '/lib/internal',
-));
-
 try{
     $opt = new Zend_Console_Getopt(array(
         'file|f=s' => 'File to process(required)',
diff --git a/dev/tools/performance-toolkit/benchmark.jmx b/dev/tools/performance-toolkit/benchmark.jmx
index de669dabd7f..5a31d4e0c48 100644
--- a/dev/tools/performance-toolkit/benchmark.jmx
+++ b/dev/tools/performance-toolkit/benchmark.jmx
@@ -33,7 +33,7 @@
         <collectionProp name="Arguments.arguments">
           <elementProp name="host" elementType="Argument">
             <stringProp name="Argument.name">host</stringProp>
-            <stringProp name="Argument.value">${__P(host)}</stringProp>
+            <stringProp name="Argument.value">${__P(host,localhost)}</stringProp>
             <stringProp name="Argument.metadata">=</stringProp>
           </elementProp>
           <elementProp name="base_path" elementType="Argument">
@@ -689,7 +689,7 @@ productList.add(productMap);                 </stringProp>
           <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
             <collectionProp name="Asserion.test_strings">
               <stringProp name="-1397214398">Welcome</stringProp>
-              <stringProp name="-1309286748">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
+              <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
             </collectionProp>
             <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
             <boolProp name="Assertion.assume_success">false</boolProp>
@@ -857,7 +857,7 @@ vars.put(&quot;searchData&quot;, new String(Base64Encoder.encode(searchData)));<
           <stringProp name="HTTPSampler.response_timeout"></stringProp>
           <stringProp name="HTTPSampler.protocol">http</stringProp>
           <stringProp name="HTTPSampler.contentEncoding">UTF-8</stringProp>
-          <stringProp name="HTTPSampler.path">${base_path}${admin_path}/customer/index/limit/{$users}/filter/${searchData}</stringProp>
+          <stringProp name="HTTPSampler.path">${base_path}${admin_path}/customer/index/grid/limit/${users}/filter/${searchData}</stringProp>
           <stringProp name="HTTPSampler.method">POST</stringProp>
           <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
           <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
@@ -3789,7 +3789,7 @@ if (emailsCount &lt; 1) {
           <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
             <collectionProp name="Asserion.test_strings">
               <stringProp name="494863233">Thank you for your purchase!</stringProp>
-              <stringProp name="1635682758">Your order # is</stringProp>
+              <stringProp name="-1590086334">Your order number is</stringProp>
             </collectionProp>
             <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
             <boolProp name="Assertion.assume_success">false</boolProp>
@@ -3937,7 +3937,7 @@ props.remove(&quot;customer_emails_list&quot;);</stringProp>
         <stringProp name="filename">${report_save_path}/detailed-urls-report.log</stringProp>
       </ResultCollector>
       <hashTree/>
-      <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="false">
+      <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
         <boolProp name="ResultCollector.error_logging">false</boolProp>
         <objProp>
           <name>saveConfig</name>
diff --git a/dev/tools/performance-toolkit/framework/bootstrap.php b/dev/tools/performance-toolkit/framework/bootstrap.php
index 04692120fca..8d568e678a3 100644
--- a/dev/tools/performance-toolkit/framework/bootstrap.php
+++ b/dev/tools/performance-toolkit/framework/bootstrap.php
@@ -24,10 +24,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-$toolkitBaseDir = realpath(__DIR__ . '/..');
-$magentoBaseDir = realpath($toolkitBaseDir . '/../../../');
+$magentoBaseDir = realpath(__DIR__ . '/../../../../');
 
 require_once "$magentoBaseDir/app/bootstrap.php";
-(new \Magento\Framework\Autoload\IncludePath())->addIncludePath("$toolkitBaseDir/framework");
-
 return $magentoBaseDir;
diff --git a/dev/tools/performance-toolkit/framework/tests/unit/framework/bootstrap.php b/dev/tools/performance-toolkit/framework/tests/unit/framework/bootstrap.php
index ed06aa5c708..d213e5969b1 100644
--- a/dev/tools/performance-toolkit/framework/tests/unit/framework/bootstrap.php
+++ b/dev/tools/performance-toolkit/framework/tests/unit/framework/bootstrap.php
@@ -25,6 +25,7 @@
 $magentoBaseDir = realpath(__DIR__ . '/../../../../../../../');
 
 require_once "$magentoBaseDir/app/bootstrap.php";
-(new \Magento\Framework\Autoload\IncludePath())->addIncludePath(
+
+\Magento\Framework\Code\Generator\FileResolver::addIncludePath(
     "$magentoBaseDir/dev/tools/performance-toolkit/framework"
 );
diff --git a/lib/internal/Magento/Framework/Service/Data/AbstractExtensibleObject.php b/lib/internal/Magento/Framework/Api/AbstractExtensibleObject.php
similarity index 87%
rename from lib/internal/Magento/Framework/Service/Data/AbstractExtensibleObject.php
rename to lib/internal/Magento/Framework/Api/AbstractExtensibleObject.php
index 558985f867a..6281d9a6425 100644
--- a/lib/internal/Magento/Framework/Service/Data/AbstractExtensibleObject.php
+++ b/lib/internal/Magento/Framework/Api/AbstractExtensibleObject.php
@@ -21,9 +21,9 @@
  * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
-namespace Magento\Framework\Service\Data;
+namespace Magento\Framework\Api;
 
-use Magento\Framework\Api\Data\ExtensibleDataInterface;
+use Magento\Framework\Api\ExtensibleDataInterface;
 
 /**
  * Base Class for extensible data Objects
@@ -40,7 +40,7 @@ abstract class AbstractExtensibleObject extends AbstractSimpleObject implements
      * Get an attribute value.
      *
      * @param string $attributeCode
-     * @return \Magento\Framework\Service\Data\AttributeValue|null null if the attribute has not been set
+     * @return \Magento\Framework\Api\AttributeValue|null null if the attribute has not been set
      */
     public function getCustomAttribute($attributeCode)
     {
@@ -53,7 +53,7 @@ abstract class AbstractExtensibleObject extends AbstractSimpleObject implements
     /**
      * Retrieve custom attributes values.
      *
-     * @return \Magento\Framework\Service\Data\AttributeValue[]|null
+     * @return \Magento\Framework\Api\AttributeValue[]|null
      */
     public function getCustomAttributes()
     {
diff --git a/lib/internal/Magento/Framework/Service/V1/Data/AbstractSearchResultsBuilder.php b/lib/internal/Magento/Framework/Api/AbstractSearchResultsBuilder.php
similarity index 84%
rename from lib/internal/Magento/Framework/Service/V1/Data/AbstractSearchResultsBuilder.php
rename to lib/internal/Magento/Framework/Api/AbstractSearchResultsBuilder.php
index 678bdb34776..bb6c00ef7b8 100644
--- a/lib/internal/Magento/Framework/Service/V1/Data/AbstractSearchResultsBuilder.php
+++ b/lib/internal/Magento/Framework/Api/AbstractSearchResultsBuilder.php
@@ -22,19 +22,19 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-namespace Magento\Framework\Service\V1\Data;
+namespace Magento\Framework\Api;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder;
-use Magento\Framework\Service\Data\AttributeValueBuilder;
-use Magento\Framework\Service\Data\MetadataServiceInterface;
-use Magento\Framework\Service\Data\ObjectFactory;
+use Magento\Framework\Api\ExtensibleObjectBuilder;
+use Magento\Framework\Api\AttributeValueBuilder;
+use Magento\Framework\Api\MetadataServiceInterface;
+use Magento\Framework\Api\ObjectFactory;
 
 /**
  * Builder for the SearchResults Service Data Object
  *
  * @method SearchResults create()
  */
-abstract class AbstractSearchResultsBuilder extends AbstractExtensibleObjectBuilder
+abstract class AbstractSearchResultsBuilder extends ExtensibleObjectBuilder
 {
     /**
      * Search criteria builder
@@ -46,7 +46,7 @@ abstract class AbstractSearchResultsBuilder extends AbstractExtensibleObjectBuil
     /**
      * Item data object builder
      *
-     * @var AbstractExtensibleObjectBuilder $itemObjectBuilder
+     * @var ExtensibleObjectBuilder $itemObjectBuilder
      */
     protected $itemObjectBuilder;
 
@@ -57,14 +57,14 @@ abstract class AbstractSearchResultsBuilder extends AbstractExtensibleObjectBuil
      * @param AttributeValueBuilder $valueBuilder
      * @param MetadataServiceInterface $metadataService
      * @param SearchCriteriaBuilder $searchCriteriaBuilder
-     * @param AbstractExtensibleObjectBuilder $itemObjectBuilder
+     * @param ExtensibleObjectBuilder $itemObjectBuilder
      */
     public function __construct(
         ObjectFactory $objectFactory,
         AttributeValueBuilder $valueBuilder,
         MetadataServiceInterface $metadataService,
         SearchCriteriaBuilder $searchCriteriaBuilder,
-        AbstractExtensibleObjectBuilder $itemObjectBuilder
+        ExtensibleObjectBuilder $itemObjectBuilder
     ) {
         parent::__construct($objectFactory, $valueBuilder, $metadataService);
         $this->searchCriteriaBuilder = $searchCriteriaBuilder;
@@ -96,7 +96,7 @@ abstract class AbstractSearchResultsBuilder extends AbstractExtensibleObjectBuil
     /**
      * Set items
      *
-     * @param \Magento\Framework\Service\Data\AbstractExtensibleObject[] $items
+     * @param \Magento\Framework\Api\AbstractExtensibleObject[] $items
      * @return $this
      */
     public function setItems($items)
diff --git a/lib/internal/Magento/Framework/Service/AbstractServiceCollection.php b/lib/internal/Magento/Framework/Api/AbstractServiceCollection.php
similarity index 92%
rename from lib/internal/Magento/Framework/Service/AbstractServiceCollection.php
rename to lib/internal/Magento/Framework/Api/AbstractServiceCollection.php
index 6997e75a0d1..ccd0049e588 100644
--- a/lib/internal/Magento/Framework/Service/AbstractServiceCollection.php
+++ b/lib/internal/Magento/Framework/Api/AbstractServiceCollection.php
@@ -22,15 +22,15 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-namespace Magento\Framework\Service;
+namespace Magento\Framework\Api;
 
 use Magento\Framework\Data\Collection\EntityFactoryInterface;
 use Magento\Framework\Exception;
-use Magento\Framework\Service\V1\Data\Filter;
-use Magento\Framework\Service\V1\Data\FilterBuilder;
-use Magento\Framework\Service\V1\Data\SearchCriteria;
-use Magento\Framework\Service\V1\Data\SearchCriteriaBuilder;
-use Magento\Framework\Service\V1\Data\SortOrderBuilder;
+use Magento\Framework\Api\Filter;
+use Magento\Framework\Api\FilterBuilder;
+use Magento\Framework\Api\SearchCriteria;
+use Magento\Framework\Api\SearchCriteriaBuilder;
+use Magento\Framework\Api\SortOrderBuilder;
 
 /**
  * Base for service collections
@@ -64,7 +64,7 @@ abstract class AbstractServiceCollection extends \Magento\Framework\Data\Collect
     protected $searchCriteriaBuilder;
 
     /**
-     * @var \Magento\Framework\Service\V1\Data\SortOrderBuilder
+     * @var \Magento\Framework\Api\SortOrderBuilder
      */
     protected $sortOrderBuilder;
 
@@ -72,7 +72,7 @@ abstract class AbstractServiceCollection extends \Magento\Framework\Data\Collect
      * @param EntityFactoryInterface $entityFactory
      * @param FilterBuilder $filterBuilder
      * @param SearchCriteriaBuilder $searchCriteriaBuilder
-     * @param \Magento\Framework\Service\V1\Data\SortOrderBuilder $sortOrderBuilder
+     * @param \Magento\Framework\Api\SortOrderBuilder $sortOrderBuilder
      */
     public function __construct(
         EntityFactoryInterface $entityFactory,
@@ -158,7 +158,7 @@ abstract class AbstractServiceCollection extends \Magento\Framework\Data\Collect
             $this->searchCriteriaBuilder->addFilter($filterGroup);
         }
         foreach ($this->_orders as $field => $direction) {
-            /** @var \Magento\Framework\Service\V1\Data\SortOrder $sortOrder */
+            /** @var \Magento\Framework\Api\SortOrder $sortOrder */
             /** @var string $direction */
             $direction = ($direction == 'ASC') ? SearchCriteria::SORT_ASC : SearchCriteria::SORT_DESC;
             $sortOrder = $this->sortOrderBuilder->setField($field)->setDirection($direction)->create();
diff --git a/lib/internal/Magento/Framework/Service/Data/AbstractSimpleObject.php b/lib/internal/Magento/Framework/Api/AbstractSimpleObject.php
similarity index 98%
rename from lib/internal/Magento/Framework/Service/Data/AbstractSimpleObject.php
rename to lib/internal/Magento/Framework/Api/AbstractSimpleObject.php
index 55a27b7a38a..5910f4db1ce 100644
--- a/lib/internal/Magento/Framework/Service/Data/AbstractSimpleObject.php
+++ b/lib/internal/Magento/Framework/Api/AbstractSimpleObject.php
@@ -21,7 +21,7 @@
  * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
-namespace Magento\Framework\Service\Data;
+namespace Magento\Framework\Api;
 
 /**
  * Base Class for simple data Objects
diff --git a/lib/internal/Magento/Framework/Service/Data/AbstractSimpleObjectBuilder.php b/lib/internal/Magento/Framework/Api/AbstractSimpleObjectBuilder.php
similarity index 83%
rename from lib/internal/Magento/Framework/Service/Data/AbstractSimpleObjectBuilder.php
rename to lib/internal/Magento/Framework/Api/AbstractSimpleObjectBuilder.php
index 44adce498d4..1b025c16317 100644
--- a/lib/internal/Magento/Framework/Service/Data/AbstractSimpleObjectBuilder.php
+++ b/lib/internal/Magento/Framework/Api/AbstractSimpleObjectBuilder.php
@@ -21,7 +21,7 @@
  * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
-namespace Magento\Framework\Service\Data;
+namespace Magento\Framework\Api;
 
 /**
  * Base Builder Class for simple data Objects
@@ -32,7 +32,7 @@ abstract class AbstractSimpleObjectBuilder
     /**
      * @var array
      */
-    protected $_data;
+    protected $data;
 
     /**
      * @var ObjectFactory
@@ -44,7 +44,7 @@ abstract class AbstractSimpleObjectBuilder
      */
     public function __construct(ObjectFactory $objectFactory)
     {
-        $this->_data = array();
+        $this->data = array();
         $this->objectFactory = $objectFactory;
     }
 
@@ -58,7 +58,7 @@ abstract class AbstractSimpleObjectBuilder
     public function populate(AbstractSimpleObject $prototype)
     {
         $objectType = $this->_getDataObjectType();
-        if (get_class($prototype) != $objectType) {
+        if (!($prototype instanceof $objectType)) {
             throw new \LogicException('Wrong prototype object given. It can only be of "' . $objectType . '" type.');
         }
         return $this->populateWithArray($prototype->__toArray());
@@ -74,7 +74,7 @@ abstract class AbstractSimpleObjectBuilder
      */
     public function populateWithArray(array $data)
     {
-        $this->_data = array();
+        $this->data = array();
         $this->_setDataValues($data);
         return $this;
     }
@@ -91,11 +91,11 @@ abstract class AbstractSimpleObjectBuilder
         foreach ($data as $key => $value) {
             /* First, verify is there any getter for the key on the Service Data Object */
             $possibleMethods = array(
-                'get' . \Magento\Framework\Service\SimpleDataObjectConverter::snakeCaseToUpperCamelCase($key),
-                'is' . \Magento\Framework\Service\SimpleDataObjectConverter::snakeCaseToUpperCamelCase($key)
+                'get' . \Magento\Framework\Api\SimpleDataObjectConverter::snakeCaseToUpperCamelCase($key),
+                'is' . \Magento\Framework\Api\SimpleDataObjectConverter::snakeCaseToUpperCamelCase($key)
             );
             if (array_intersect($possibleMethods, $dataObjectMethods)) {
-                $this->_data[$key] = $value;
+                $this->data[$key] = $value;
             }
         }
         return $this;
@@ -133,7 +133,7 @@ abstract class AbstractSimpleObjectBuilder
     public function mergeDataObjectWithArray(AbstractSimpleObject $dataObject, array $data)
     {
         $objectType = $this->_getDataObjectType();
-        if (get_class($dataObject) != $objectType) {
+        if (!($dataObject instanceof $objectType)) {
             throw new \LogicException('Wrong prototype object given. It can only be of "' . $objectType . '" type.');
         }
         $this->_setDataValues($dataObject->__toArray());
@@ -150,7 +150,7 @@ abstract class AbstractSimpleObjectBuilder
     {
         $dataObjectType = $this->_getDataObjectType();
         $dataObject = $this->objectFactory->create($dataObjectType, ['builder' => $this]);
-        $this->_data = array();
+        $this->data = array();
         return $dataObject;
     }
 
@@ -162,7 +162,7 @@ abstract class AbstractSimpleObjectBuilder
      */
     protected function _set($key, $value)
     {
-        $this->_data[$key] = $value;
+        $this->data[$key] = $value;
         return $this;
     }
 
@@ -173,7 +173,15 @@ abstract class AbstractSimpleObjectBuilder
      */
     protected function _getDataObjectType()
     {
-        return substr(get_class($this), 0, -7);
+        $currentClass = get_class($this);
+        $dataBuilderSuffix = 'DataBuilder';
+        if (substr($currentClass, -strlen($dataBuilderSuffix)) === $dataBuilderSuffix) {
+            $dataObjectType = substr($currentClass, 0, -strlen($dataBuilderSuffix)) . 'Interface';
+        } else {
+            $builderSuffix = 'Builder';
+            $dataObjectType = substr($currentClass, 0, -strlen($builderSuffix));
+        }
+        return $dataObjectType;
     }
 
     /**
@@ -183,6 +191,6 @@ abstract class AbstractSimpleObjectBuilder
      */
     public function getData()
     {
-        return $this->_data;
+        return $this->data;
     }
 }
diff --git a/lib/internal/Magento/Framework/Service/ArrayObjectSearch.php b/lib/internal/Magento/Framework/Api/ArrayObjectSearch.php
similarity index 98%
rename from lib/internal/Magento/Framework/Service/ArrayObjectSearch.php
rename to lib/internal/Magento/Framework/Api/ArrayObjectSearch.php
index 3a0d400fbfc..9fd0e974670 100644
--- a/lib/internal/Magento/Framework/Service/ArrayObjectSearch.php
+++ b/lib/internal/Magento/Framework/Api/ArrayObjectSearch.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-namespace Magento\Framework\Service;
+namespace Magento\Framework\Api;
 
 /**
  * Class to provide possibility to search for any object's property value by the name and value of another property
diff --git a/lib/internal/Magento/Framework/Api/AttributeDataBuilder.php b/lib/internal/Magento/Framework/Api/AttributeDataBuilder.php
new file mode 100644
index 00000000000..11bb7df9639
--- /dev/null
+++ b/lib/internal/Magento/Framework/Api/AttributeDataBuilder.php
@@ -0,0 +1,72 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+namespace Magento\Framework\Api;
+
+/**
+ * Custom Attribute Data object builder
+ */
+class AttributeDataBuilder extends CompositeExtensibleDataBuilder
+{
+    /**
+     * Set attribute code
+     *
+     * @param string $attributeCode
+     * @return $this
+     */
+    public function setAttributeCode($attributeCode)
+    {
+        return $this->set(AttributeInterface::ATTRIBUTE_CODE, $attributeCode);
+    }
+
+    /**
+     * Set attribute value
+     *
+     * @param string $value
+     * @return $this
+     */
+    public function setValue($value)
+    {
+        return $this->set(AttributeInterface::VALUE, $value);
+    }
+
+    /**
+     * Initialize the builder
+     *
+     * @param \Magento\Framework\ObjectManager $objectManager
+     * @param \Magento\Framework\Api\MetadataServiceInterface $metadataService
+     * @param \Magento\Framework\ObjectManager\Config $objectManagerConfig
+     */
+    public function __construct(
+        \Magento\Framework\ObjectManager $objectManager,
+        \Magento\Framework\Api\MetadataServiceInterface $metadataService,
+        \Magento\Framework\ObjectManager\Config $objectManagerConfig
+    ) {
+        parent::__construct(
+            $objectManager,
+            $metadataService,
+            $objectManagerConfig,
+            'Magento\Framework\Api\AttributeInterface'
+        );
+    }
+}
diff --git a/lib/internal/Magento/Framework/Api/Data/AttributeInterface.php b/lib/internal/Magento/Framework/Api/AttributeInterface.php
similarity index 87%
rename from lib/internal/Magento/Framework/Api/Data/AttributeInterface.php
rename to lib/internal/Magento/Framework/Api/AttributeInterface.php
index bf74aaaf730..749a535c138 100644
--- a/lib/internal/Magento/Framework/Api/Data/AttributeInterface.php
+++ b/lib/internal/Magento/Framework/Api/AttributeInterface.php
@@ -22,13 +22,20 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-namespace Magento\Framework\Api\Data;
+namespace Magento\Framework\Api;
 
 /**
  * Interface for custom attribute value.
  */
 interface AttributeInterface
 {
+    /**#@+
+     * Constant used as key into $_data
+     */
+    const ATTRIBUTE_CODE = 'attribute_code';
+    const VALUE = 'value';
+    /**#@-*/
+
     /**
      * Get attribute code
      *
diff --git a/lib/internal/Magento/Framework/Service/Data/AttributeMetadata.php b/lib/internal/Magento/Framework/Api/AttributeMetadata.php
similarity index 96%
rename from lib/internal/Magento/Framework/Service/Data/AttributeMetadata.php
rename to lib/internal/Magento/Framework/Api/AttributeMetadata.php
index e95966363dc..ce8f8eff68c 100644
--- a/lib/internal/Magento/Framework/Service/Data/AttributeMetadata.php
+++ b/lib/internal/Magento/Framework/Api/AttributeMetadata.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-namespace Magento\Framework\Service\Data;
+namespace Magento\Framework\Api;
 
 /**
  * Base data object for custom attribute metadata
diff --git a/lib/internal/Magento/Framework/Service/Data/AttributeMetadataBuilder.php b/lib/internal/Magento/Framework/Api/AttributeMetadataBuilder.php
similarity index 97%
rename from lib/internal/Magento/Framework/Service/Data/AttributeMetadataBuilder.php
rename to lib/internal/Magento/Framework/Api/AttributeMetadataBuilder.php
index 8ded44e4857..bf620020f13 100644
--- a/lib/internal/Magento/Framework/Service/Data/AttributeMetadataBuilder.php
+++ b/lib/internal/Magento/Framework/Api/AttributeMetadataBuilder.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-namespace Magento\Framework\Service\Data;
+namespace Magento\Framework\Api;
 
 /**
  * Default implementation of the AttributeMetadataBuilderInterface
diff --git a/lib/internal/Magento/Framework/Service/Data/AttributeMetadataBuilderInterface.php b/lib/internal/Magento/Framework/Api/AttributeMetadataBuilderInterface.php
similarity index 96%
rename from lib/internal/Magento/Framework/Service/Data/AttributeMetadataBuilderInterface.php
rename to lib/internal/Magento/Framework/Api/AttributeMetadataBuilderInterface.php
index a438316cd71..9a19f23a33d 100644
--- a/lib/internal/Magento/Framework/Service/Data/AttributeMetadataBuilderInterface.php
+++ b/lib/internal/Magento/Framework/Api/AttributeMetadataBuilderInterface.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-namespace Magento\Framework\Service\Data;
+namespace Magento\Framework\Api;
 
 /**
  * Attribute metadata object builder interface.
diff --git a/lib/internal/Magento/Framework/Service/Data/AttributeValue.php b/lib/internal/Magento/Framework/Api/AttributeValue.php
similarity index 85%
rename from lib/internal/Magento/Framework/Service/Data/AttributeValue.php
rename to lib/internal/Magento/Framework/Api/AttributeValue.php
index e8c0670e580..d2c95712568 100644
--- a/lib/internal/Magento/Framework/Service/Data/AttributeValue.php
+++ b/lib/internal/Magento/Framework/Api/AttributeValue.php
@@ -22,22 +22,15 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-namespace Magento\Framework\Service\Data;
+namespace Magento\Framework\Api;
 
-use Magento\Framework\Api\Data\AttributeInterface;
+use Magento\Framework\Api\AttributeInterface;
 
 /**
  * Custom Attribute Data object
  */
 class AttributeValue extends AbstractSimpleObject implements AttributeInterface
 {
-    /**#@+
-     * Constant used as key into $_data
-     */
-    const ATTRIBUTE_CODE = 'attribute_code';
-    const VALUE = 'value';
-    /**#@-*/
-
     /**
      * Get attribute code
      *
diff --git a/lib/internal/Magento/Framework/Service/Data/AttributeValueBuilder.php b/lib/internal/Magento/Framework/Api/AttributeValueBuilder.php
similarity index 97%
rename from lib/internal/Magento/Framework/Service/Data/AttributeValueBuilder.php
rename to lib/internal/Magento/Framework/Api/AttributeValueBuilder.php
index 6232429e609..e4113082c82 100644
--- a/lib/internal/Magento/Framework/Service/Data/AttributeValueBuilder.php
+++ b/lib/internal/Magento/Framework/Api/AttributeValueBuilder.php
@@ -21,7 +21,7 @@
  * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
-namespace Magento\Framework\Service\Data;
+namespace Magento\Framework\Api;
 
 /**
  * Custom Attribute Data object builder
diff --git a/lib/internal/Magento/Framework/Service/Code/Generator/Builder.php b/lib/internal/Magento/Framework/Api/Code/Generator/Builder.php
similarity index 93%
rename from lib/internal/Magento/Framework/Service/Code/Generator/Builder.php
rename to lib/internal/Magento/Framework/Api/Code/Generator/Builder.php
index 3d19dfd98bf..76928c8432c 100644
--- a/lib/internal/Magento/Framework/Service/Code/Generator/Builder.php
+++ b/lib/internal/Magento/Framework/Api/Code/Generator/Builder.php
@@ -23,12 +23,14 @@
  * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
-namespace Magento\Framework\Service\Code\Generator;
+namespace Magento\Framework\Api\Code\Generator;
 
 use Magento\Framework\Code\Generator\EntityAbstract;
 
 /**
  * Class Builder
+ *
+ * @deprecated Use DataBuilder instead
  */
 class Builder extends EntityAbstract
 {
@@ -76,7 +78,7 @@ class Builder extends EntityAbstract
                     $method->getName(),
                     array('__sleep', '__wakeup', '__clone')
                 ) &&
-                $method->class !== 'Magento\Framework\Service\Data\AbstractExtensibleObject'
+                $method->class !== 'Magento\Framework\Api\AbstractExtensibleObject'
             ) {
                 if (substr($method->getName(), 0, 3) == 'get') {
                     $methods[] = $this->_getMethodInfo($reflectionClass, $method);
@@ -101,7 +103,7 @@ class Builder extends EntityAbstract
             'parameters' => [
                 ['name' => lcfirst(substr($method->getName(), 3))]
             ],
-            'body' => "\$this->_set("
+            'body' => "return \$this->_set("
                 . '\\' . $class->getName() . "::"
                 . strtoupper(preg_replace('/(.)([A-Z])/', "$1_$2", substr($method->getName(), 3)))
                 . ", \$" . lcfirst(substr($method->getName(), 3)) . ");",
@@ -149,7 +151,7 @@ class Builder extends EntityAbstract
             $this->_getClassMethods()
         )->setClassDocBlock(
             $this->_getClassDocBlock()
-        )->setExtendedClass('\\Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder');
+        )->setExtendedClass('\\Magento\Framework\Api\ExtensibleObjectBuilder');
 
         return $this->_getGeneratedCode();
     }
diff --git a/lib/internal/Magento/Framework/Api/Code/Generator/DataBuilder.php b/lib/internal/Magento/Framework/Api/Code/Generator/DataBuilder.php
new file mode 100644
index 00000000000..2bb68f6c98c
--- /dev/null
+++ b/lib/internal/Magento/Framework/Api/Code/Generator/DataBuilder.php
@@ -0,0 +1,271 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Framework\Api\Code\Generator;
+
+use \Magento\Framework\Code\Generator\FileResolver;
+use Magento\Framework\Code\Generator\CodeGenerator;
+use Magento\Framework\Code\Generator\EntityAbstract;
+use Magento\Framework\Code\Generator\Io;
+use Magento\Framework\ObjectManager\Config as ObjectManagerConfig;
+use Zend\Code\Reflection\ClassReflection;
+
+/**
+ * Class Builder
+ */
+class DataBuilder extends EntityAbstract
+{
+    /**
+     * Entity type
+     */
+    const ENTITY_TYPE = 'dataBuilder';
+
+    /**
+     * Data Model property name
+     */
+    const DATA_PROPERTY_NAME = 'data';
+
+    /**#@+
+     * Constant which defines if builder is created for building data objects or data models.
+     */
+    const TYPE_DATA_OBJECT = 'data_object';
+    const TYPE_DATA_MODEL = 'data_model';
+    /**#@-*/
+
+    /** @var string */
+    protected $currentDataType;
+
+    /** @var string[] */
+    protected $extensibleInterfaceMethods;
+
+    /**
+     * Initialize dependencies.
+     *
+     * @param string|null $sourceClassName
+     * @param string|null $resultClassName
+     * @param Io|null $ioObject
+     * @param CodeGenerator\CodeGeneratorInterface|null $classGenerator
+     * @param FileResolver|null $fileResolver
+     */
+    public function __construct(
+        $sourceClassName = null,
+        $resultClassName = null,
+        Io $ioObject = null,
+        CodeGenerator\CodeGeneratorInterface $classGenerator = null,
+        FileResolver $fileResolver = null
+    ) {
+        parent::__construct(
+            $sourceClassName,
+            $resultClassName,
+            $ioObject,
+            $classGenerator,
+            $fileResolver
+        );
+    }
+
+    /**
+     * Retrieve class properties
+     *
+     * @return array
+     */
+    protected function _getClassProperties()
+    {
+        return [];
+    }
+
+    /**
+     * Get default constructor definition for generated class
+     *
+     * @return array
+     */
+    protected function _getDefaultConstructorDefinition()
+    {
+        $constructorDefinition = [
+            'name' => '__construct',
+            'parameters' => [
+                ['name' => 'objectManager', 'type' => '\Magento\Framework\ObjectManager'],
+                ['name' => 'metadataService', 'type' => '\Magento\Framework\Api\MetadataServiceInterface'],
+                ['name' => 'objectManagerConfig', 'type' => '\Magento\Framework\ObjectManager\Config'],
+            ],
+            'docblock' => [
+                'shortDescription' => 'Initialize the builder',
+                'tags' => [
+                    [
+                        'name' => 'param',
+                        'description' => '\Magento\Framework\ObjectManager $objectManager'
+                    ],
+                    [
+                        'name' => 'param',
+                        'description' => '\Magento\Framework\Api\MetadataServiceInterface $metadataService'
+                    ],
+                    [
+                        'name' => 'param',
+                        'description' => '\Magento\Framework\ObjectManager\Config $objectManagerConfig'
+                    ]
+                ]
+            ],
+            'body' => "parent::__construct(\$objectManager, \$metadataService, \$objectManagerConfig, "
+                . "'{$this->_getSourceClassName()}');"
+        ];
+        return $constructorDefinition;
+    }
+
+    /**
+     * Return a list of methods for class generator
+     *
+     * @return array
+     */
+    protected function _getClassMethods()
+    {
+        $methods = [];
+        $className = $this->_getSourceClassName();
+        $reflectionClass = new \ReflectionClass($className);
+        $publicMethods = $reflectionClass->getMethods(\ReflectionMethod::IS_PUBLIC);
+        foreach ($publicMethods as $method) {
+            if ($this->canUseMethodForGeneration($method)) {
+                $methods[] = $this->_getMethodInfo($method);
+            }
+        }
+        $defaultConstructorDefinition = $this->_getDefaultConstructorDefinition();
+        if (!empty($defaultConstructorDefinition)) {
+            $methods[] = $defaultConstructorDefinition;
+        }
+        return $methods;
+    }
+
+    /**
+     * Check if the specified method should be used during generation builder generation.
+     *
+     * @param \ReflectionMethod $method
+     * @return bool
+     */
+    protected function canUseMethodForGeneration($method)
+    {
+        $isGetter = (substr($method->getName(), 0, 3) == 'get');
+        $isSuitableMethodType = !($method->isConstructor() || $method->isFinal()
+            || $method->isStatic() || $method->isDestructor());
+        $isMagicMethod = in_array($method->getName(), array('__sleep', '__wakeup', '__clone'));
+        $isPartOfExtensibleInterface = in_array($method->getName(), $this->getExtensibleInterfaceMethods());
+        return $isGetter && $isSuitableMethodType && !$isMagicMethod && !$isPartOfExtensibleInterface;
+    }
+
+    /**
+     * Retrieve method info
+     *
+     * @param \ReflectionMethod $method
+     * @return array
+     */
+    protected function _getMethodInfo(\ReflectionMethod $method)
+    {
+        $propertyName = substr($method->getName(), 3);
+        $returnType = (new ClassReflection($this->_getSourceClassName()))
+            ->getMethod($method->getName())
+            ->getDocBlock()
+            ->getTag('return')
+            ->getType();
+        $fieldName = strtolower(preg_replace('/(.)([A-Z])/', "$1_$2", $propertyName));
+        $methodInfo = [
+            'name' => 'set' . $propertyName,
+            'parameters' => [
+                ['name' => lcfirst($propertyName)]
+            ],
+            'body' => "\$this->set('{$fieldName}', \$" . lcfirst($propertyName) . ");"
+                . PHP_EOL . "return \$this;",
+            'docblock' => [
+                'tags' => [
+                    ['name' => 'param', 'description' => $returnType . " \$" . lcfirst($propertyName)],
+                    ['name' => 'return', 'description' => '$this'],
+                ]
+            ]
+        ];
+        return $methodInfo;
+    }
+
+    /**
+     * Validate data
+     *
+     * @return bool
+     */
+    protected function _validateData()
+    {
+        $result = parent::_validateData();
+
+        if ($result) {
+            $sourceClassName = $this->_getSourceClassName();
+            $resultClassName = $this->_getResultClassName();
+
+            if ($resultClassName !== str_replace('Interface', ucfirst(self::ENTITY_TYPE), $sourceClassName)) {
+                $this->_addError(
+                    'Invalid Builder class name [' . $resultClassName . ']. Use '
+                    . $sourceClassName
+                    . ucfirst(self::ENTITY_TYPE)
+                );
+                $result = false;
+            }
+        }
+        return $result;
+    }
+
+    /**
+     * Generate code
+     *
+     * @return string
+     */
+    protected function _generateCode()
+    {
+        $this->_classGenerator
+            ->setName($this->_getResultClassName())
+            ->addProperties($this->_getClassProperties())
+            ->addMethods($this->_getClassMethods())
+            ->setClassDocBlock($this->_getClassDocBlock())
+            ->setExtendedClass('\Magento\Framework\Api\CompositeExtensibleDataBuilder');
+        return $this->_getGeneratedCode();
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function _getSourceClassName()
+    {
+        return parent::_getSourceClassName() . 'Interface';
+    }
+
+    /**
+     * Get a list of methods declared on extensible data interface.
+     *
+     * @return string[]
+     */
+    protected function getExtensibleInterfaceMethods()
+    {
+        if ($this->extensibleInterfaceMethods === null) {
+            $interfaceReflection = new ClassReflection('Magento\Framework\Api\ExtensibleDataInterface');
+            $methodsReflection = $interfaceReflection->getMethods();
+            $this->extensibleInterfaceMethods = [];
+            foreach ($methodsReflection as $methodReflection) {
+                $this->extensibleInterfaceMethods[] = $methodReflection->getName();
+            }
+        }
+        return $this->extensibleInterfaceMethods;
+    }
+}
diff --git a/lib/internal/Magento/Framework/Service/Code/Generator/Mapper.php b/lib/internal/Magento/Framework/Api/Code/Generator/Mapper.php
similarity index 99%
rename from lib/internal/Magento/Framework/Service/Code/Generator/Mapper.php
rename to lib/internal/Magento/Framework/Api/Code/Generator/Mapper.php
index c1602fc1e80..57cb64359d2 100644
--- a/lib/internal/Magento/Framework/Service/Code/Generator/Mapper.php
+++ b/lib/internal/Magento/Framework/Api/Code/Generator/Mapper.php
@@ -21,7 +21,7 @@
  * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
-namespace Magento\Framework\Service\Code\Generator;
+namespace Magento\Framework\Api\Code\Generator;
 
 /**
  * Class Repository
diff --git a/lib/internal/Magento/Framework/Service/Code/Generator/SearchResults.php b/lib/internal/Magento/Framework/Api/Code/Generator/SearchResults.php
similarity index 95%
rename from lib/internal/Magento/Framework/Service/Code/Generator/SearchResults.php
rename to lib/internal/Magento/Framework/Api/Code/Generator/SearchResults.php
index 9b789fcab78..432dd258448 100644
--- a/lib/internal/Magento/Framework/Service/Code/Generator/SearchResults.php
+++ b/lib/internal/Magento/Framework/Api/Code/Generator/SearchResults.php
@@ -23,7 +23,7 @@
  * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
-namespace Magento\Framework\Service\Code\Generator;
+namespace Magento\Framework\Api\Code\Generator;
 
 use Magento\Framework\Code\Generator\EntityAbstract;
 
@@ -41,7 +41,7 @@ class SearchResults extends EntityAbstract
     /**
      * Search result default class
      */
-    const SEARCH_RESULT = '\\Magento\Framework\Service\V1\Data\SearchResults';
+    const SEARCH_RESULT = '\\Magento\Framework\Api\SearchResults';
 
     /**
      * Retrieve class properties
diff --git a/lib/internal/Magento/Framework/Service/Code/Generator/SearchResultsBuilder.php b/lib/internal/Magento/Framework/Api/Code/Generator/SearchResultsBuilder.php
similarity index 88%
rename from lib/internal/Magento/Framework/Service/Code/Generator/SearchResultsBuilder.php
rename to lib/internal/Magento/Framework/Api/Code/Generator/SearchResultsBuilder.php
index 0654c0d1c7b..a668fbbeb50 100644
--- a/lib/internal/Magento/Framework/Service/Code/Generator/SearchResultsBuilder.php
+++ b/lib/internal/Magento/Framework/Api/Code/Generator/SearchResultsBuilder.php
@@ -23,7 +23,7 @@
  * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
-namespace Magento\Framework\Service\Code\Generator;
+namespace Magento\Framework\Api\Code\Generator;
 
 use Magento\Framework\Code\Generator\EntityAbstract;
 
@@ -40,7 +40,7 @@ class SearchResultsBuilder extends EntityAbstract
     /**
      * Search result builder abstract class
      */
-    const SEARCH_RESULT_BUILDER = '\\Magento\Framework\Service\V1\Data\AbstractSearchResultsBuilder';
+    const SEARCH_RESULT_BUILDER = '\\Magento\Framework\Api\AbstractSearchResultsBuilder';
 
     /**
      * Retrieve class properties
@@ -64,19 +64,19 @@ class SearchResultsBuilder extends EntityAbstract
             'parameters' => [
                 [
                     'name' => 'objectFactory',
-                    'type' => '\\Magento\Framework\Service\Data\ObjectFactory'
+                    'type' => '\\Magento\Framework\Api\ObjectFactory'
                 ],
                 [
                     'name' => 'valueBuilder',
-                    'type' => '\\Magento\Framework\Service\Data\AttributeValueBuilder'
+                    'type' => '\\Magento\Framework\Api\AttributeValueBuilder'
                 ],
                 [
                     'name' => 'metadataService',
-                    'type' => '\\Magento\Framework\Service\Config\MetadataConfig'
+                    'type' => '\\Magento\Framework\Api\Config\MetadataConfig'
                 ],
                 [
                     'name' => 'searchCriteriaBuilder',
-                    'type' => '\\Magento\Framework\Service\V1\Data\SearchCriteriaBuilder'
+                    'type' => '\\Magento\Framework\Api\SearchCriteriaBuilder'
                 ],
                 [
                     'name' => 'itemObjectBuilder',
diff --git a/lib/internal/Magento/Framework/Api/CompositeExtensibleDataBuilder.php b/lib/internal/Magento/Framework/Api/CompositeExtensibleDataBuilder.php
new file mode 100644
index 00000000000..15726b43411
--- /dev/null
+++ b/lib/internal/Magento/Framework/Api/CompositeExtensibleDataBuilder.php
@@ -0,0 +1,168 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Framework\Api;
+
+use Magento\Framework\Model\AbstractExtensibleModel;
+use Magento\Framework\ObjectManager;
+use Magento\Framework\ObjectManager\Config as ObjectManagerConfig;
+
+/**
+ * Composite extensible data builder.
+ */
+class CompositeExtensibleDataBuilder implements ExtensibleDataBuilderInterface
+{
+    /**#@+
+     * Constant which defines if builder is created for building data objects or data models.
+     */
+    const TYPE_DATA_OBJECT = 'data_object';
+    const TYPE_DATA_MODEL = 'data_model';
+    /**#@-*/
+
+    /** @var string */
+    protected $modelClassInterface;
+
+    /** @var ExtensibleDataBuilderInterface */
+    protected $currentBuilder;
+
+    /** @var ObjectManagerConfig */
+    protected $objectManagerConfig;
+
+    /**
+     * Initialize dependencies.
+     *
+     * @param ObjectManager $objectManager
+     * @param MetadataServiceInterface $metadataService
+     * @param ObjectManagerConfig $objectManagerConfig
+     * @param string $modelClassInterface
+     */
+    public function __construct(
+        ObjectManager $objectManager,
+        MetadataServiceInterface $metadataService,
+        ObjectManagerConfig $objectManagerConfig,
+        $modelClassInterface
+    ) {
+        $this->modelClassInterface = $modelClassInterface;
+        $this->objectManagerConfig = $objectManagerConfig;
+        $arguments = [
+            'metadataService' => $metadataService,
+            'modelClassInterface' => $modelClassInterface
+        ];
+        $builderClass = ($this->getDataType() == self::TYPE_DATA_MODEL)
+            ? 'Magento\Framework\Api\ExtensibleDataBuilder'
+            : 'Magento\Framework\Api\ExtensibleObjectBuilder';
+        $this->currentBuilder = $objectManager->create($builderClass, $arguments);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function setCustomAttribute($attributeCode, $attributeValue)
+    {
+        $this->currentBuilder->setCustomAttribute($attributeCode, $attributeValue);
+        return $this;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function setCustomAttributes(array $attributes)
+    {
+        $this->currentBuilder->setCustomAttributes($attributes);
+        return $this;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function create()
+    {
+        return $this->currentBuilder->create();
+    }
+
+    /**
+     * Proxy all calls to current builder.
+     *
+     * @param string $name
+     * @param array $arguments
+     * @return mixed
+     */
+    public function __call($name, $arguments)
+    {
+        call_user_func_array([$this->currentBuilder, $name], $arguments);
+        return $this;
+    }
+
+    /**
+     * Identify type of objects which should be built with generated builder. Value can be one of self::TYPE_DATA_*.
+     *
+     * @return string
+     * @throws \LogicException
+     */
+    protected function getDataType()
+    {
+        $sourceClassPreference = $this->objectManagerConfig->getPreference($this->modelClassInterface);
+        if (empty($sourceClassPreference)) {
+            throw new \LogicException(
+                "Preference for {$this->modelClassInterface} is not defined."
+            );
+        }
+        if (is_subclass_of($sourceClassPreference, '\Magento\Framework\Api\AbstractSimpleObject')) {
+            return self::TYPE_DATA_OBJECT;
+        } else if (is_subclass_of($sourceClassPreference, '\Magento\Framework\Model\AbstractExtensibleModel')) {
+            return self::TYPE_DATA_MODEL;
+        } else {
+            throw new \LogicException(
+                'Preference of ' . $this->modelClassInterface
+                . ' must extend from AbstractSimpleObject or AbstractExtensibleModel'
+            );
+        }
+    }
+
+    /**
+     * Populates the fields with data from the array.
+     *
+     * Keys for the map are snake_case attribute/field names.
+     *
+     * @param array $data
+     * @return $this
+     */
+    public function populateWithArray(array $data)
+    {
+        $this->currentBuilder->populateWithArray($data);
+        return $this;
+    }
+
+    /**
+     * Populates the fields with data from the prototype.
+     *
+     * @param AbstractSimpleObject $prototype
+     * @return $this
+     */
+    public function populate(AbstractSimpleObject $prototype)
+    {
+        $this->currentBuilder->populate($prototype);
+        return $this;
+    }
+}
diff --git a/lib/internal/Magento/Framework/Service/Config/Converter.php b/lib/internal/Magento/Framework/Api/Config/Converter.php
similarity index 97%
rename from lib/internal/Magento/Framework/Service/Config/Converter.php
rename to lib/internal/Magento/Framework/Api/Config/Converter.php
index 20c84b6e6a4..4e4d0d94dad 100644
--- a/lib/internal/Magento/Framework/Service/Config/Converter.php
+++ b/lib/internal/Magento/Framework/Api/Config/Converter.php
@@ -21,7 +21,7 @@
  * @copyright Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license   http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
-namespace Magento\Framework\Service\Config;
+namespace Magento\Framework\Api\Config;
 
 class Converter implements \Magento\Framework\Config\ConverterInterface
 {
diff --git a/lib/internal/Magento/Framework/Service/Config/MetadataConfig.php b/lib/internal/Magento/Framework/Api/Config/MetadataConfig.php
similarity index 91%
rename from lib/internal/Magento/Framework/Service/Config/MetadataConfig.php
rename to lib/internal/Magento/Framework/Api/Config/MetadataConfig.php
index 5b767cb1783..1b8ec0fef99 100644
--- a/lib/internal/Magento/Framework/Service/Config/MetadataConfig.php
+++ b/lib/internal/Magento/Framework/Api/Config/MetadataConfig.php
@@ -22,11 +22,11 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-namespace Magento\Framework\Service\Config;
+namespace Magento\Framework\Api\Config;
 
-use Magento\Framework\Service\Data\MetadataServiceInterface;
-use Magento\Framework\Service\Config\Reader as ServiceConfigReader;
-use Magento\Framework\Service\Data\AttributeMetadataBuilderInterface;
+use Magento\Framework\Api\MetadataServiceInterface;
+use Magento\Framework\Api\Config\Reader as ServiceConfigReader;
+use Magento\Framework\Api\AttributeMetadataBuilderInterface;
 
 /**
  * Class which allows to get a metadata of the attributes declared in a config.
@@ -81,7 +81,7 @@ class MetadataConfig implements MetadataServiceInterface
      * Get custom attribute metadata for the given class/interface.
      *
      * @param string $dataObjectClassName
-     * @return \Magento\Framework\Service\Data\MetadataObjectInterface[]
+     * @return \Magento\Framework\Api\MetadataObjectInterface[]
      */
     protected function getAttributesMetadata($dataObjectClassName)
     {
diff --git a/lib/internal/Magento/Framework/Service/Config/Reader.php b/lib/internal/Magento/Framework/Api/Config/Reader.php
similarity index 86%
rename from lib/internal/Magento/Framework/Service/Config/Reader.php
rename to lib/internal/Magento/Framework/Api/Config/Reader.php
index e505d9ab8a3..e92470f31f0 100644
--- a/lib/internal/Magento/Framework/Service/Config/Reader.php
+++ b/lib/internal/Magento/Framework/Api/Config/Reader.php
@@ -21,7 +21,7 @@
  * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
-namespace Magento\Framework\Service\Config;
+namespace Magento\Framework\Api\Config;
 
 class Reader extends \Magento\Framework\Config\Reader\Filesystem
 {
@@ -37,8 +37,8 @@ class Reader extends \Magento\Framework\Config\Reader\Filesystem
 
     /**
      * @param \Magento\Framework\Config\FileResolverInterface $fileResolver
-     * @param \Magento\Framework\Service\Config\Converter $converter
-     * @param \Magento\Framework\Service\Config\SchemaLocator $schemaLocator
+     * @param \Magento\Framework\Api\Config\Converter $converter
+     * @param \Magento\Framework\Api\Config\SchemaLocator $schemaLocator
      * @param \Magento\Framework\Config\ValidationStateInterface $validationState
      * @param string $fileName
      * @param array $idAttributes
@@ -47,8 +47,8 @@ class Reader extends \Magento\Framework\Config\Reader\Filesystem
      */
     public function __construct(
         \Magento\Framework\Config\FileResolverInterface $fileResolver,
-        \Magento\Framework\Service\Config\Converter $converter,
-        \Magento\Framework\Service\Config\SchemaLocator $schemaLocator,
+        \Magento\Framework\Api\Config\Converter $converter,
+        \Magento\Framework\Api\Config\SchemaLocator $schemaLocator,
         \Magento\Framework\Config\ValidationStateInterface $validationState,
         $fileName = 'data_object.xml',
         $idAttributes = array(),
diff --git a/lib/internal/Magento/Framework/Service/Config/SchemaLocator.php b/lib/internal/Magento/Framework/Api/Config/SchemaLocator.php
similarity index 96%
rename from lib/internal/Magento/Framework/Service/Config/SchemaLocator.php
rename to lib/internal/Magento/Framework/Api/Config/SchemaLocator.php
index e72a2dfd776..b0a3769ca66 100644
--- a/lib/internal/Magento/Framework/Service/Config/SchemaLocator.php
+++ b/lib/internal/Magento/Framework/Api/Config/SchemaLocator.php
@@ -23,7 +23,7 @@
  * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
-namespace Magento\Framework\Service\Config;
+namespace Magento\Framework\Api\Config;
 
 class SchemaLocator implements \Magento\Framework\Config\SchemaLocatorInterface
 {
diff --git a/lib/internal/Magento/Framework/Api/ExtensibleDataBuilder.php b/lib/internal/Magento/Framework/Api/ExtensibleDataBuilder.php
new file mode 100644
index 00000000000..229e95ee06c
--- /dev/null
+++ b/lib/internal/Magento/Framework/Api/ExtensibleDataBuilder.php
@@ -0,0 +1,276 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Framework\Api;
+
+use Magento\Framework\Api\ExtensibleDataBuilderInterface;
+use Magento\Framework\Model\AbstractExtensibleModel;
+use Magento\Framework\ObjectManager;
+
+/**
+ * Implementation for \Magento\Framework\Api\ExtensibleDataBuilderInterface.
+ */
+class ExtensibleDataBuilder implements ExtensibleDataBuilderInterface
+{
+    /**
+     * @var string
+     */
+    protected $modelClassInterface;
+
+    /**
+     * @var array
+     */
+    protected $data;
+
+    /**
+     * @var ObjectManager
+     */
+    protected $objectManager;
+
+    /**
+     * @var MetadataServiceInterface
+     */
+    protected $metadataService;
+
+    /**
+     * @var string[]
+     */
+    protected $customAttributesCodes = null;
+
+    /**
+     * @var \Magento\Framework\Api\AttributeDataBuilder
+     */
+    protected $attributeValueBuilder;
+
+    /**
+     * @var \Magento\Framework\Reflection\DataObjectProcessor
+     */
+    protected $objectProcessor;
+
+    /**
+     * @var array
+     */
+    protected $interfaceMethodsDescription;
+
+    /**
+     * @var \Magento\Framework\Reflection\TypeProcessor
+     */
+    protected $typeProcessor;
+
+    /**
+     * @var \Magento\Framework\Serialization\DataBuilderFactory
+     */
+    protected $dataBuilderFactory;
+
+    /**
+     * Initialize the builder
+     *
+     * @param ObjectManager $objectManager
+     * @param MetadataServiceInterface $metadataService
+     * @param \Magento\Framework\Api\AttributeDataBuilder $attributeValueBuilder
+     * @param \Magento\Framework\Reflection\DataObjectProcessor $objectProcessor
+     * @param \Magento\Framework\Reflection\TypeProcessor $typeProcessor
+     * @param \Magento\Framework\Serialization\DataBuilderFactory $dataBuilderFactory
+     * @param string $modelClassInterface
+     */
+    public function __construct(
+        ObjectManager $objectManager,
+        MetadataServiceInterface $metadataService,
+        \Magento\Framework\Api\AttributeDataBuilder $attributeValueBuilder,
+        \Magento\Framework\Reflection\DataObjectProcessor $objectProcessor,
+        \Magento\Framework\Reflection\TypeProcessor $typeProcessor,
+        \Magento\Framework\Serialization\DataBuilderFactory $dataBuilderFactory,
+        $modelClassInterface
+    ) {
+        $this->objectManager = $objectManager;
+        $this->metadataService = $metadataService;
+        $this->modelClassInterface = $modelClassInterface;
+        $this->objectProcessor = $objectProcessor;
+        $this->attributeValueBuilder = $attributeValueBuilder;
+        $this->typeProcessor = $typeProcessor;
+        $this->dataBuilderFactory = $dataBuilderFactory;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function setCustomAttribute($attributeCode, $attributeValue)
+    {
+        $attribute = $this->attributeValueBuilder
+            ->setAttributeCode($attributeCode)
+            ->setValue($attributeValue)
+            ->create();
+        // Store as an associative array for easier lookup and processing
+        $this->data[AbstractExtensibleModel::CUSTOM_ATTRIBUTES_KEY][$attributeCode] = $attribute;
+        return $this;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function setCustomAttributes(array $attributes)
+    {
+        /** @var \Magento\Framework\Api\AttributeInterface $attribute */
+        foreach ($attributes as $attribute) {
+            $this->data[AbstractExtensibleModel::CUSTOM_ATTRIBUTES_KEY][$attribute->getAttributeCode()] = $attribute;
+        }
+        return $this;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function create()
+    {
+        return $this->objectManager->create(
+            $this->modelClassInterface,
+            ['data' => $this->data]
+        );
+    }
+
+    /**
+     * Populates the fields with data from the array.
+     *
+     * Keys for the map are snake_case attribute/field names.
+     *
+     * @param array $data
+     * @return $this
+     */
+    public function populateWithArray(array $data)
+    {
+        $this->data = array();
+        $this->_setDataValues($data);
+        return $this;
+    }
+
+    /**
+     * Template method used to configure the attribute codes for the custom attributes
+     *
+     * @return string[]
+     */
+    protected function getCustomAttributesCodes()
+    {
+        if (!is_null($this->customAttributesCodes)) {
+            return $this->customAttributesCodes;
+        }
+        $attributeCodes = [];
+        /** @var \Magento\Framework\Api\MetadataObjectInterface[] $customAttributesMetadata */
+        $customAttributesMetadata = $this->metadataService
+            ->getCustomAttributesMetadata($this->modelClassInterface);
+        if (is_array($customAttributesMetadata)) {
+            foreach ($customAttributesMetadata as $attribute) {
+                $attributeCodes[] = $attribute->getAttributeCode();
+            }
+        }
+        $this->customAttributesCodes = $attributeCodes;
+        return $attributeCodes;
+    }
+
+    /**
+     * Set data item value.
+     *
+     * @param string $key
+     * @param mixed $value
+     * @return $this
+     * @deprecated This method should not be used in the client code and will be removed after Service Layer refactoring
+     */
+    public function set($key, $value)
+    {
+        $this->data[$key] = $value;
+        return $this;
+    }
+
+    /**
+     * Initializes Data Object with the data from array
+     *
+     * @param array $data
+     * @return $this
+     */
+    protected function _setDataValues(array $data)
+    {
+        $dataObjectMethods = get_class_methods($this->modelClassInterface);
+        foreach ($data as $key => $value) {
+            /* First, verify is there any getter for the key on the Service Data Object */
+            $camelCaseKey = \Magento\Framework\Api\SimpleDataObjectConverter::snakeCaseToUpperCamelCase($key);
+            $possibleMethods = array(
+                'get' . $camelCaseKey,
+                'is' . $camelCaseKey
+            );
+            if ($key == AbstractExtensibleObject::CUSTOM_ATTRIBUTES_KEY
+                && is_array($data[$key])
+                && !empty($data[$key])
+            ) {
+                foreach ($data[$key] as $customAttribute) {
+                    $this->setCustomAttribute(
+                        $customAttribute[AttributeValue::ATTRIBUTE_CODE],
+                        $customAttribute[AttributeValue::VALUE]
+                    );
+                }
+            } elseif ($methodName = array_intersect($possibleMethods, $dataObjectMethods)) {
+                if (!is_array($value)) {
+                    $this->data[$key] = $value;
+                } else {
+                    $this->setComplexValue($methodName[0], $key, $value);
+                }
+            } elseif (in_array($key, $this->getCustomAttributesCodes())) {
+                $this->setCustomAttribute($key, $value);
+            }
+        }
+
+        return $this;
+    }
+
+    /**
+     * @param string $methodName
+     * @param string $key
+     * @param array $value
+     * @return $this
+     */
+    protected function setComplexValue($methodName, $key, array $value)
+    {
+        $returnType = $this->objectProcessor->getMethodReturnType($this->modelClassInterface, $methodName);
+        if ($this->typeProcessor->isTypeSimple($returnType)) {
+            $this->data[$key] = $value;
+            return $this;
+        }
+
+        if ($this->typeProcessor->isArrayType($returnType)) {
+            $type = $this->typeProcessor->getArrayItemType($returnType);
+            $dataBuilder = $this->dataBuilderFactory->getDataBuilder($type);
+            $objects = [];
+            foreach ($value as $arrayElementData) {
+                $objects[] = $dataBuilder->populateWithArray($arrayElementData)
+                    ->create();
+            }
+            $this->data[$key] = $objects;
+            return $this;
+        }
+
+        $dataBuilder = $this->dataBuilderFactory->getDataBuilder($returnType);
+        $object = $dataBuilder->populateWithArray($value)
+            ->create();
+        $this->data[$key] = $object;
+        return $this;
+    }
+}
diff --git a/lib/internal/Magento/Framework/Api/Data/ExtensibleDataBuilderInterface.php b/lib/internal/Magento/Framework/Api/ExtensibleDataBuilderInterface.php
similarity index 68%
rename from lib/internal/Magento/Framework/Api/Data/ExtensibleDataBuilderInterface.php
rename to lib/internal/Magento/Framework/Api/ExtensibleDataBuilderInterface.php
index 59dc098f81e..d7de617e06e 100644
--- a/lib/internal/Magento/Framework/Api/Data/ExtensibleDataBuilderInterface.php
+++ b/lib/internal/Magento/Framework/Api/ExtensibleDataBuilderInterface.php
@@ -22,25 +22,26 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-namespace Magento\Framework\Api\Data;
+namespace Magento\Framework\Api;
 
 /**
- * Base builder interface for \Magento\Framework\Api\Data\ExtensibleDataInterface types.
+ * Base builder interface for \Magento\Framework\Api\ExtensibleDataInterface types.
  */
 interface ExtensibleDataBuilderInterface
 {
     /**
      * Set custom attribute value.
      *
-     * @param \Magento\Framework\Api\Data\AttributeInterface $attribute
+     * @param string $attributeCode
+     * @param mixed $attributeValue
      * @return $this
      */
-    public function setCustomAttribute(\Magento\Framework\Api\Data\AttributeInterface $attribute);
+    public function setCustomAttribute($attributeCode, $attributeValue);
 
     /**
      * Set array of custom attributes
      *
-     * @param \Magento\Framework\Service\Data\AttributeValue[] $attributes
+     * @param \Magento\Framework\Api\AttributeInterface[] $attributes
      * @return $this
      * @throws \LogicException If array elements are not of AttributeValue type
      */
@@ -49,7 +50,17 @@ interface ExtensibleDataBuilderInterface
     /**
      * Return created DataInterface object
      *
-     * @return ExtensibleDataInterface
+     * @return \Magento\Framework\Api\ExtensibleDataInterface
      */
     public function create();
+
+    /**
+     * Populates the fields with data from the array.
+     *
+     * Keys for the map are snake_case attribute/field names.
+     *
+     * @param array $data
+     * @return $this
+     */
+    public function populateWithArray(array $data);
 }
diff --git a/lib/internal/Magento/Framework/Api/Data/ExtensibleDataInterface.php b/lib/internal/Magento/Framework/Api/ExtensibleDataInterface.php
similarity index 86%
rename from lib/internal/Magento/Framework/Api/Data/ExtensibleDataInterface.php
rename to lib/internal/Magento/Framework/Api/ExtensibleDataInterface.php
index 5c5964b8ff2..88cd4f2f40c 100644
--- a/lib/internal/Magento/Framework/Api/Data/ExtensibleDataInterface.php
+++ b/lib/internal/Magento/Framework/Api/ExtensibleDataInterface.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-namespace Magento\Framework\Api\Data;
+namespace Magento\Framework\Api;
 
 /**
  * Interface for entities which can be extended with custom attributes.
@@ -33,14 +33,14 @@ interface ExtensibleDataInterface
      * Get an attribute value.
      *
      * @param string $attributeCode
-     * @return \Magento\Framework\Api\Data\AttributeInterface|null null if the attribute has not been set
+     * @return \Magento\Framework\Api\AttributeInterface|null null if the attribute has not been set
      */
     public function getCustomAttribute($attributeCode);
 
     /**
      * Retrieve custom attributes values.
      *
-     * @return \Magento\Framework\Api\Data\AttributeInterface[]
+     * @return \Magento\Framework\Api\AttributeInterface[]|null
      */
     public function getCustomAttributes();
 }
diff --git a/lib/internal/Magento/Framework/Service/ExtensibleDataObjectConverter.php b/lib/internal/Magento/Framework/Api/ExtensibleDataObjectConverter.php
similarity index 94%
rename from lib/internal/Magento/Framework/Service/ExtensibleDataObjectConverter.php
rename to lib/internal/Magento/Framework/Api/ExtensibleDataObjectConverter.php
index f1f0afb02e4..8b54af16d63 100644
--- a/lib/internal/Magento/Framework/Service/ExtensibleDataObjectConverter.php
+++ b/lib/internal/Magento/Framework/Api/ExtensibleDataObjectConverter.php
@@ -22,11 +22,11 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-namespace Magento\Framework\Service;
+namespace Magento\Framework\Api;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObject;
+use Magento\Framework\Api\AbstractExtensibleObject;
 use Magento\Framework\Convert\ConvertArray;
-use Magento\Framework\Service\Data\AttributeValue;
+use Magento\Framework\Api\AttributeValue;
 
 /**
  * Class to convert Extensible Data Object array to flat array
diff --git a/lib/internal/Magento/Framework/Service/Data/AbstractExtensibleObjectBuilder.php b/lib/internal/Magento/Framework/Api/ExtensibleObjectBuilder.php
similarity index 73%
rename from lib/internal/Magento/Framework/Service/Data/AbstractExtensibleObjectBuilder.php
rename to lib/internal/Magento/Framework/Api/ExtensibleObjectBuilder.php
index 7aa57d0252b..b596533bea7 100644
--- a/lib/internal/Magento/Framework/Service/Data/AbstractExtensibleObjectBuilder.php
+++ b/lib/internal/Magento/Framework/Api/ExtensibleObjectBuilder.php
@@ -22,18 +22,18 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-namespace Magento\Framework\Service\Data;
+namespace Magento\Framework\Api;
 
 /**
  * Base Builder Class for extensible data Objects
  * @SuppressWarnings(PHPMD.NumberOfChildren)
  */
-abstract class AbstractExtensibleObjectBuilder extends AbstractSimpleObjectBuilder
+class ExtensibleObjectBuilder extends AbstractSimpleObjectBuilder implements ExtensibleDataBuilderInterface
 {
     /**
      * @var AttributeValueBuilder
      */
-    protected $valueBuilder;
+    protected $attributeValueBuilder;
 
     /**
      * @var MetadataServiceInterface
@@ -46,26 +46,30 @@ abstract class AbstractExtensibleObjectBuilder extends AbstractSimpleObjectBuild
     protected $customAttributesCodes = null;
 
     /**
-     * @param \Magento\Framework\Service\Data\ObjectFactory $objectFactory
+     * @var string
+     */
+    protected $modelClassInterface;
+
+    /**
+     * @param \Magento\Framework\Api\ObjectFactory $objectFactory
      * @param AttributeValueBuilder $valueBuilder
      * @param MetadataServiceInterface $metadataService
+     * @param string|null $modelClassInterface
      */
     public function __construct(
-        \Magento\Framework\Service\Data\ObjectFactory $objectFactory,
+        \Magento\Framework\Api\ObjectFactory $objectFactory,
         AttributeValueBuilder $valueBuilder,
-        MetadataServiceInterface $metadataService
+        MetadataServiceInterface $metadataService,
+        $modelClassInterface = null
     ) {
-        $this->valueBuilder = $valueBuilder;
+        $this->attributeValueBuilder = $valueBuilder;
         $this->metadataService = $metadataService;
+        $this->modelClassInterface = $modelClassInterface;
         parent::__construct($objectFactory);
     }
 
     /**
-     * Set array of custom attributes
-     *
-     * @param \Magento\Framework\Service\Data\AttributeValue[] $attributes
-     * @return $this
-     * @throws \LogicException If array elements are not of AttributeValue type
+     * {@inheritdoc}
      */
     public function setCustomAttributes(array $attributes)
     {
@@ -76,29 +80,25 @@ abstract class AbstractExtensibleObjectBuilder extends AbstractSimpleObjectBuild
             }
             $attributeCode = $attribute->getAttributeCode();
             if (in_array($attributeCode, $customAttributesCodes)) {
-                $this->_data[AbstractExtensibleObject::CUSTOM_ATTRIBUTES_KEY][$attributeCode] = $attribute;
+                $this->data[AbstractExtensibleObject::CUSTOM_ATTRIBUTES_KEY][$attributeCode] = $attribute;
             }
         }
         return $this;
     }
 
     /**
-     * Set custom attribute value
-     *
-     * @param string $attributeCode
-     * @param string|int|float|bool $attributeValue
-     * @return $this
+     * {@inheritdoc}
      */
     public function setCustomAttribute($attributeCode, $attributeValue)
     {
         $customAttributesCodes = $this->getCustomAttributesCodes();
         /* If key corresponds to custom attribute code, populate custom attributes */
         if (in_array($attributeCode, $customAttributesCodes)) {
-            $valueObject = $this->valueBuilder
+            $attribute = $this->attributeValueBuilder
                 ->setAttributeCode($attributeCode)
                 ->setValue($attributeValue)
                 ->create();
-            $this->_data[AbstractExtensibleObject::CUSTOM_ATTRIBUTES_KEY][$attributeCode] = $valueObject;
+            $this->data[AbstractExtensibleObject::CUSTOM_ATTRIBUTES_KEY][$attributeCode] = $attribute;
         }
         return $this;
     }
@@ -114,8 +114,7 @@ abstract class AbstractExtensibleObjectBuilder extends AbstractSimpleObjectBuild
             return $this->customAttributesCodes;
         }
         $attributeCodes = [];
-        $dataObjectClassName = $this->_getDataObjectType();
-        $customAttributesMetadata = $this->metadataService->getCustomAttributesMetadata($dataObjectClassName);
+        $customAttributesMetadata = $this->metadataService->getCustomAttributesMetadata($this->_getDataObjectType());
         if (is_array($customAttributesMetadata)) {
             foreach ($customAttributesMetadata as $attribute) {
                 $attributeCodes[] = $attribute->getAttributeCode();
@@ -125,6 +124,19 @@ abstract class AbstractExtensibleObjectBuilder extends AbstractSimpleObjectBuild
         return $attributeCodes;
     }
 
+    /**
+     * Set data item value.
+     *
+     * @param string $key
+     * @param mixed $value
+     * @return $this
+     * @deprecated This method should not be used in the client code and will be removed after Service Layer refactoring
+     */
+    public function set($key, $value)
+    {
+        return $this->_set($key, $value);
+    }
+
     /**
      * Initializes Data Object with the data from array
      *
@@ -136,7 +148,7 @@ abstract class AbstractExtensibleObjectBuilder extends AbstractSimpleObjectBuild
         $dataObjectMethods = get_class_methods($this->_getDataObjectType());
         foreach ($data as $key => $value) {
             /* First, verify is there any getter for the key on the Service Data Object */
-            $camelCaseKey = \Magento\Framework\Service\SimpleDataObjectConverter::snakeCaseToUpperCamelCase($key);
+            $camelCaseKey = \Magento\Framework\Api\SimpleDataObjectConverter::snakeCaseToUpperCamelCase($key);
             $possibleMethods = array(
                 'get' . $camelCaseKey,
                 'is' . $camelCaseKey
@@ -152,11 +164,19 @@ abstract class AbstractExtensibleObjectBuilder extends AbstractSimpleObjectBuild
                     );
                 }
             } elseif (array_intersect($possibleMethods, $dataObjectMethods)) {
-                $this->_data[$key] = $value;
+                $this->data[$key] = $value;
             } else {
                 $this->setCustomAttribute($key, $value);
             }
         }
         return $this;
     }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function _getDataObjectType()
+    {
+        return $this->modelClassInterface ?: parent::_getDataObjectType();
+    }
 }
diff --git a/lib/internal/Magento/Framework/Service/V1/Data/Filter.php b/lib/internal/Magento/Framework/Api/Filter.php
similarity index 92%
rename from lib/internal/Magento/Framework/Service/V1/Data/Filter.php
rename to lib/internal/Magento/Framework/Api/Filter.php
index 1625842c063..5d106584dc3 100644
--- a/lib/internal/Magento/Framework/Service/V1/Data/Filter.php
+++ b/lib/internal/Magento/Framework/Api/Filter.php
@@ -22,12 +22,12 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-namespace Magento\Framework\Service\V1\Data;
+namespace Magento\Framework\Api;
 
 /**
  * Filter which can be used by any methods from service layer.
  */
-class Filter extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+class Filter extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     /**
      * Get field
diff --git a/lib/internal/Magento/Framework/Service/V1/Data/FilterBuilder.php b/lib/internal/Magento/Framework/Api/FilterBuilder.php
similarity index 84%
rename from lib/internal/Magento/Framework/Service/V1/Data/FilterBuilder.php
rename to lib/internal/Magento/Framework/Api/FilterBuilder.php
index 87fbae016c2..506f3258778 100644
--- a/lib/internal/Magento/Framework/Service/V1/Data/FilterBuilder.php
+++ b/lib/internal/Magento/Framework/Api/FilterBuilder.php
@@ -22,14 +22,14 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-namespace Magento\Framework\Service\V1\Data;
+namespace Magento\Framework\Api;
 
 /**
  * Builder for Filter Service Data Object.
  *
  * @method Filter create()
  */
-class FilterBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder
+class FilterBuilder extends \Magento\Framework\Api\ExtensibleObjectBuilder
 {
     /**
      * Set field
@@ -39,7 +39,7 @@ class FilterBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleOb
      */
     public function setField($field)
     {
-        $this->_data['field'] = $field;
+        $this->data['field'] = $field;
         return $this;
     }
 
@@ -51,7 +51,7 @@ class FilterBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleOb
      */
     public function setValue($value)
     {
-        $this->_data['value'] = $value;
+        $this->data['value'] = $value;
         return $this;
     }
 
@@ -63,7 +63,7 @@ class FilterBuilder extends \Magento\Framework\Service\Data\AbstractExtensibleOb
      */
     public function setConditionType($conditionType)
     {
-        $this->_data['condition_type'] = $conditionType;
+        $this->data['condition_type'] = $conditionType;
         return $this;
     }
 }
diff --git a/lib/internal/Magento/Framework/Service/Data/MetadataObjectInterface.php b/lib/internal/Magento/Framework/Api/MetadataObjectInterface.php
similarity index 96%
rename from lib/internal/Magento/Framework/Service/Data/MetadataObjectInterface.php
rename to lib/internal/Magento/Framework/Api/MetadataObjectInterface.php
index 7f951c3bc04..2bacd9cc52b 100644
--- a/lib/internal/Magento/Framework/Service/Data/MetadataObjectInterface.php
+++ b/lib/internal/Magento/Framework/Api/MetadataObjectInterface.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-namespace Magento\Framework\Service\Data;
+namespace Magento\Framework\Api;
 
 
 interface MetadataObjectInterface
diff --git a/lib/internal/Magento/Framework/Service/Data/MetadataServiceInterface.php b/lib/internal/Magento/Framework/Api/MetadataServiceInterface.php
similarity index 91%
rename from lib/internal/Magento/Framework/Service/Data/MetadataServiceInterface.php
rename to lib/internal/Magento/Framework/Api/MetadataServiceInterface.php
index 6939d501a2c..3995f0d70f8 100644
--- a/lib/internal/Magento/Framework/Service/Data/MetadataServiceInterface.php
+++ b/lib/internal/Magento/Framework/Api/MetadataServiceInterface.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-namespace Magento\Framework\Service\Data;
+namespace Magento\Framework\Api;
 
 interface MetadataServiceInterface
 {
@@ -30,7 +30,7 @@ interface MetadataServiceInterface
      *  Get custom attribute metadata for the given class or interfaces it implements.
      *
      * @param string|null $dataObjectClassName Data object class name
-     * @return \Magento\Framework\Service\Data\MetadataObjectInterface[]
+     * @return \Magento\Framework\Api\MetadataObjectInterface[]
      */
     public function getCustomAttributesMetadata($dataObjectClassName = null);
 }
diff --git a/lib/internal/Magento/Framework/Service/Data/ObjectFactory.php b/lib/internal/Magento/Framework/Api/ObjectFactory.php
similarity index 97%
rename from lib/internal/Magento/Framework/Service/Data/ObjectFactory.php
rename to lib/internal/Magento/Framework/Api/ObjectFactory.php
index 0ccf8778476..6612b333e05 100644
--- a/lib/internal/Magento/Framework/Service/Data/ObjectFactory.php
+++ b/lib/internal/Magento/Framework/Api/ObjectFactory.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-namespace Magento\Framework\Service\Data;
+namespace Magento\Framework\Api;
 
 class ObjectFactory
 {
diff --git a/lib/internal/Magento/Framework/Service/V1/Data/Search/FilterGroup.php b/lib/internal/Magento/Framework/Api/Search/FilterGroup.php
similarity index 87%
rename from lib/internal/Magento/Framework/Service/V1/Data/Search/FilterGroup.php
rename to lib/internal/Magento/Framework/Api/Search/FilterGroup.php
index 75c5f27818d..666649bf39f 100644
--- a/lib/internal/Magento/Framework/Service/V1/Data/Search/FilterGroup.php
+++ b/lib/internal/Magento/Framework/Api/Search/FilterGroup.php
@@ -22,9 +22,9 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-namespace Magento\Framework\Service\V1\Data\Search;
+namespace Magento\Framework\Api\Search;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObject;
+use Magento\Framework\Api\AbstractExtensibleObject;
 
 /**
  * Groups two or more filters together using a logical OR
@@ -36,7 +36,7 @@ class FilterGroup extends AbstractExtensibleObject
     /**
      * Returns a list of filters in this group
      *
-     * @return \Magento\Framework\Service\V1\Data\Filter[]|null
+     * @return \Magento\Framework\Api\Filter[]|null
      */
     public function getFilters()
     {
diff --git a/lib/internal/Magento/Framework/Service/V1/Data/Search/FilterGroupBuilder.php b/lib/internal/Magento/Framework/Api/Search/FilterGroupBuilder.php
similarity index 74%
rename from lib/internal/Magento/Framework/Service/V1/Data/Search/FilterGroupBuilder.php
rename to lib/internal/Magento/Framework/Api/Search/FilterGroupBuilder.php
index d7fbc6ac73c..da0fbfc8f22 100644
--- a/lib/internal/Magento/Framework/Service/V1/Data/Search/FilterGroupBuilder.php
+++ b/lib/internal/Magento/Framework/Api/Search/FilterGroupBuilder.php
@@ -22,17 +22,17 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-namespace Magento\Framework\Service\V1\Data\Search;
+namespace Magento\Framework\Api\Search;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder;
-use Magento\Framework\Service\Data\AttributeValueBuilder;
-use Magento\Framework\Service\Data\MetadataServiceInterface;
-use Magento\Framework\Service\V1\Data\FilterBuilder;
+use Magento\Framework\Api\ExtensibleObjectBuilder;
+use Magento\Framework\Api\AttributeValueBuilder;
+use Magento\Framework\Api\MetadataServiceInterface;
+use Magento\Framework\Api\FilterBuilder;
 
 /**
  * Builder for FilterGroup Data.
  */
-class FilterGroupBuilder extends AbstractExtensibleObjectBuilder
+class FilterGroupBuilder extends ExtensibleObjectBuilder
 {
     /**
      * @var FilterBuilder
@@ -40,13 +40,13 @@ class FilterGroupBuilder extends AbstractExtensibleObjectBuilder
     protected $_filterBuilder;
 
     /**
-     * @param \Magento\Framework\Service\Data\ObjectFactory $objectFactory
+     * @param \Magento\Framework\Api\ObjectFactory $objectFactory
      * @param AttributeValueBuilder $valueBuilder
      * @param MetadataServiceInterface $metadataService
      * @param FilterBuilder $filterBuilder
      */
     public function __construct(
-        \Magento\Framework\Service\Data\ObjectFactory $objectFactory,
+        \Magento\Framework\Api\ObjectFactory $objectFactory,
         AttributeValueBuilder $valueBuilder,
         MetadataServiceInterface $metadataService,
         FilterBuilder $filterBuilder
@@ -58,19 +58,19 @@ class FilterGroupBuilder extends AbstractExtensibleObjectBuilder
     /**
      * Add filter
      *
-     * @param \Magento\Framework\Service\V1\Data\Filter $filter
+     * @param \Magento\Framework\Api\Filter $filter
      * @return $this
      */
-    public function addFilter(\Magento\Framework\Service\V1\Data\Filter $filter)
+    public function addFilter(\Magento\Framework\Api\Filter $filter)
     {
-        $this->_data[FilterGroup::FILTERS][] = $filter;
+        $this->data[FilterGroup::FILTERS][] = $filter;
         return $this;
     }
 
     /**
      * Set filters
      *
-     * @param \Magento\Framework\Service\V1\Data\Filter[] $filters
+     * @param \Magento\Framework\Api\Filter[] $filters
      * @return $this
      */
     public function setFilters($filters)
diff --git a/lib/internal/Magento/Framework/Service/V1/Data/SearchCriteria.php b/lib/internal/Magento/Framework/Api/SearchCriteria.php
similarity index 86%
rename from lib/internal/Magento/Framework/Service/V1/Data/SearchCriteria.php
rename to lib/internal/Magento/Framework/Api/SearchCriteria.php
index 962bcb3be60..5b62e1f6f51 100644
--- a/lib/internal/Magento/Framework/Service/V1/Data/SearchCriteria.php
+++ b/lib/internal/Magento/Framework/Api/SearchCriteria.php
@@ -22,10 +22,10 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-namespace Magento\Framework\Service\V1\Data;
+namespace Magento\Framework\Api;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObject;
-use Magento\Framework\Api\Data\SearchCriteriaInterface;
+use Magento\Framework\Api\AbstractExtensibleObject;
+use Magento\Framework\Api\SearchCriteriaInterface;
 
 /**
  * Data Object for SearchCriteria
@@ -43,7 +43,7 @@ class SearchCriteria extends AbstractExtensibleObject implements SearchCriteriaI
     /**
      * Get a list of filter groups.
      *
-     * @return \Magento\Framework\Service\V1\Data\Search\FilterGroup[]
+     * @return \Magento\Framework\Api\Search\FilterGroup[]
      */
     public function getFilterGroups()
     {
@@ -53,7 +53,7 @@ class SearchCriteria extends AbstractExtensibleObject implements SearchCriteriaI
     /**
      * Get sort order.
      *
-     * @return \Magento\Framework\Service\V1\Data\SortOrder[]|null
+     * @return \Magento\Framework\Api\SortOrder[]|null
      */
     public function getSortOrders()
     {
diff --git a/lib/internal/Magento/Framework/Service/V1/Data/SearchCriteriaBuilder.php b/lib/internal/Magento/Framework/Api/SearchCriteriaBuilder.php
similarity index 74%
rename from lib/internal/Magento/Framework/Service/V1/Data/SearchCriteriaBuilder.php
rename to lib/internal/Magento/Framework/Api/SearchCriteriaBuilder.php
index 6971ec7ef93..c97d5a94e19 100644
--- a/lib/internal/Magento/Framework/Service/V1/Data/SearchCriteriaBuilder.php
+++ b/lib/internal/Magento/Framework/Api/SearchCriteriaBuilder.php
@@ -22,18 +22,18 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-namespace Magento\Framework\Service\V1\Data;
+namespace Magento\Framework\Api;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder;
-use Magento\Framework\Service\Data\AttributeValueBuilder;
-use Magento\Framework\Service\Data\MetadataServiceInterface;
-use Magento\Framework\Service\V1\Data\Search\FilterGroupBuilder;
-use Magento\Framework\Service\V1\Data\SortOrder;
+use Magento\Framework\Api\ExtensibleObjectBuilder;
+use Magento\Framework\Api\AttributeValueBuilder;
+use Magento\Framework\Api\MetadataServiceInterface;
+use Magento\Framework\Api\Search\FilterGroupBuilder;
+use Magento\Framework\Api\SortOrder;
 
 /**
  * Builder for SearchCriteria Service Data Object
  */
-class SearchCriteriaBuilder extends AbstractExtensibleObjectBuilder
+class SearchCriteriaBuilder extends ExtensibleObjectBuilder
 {
     /**
      * @var FilterGroupBuilder
@@ -41,13 +41,13 @@ class SearchCriteriaBuilder extends AbstractExtensibleObjectBuilder
     protected $_filterGroupBuilder;
 
     /**
-     * @param \Magento\Framework\Service\Data\ObjectFactory $objectFactory
+     * @param \Magento\Framework\Api\ObjectFactory $objectFactory
      * @param AttributeValueBuilder $valueBuilder
      * @param MetadataServiceInterface $metadataService
      * @param FilterGroupBuilder $filterGroupBuilder
      */
     public function __construct(
-        \Magento\Framework\Service\Data\ObjectFactory $objectFactory,
+        \Magento\Framework\Api\ObjectFactory $objectFactory,
         AttributeValueBuilder $valueBuilder,
         MetadataServiceInterface $metadataService,
         FilterGroupBuilder $filterGroupBuilder
@@ -64,7 +64,7 @@ class SearchCriteriaBuilder extends AbstractExtensibleObjectBuilder
     public function create()
     {
         //Initialize with empty array if not set
-        if (empty($this->_data[SearchCriteria::FILTER_GROUPS])) {
+        if (empty($this->data[SearchCriteria::FILTER_GROUPS])) {
             $this->_set(SearchCriteria::FILTER_GROUPS, []);
         }
         return parent::create();
@@ -73,19 +73,19 @@ class SearchCriteriaBuilder extends AbstractExtensibleObjectBuilder
     /**
      * Create a filter group based on the filter array provided and add to the filter groups
      *
-     * @param \Magento\Framework\Service\V1\Data\Filter[] $filter
+     * @param \Magento\Framework\Api\Filter[] $filter
      * @return $this
      */
     public function addFilter(array $filter)
     {
-        $this->_data[SearchCriteria::FILTER_GROUPS][] = $this->_filterGroupBuilder->setFilters($filter)->create();
+        $this->data[SearchCriteria::FILTER_GROUPS][] = $this->_filterGroupBuilder->setFilters($filter)->create();
         return $this;
     }
 
     /**
      * Set filter groups
      *
-     * @param \Magento\Framework\Service\V1\Data\Search\FilterGroup[] $filterGroups
+     * @param \Magento\Framework\Api\Search\FilterGroup[] $filterGroups
      * @return $this
      */
     public function setFilterGroups(array $filterGroups)
@@ -101,10 +101,10 @@ class SearchCriteriaBuilder extends AbstractExtensibleObjectBuilder
      */
     public function addSortOrder($sortOrder)
     {
-        if (!isset($this->_data[SearchCriteria::SORT_ORDERS])) {
-            $this->_data[SearchCriteria::SORT_ORDERS] = [];
+        if (!isset($this->data[SearchCriteria::SORT_ORDERS])) {
+            $this->data[SearchCriteria::SORT_ORDERS] = [];
         }
-        $this->_data[SearchCriteria::SORT_ORDERS][] = $sortOrder;
+        $this->data[SearchCriteria::SORT_ORDERS][] = $sortOrder;
         return $this;
     }
 
diff --git a/app/code/Magento/Install/Model/Config/Data.php b/lib/internal/Magento/Framework/Api/SearchCriteriaDataBuilder.php
similarity index 83%
rename from app/code/Magento/Install/Model/Config/Data.php
rename to lib/internal/Magento/Framework/Api/SearchCriteriaDataBuilder.php
index 2b6200d1b3e..3f6c4c0e096 100644
--- a/app/code/Magento/Install/Model/Config/Data.php
+++ b/lib/internal/Magento/Framework/Api/SearchCriteriaDataBuilder.php
@@ -21,8 +21,12 @@
  * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
-namespace Magento\Install\Model\Config;
 
-class Data extends \Magento\Framework\Config\Data
+namespace Magento\Framework\Api;
+
+/**
+ * TODO: Temporary search criteria builder builder
+ */
+class SearchCriteriaDataBuilder extends \Magento\Framework\Api\SearchCriteriaBuilder
 {
 }
diff --git a/lib/internal/Magento/Framework/Api/Data/SearchCriteriaInterface.php b/lib/internal/Magento/Framework/Api/SearchCriteriaInterface.php
similarity index 89%
rename from lib/internal/Magento/Framework/Api/Data/SearchCriteriaInterface.php
rename to lib/internal/Magento/Framework/Api/SearchCriteriaInterface.php
index 68feed1c064..15037f9f046 100644
--- a/lib/internal/Magento/Framework/Api/Data/SearchCriteriaInterface.php
+++ b/lib/internal/Magento/Framework/Api/SearchCriteriaInterface.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-namespace Magento\Framework\Api\Data;
+namespace Magento\Framework\Api;
 
 /**
  * Search criteria interface.
@@ -35,14 +35,14 @@ interface SearchCriteriaInterface
     /**
      * Get a list of filter groups.
      *
-     * @return \Magento\Framework\Service\V1\Data\Search\FilterGroup[]
+     * @return \Magento\Framework\Api\Search\FilterGroup[]
      */
     public function getFilterGroups();
 
     /**
      * Get sort order.
      *
-     * @return \Magento\Framework\Service\V1\Data\SortOrder[]|null
+     * @return \Magento\Framework\Api\SortOrder[]|null
      */
     public function getSortOrders();
 
diff --git a/lib/internal/Magento/Framework/Service/V1/Data/SearchResults.php b/lib/internal/Magento/Framework/Api/SearchResults.php
similarity index 85%
rename from lib/internal/Magento/Framework/Service/V1/Data/SearchResults.php
rename to lib/internal/Magento/Framework/Api/SearchResults.php
index 2479928dbfc..6c2cfc490b5 100644
--- a/lib/internal/Magento/Framework/Service/V1/Data/SearchResults.php
+++ b/lib/internal/Magento/Framework/Api/SearchResults.php
@@ -22,12 +22,12 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-namespace Magento\Framework\Service\V1\Data;
+namespace Magento\Framework\Api;
 
 /**
  * SearchResults Service Data Object used for the search service requests
  */
-class SearchResults extends \Magento\Framework\Service\Data\AbstractExtensibleObject
+class SearchResults extends \Magento\Framework\Api\AbstractExtensibleObject
 {
     const KEY_ITEMS = 'items';
     const KEY_SEARCH_CRITERIA = 'search_criteria';
@@ -36,7 +36,7 @@ class SearchResults extends \Magento\Framework\Service\Data\AbstractExtensibleOb
     /**
      * Get items
      *
-     * @return \Magento\Framework\Service\Data\AbstractExtensibleObject[]
+     * @return \Magento\Framework\Api\AbstractExtensibleObject[]
      */
     public function getItems()
     {
@@ -46,7 +46,7 @@ class SearchResults extends \Magento\Framework\Service\Data\AbstractExtensibleOb
     /**
      * Get search criteria
      *
-     * @return \Magento\Framework\Service\V1\Data\SearchCriteria
+     * @return \Magento\Framework\Api\SearchCriteria
      */
     public function getSearchCriteria()
     {
diff --git a/lib/internal/Magento/Framework/Api/Data/SearchResultsInterface.php b/lib/internal/Magento/Framework/Api/SearchResultsInterface.php
similarity index 87%
rename from lib/internal/Magento/Framework/Api/Data/SearchResultsInterface.php
rename to lib/internal/Magento/Framework/Api/SearchResultsInterface.php
index a53a97f5f32..4ed7567f23a 100644
--- a/lib/internal/Magento/Framework/Api/Data/SearchResultsInterface.php
+++ b/lib/internal/Magento/Framework/Api/SearchResultsInterface.php
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-namespace Magento\Framework\Api\Data;
+namespace Magento\Framework\Api;
 
 /**
  * Search results interface.
@@ -32,14 +32,14 @@ interface SearchResultsInterface
     /**
      * Get items list.
      *
-     * @return \Magento\Framework\Api\Data\ExtensibleDataInterface[]
+     * @return \Magento\Framework\Api\ExtensibleDataInterface[]
      */
     public function getItems();
 
     /**
      * Get search criteria.
      *
-     * @return \Magento\Framework\Api\Data\SearchCriteriaInterface
+     * @return \Magento\Framework\Api\SearchCriteriaInterface
      */
     public function getSearchCriteria();
 
diff --git a/lib/internal/Magento/Framework/Service/SimpleDataObjectConverter.php b/lib/internal/Magento/Framework/Api/SimpleDataObjectConverter.php
similarity index 98%
rename from lib/internal/Magento/Framework/Service/SimpleDataObjectConverter.php
rename to lib/internal/Magento/Framework/Api/SimpleDataObjectConverter.php
index 623f1f87a6e..af7b189c11c 100644
--- a/lib/internal/Magento/Framework/Service/SimpleDataObjectConverter.php
+++ b/lib/internal/Magento/Framework/Api/SimpleDataObjectConverter.php
@@ -21,10 +21,10 @@
  * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
-namespace Magento\Framework\Service;
+namespace Magento\Framework\Api;
 
 use Magento\Framework\Convert\ConvertArray;
-use Magento\Framework\Service\Data\AbstractExtensibleObject;
+use Magento\Framework\Api\AbstractExtensibleObject;
 
 class SimpleDataObjectConverter
 {
diff --git a/lib/internal/Magento/Framework/Service/V1/Data/SortOrder.php b/lib/internal/Magento/Framework/Api/SortOrder.php
similarity index 92%
rename from lib/internal/Magento/Framework/Service/V1/Data/SortOrder.php
rename to lib/internal/Magento/Framework/Api/SortOrder.php
index d33eee3a8b3..54aaead97c2 100644
--- a/lib/internal/Magento/Framework/Service/V1/Data/SortOrder.php
+++ b/lib/internal/Magento/Framework/Api/SortOrder.php
@@ -22,9 +22,9 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-namespace Magento\Framework\Service\V1\Data;
+namespace Magento\Framework\Api;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObject;
+use Magento\Framework\Api\AbstractExtensibleObject;
 
 /**
  * Data object for sort order.
diff --git a/lib/internal/Magento/Framework/Service/V1/Data/SortOrderBuilder.php b/lib/internal/Magento/Framework/Api/SortOrderBuilder.php
similarity index 89%
rename from lib/internal/Magento/Framework/Service/V1/Data/SortOrderBuilder.php
rename to lib/internal/Magento/Framework/Api/SortOrderBuilder.php
index a6e315b2c45..b2f1a90695e 100644
--- a/lib/internal/Magento/Framework/Service/V1/Data/SortOrderBuilder.php
+++ b/lib/internal/Magento/Framework/Api/SortOrderBuilder.php
@@ -22,16 +22,16 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-namespace Magento\Framework\Service\V1\Data;
+namespace Magento\Framework\Api;
 
-use Magento\Framework\Service\Data\AbstractExtensibleObjectBuilder;
+use Magento\Framework\Api\ExtensibleObjectBuilder;
 
 /**
  * Builder for sort order data object.
  *
  * @method SortOrder create()
  */
-class SortOrderBuilder extends AbstractExtensibleObjectBuilder
+class SortOrderBuilder extends ExtensibleObjectBuilder
 {
     /**
      * Set sorting field.
diff --git a/lib/internal/Magento/Framework/Service/etc/data_object.xsd b/lib/internal/Magento/Framework/Api/etc/data_object.xsd
similarity index 100%
rename from lib/internal/Magento/Framework/Service/etc/data_object.xsd
rename to lib/internal/Magento/Framework/Api/etc/data_object.xsd
diff --git a/lib/internal/Magento/Framework/App/Filesystem/DirectoryList.php b/lib/internal/Magento/Framework/App/Filesystem/DirectoryList.php
index c3536495b13..5c09f137c03 100644
--- a/lib/internal/Magento/Framework/App/Filesystem/DirectoryList.php
+++ b/lib/internal/Magento/Framework/App/Filesystem/DirectoryList.php
@@ -157,6 +157,6 @@ class DirectoryList extends \Magento\Framework\Filesystem\DirectoryList
      */
     public function __construct($root, array $config = array())
     {
-        parent::__construct($root, [self::ROOT => $root] + $config);
+        parent::__construct($root, [self::ROOT => [self::PATH => $root]] + $config);
     }
 }
diff --git a/lib/internal/Magento/Framework/App/Helper/AbstractHelper.php b/lib/internal/Magento/Framework/App/Helper/AbstractHelper.php
index 0bffd8e97e6..1703cc1ed9e 100644
--- a/lib/internal/Magento/Framework/App/Helper/AbstractHelper.php
+++ b/lib/internal/Magento/Framework/App/Helper/AbstractHelper.php
@@ -118,7 +118,7 @@ abstract class AbstractHelper
             $class = get_class($this);
             $this->_moduleName = substr($class, 0, strpos($class, '\\Helper'));
         }
-        return str_replace(\Magento\Framework\Autoload\IncludePath::NS_SEPARATOR, '_', $this->_moduleName);
+        return str_replace('\\', '_', $this->_moduleName);
     }
 
     /**
diff --git a/lib/internal/Magento/Framework/App/ObjectManagerFactory.php b/lib/internal/Magento/Framework/App/ObjectManagerFactory.php
index 9e326b4451f..e9ed588bfcb 100644
--- a/lib/internal/Magento/Framework/App/ObjectManagerFactory.php
+++ b/lib/internal/Magento/Framework/App/ObjectManagerFactory.php
@@ -27,6 +27,7 @@ namespace Magento\Framework\App;
 
 use Magento\Framework\App\Filesystem\DirectoryList;
 use Magento\Framework\Profiler;
+use Magento\Framework\Code\Generator\FileResolver;
 use Magento\Framework\Filesystem\DriverPool;
 
 /**
@@ -93,9 +94,7 @@ class ObjectManagerFactory
      */
     public function create(array $arguments, $useCompiled = true)
     {
-        (new \Magento\Framework\Autoload\IncludePath())->addIncludePath(
-            array($this->directoryList->getPath(DirectoryList::GENERATION))
-        );
+        FileResolver::addIncludePath($this->directoryList->getPath(DirectoryList::GENERATION));
 
         $appArguments = $this->createAppArguments($this->directoryList, $arguments);
 
diff --git a/lib/internal/Magento/Framework/App/Rss/DataProviderInterface.php b/lib/internal/Magento/Framework/App/Rss/DataProviderInterface.php
index 4adb19b7225..e49e68c013f 100644
--- a/lib/internal/Magento/Framework/App/Rss/DataProviderInterface.php
+++ b/lib/internal/Magento/Framework/App/Rss/DataProviderInterface.php
@@ -59,4 +59,9 @@ interface DataProviderInterface
      * @return array
      */
     public function getFeeds();
+
+    /**
+     * @return bool
+     */
+    public function isAuthRequired();
 }
diff --git a/lib/internal/Magento/Framework/App/State.php b/lib/internal/Magento/Framework/App/State.php
index 00474eef4ad..de10c24e0ca 100644
--- a/lib/internal/Magento/Framework/App/State.php
+++ b/lib/internal/Magento/Framework/App/State.php
@@ -53,13 +53,6 @@ class State
      */
     protected $_updateMode = false;
 
-    /**
-     * Application install date
-     *
-     * @var string
-     */
-    protected $_installDate;
-
     /**
      * Config scope model
      *
@@ -88,16 +81,13 @@ class State
 
     /**
      * @param \Magento\Framework\Config\ScopeInterface $configScope
-     * @param string $installDate
      * @param string $mode
      * @throws \LogicException
      */
     public function __construct(
         \Magento\Framework\Config\ScopeInterface $configScope,
-        $installDate,
         $mode = self::MODE_DEFAULT
     ) {
-        $this->_installDate = strtotime((string)$installDate);
         $this->_configScope = $configScope;
         switch ($mode) {
             case self::MODE_DEVELOPER:
@@ -110,16 +100,6 @@ class State
         }
     }
 
-    /**
-     * Check if application is installed
-     *
-     * @return bool
-     */
-    public function isInstalled()
-    {
-        return (bool)$this->_installDate;
-    }
-
     /**
      * Return current app mode
      *
@@ -163,27 +143,6 @@ class State
         $this->_isDownloader = $flag;
     }
 
-    /**
-     * Set install date
-     *
-     * @param string $date
-     * @return void
-     */
-    public function setInstallDate($date)
-    {
-        $this->_installDate = $date;
-    }
-
-    /**
-     * Get install date
-     *
-     * @return int
-     */
-    public function getInstallDate()
-    {
-        return $this->_installDate;
-    }
-
     /**
      * Set area code
      *
diff --git a/lib/internal/Magento/Framework/AppInterface.php b/lib/internal/Magento/Framework/AppInterface.php
index 839d0af959c..cc6d1fa9c40 100644
--- a/lib/internal/Magento/Framework/AppInterface.php
+++ b/lib/internal/Magento/Framework/AppInterface.php
@@ -35,7 +35,7 @@ interface AppInterface
     /**
      * Magento version
      */
-    const VERSION = '0.1.0-alpha102';
+    const VERSION = '0.1.0-alpha103';
 
     /**
      * Launch application
diff --git a/lib/internal/Magento/Framework/Code/Generator.php b/lib/internal/Magento/Framework/Code/Generator.php
index 9c6d0523c3b..e4b8828dfb6 100644
--- a/lib/internal/Magento/Framework/Code/Generator.php
+++ b/lib/internal/Magento/Framework/Code/Generator.php
@@ -32,9 +32,9 @@ class Generator
     const GENERATION_SKIP = 'skip';
 
     /**
-     * @var \Magento\Framework\Autoload\IncludePath
+     * @var \Magento\Framework\Code\Generator\FileResolver
      */
-    protected $_autoloader;
+    protected $fileResolver;
 
     /**
      * @var \Magento\Framework\Code\Generator\Io
@@ -47,19 +47,19 @@ class Generator
     protected $_generatedEntities;
 
     /**
-     * @param \Magento\Framework\Autoload\IncludePath $autoloader
+     * @param \Magento\Framework\Code\Generator\FileResolver $fileResolver
      * @param Generator\Io $ioObject
      * @param array $generatedEntities
      */
     public function __construct(
-        \Magento\Framework\Autoload\IncludePath $autoloader = null,
+        \Magento\Framework\Code\Generator\FileResolver $fileResolver,
         \Magento\Framework\Code\Generator\Io $ioObject = null,
         array $generatedEntities = array()
     ) {
-        $this->_autoloader = $autoloader ?: new \Magento\Framework\Autoload\IncludePath();
+        $this->fileResolver = $fileResolver;
         $this->_ioObject = $ioObject ?: new \Magento\Framework\Code\Generator\Io(
             new \Magento\Framework\Filesystem\Driver\File(),
-            $this->_autoloader
+            $this->fileResolver
         );
         $this->_generatedEntities = $generatedEntities;
     }
@@ -94,7 +94,7 @@ class Generator
                 $entity = $entityType;
                 $entityName = rtrim(
                     substr($className, 0, -1 * strlen($entitySuffix)),
-                    \Magento\Framework\Autoload\IncludePath::NS_SEPARATOR
+                    '\\'
                 );
                 break;
             }
@@ -104,8 +104,7 @@ class Generator
         }
 
         // check if file already exists
-        $autoloader = $this->_autoloader;
-        if ($autoloader->getFile($className)) {
+        if ($this->fileResolver->getFile($className)) {
             return self::GENERATION_SKIP;
         }
 
diff --git a/lib/internal/Magento/Framework/Code/Generator/Autoloader.php b/lib/internal/Magento/Framework/Code/Generator/Autoloader.php
index c98b83ac674..ae1616d01dd 100644
--- a/lib/internal/Magento/Framework/Code/Generator/Autoloader.php
+++ b/lib/internal/Magento/Framework/Code/Generator/Autoloader.php
@@ -23,6 +23,8 @@
  */
 namespace Magento\Framework\Code\Generator;
 
+use \Magento\Framework\Code\Generator;
+
 class Autoloader
 {
     /**
@@ -30,11 +32,20 @@ class Autoloader
      */
     protected $_generator;
 
+    /**
+     * @var \Magento\Framework\Code\Generator\FileResolver
+     */
+    protected $fileResolver;
+    
     /**
      * @param \Magento\Framework\Code\Generator $generator
+     * @param \Magento\Framework\Code\Generator\FileResolver $fileResolver
      */
-    public function __construct(\Magento\Framework\Code\Generator $generator)
-    {
+    public function __construct(
+        \Magento\Framework\Code\Generator $generator,
+        \Magento\Framework\Code\Generator\FileResolver $fileResolver
+    ) {
+        $this->fileResolver = $fileResolver;
         $this->_generator = $generator;
     }
 
@@ -47,8 +58,11 @@ class Autoloader
     public function load($className)
     {
         if (!class_exists($className)) {
-            if (\Magento\Framework\Code\Generator::GENERATION_SUCCESS === $this->_generator->generateClass($className)) {
-                (new \Magento\Framework\Autoload\IncludePath())->load($className);
+            if (Generator::GENERATION_SUCCESS === $this->_generator->generateClass($className)) {
+                $file = $this->fileResolver->getFile($className);
+                if ($file) {
+                    include $file;
+                }
             }
         }
     }
diff --git a/lib/internal/Magento/Framework/Code/Generator/EntityAbstract.php b/lib/internal/Magento/Framework/Code/Generator/EntityAbstract.php
index 6d1c0e40382..a789218b96b 100644
--- a/lib/internal/Magento/Framework/Code/Generator/EntityAbstract.php
+++ b/lib/internal/Magento/Framework/Code/Generator/EntityAbstract.php
@@ -23,7 +23,7 @@
  */
 namespace Magento\Framework\Code\Generator;
 
-use Magento\Framework\Autoload\IncludePath;
+use \Magento\Framework\Code\Generator\FileResolver;
 
 abstract class EntityAbstract
 {
@@ -59,9 +59,9 @@ abstract class EntityAbstract
     /**
      * Autoloader instance
      *
-     * @var IncludePath
+     * @var FileResolver
      */
-    private $_autoloader;
+    private $fileResolver;
 
     /**
      * Class generator object
@@ -75,24 +75,24 @@ abstract class EntityAbstract
      * @param null|string $resultClassName
      * @param Io $ioObject
      * @param CodeGenerator\CodeGeneratorInterface $classGenerator
-     * @param IncludePath $autoLoader
+     * @param FileResolver $fileResolver
      */
     public function __construct(
         $sourceClassName = null,
         $resultClassName = null,
         Io $ioObject = null,
         CodeGenerator\CodeGeneratorInterface $classGenerator = null,
-        IncludePath $autoLoader = null
+        FileResolver $fileResolver = null
     ) {
-        if ($autoLoader) {
-            $this->_autoloader = $autoLoader;
+        if ($fileResolver) {
+            $this->fileResolver = $fileResolver;
         } else {
-            $this->_autoloader = new IncludePath();
+            $this->fileResolver = new FileResolver();
         }
         if ($ioObject) {
             $this->_ioObject = $ioObject;
         } else {
-            $this->_ioObject = new Io(new \Magento\Framework\Filesystem\Driver\File(), $this->_autoloader);
+            $this->_ioObject = new Io(new \Magento\Framework\Filesystem\Driver\File(), $this->fileResolver);
         }
         if ($classGenerator) {
             $this->_classGenerator = $classGenerator;
@@ -100,7 +100,7 @@ abstract class EntityAbstract
             $this->_classGenerator = new CodeGenerator\Zend();
         }
 
-        $this->_sourceClassName = ltrim($sourceClassName, IncludePath::NS_SEPARATOR);
+        $this->_sourceClassName = ltrim($sourceClassName, '\\');
         if ($resultClassName) {
             $this->_resultClassName = $resultClassName;
         } elseif ($sourceClassName) {
@@ -160,7 +160,7 @@ abstract class EntityAbstract
      */
     protected function _getFullyQualifiedClassName($className)
     {
-        return IncludePath::NS_SEPARATOR . ltrim($className, IncludePath::NS_SEPARATOR);
+        return '\\' . ltrim($className, '\\');
     }
 
     /**
@@ -284,13 +284,13 @@ abstract class EntityAbstract
             $filePath = stream_resolve_include_path(str_replace('_', '/', $controllerPath) . '.php');
             $isSourceClassValid = !empty($filePath);
         } else {
-            $isSourceClassValid = $this->_autoloader->getFile($sourceClassName);
+            $isSourceClassValid = $this->fileResolver->getFile($sourceClassName);
         }
 
         if (!$isSourceClassValid) {
             $this->_addError('Source class ' . $sourceClassName . ' doesn\'t exist.');
             return false;
-        } elseif ($this->_autoloader->getFile($resultClassName)) {
+        } elseif ($this->fileResolver->getFile($resultClassName)) {
             $this->_addError('Result class ' . $resultClassName . ' already exists.');
             return false;
         } elseif (!$this->_ioObject->makeGenerationDirectory()) {
diff --git a/lib/internal/Magento/Framework/Code/Generator/FileResolver.php b/lib/internal/Magento/Framework/Code/Generator/FileResolver.php
new file mode 100644
index 00000000000..a9774cf273b
--- /dev/null
+++ b/lib/internal/Magento/Framework/Code/Generator/FileResolver.php
@@ -0,0 +1,73 @@
+<?php
+/**
+ * Contains logic for finding class filepaths.
+ *
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+namespace Magento\Framework\Code\Generator;
+
+class FileResolver
+{
+    /**
+     * Find a file in include path. Include path is set in composer.json or with set_include_path()
+     *
+     * @param string $class
+     * @return string|bool
+     */
+    public function getFile($class)
+    {
+        $relativePath = $this->getFilePath($class);
+        return stream_resolve_include_path($relativePath);
+    }
+
+    /**
+     * Get relative file path for specified class
+     *
+     * @static
+     * @param string $class
+     * @return string
+     */
+    public function getFilePath($class)
+    {
+        return ltrim(str_replace(['_', '\\'], '/', $class), '/') . '.php';
+    }
+
+    /**
+     * Add specified path(s) to the current include_path
+     *
+     * @param string|array $path
+     * @param bool         $prepend Whether to prepend paths or to append them
+     * @return void
+     */
+    public static function addIncludePath($path, $prepend = true)
+    {
+        $includePathExtra = implode(PATH_SEPARATOR, (array)$path);
+        $includePath = get_include_path();
+        $pathSeparator = $includePath && $includePathExtra ? PATH_SEPARATOR : '';
+        if ($prepend) {
+            $includePath = $includePathExtra . $pathSeparator . $includePath;
+        } else {
+            $includePath = $includePath . $pathSeparator . $includePathExtra;
+        }
+        set_include_path($includePath);
+    }
+}
diff --git a/lib/internal/Magento/Framework/Code/Generator/Io.php b/lib/internal/Magento/Framework/Code/Generator/Io.php
index 1ef24819b9b..48dcdd8dc46 100644
--- a/lib/internal/Magento/Framework/Code/Generator/Io.php
+++ b/lib/internal/Magento/Framework/Code/Generator/Io.php
@@ -44,11 +44,11 @@ class Io
     private $_generationDirectory;
 
     /**
-     * Autoloader instance
+     * File resolver
      *
-     * @var \Magento\Framework\Autoload\IncludePath
+     * @var \Magento\Framework\Code\Generator\FileResolver
      */
-    private $_autoloader;
+    private $fileResolver;
 
     /**
      * @var \Magento\Framework\Filesystem\Driver\File
@@ -57,15 +57,15 @@ class Io
 
     /**
      * @param \Magento\Framework\Filesystem\Driver\File   $filesystemDriver
-     * @param \Magento\Framework\Autoload\IncludePath     $autoLoader
+     * @param \Magento\Framework\Code\Generator\FileResolver     $fileResolver
      * @param null $generationDirectory
      */
     public function __construct(
         \Magento\Framework\Filesystem\Driver\File $filesystemDriver,
-        \Magento\Framework\Autoload\IncludePath $autoLoader = null,
+        \Magento\Framework\Code\Generator\FileResolver $fileResolver,
         $generationDirectory = null
     ) {
-        $this->_autoloader = $autoLoader ?: new \Magento\Framework\Autoload\IncludePath();
+        $this->fileResolver = $fileResolver;
         $this->filesystemDriver = $filesystemDriver;
         $this->initGeneratorDirectory($generationDirectory);
     }
@@ -104,8 +104,7 @@ class Io
      */
     public function getResultFileName($className)
     {
-        $autoloader = $this->_autoloader;
-        $resultFileName = $autoloader->getFilePath($className);
+        $resultFileName = $this->fileResolver->getFilePath($className);
         return $this->_generationDirectory . $resultFileName;
     }
 
diff --git a/lib/internal/Magento/Framework/Code/NameBuilder.php b/lib/internal/Magento/Framework/Code/NameBuilder.php
index 2696de2fa89..469ecec22bf 100644
--- a/lib/internal/Magento/Framework/Code/NameBuilder.php
+++ b/lib/internal/Magento/Framework/Code/NameBuilder.php
@@ -38,7 +38,7 @@ class NameBuilder
      */
     public function buildClassName($parts)
     {
-        $separator = \Magento\Framework\Autoload\IncludePath::NS_SEPARATOR;
+        $separator = '\\';
         $string = join($separator, $parts);
         $string = str_replace('_', $separator, $string);
         $className = str_replace(' ', $separator, ucwords(str_replace($separator, ' ', $string)));
diff --git a/lib/internal/Magento/Framework/Exception/SerializationException.php b/lib/internal/Magento/Framework/Exception/SerializationException.php
new file mode 100644
index 00000000000..6d62898a97d
--- /dev/null
+++ b/lib/internal/Magento/Framework/Exception/SerializationException.php
@@ -0,0 +1,43 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Framework\Exception;
+
+/**
+ * Serialization Exception
+ */
+class SerializationException extends LocalizedException
+{
+    const TYPE_MISMATCH = 'Invalid type for value :"%value". Expected Type: "%type".';
+
+    /**
+     * @param string     $message
+     * @param array      $params
+     * @param \Exception $cause
+     */
+    public function __construct($message = self::TYPE_MISMATCH, array $params = [], \Exception $cause = null)
+    {
+        parent::__construct($message, $params, $cause);
+    }
+}
diff --git a/lib/internal/Magento/Framework/Filesystem/DirectoryList.php b/lib/internal/Magento/Framework/Filesystem/DirectoryList.php
index 0da123241e9..9744866e57a 100644
--- a/lib/internal/Magento/Framework/Filesystem/DirectoryList.php
+++ b/lib/internal/Magento/Framework/Filesystem/DirectoryList.php
@@ -77,6 +77,32 @@ class DirectoryList
         return [self::SYS_TMP => [self::PATH => '']];
     }
 
+    /**
+     * Validates format and contents of given configuration
+     *
+     * @param array $config
+     * @return void
+     * @throws \InvalidArgumentException
+     */
+    public static function validate($config)
+    {
+        if (!is_array($config)) {
+            throw new \InvalidArgumentException('Unexpected value type.');
+        }
+        $defaultConfig = static::getDefaultConfig();
+        foreach ($config as $type => $row) {
+            if (!is_array($row)) {
+                throw new \InvalidArgumentException('Unexpected value type.');
+            }
+            if (!isset($defaultConfig[$type])) {
+                throw new \InvalidArgumentException("Unknown type: {$type}");
+            }
+            if (!isset($row[self::PATH]) && !isset($row[self::URL_PATH])) {
+                throw new \InvalidArgumentException("Missing required keys at: {$type}");
+            }
+        }
+    }
+
     /**
      * Constructor
      *
@@ -85,6 +111,7 @@ class DirectoryList
      */
     public function __construct($root, array $config = array())
     {
+        static::validate($config);
         $this->root = $this->filterPath($root);
         $this->directories = static::getDefaultConfig();
         $this->directories[self::SYS_TMP] = [self::PATH => sys_get_temp_dir()];
diff --git a/lib/internal/Magento/Framework/Model/AbstractExtensibleModel.php b/lib/internal/Magento/Framework/Model/AbstractExtensibleModel.php
index daa95701751..da46448e795 100644
--- a/lib/internal/Magento/Framework/Model/AbstractExtensibleModel.php
+++ b/lib/internal/Magento/Framework/Model/AbstractExtensibleModel.php
@@ -24,8 +24,8 @@
 
 namespace Magento\Framework\Model;
 
-use Magento\Framework\Service\Data\MetadataServiceInterface;
-use Magento\Framework\Api\Data\ExtensibleDataInterface;
+use Magento\Framework\Api\MetadataServiceInterface;
+use Magento\Framework\Api\ExtensibleDataInterface;
 
 /**
  * Abstract model with custom attributes support.
@@ -88,7 +88,7 @@ abstract class AbstractExtensibleModel extends AbstractModel implements Extensib
     /**
      * Retrieve custom attributes values.
      *
-     * @return \Magento\Framework\Service\Data\AttributeValue[]|null
+     * @return \Magento\Framework\Api\AttributeValue[]|null
      */
     public function getCustomAttributes()
     {
@@ -102,7 +102,7 @@ abstract class AbstractExtensibleModel extends AbstractModel implements Extensib
      * Get an attribute value.
      *
      * @param string $attributeCode
-     * @return \Magento\Framework\Service\Data\AttributeValue|null null if the attribute has not been set
+     * @return \Magento\Framework\Api\AttributeValue|null null if the attribute has not been set
      */
     public function getCustomAttribute($attributeCode)
     {
@@ -180,7 +180,7 @@ abstract class AbstractExtensibleModel extends AbstractModel implements Extensib
         $attributeCodes = [];
         $customAttributesMetadata = $this->metadataService->getCustomAttributesMetadata(get_class($this));
         if (is_array($customAttributesMetadata)) {
-            /** @var $attribute \Magento\Framework\Service\Data\MetadataObjectInterface */
+            /** @var $attribute \Magento\Framework\Api\MetadataObjectInterface */
             foreach ($customAttributesMetadata as $attribute) {
                 // Create a map for easier processing
                 $attributeCodes[$attribute->getAttributeCode()] = $attribute->getAttributeCode();
diff --git a/lib/internal/Magento/Framework/Model/AbstractModel.php b/lib/internal/Magento/Framework/Model/AbstractModel.php
index 85c2f209213..b1e1da7b074 100644
--- a/lib/internal/Magento/Framework/Model/AbstractModel.php
+++ b/lib/internal/Magento/Framework/Model/AbstractModel.php
@@ -236,7 +236,7 @@ abstract class AbstractModel extends \Magento\Framework\Object
     {
         $this->_resourceName = $resourceName;
         if (is_null($collectionName)) {
-            $collectionName = $resourceName . \Magento\Framework\Autoload\IncludePath::NS_SEPARATOR . 'Collection';
+            $collectionName = $resourceName . '\\' . 'Collection';
         }
         $this->_collectionName = $collectionName;
     }
diff --git a/lib/internal/Magento/Framework/Module/Plugin/DbStatusValidator.php b/lib/internal/Magento/Framework/Module/Plugin/DbStatusValidator.php
index a837f4dc1dc..c8cb3243a76 100644
--- a/lib/internal/Magento/Framework/Module/Plugin/DbStatusValidator.php
+++ b/lib/internal/Magento/Framework/Module/Plugin/DbStatusValidator.php
@@ -26,8 +26,6 @@
 namespace Magento\Framework\Module\Plugin;
 
 use Magento\Framework\Cache\FrontendInterface;
-use Magento\Framework\Module\Updater;
-use Magento\Framework\App\State;
 
 class DbStatusValidator
 {
diff --git a/lib/internal/Magento/Framework/Module/README.md b/lib/internal/Magento/Framework/Module/README.md
index ac37b9e5e91..533097f5f27 100644
--- a/lib/internal/Magento/Framework/Module/README.md
+++ b/lib/internal/Magento/Framework/Module/README.md
@@ -6,4 +6,4 @@ Magento\Framework\Module is Magento framework component that allows to build mod
  * module manager that provides all information about loaded modules
  * directory reader, that allows to read configuration files from module
  * ability to turn on/off module output in separate configuration application
- * module db schema/data installers
\ No newline at end of file
+ * module db data installers
\ No newline at end of file
diff --git a/app/code/Magento/Install/Model/Resource/Resource.php b/lib/internal/Magento/Framework/Module/Resource.php
similarity index 99%
rename from app/code/Magento/Install/Model/Resource/Resource.php
rename to lib/internal/Magento/Framework/Module/Resource.php
index 56acd864ee6..05800cdbdef 100644
--- a/app/code/Magento/Install/Model/Resource/Resource.php
+++ b/lib/internal/Magento/Framework/Module/Resource.php
@@ -21,7 +21,7 @@
  * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
-namespace Magento\Install\Model\Resource;
+namespace Magento\Framework\Module;
 
 /**
  * Resource Resource Model
diff --git a/lib/internal/Magento/Framework/Module/Setup.php b/lib/internal/Magento/Framework/Module/Setup.php
index bf5e06c4641..17c1e834b5f 100644
--- a/lib/internal/Magento/Framework/Module/Setup.php
+++ b/lib/internal/Magento/Framework/Module/Setup.php
@@ -223,37 +223,6 @@ class Setup implements \Magento\Framework\Module\Updater\SetupInterface
         return $this;
     }
 
-    /**
-     * Apply module resource install, upgrade and data scripts
-     *
-     * @return $this|true
-     */
-    public function applyUpdates()
-    {
-        $dbVer = $this->_resourceResource->getDbVersion($this->_resourceName);
-        $configVer = $this->_moduleConfig['schema_version'];
-
-        // Module is installed
-        if ($dbVer !== false) {
-            $status = version_compare($configVer, $dbVer);
-            switch ($status) {
-                case self::VERSION_COMPARE_LOWER:
-                    $this->_rollbackResourceDb($configVer, $dbVer);
-                    break;
-                case self::VERSION_COMPARE_GREATER:
-                    $this->_upgradeResourceDb($dbVer, $configVer);
-                    break;
-                default:
-                    return true;
-                    break;
-            }
-        } elseif ($configVer) {
-            $this->_installResourceDb($configVer);
-        }
-
-        return $this;
-    }
-
     /**
      * Run data install scripts
      *
@@ -284,103 +253,6 @@ class Setup implements \Magento\Framework\Module\Updater\SetupInterface
         return $this;
     }
 
-    /**
-     * Run resource installation file
-     *
-     * @param string $newVersion
-     * @return $this
-     */
-    protected function _installResourceDb($newVersion)
-    {
-        $oldVersion = $this->_modifyResourceDb(self::TYPE_DB_INSTALL, '', $newVersion);
-        $this->_modifyResourceDb(self::TYPE_DB_UPGRADE, $oldVersion, $newVersion);
-        $this->_resourceResource->setDbVersion($this->_resourceName, $newVersion);
-
-        return $this;
-    }
-
-    /**
-     * Run resource upgrade files from $oldVersion to $newVersion
-     *
-     * @param string $oldVersion
-     * @param string $newVersion
-     * @return $this
-     */
-    protected function _upgradeResourceDb($oldVersion, $newVersion)
-    {
-        $this->_modifyResourceDb(self::TYPE_DB_UPGRADE, $oldVersion, $newVersion);
-        $this->_resourceResource->setDbVersion($this->_resourceName, $newVersion);
-
-        return $this;
-    }
-
-    /**
-     * Roll back resource
-     *
-     * @param string $newVersion
-     * @param string $oldVersion
-     * @return $this
-     */
-    protected function _rollbackResourceDb($newVersion, $oldVersion)
-    {
-        $this->_modifyResourceDb(self::TYPE_DB_ROLLBACK, $newVersion, $oldVersion);
-        return $this;
-    }
-
-    /**
-     * Uninstall resource
-     *
-     * @param string $version existing resource version
-     * @return $this
-     */
-    protected function _uninstallResourceDb($version)
-    {
-        $this->_modifyResourceDb(self::TYPE_DB_UNINSTALL, $version, '');
-        return $this;
-    }
-
-    /**
-     * Retrieve available Database install/upgrade files for current module
-     *
-     * @param string $actionType
-     * @param string $fromVersion
-     * @param string $toVersion
-     * @return array
-     */
-    protected function _getAvailableDbFiles($actionType, $fromVersion, $toVersion)
-    {
-        $modName = (string)$this->_moduleConfig['name'];
-
-        $filesDir = $this->_modulesReader->getModuleDir('sql', $modName) . '/' . $this->_resourceName;
-        $modulesDirPath = $this->modulesDir->getRelativePath($filesDir);
-        if (!$this->modulesDir->isDirectory($modulesDirPath) || !$this->modulesDir->isReadable($modulesDirPath)) {
-            return array();
-        }
-
-        $dbFiles = array();
-        $typeFiles = array();
-        $regExpDb = sprintf('#%s-(.*)\.(php|sql)$#i', $actionType);
-        $regExpType = sprintf('#%s-%s-(.*)\.(php|sql)$#i', 'mysql4', $actionType);
-        foreach ($this->modulesDir->read($modulesDirPath) as $file) {
-            $matches = array();
-            if (preg_match($regExpDb, $file, $matches)) {
-                $dbFiles[$matches[1]] = $this->modulesDir->getAbsolutePath($file);
-            } else if (preg_match($regExpType, $file, $matches)) {
-                $typeFiles[$matches[1]] = $this->modulesDir->getAbsolutePath($file);
-            }
-        }
-
-        if (empty($typeFiles) && empty($dbFiles)) {
-            return array();
-        }
-
-        foreach ($typeFiles as $version => $file) {
-            $dbFiles[$version] = $file;
-        }
-
-        return $this->_getModifySqlFiles($actionType, $fromVersion, $toVersion, $dbFiles);
-    }
-
     /**
      * Retrieve available Data install/upgrade files for current module
      *
@@ -413,31 +285,6 @@ class Setup implements \Magento\Framework\Module\Updater\SetupInterface
         return $this->_getModifySqlFiles($actionType, $fromVersion, $toVersion, $files);
     }
 
-    /**
-     * Save resource version
-     *
-     * @param string $actionType
-     * @param string $version
-     * @return $this
-     */
-    protected function _setResourceVersion($actionType, $version)
-    {
-        switch ($actionType) {
-            case self::TYPE_DB_INSTALL:
-            case self::TYPE_DB_UPGRADE:
-                $this->_resourceResource->setDbVersion($this->_resourceName, $version);
-                break;
-            case self::TYPE_DATA_INSTALL:
-            case self::TYPE_DATA_UPGRADE:
-                $this->_resourceResource->setDataVersion($this->_resourceName, $version);
-                break;
-            default:
-                break;
-        }
-
-        return $this;
-    }
-
     /**
      * Run module modification files. Return version of last applied upgrade (false if no upgrades applied)
      * @param string $actionType
@@ -448,19 +295,7 @@ class Setup implements \Magento\Framework\Module\Updater\SetupInterface
      */
     protected function _modifyResourceDb($actionType, $fromVersion, $toVersion)
     {
-        switch ($actionType) {
-            case self::TYPE_DB_INSTALL:
-            case self::TYPE_DB_UPGRADE:
-                $files = $this->_getAvailableDbFiles($actionType, $fromVersion, $toVersion);
-                break;
-            case self::TYPE_DATA_INSTALL:
-            case self::TYPE_DATA_UPGRADE:
-                $files = $this->_getAvailableDataFiles($actionType, $fromVersion, $toVersion);
-                break;
-            default:
-                $files = array();
-                break;
-        }
+        $files = $this->_getAvailableDataFiles($actionType, $fromVersion, $toVersion);
         if (empty($files) || !$this->getConnection()) {
             return false;
         }
@@ -491,7 +326,7 @@ class Setup implements \Magento\Framework\Module\Updater\SetupInterface
                 }
 
                 if ($result) {
-                    $this->_setResourceVersion($actionType, $file['toVersion']);
+                    $this->_resourceResource->setDataVersion($this->_resourceName, $file['toVersion']);
                     $this->_logger->log($fileName);
                 } else {
                     $this->_logger->log("Failed resource setup: {$fileName}");
@@ -532,7 +367,6 @@ class Setup implements \Magento\Framework\Module\Updater\SetupInterface
     {
         $arrRes = [];
         switch ($actionType) {
-            case self::TYPE_DB_INSTALL:
             case self::TYPE_DATA_INSTALL:
                 uksort($arrFiles, 'version_compare');
                 foreach ($arrFiles as $version => $file) {
@@ -545,7 +379,6 @@ class Setup implements \Magento\Framework\Module\Updater\SetupInterface
                 }
                 break;
 
-            case self::TYPE_DB_UPGRADE:
             case self::TYPE_DATA_UPGRADE:
                 uksort($arrFiles, 'version_compare');
                 foreach ($arrFiles as $version => $file) {
@@ -570,8 +403,6 @@ class Setup implements \Magento\Framework\Module\Updater\SetupInterface
                 }
                 break;
 
-            case self::TYPE_DB_ROLLBACK:
-            case self::TYPE_DB_UNINSTALL:
             default:
                 break;
         }
diff --git a/lib/internal/Magento/Framework/Module/Updater.php b/lib/internal/Magento/Framework/Module/Updater.php
index bc19c5b7ee5..b76f3121ad2 100644
--- a/lib/internal/Magento/Framework/Module/Updater.php
+++ b/lib/internal/Magento/Framework/Module/Updater.php
@@ -1,6 +1,6 @@
 <?php
 /**
- * Application module updater. Used to install/upgrade module schemas.
+ * Application module updater. Used to install/upgrade module data.
  *
  * Magento
  *
@@ -25,24 +25,8 @@
  */
 namespace Magento\Framework\Module;
 
-use Magento\Framework\App\State;
-
 class Updater
 {
-    /**
-     * Flag which allow run data install/upgrade
-     *
-     * @var bool
-     */
-    protected $_isUpdatedSchema = false;
-
-    /**
-     * Application state model
-     *
-     * @var \Magento\Framework\App\State
-     */
-    protected $_appState;
-
     /**
      * @var ModuleListInterface
      */
@@ -65,59 +49,22 @@ class Updater
 
     /**
      * @param Updater\SetupFactory $setupFactory
-     * @param State $appState
      * @param ModuleListInterface $moduleList
      * @param ResourceResolverInterface $resourceResolver
      * @param Manager $moduleManager
      */
     public function __construct(
         Updater\SetupFactory $setupFactory,
-        State $appState,
         ModuleListInterface $moduleList,
         ResourceResolverInterface $resourceResolver,
         \Magento\Framework\Module\Manager $moduleManager
     ) {
-        $this->_appState = $appState;
         $this->_moduleList = $moduleList;
         $this->_resourceResolver = $resourceResolver;
         $this->_setupFactory = $setupFactory;
         $this->_moduleManager = $moduleManager;
     }
 
-    /**
-     * Apply database scheme updates whenever needed
-     *
-     * @return void
-     */
-    public function updateScheme()
-    {
-        \Magento\Framework\Profiler::start('apply_db_schema_updates');
-        $this->_appState->setUpdateMode(true);
-
-        $afterApplyUpdates = array();
-        foreach (array_keys($this->_moduleList->getModules()) as $moduleName) {
-            foreach ($this->_resourceResolver->getResourceList($moduleName) as $resourceName) {
-                if (!$this->_moduleManager->isDbSchemaUpToDate($moduleName, $resourceName)) {
-                    $setup = $this->_setupFactory->create($resourceName, $moduleName);
-                    $setup->applyUpdates();
-
-                    if ($setup->getCallAfterApplyAllUpdates()) {
-                        $afterApplyUpdates[] = $setup;
-                    }
-                }
-            }
-        }
-
-        /** @var $setup \Magento\Framework\Module\Updater\SetupInterface*/
-        foreach ($afterApplyUpdates as $setup) {
-            $setup->afterApplyAllUpdates();
-        }
-
-        $this->_appState->setUpdateMode(false);
-        $this->_isUpdatedSchema = true;
-        \Magento\Framework\Profiler::stop('apply_db_schema_updates');
-    }
-
     /**
      * Apply database data updates whenever needed
      *
diff --git a/lib/internal/Magento/Framework/Module/Updater/SetupInterface.php b/lib/internal/Magento/Framework/Module/Updater/SetupInterface.php
index 763bb4d3ccf..ee76a779fbe 100644
--- a/lib/internal/Magento/Framework/Module/Updater/SetupInterface.php
+++ b/lib/internal/Magento/Framework/Module/Updater/SetupInterface.php
@@ -35,25 +35,10 @@ interface SetupInterface
 
     const VERSION_COMPARE_GREATER = 1;
 
-    const TYPE_DB_INSTALL = 'install';
-
-    const TYPE_DB_UPGRADE = 'upgrade';
-
-    const TYPE_DB_ROLLBACK = 'rollback';
-
-    const TYPE_DB_UNINSTALL = 'uninstall';
-
     const TYPE_DATA_INSTALL = 'data-install';
 
     const TYPE_DATA_UPGRADE = 'data-upgrade';
 
-    /**
-     * Apply module resource install, upgrade and data scripts
-     *
-     * @return \Magento\Framework\Module\Updater\SetupInterface
-     */
-    public function applyUpdates();
-
     /**
      * Check call afterApplyAllUpdates method for setup class
      *
diff --git a/lib/internal/Magento/Framework/ObjectManager/Code/Generator/Converter.php b/lib/internal/Magento/Framework/ObjectManager/Code/Generator/Converter.php
index f440edcc552..97474b1e014 100644
--- a/lib/internal/Magento/Framework/ObjectManager/Code/Generator/Converter.php
+++ b/lib/internal/Magento/Framework/ObjectManager/Code/Generator/Converter.php
@@ -127,7 +127,7 @@ class Converter extends \Magento\Framework\Code\Generator\EntityAbstract
             'parameters' => [
                 [
                     'name' => $paramName,
-                    'type' => '\Magento\Framework\Service\Data\AbstractExtensibleObject'
+                    'type' => '\Magento\Framework\Api\AbstractExtensibleObject'
                 ]
             ],
             'body' => $body,
@@ -136,7 +136,7 @@ class Converter extends \Magento\Framework\Code\Generator\EntityAbstract
                 'tags' => [
                     [
                         'name' => 'param',
-                        'description' => '\Magento\Framework\Service\Data\AbstractExtensibleObject $' . $paramName,
+                        'description' => '\Magento\Framework\Api\AbstractExtensibleObject $' . $paramName,
                     ],
                     [
                         'name' => 'return',
diff --git a/lib/internal/Magento/Framework/ObjectManager/Code/Generator/Repository.php b/lib/internal/Magento/Framework/ObjectManager/Code/Generator/Repository.php
index bc43a467506..c536f7ecbb9 100644
--- a/lib/internal/Magento/Framework/ObjectManager/Code/Generator/Repository.php
+++ b/lib/internal/Magento/Framework/ObjectManager/Code/Generator/Repository.php
@@ -38,7 +38,7 @@ class Repository extends \Magento\Framework\Code\Generator\EntityAbstract
      */
     const NO_SUCH_ENTITY_EXCEPTION = '\\Magento\Framework\Exception\NoSuchEntityException';
     const INPUT_EXCEPTION = '\\Magento\Framework\Exception\InputException';
-    const SEARCH_CRITERIA = '\\Magento\Framework\Service\V1\Data\SearchCriteria';
+    const SEARCH_CRITERIA = '\\Magento\Framework\Api\SearchCriteria';
 
     /**
      * Retrieve class properties
diff --git a/lib/internal/Magento/Framework/ObjectManager/DefinitionFactory.php b/lib/internal/Magento/Framework/ObjectManager/DefinitionFactory.php
index e408f8e207f..2ebbe7ed3df 100644
--- a/lib/internal/Magento/Framework/ObjectManager/DefinitionFactory.php
+++ b/lib/internal/Magento/Framework/ObjectManager/DefinitionFactory.php
@@ -31,12 +31,12 @@ use Magento\Framework\ObjectManager\Definition\Runtime;
 use Magento\Framework\ObjectManager\Relations;
 use Magento\Framework\ObjectManager\Code\Generator;
 use Magento\Framework\Interception\Code\Generator as InterceptionGenerator;
-use Magento\Framework\Service\Code\Generator\Builder as BuilderGenerator;
-use Magento\Framework\Service\Code\Generator\DataBuilder as DataBuilderGenerator;
-use Magento\Framework\Service\Code\Generator\Mapper as MapperGenerator;
+use Magento\Framework\Api\Code\Generator\Builder as BuilderGenerator;
+use Magento\Framework\Api\Code\Generator\DataBuilder as DataBuilderGenerator;
+use Magento\Framework\Api\Code\Generator\Mapper as MapperGenerator;
 use Magento\Framework\ObjectManager\Code\Generator\Converter as ConverterGenerator;
-use Magento\Framework\Service\Code\Generator\SearchResults;
-use Magento\Framework\Service\Code\Generator\SearchResultsBuilder;
+use Magento\Framework\Api\Code\Generator\SearchResults;
+use Magento\Framework\Api\Code\Generator\SearchResultsBuilder;
 use Magento\Framework\ObjectManager\Profiler\Code\Generator as ProfilerGenerator;
 
 /**
@@ -118,19 +118,18 @@ class DefinitionFactory
             $definitionModel = $this->_definitionClasses[$this->_definitionFormat];
             $result = new $definitionModel($definitions);
         } else {
-            $autoloader = new \Magento\Framework\Autoload\IncludePath();
+            $fileResolver = new \Magento\Framework\Code\Generator\FileResolver();
             $generatorIo = new \Magento\Framework\Code\Generator\Io(
                 $this->_filesystemDriver,
-                $autoloader,
+                $fileResolver,
                 $this->_generationDir
             );
             $generator = new \Magento\Framework\Code\Generator(
-                $autoloader,
+                $fileResolver,
                 $generatorIo,
                 array(
-
                     SearchResultsBuilder::ENTITY_TYPE
-                        => '\Magento\Framework\Service\Code\Generator\SearchResultsBuilder',
+                        => '\Magento\Framework\Api\Code\Generator\SearchResultsBuilder',
                     Generator\Factory::ENTITY_TYPE
                         => '\Magento\Framework\ObjectManager\Code\Generator\Factory',
                     Generator\Proxy::ENTITY_TYPE
@@ -140,20 +139,20 @@ class DefinitionFactory
                     InterceptionGenerator\Interceptor::ENTITY_TYPE
                         => '\Magento\Framework\Interception\Code\Generator\Interceptor',
                     DataBuilderGenerator::ENTITY_TYPE
-                    => '\Magento\Framework\Service\Code\Generator\DataBuilder',
+                        => '\Magento\Framework\Api\Code\Generator\DataBuilder',
                     BuilderGenerator::ENTITY_TYPE
-                        => '\Magento\Framework\Service\Code\Generator\Builder',
+                        => '\Magento\Framework\Api\Code\Generator\Builder',
                     MapperGenerator::ENTITY_TYPE
-                        => '\Magento\Framework\Service\Code\Generator\Mapper',
+                        => '\Magento\Framework\Api\Code\Generator\Mapper',
                     SearchResults::ENTITY_TYPE
-                        => '\Magento\Framework\Service\Code\Generator\SearchResults',
+                        => '\Magento\Framework\Api\Code\Generator\SearchResults',
                     ConverterGenerator::ENTITY_TYPE
                         => '\Magento\Framework\ObjectManager\Code\Generator\Converter',
                     ProfilerGenerator\Logger::ENTITY_TYPE
                         => '\Magento\Framework\ObjectManager\Profiler\Code\Generator\Logger'
                 )
             );
-            $autoloader = new \Magento\Framework\Code\Generator\Autoloader($generator);
+            $autoloader = new \Magento\Framework\Code\Generator\Autoloader($generator, $fileResolver);
             spl_autoload_register(array($autoloader, 'load'));
 
             $result = new Runtime();
diff --git a/lib/internal/Magento/Framework/Pricing/PriceCurrencyInterface.php b/lib/internal/Magento/Framework/Pricing/PriceCurrencyInterface.php
index c2331005300..ebea10c5f85 100644
--- a/lib/internal/Magento/Framework/Pricing/PriceCurrencyInterface.php
+++ b/lib/internal/Magento/Framework/Pricing/PriceCurrencyInterface.php
@@ -87,4 +87,13 @@ interface PriceCurrencyInterface
      * @return float
      */
     public function round($price);
+
+    /**
+     * Get currency model
+     *
+     * @param null|string|bool|int|\Magento\Store\Model\Store $store
+     * @param \Magento\Directory\Model\Currency|string|null $currency
+     * @return \Magento\Directory\Model\Currency
+     */
+    public function getCurrency($store = null, $currency = null);
 }
diff --git a/lib/internal/Magento/Framework/Pricing/Render/Amount.php b/lib/internal/Magento/Framework/Pricing/Render/Amount.php
index 70453920a8d..62eff80c601 100644
--- a/lib/internal/Magento/Framework/Pricing/Render/Amount.php
+++ b/lib/internal/Magento/Framework/Pricing/Render/Amount.php
@@ -152,6 +152,14 @@ class Amount extends Template implements AmountRenderInterface
         return $this->price;
     }
 
+    /**
+     * @return string
+     */
+    public function getDisplayCurrencyCode()
+    {
+        return $this->priceCurrency->getCurrency()->getCurrencyCode();
+    }
+
     /**
      * @return bool
      */
diff --git a/lib/internal/Magento/Framework/Pricing/Render/AmountRenderInterface.php b/lib/internal/Magento/Framework/Pricing/Render/AmountRenderInterface.php
index ce6ca6e6fcf..3bfaed7f6f8 100644
--- a/lib/internal/Magento/Framework/Pricing/Render/AmountRenderInterface.php
+++ b/lib/internal/Magento/Framework/Pricing/Render/AmountRenderInterface.php
@@ -63,6 +63,11 @@ interface AmountRenderInterface
      */
     public function getPrice();
 
+    /**
+     * @return string
+     */
+    public function getDisplayCurrencyCode();
+
     /**
      * @return string
      */
diff --git a/app/code/Magento/Webapi/Model/DataObjectProcessor.php b/lib/internal/Magento/Framework/Reflection/DataObjectProcessor.php
similarity index 95%
rename from app/code/Magento/Webapi/Model/DataObjectProcessor.php
rename to lib/internal/Magento/Framework/Reflection/DataObjectProcessor.php
index 6189543202e..b50045e3020 100644
--- a/app/code/Magento/Webapi/Model/DataObjectProcessor.php
+++ b/lib/internal/Magento/Framework/Reflection/DataObjectProcessor.php
@@ -22,16 +22,14 @@
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
-namespace Magento\Webapi\Model;
+namespace Magento\Framework\Reflection;
 
 use Zend\Code\Reflection\ClassReflection;
 use Zend\Code\Reflection\MethodReflection;
-use Magento\Framework\Service\SimpleDataObjectConverter;
-use Magento\Framework\Service\Data\AttributeValue;
+use Magento\Framework\Api\SimpleDataObjectConverter;
+use Magento\Framework\Api\AttributeValue;
 use Magento\Framework\Model\AbstractExtensibleModel;
 use Magento\Framework\ObjectManager;
-use Magento\Webapi\Model\Config\ClassReflector\TypeProcessor;
-use Magento\Webapi\Model\Cache\Type as WebapiCache;
 
 /**
  * Data object processor for de-serialization using class reflection
@@ -45,7 +43,7 @@ class DataObjectProcessor
     const BASE_MODEL_CLASS = 'Magento\Framework\Model\AbstractExtensibleModel';
 
     /**
-     * @var WebapiCache
+     * @var \Magento\Framework\Cache\FrontendInterface
      */
     protected $cache;
 
@@ -67,10 +65,10 @@ class DataObjectProcessor
     /**
      * Initialize dependencies.
      *
-     * @param WebapiCache $cache
+     * @param \Magento\Framework\Cache\FrontendInterface $cache
      * @param TypeProcessor $typeProcessor
      */
-    public function __construct(WebapiCache $cache, TypeProcessor $typeProcessor)
+    public function __construct(\Magento\Framework\Cache\FrontendInterface $cache, TypeProcessor $typeProcessor)
     {
         $this->cache = $cache;
         $this->typeProcessor = $typeProcessor;
@@ -194,7 +192,7 @@ class DataObjectProcessor
     /**
      * Convert array of custom_attributes to use flat array structure
      *
-     * @param \Magento\Framework\Api\Data\AttributeInterface[] $customAttributes
+     * @param \Magento\Framework\Api\AttributeInterface[] $customAttributes
      * @return array
      */
     protected function convertCustomAttributes($customAttributes)
@@ -209,7 +207,7 @@ class DataObjectProcessor
     /**
      * Convert custom_attribute object to use flat array structure
      *
-     * @param \Magento\Framework\Api\Data\AttributeInterface $customAttribute
+     * @param \Magento\Framework\Api\AttributeInterface $customAttribute
      * @return array
      */
     protected function convertCustomAttribute($customAttribute)
diff --git a/app/code/Magento/Webapi/Model/Config/ClassReflector/TypeProcessor.php b/lib/internal/Magento/Framework/Reflection/TypeProcessor.php
similarity index 95%
rename from app/code/Magento/Webapi/Model/Config/ClassReflector/TypeProcessor.php
rename to lib/internal/Magento/Framework/Reflection/TypeProcessor.php
index ea2581b3629..6c52d8107a1 100644
--- a/app/code/Magento/Webapi/Model/Config/ClassReflector/TypeProcessor.php
+++ b/lib/internal/Magento/Framework/Reflection/TypeProcessor.php
@@ -21,10 +21,10 @@
  * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
-namespace Magento\Webapi\Model\Config\ClassReflector;
+namespace Magento\Framework\Reflection;
 
 use Zend\Code\Reflection\ClassReflection;
-use Magento\Webapi\Exception as WebapiException;
+use Magento\Framework\Exception\SerializationException;
 
 /**
  * Type processor of config reader properties
@@ -442,29 +442,37 @@ class TypeProcessor
      * @param int|string|float|int[]|string[]|float[] $value
      * @param string $type Convert given value to the this simple type
      * @return int|string|float|int[]|string[]|float[] Return the value which is converted to type
-     * @throws \Magento\Webapi\Exception
+     * @throws SerializationException
      *
      * @SuppressWarnings(PHPMD.CyclomaticComplexity)
      */
     public function processSimpleAndAnyType($value, $type)
     {
-        $invalidTypeMsg = 'Invalid type for value :"%s". Expected Type: "%s".';
         $isArrayType = $this->isArrayType($type);
         if ($isArrayType && is_array($value)) {
             $arrayItemType = $this->getArrayItemType($type);
             foreach (array_keys($value) as $key) {
                 if ($value !== null && !settype($value[$key], $arrayItemType)) {
-                    throw new WebapiException(sprintf($invalidTypeMsg, $value, $type));
+                    throw new SerializationException(
+                        SerializationException::TYPE_MISMATCH,
+                        ['value' => $value, 'type' => $type]
+                    );
                 }
             }
         } elseif ($isArrayType && is_null($value)) {
             return null;
         } elseif (!$isArrayType && !is_array($value)) {
             if ($value !== null && $type !== self::ANY_TYPE && !settype($value, $type)) {
-                throw new WebapiException(sprintf($invalidTypeMsg, $value, $type));
+                throw new SerializationException(
+                    SerializationException::TYPE_MISMATCH,
+                    ['value' => (string)$value, 'type' => $type]
+                );
             }
         } else {
-            throw new WebapiException(sprintf($invalidTypeMsg, (string)$value, $type));
+            throw new SerializationException(
+                SerializationException::TYPE_MISMATCH,
+                ['value' => (string)$value, 'type' => $type]
+            );
         }
         return $value;
     }
diff --git a/lib/internal/Magento/Framework/Serialization/DataBuilderFactory.php b/lib/internal/Magento/Framework/Serialization/DataBuilderFactory.php
new file mode 100644
index 00000000000..c996d3a8b64
--- /dev/null
+++ b/lib/internal/Magento/Framework/Serialization/DataBuilderFactory.php
@@ -0,0 +1,65 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Framework\Serialization;
+
+use Magento\Framework\ObjectManager;
+
+/**
+ * Factory used to construct Data Builder based on interface name
+ */
+class DataBuilderFactory
+{
+    /**
+     * @var ObjectManager
+     */
+    protected $objectManager;
+
+    /**
+     * @param ObjectManager $objectManager
+     */
+    public function __construct(ObjectManager $objectManager)
+    {
+        $this->objectManager = $objectManager;
+    }
+
+    /**
+     * Returns a builder for a given class name.
+     *
+     * @param string $className
+     * @return \Magento\Framework\Api\ExtensibleDataBuilderInterface Builder Instance
+     */
+    public function getDataBuilder($className)
+    {
+        $interfaceSuffix = 'Interface';
+        if (substr($className, -strlen($interfaceSuffix)) === $interfaceSuffix) {
+            /** If class name ends with Interface, replace it with Data suffix */
+            $builderClassName = substr($className, 0, -strlen($interfaceSuffix)) . 'Data';
+        } else {
+            $builderClassName = $className;
+        }
+        $builderClassName .= 'Builder';
+        return $this->objectManager->create($builderClassName);
+    }
+}
diff --git a/lib/internal/Magento/Framework/Service/Code/Generator/DataBuilder.php b/lib/internal/Magento/Framework/Service/Code/Generator/DataBuilder.php
deleted file mode 100644
index 95fa50a573a..00000000000
--- a/lib/internal/Magento/Framework/Service/Code/Generator/DataBuilder.php
+++ /dev/null
@@ -1,193 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-
-namespace Magento\Framework\Service\Code\Generator;
-
-use Magento\Framework\Code\Generator\EntityAbstract;
-use Zend\Code\Reflection\ClassReflection;
-
-/**
- * Class Builder
- */
-class DataBuilder extends EntityAbstract
-{
-    /**
-     * Entity type
-     */
-    const ENTITY_TYPE = 'dataBuilder';
-
-    /**
-     * Data Model property name
-     */
-    const DATA_PROPERTY_NAME = 'data';
-
-    /**
-     * Retrieve class properties
-     *
-     * @return array
-     */
-    protected function _getClassProperties()
-    {
-        return [];
-    }
-
-    /**
-     * Get default constructor definition for generated class
-     *
-     * @return array
-     */
-    protected function _getDefaultConstructorDefinition()
-    {
-        $constructorDefinition = [
-            'name' => '__construct',
-            'parameters' => [
-                ['name' => 'objectManager', 'type' => '\Magento\Framework\ObjectManager']
-            ],
-            'docblock' => [
-                'shortDescription' => 'Initialize the builder',
-                'tags' => [['name' => 'param', 'description' => '\Magento\Framework\ObjectManager $objectManager']]
-            ],
-            'body' => "parent::__construct(\$objectManager, "
-            . "'" . $this->_getSourceClassName() . "Interface');"
-        ];
-
-        return $constructorDefinition;
-    }
-
-    /**
-     * Return a list of methods for class generator
-     *
-     * @return array
-     */
-    protected function _getClassMethods()
-    {
-        $methods = [];
-        $className = $this->_getSourceClassName();
-        $reflectionClass = new \ReflectionClass($className);
-        $lowerCaseClassName = strtolower($className);
-        $publicMethods = $reflectionClass->getMethods(\ReflectionMethod::IS_PUBLIC);
-        foreach ($publicMethods as $method) {
-            //since methods are sorted - lowest inheritance first, no need to loop through everything
-            if ($lowerCaseClassName !== strtolower($method->class)) {
-                break;
-            }
-            if ($this->canUseMethodForGeneration($method)) {
-                $methods[] = $this->_getMethodInfo($method);
-            }
-        }
-        $methods[] = $this->_getDefaultConstructorDefinition();
-        return $methods;
-    }
-
-    /**
-     * Check if the specified method should be used during generation builder generation.
-     *
-     * @param \ReflectionMethod $method
-     * @return bool
-     */
-    protected function canUseMethodForGeneration($method)
-    {
-        $isGetter = (substr($method->getName(), 0, 3) == 'get');
-        $isSuitableMethodType = !($method->isConstructor() || $method->isFinal()
-            || $method->isStatic() || $method->isDestructor());
-        $isExcludedFromGeneration = in_array($method->getName(), array('__sleep', '__wakeup', '__clone'));
-        $isSuitableClass = $method->class !== 'Magento\Framework\Api\Data\ExtensibleDataInterface';
-        return $isGetter && $isSuitableMethodType && !$isExcludedFromGeneration && $isSuitableClass;
-    }
-
-    /**
-     * Retrieve method info
-     *
-     * @param \ReflectionMethod $method
-     * @return array
-     */
-    protected function _getMethodInfo(\ReflectionMethod $method)
-    {
-        $propertyName = substr($method->getName(), 3);
-
-        $returnType = (new ClassReflection($this->_getSourceClassName() . 'Interface'))
-            ->getMethod($method->getName())
-            ->getDocBlock()
-            ->getTag('return')
-            ->getType();
-
-        $methodInfo = [
-            'name' => 'set' . $propertyName,
-            'parameters' => [
-                ['name' => lcfirst($propertyName)]
-            ],
-            'body' => "\$this->" . self::DATA_PROPERTY_NAME . "['"
-                . strtolower(preg_replace('/(.)([A-Z])/', "$1_$2", $propertyName))
-                . "'] = \$" . lcfirst($propertyName) . ";" . PHP_EOL . "return \$this;",
-            'docblock' => array('shortDescription' => '@param ' . $returnType . " \$" . lcfirst($propertyName))
-        ];
-
-        return $methodInfo;
-    }
-
-    /**
-     * Validate data
-     *
-     * @return bool
-     */
-    protected function _validateData()
-    {
-        $result = parent::_validateData();
-
-        if ($result) {
-            $sourceClassName = $this->_getSourceClassName();
-            $resultClassName = $this->_getResultClassName();
-
-            if ($resultClassName !== $sourceClassName . ucfirst(self::ENTITY_TYPE)) {
-                $this->_addError(
-                    'Invalid Builder class name [' . $resultClassName . ']. Use '
-                    . $sourceClassName
-                    . ucfirst(self::ENTITY_TYPE)
-                );
-                $result = false;
-            }
-        }
-        return $result;
-    }
-
-    /**
-     * Generate code
-     *
-     * @return string
-     */
-    protected function _generateCode()
-    {
-        $this->_classGenerator->setName(
-            $this->_getResultClassName()
-        )->addProperties(
-            $this->_getClassProperties()
-        )->addMethods(
-            $this->_getClassMethods()
-        )->setClassDocBlock(
-            $this->_getClassDocBlock()
-        )->setExtendedClass('\Magento\Framework\Service\Data\ExtensibleDataBuilder');
-
-        return $this->_getGeneratedCode();
-    }
-}
diff --git a/lib/internal/Magento/Framework/Service/Data/ExtensibleDataBuilder.php b/lib/internal/Magento/Framework/Service/Data/ExtensibleDataBuilder.php
deleted file mode 100644
index b5f3228f7ba..00000000000
--- a/lib/internal/Magento/Framework/Service/Data/ExtensibleDataBuilder.php
+++ /dev/null
@@ -1,95 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-
-namespace Magento\Framework\Service\Data;
-
-use Magento\Framework\Api\Data\ExtensibleDataBuilderInterface;
-use Magento\Framework\Model\AbstractExtensibleModel;
-use Magento\Framework\ObjectManager;
-
-/**
- * Implementation for \Magento\Framework\Api\Data\ExtensibleDataBuilderInterface.
- */
-class ExtensibleDataBuilder implements ExtensibleDataBuilderInterface
-{
-    /**
-     * @var string
-     */
-    protected $modelClassInterface;
-
-    /**
-     * @var array
-     */
-    protected $data;
-
-    /**
-     * @var ObjectManager
-     */
-    protected $objectManager;
-
-    /**
-     * Initialize the builder
-     *
-     * @param ObjectManager $objectManager
-     * @param string $modelClassInterface
-     */
-    public function __construct(ObjectManager $objectManager, $modelClassInterface)
-    {
-        $this->objectManager = $objectManager;
-        $this->modelClassInterface = $modelClassInterface;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setCustomAttribute(\Magento\Framework\Api\Data\AttributeInterface $attribute)
-    {
-        // Store as an associative array for easier lookup and processing
-        $this->data[AbstractExtensibleModel::CUSTOM_ATTRIBUTES_KEY][$attribute->getAttributeCode()]
-            = $attribute;
-        return $this;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function setCustomAttributes(array $attributes)
-    {
-        foreach ($attributes as $attribute) {
-            $this->setCustomAttribute($attribute);
-        }
-        return $this;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function create()
-    {
-        return $this->objectManager->create(
-            $this->modelClassInterface,
-            ['data' => $this->data]
-        );
-    }
-}
diff --git a/lib/internal/Magento/Framework/Shell.php b/lib/internal/Magento/Framework/Shell.php
index 9aa386094d1..f595efc91b8 100644
--- a/lib/internal/Magento/Framework/Shell.php
+++ b/lib/internal/Magento/Framework/Shell.php
@@ -78,7 +78,7 @@ class Shell implements ShellInterface
         $this->log($output);
         if ($exitCode) {
             $commandError = new \Exception($output, $exitCode);
-            throw new Exception("Command `{$command}` returned non-zero exit code.", 0, $commandError);
+            throw new Exception("Command returned non-zero exit code:\n`{$command}`", 0, $commandError);
         }
         return $output;
     }
diff --git a/lib/internal/Magento/Framework/Shell/ComplexParameter.php b/lib/internal/Magento/Framework/Shell/ComplexParameter.php
new file mode 100644
index 00000000000..8b7de43900f
--- /dev/null
+++ b/lib/internal/Magento/Framework/Shell/ComplexParameter.php
@@ -0,0 +1,113 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright  Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Framework\Shell;
+
+/**
+ * A parser for complex parameters in command-line arguments
+ *
+ * Transforms parameter formatted as a URL query string into an array
+ */
+class ComplexParameter
+{
+    /**
+     * Default regex pattern for searching the parameter
+     */
+    const DEFAULT_PATTERN = '/^\-\-%s=(.+)$/';
+
+    /**
+     * Argument name
+     *
+     * @var string
+     */
+    private $name;
+
+    /**
+     * Regex pattern for searching the parameter among arguments
+     *
+     * @var string
+     */
+    private $pcre;
+
+    /**
+     * Constructor
+     *
+     * @param string $name
+     * @param string $pattern
+     */
+    public function __construct($name, $pattern = self::DEFAULT_PATTERN)
+    {
+        $this->name = $name;
+        $this->pcre = sprintf($pattern, preg_quote($name, '/'));
+    }
+
+    /**
+     * Searches and parses the value from an array of arguments
+     *
+     * @param string[] $input
+     * @return array
+     */
+    public function getFromArray($input)
+    {
+        foreach ($input as $row) {
+            $result = $this->getFromString($row);
+            if ($result) {
+                return $result;
+            }
+        }
+        return [];
+    }
+
+    /**
+     * Parses the value from a specified argument string
+     *
+     * @param string $string
+     * @return array
+     */
+    public function getFromString($string)
+    {
+        if (preg_match($this->pcre, $string, $matches)) {
+            parse_str($matches[1], $result);
+            return $result;
+        }
+        return [];
+    }
+
+    /**
+     * Searches the value parameter in an "argv" array and merges it recursively into specified array
+     *
+     * @param array $server
+     * @param array $into
+     * @return array
+     */
+    public function mergeFromArgv($server, array $into = [])
+    {
+        $result = $into;
+        if (isset($server['argv'])) {
+            $value = $this->getFromArray($server['argv']);
+            $result = array_replace_recursive($into, $value);
+        }
+        return $result;
+    }
+}
diff --git a/lib/internal/Magento/Framework/View/Element/AbstractBlock.php b/lib/internal/Magento/Framework/View/Element/AbstractBlock.php
index 1eb8915cdd2..689727d2ba0 100644
--- a/lib/internal/Magento/Framework/View/Element/AbstractBlock.php
+++ b/lib/internal/Magento/Framework/View/Element/AbstractBlock.php
@@ -833,9 +833,9 @@ abstract class AbstractBlock extends \Magento\Framework\Object implements BlockI
         $namespace = substr(
             $className,
             0,
-            strpos($className, \Magento\Framework\Autoload\IncludePath::NS_SEPARATOR . 'Block')
+            strpos($className, '\\' . 'Block')
         );
-        return str_replace(\Magento\Framework\Autoload\IncludePath::NS_SEPARATOR, '_', $namespace);
+        return str_replace('\\', '_', $namespace);
     }
 
     /**
diff --git a/lib/internal/Magento/Framework/View/Result/Page.php b/lib/internal/Magento/Framework/View/Result/Page.php
index 341a72be0d0..5dbfd087d86 100644
--- a/lib/internal/Magento/Framework/View/Result/Page.php
+++ b/lib/internal/Magento/Framework/View/Result/Page.php
@@ -207,12 +207,13 @@ class Page extends Layout
         $this->pageConfig->publicBuild();
         if ($this->getPageLayout()) {
             $config = $this->getConfig();
-
             $this->addDefaultBodyClasses();
+            $addBlock = $this->getLayout()->getBlock('head.additional'); // todo
             $requireJs = $this->getLayout()->getBlock('require.js');
             $this->assign([
                 'requireJs' => $requireJs ? $requireJs->toHtml() : null,
                 'headContent' => $this->pageConfigRenderer->renderHeadContent(),
+                'headAdditional' => $addBlock ? $addBlock->toHtml() : null,
                 'htmlAttributes' => $this->pageConfigRenderer->renderElementAttributes($config::ELEMENT_TYPE_HTML),
                 'headAttributes' => $this->pageConfigRenderer->renderElementAttributes($config::ELEMENT_TYPE_HEAD),
                 'bodyAttributes' => $this->pageConfigRenderer->renderElementAttributes($config::ELEMENT_TYPE_BODY)
diff --git a/lib/internal/Magento/Framework/composer.json b/lib/internal/Magento/Framework/composer.json
index 8b7397ef539..41d9cff4101 100644
--- a/lib/internal/Magento/Framework/composer.json
+++ b/lib/internal/Magento/Framework/composer.json
@@ -2,7 +2,7 @@
     "name": "magento/framework",
     "description": "N/A",
     "type": "magento2-library",
-    "version": "0.1.0-alpha102",
+    "version": "0.1.0-alpha103",
     "require": {
         "php": "~5.4.11|~5.5.0",
         "ext-spl": "*",
diff --git a/lib/web/css/docs/forms.html b/lib/web/css/docs/forms.html
index 8314cec9051..805948386e3 100644
--- a/lib/web/css/docs/forms.html
+++ b/lib/web/css/docs/forms.html
@@ -1,192 +1,192 @@
-<!DOCTYPE html><html><head><title>forms | Magento UI library
-</title><meta charset="utf-8"><style>*{-moz-box-sizing:border-box;box-sizing:border-box;margin:0;padding:0;border:0}body{padding:60px 0 40px;background-color:hsl(207,10%,90%);color:hsl(207,5%,30%)}.container{max-width:1300px;margin:0 auto;padding:0 20px}.section{position:relative;margin-bottom:20px}.docs{position:relative;z-index:2;width:68%;min-height:200px;background-color:hsl(207,0%,100%);background-clip:padding-box;border:1px solid hsla(207,5%,5%,.1);border-radius:5px;box-shadow:0 0 3px hsla(207,5%,5%,.1)}.code{position:absolute;top:5px;bottom:5px;right:0;z-index:1;width:33%;padding:10px 10px 10px 20px;border-radius:0 5px 5px 0;border:1px solid hsla(207,20%,10%,.1);background-color:hsla(207,20%,95%,.9);background-clip:padding-box;opacity:.5;-webkit-transition:opacity .4s;-moz-transition:opacity .4s;-o-transition:opacity .4s;transition:opacity .4s}.code:hover{opacity:1}.preview{background:hsl(207,0%,100%);border-top:1px solid hsl(207,30%,95%);position:relative;z-index:1}.preview-code+.preview{margin-top:0;border-top:0}.preview iframe{display:block;width:100%;height:100%;overflow:hidden}.preview-code{position:relative;z-index:2;display:block;width:100%;color:hsl(207,9%,37%);max-height:200px;padding:10px 20px;overflow-y:auto;background:hsl(207,30%,95%);border:1px solid hsl(207,30%,85%);border-left:0;border-right;box-shadow:inset 0 1px 2px hsla(207,30%,10%,.1);line-height:1.1!important;resize:none}.preview-code:focus{outline:0;background:hsl(207,30%,97%);box-shadow:inset 0 1px 2px hsla(207,30%,10%,.1),0 0 5px hsla(207,75%,75%,.9)}.preview-code:last-child{border-bottom:0;border-radius:0 0 5px 5px}.resizeable{padding:15px;overflow:auto;background:hsl(207,0%,100%);box-shadow:0 0 2px hsla(207,10%,20%,.2);resize:both}.preview-code,pre{white-space:pre-wrap;word-wrap:break-word;overflow-y:auto}.code pre{height:100%;margin-top:0}.bar{position:fixed;left:0;right:0;z-index:1010;min-height:40px;line-height:40px;background-image:-webkit-linear-gradient(hsla(207,10%,35%,.97),hsla(207,5%,25%,.92));background-image:-moz-linear-gradient(hsla(207,10%,35%,.97),hsla(207,5%,25%,.92));background-image:-o-linear-gradient(hsla(207,10%,35%,.97),hsla(207,5%,25%,.92));background-image:linear-gradient(hsla(207,10%,35%,.97),hsla(207,5%,25%,.92))}.bar.top{top:0;box-shadow:0 1px 2px hsla(207,5%,0%,.2)}.bar.bottom{bottom:0;box-shadow:0 -1px 2px hsla(207,5%,0%,.2)}.bar ul{margin:0!important}.bar li{display:block;list-style:none}.bar .icon path{fill:hsla(27,10%,75%,.75)}.docs .icon path{fill:hsla(207,10%,75%,.5)}.docs .permalink:hover .icon path{fill:hsl(207,10%,75%)}.bar button{color:hsla(27,10%,75%,.75)}.bar button:hover .icon path,.bar button.is-active .icon path{fill:hsl(27,10%,85%)}.bar button:hover,.bar button.is-active{color:hsl(27,10%,85%)}.bar .icon{vertical-align:middle;display:inline-block}.bar,.bar a,.bar a:visited{color:hsl(27,10%,85%);text-shadow:1px 1px 0 hsla(27,5%,0%,.5)}.bar a:hover,.bar a.is-active{color:hsl(27,10%,95%);text-shadow:1px 1px 0 hsla(27,5%,0%,1);text-decoration:none}.brand{float:left;margin-right:20px;font-weight:700;font-size:16px;text-decoration:none}.brand,a.brand,a.brand:visited{color:hsl(27,5%,5%);text-shadow:1px 1px 0 hsla(27,5%,100%,.2)}.brand:hover,a.brand:hover{color:hsl(27,5%,0%);text-shadow:1px 1px 0 hsla(27,5%,100%,.3);text-decoration:none}.menu{font-size:12px}.menu>li{float:left;position:relative}.menu a{display:block;margin-right:15px}.dropdown-toggle{position:relative;padding-right:15px}.dropdown-toggle:after{display:block;position:absolute;right:0;top:18px;content:'';border:4px solid;border-left-color:transparent;border-right-color:transparent;border-bottom-color:transparent}.nav-results,.dropdown{position:absolute;z-index:1020;top:32px;left:-16px;width:175px;max-height:500px;padding:10px 0;overflow-y:auto;word-wrap:break-word;font-size:11px;line-height:20px;background-color:hsla(207,10%,25%,.97);border:1px solid hsla(207,5%,70%,.3);border-radius:3px;box-shadow:0 0 3px hsla(207,5%,0%,.2)}.toc-list{width:200px}.nav-results{right:0;width:200px;left:auto;padding:5px 0}.nav-results-filename{display:block;font-size:10px;opacity:.75}.nav-results a{display:block;line-height:15px;padding:5px 10px}.nav-results li:not([hidden])~li a{border-top:1px solid hsla(27,10%,90%,.1)}.dropdown a{padding:0 15px}.dropdown li:hover{background-color:hsl(207,10%,22%)}.nav{float:right;position:relative}.nav input[type="search"]{padding:2px 4px;color:#fff;width:150px;border:1px solid hsla(207,5%,0%,.3);background:hsla(207,12%,40%,.9);box-shadow:inset 1px 1px 3px hsla(207,5%,0%,.05),1px 1px 0 hsla(207,5%,100%,.05);border-radius:10px;-webkit-appearance:textfield}.nav input[type="search"]:focus{outline:0;background:hsla(207,7%,45%,.9)}.settings{text-align:center}.bar button{display:inline-block;vertical-align:middle;padding:0 5px;margin:0 3px;background:transparent}.bar button:first-child{margin-left:0}.settings .auto{line-height:32px;font-size:11px;font-weight:700;letter-spacing:-1px;text-shadow:none;text-transform:uppercase}body{font-family:sans-serif;font-size:14px;line-height:1.618}.docs pre,p,ol,ul,dl,figure,blockquote,table{margin-left:20px;margin-right:20px}.preview,.docs pre,p,ol,ul,dl,figure,blockquote,table{margin-top:10px}ul ul,ol ol,ul ol,ol ul,blockquote p:last-child{margin-top:0}ul,ol{padding-left:1.5em}p:last-child,ol:last-child,ul:last-child,dl:last-child{margin-bottom:20px}hr,h1,h2,h3,h4,h5,h6{margin:1em 20px .5em}h1:first-of-type{margin-top:20px}h1,h2,h3,h4,h5,h6{line-height:1.2;color:hsl(207,10%,50%)}h1 a,h1 a:hover,h1 a:visited{color:inherit;text-decoration:inherit}h1{font-size:3.052em;font-weight:400;color:hsl(207,10%,45%)}h2{font-size:1.953em}h3{font-size:1.536em}h1,h2,h3{letter-spacing:-.025em}h4{font-size:1.25em}h5{font-size:1em;text-transform:uppercase}h6{font-size:1em}.permalink{position:absolute;top:15px;right:15px}a{color:hsl(207,90%,50%);text-decoration:none}a:hover{color:hsl(207,95%,40%);text-decoration:underline}a:visited{color:hsl(207,100%,35%)}.preview-code,pre,code,var{font-style:normal;font-family:"Ubuntu Mono","Andale Mono","DejaVu Sans Mono","Monaco","Bitstream Vera Sans Mono","Consolas","Lucida Console",monospace;font-size:12px}.docs pre,code,var{padding:.1em 3px;background:hsla(207,5%,0%,.025);border:1px solid hsla(207,5%,0%,.05);border-radius:3px}.code pre{line-height:1.1!important}pre code{padding:0;background:transparent;border:0}.cf:before,.cf:after{content:'';display:table}.cf:after{clear:both}[unselectable="on"]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}[hidden]{display:none!important}small{font-size:85%;opacity:.9}.docs .vars_list{width:100%}.docs .vars_list th,.docs .vars_list td{width:33%}.docs pre th{text-align:left}.docs pre table{border-collapse:collapse;margin:0}.docs th,.docs td{border:0;padding:9px 10px 9px 0;vertical-align:top}.docs tr th:last-child,.docs tr td:last-child{padding-right:0}.docs pre th{font-weight:400}.docs pre th.vars_head{border-bottom:1px solid #e5e5e5;color:#707070;white-space:nowrap}.docs pre th.vars_section{border-bottom:1px solid #e5e5e5;color:#333;font-size:18px;padding-top:30px}.vars_value{color:#338bb8}.docs li p{margin:0 0 20px}.dropdown a{text-transform:capitalize}#default-button #default-button-big+.preview+.preview-code{display:block}#actions-toolbar-alignment .preview-code,#reverse-primary-and-secondary-blocks .preview-code,#actions-toolbar-indents-customizations .preview-code,#actionstoolbarclearfloats-mixin .preview-code,#responsive-actions-toolbar .preview-code,#button-with-gradient-background .preview-code,#primary-button .preview-code,#button-as-an-icon .preview-code,#button-with-an-icon-on-the-left-or-right-side-of-the-text .preview-code,#button-with-fixed-width .preview-code,#button-as-a-link .preview-code,#link-as-a-button .preview-code,#buttonstyled-breadcrumbs-with-gradient-background-border-and-no-separating-symbol .preview-code,#breadcrumbs-with-solid-background .preview-code,#pagination-without-label-with-solid-background .preview-code,#pagination-with-label-and-text-previousnext-links .preview-code,#pagination-with-label-and-gradient-background-on-links .preview-code,#fixed-height-popup .preview-code,#fixed-content-height-popup .preview-code,#margins-for-header-content-and-footer-block-in-popup .preview-code,#popup-titles-with-styled-as-theme-headings .preview-code,#popup-action-toolbar .preview-code,#popup-close-button-without-an-icon .preview-code,#modify-icon-of-popup-close-button .preview-code,#modify-overlay-styles .preview-code,#rating-summary-multiple-ratings .preview-code,#rating-summary-hide-label .preview-code,#rating-summary-icons-symbol .preview-code,#rating-summary-icons-color .preview-code,#rating-summary-set-number-of-icons .preview-code,#rating-summary .preview-code,#rating-with-vote-icon-symbol .preview-code,#rating-with-vote-setup-icons-colors .preview-code,#rating-with-vote-setup-number-of-icons .preview-code,#tabs-with-content-top-border .preview-code,#accordion-mixin-variables .preview-code,#tabs-base .preview-code,#accordion-base .preview-code,#warning-message .preview-code,#error-message .preview-code,#success-message .preview-code,#notice-message .preview-code,#message-with-inner-icon .preview-code,#message-with-lateral-icon .preview-code,#custom-message-style .preview-code,#modify-dropdown-list-styles .preview-code,#dropdown-with-icon-customization .preview-code,#split-button-button-styling .preview-code,#split-button-icon-customization .preview-code,#split-button-dropdown-list-customization .preview-code,#table-cells-resize .preview-code,#table-caption .preview-code,#table-typography .preview-code,#table-background-customization .preview-code,#table-borders-customization .preview-code,#table-without-borders .preview-code,#table-with-horizontal-borders .preview-code,#table-with-vertical-borders .preview-code,#striped-table .preview-code,#responsive-table-technics-1 .preview-code,#responsive-table-technics-2 .preview-code,#fontsize-mixin .preview-code,#word-breaking-mixin .preview-code,#word-breaking-mixin .preview-code,#text-overflow-mixin .preview-code,#text-hide .preview-code,#hyphens .preview-code,#font-style-and-color .preview-code,#reset-list-styles .preview-code,#inlineblock-list-item-styling .preview-code,#link-styling-mixin .preview-code,#heading-styling-mixin .preview-code,#icon-with-image-or-sprite .preview-code,#change-the-size-of-font-icon .preview-code,#sprite-and-font-icons-for-blank-theme .preview-code,#icon-position-for-an-icon-with-image-or-sprite .preview-code{display:none}article[id$="-variables"] .docs,#resets .docs,#ratings .docs,#tabs-and-accordions .docs,#messages .docs,#dropdown-and-split-buttons-mixins .docs,#font-face-mixin .docs,#layout .docs,#forms-mixins .docs,#including-magento-ui-library-to-your-theme .docs,#global-forms-elements-customization .docs,#page-layouts .docs,#layout-column .docs,#layout-width .docs,#mobile-off-canvas-navigation .docs,#desktop-navigation .docs{width:100%}article[id$="-variables"] .code{display:none}article[id$="-variables"] .docs pre{background:#fff;border:0;margin-top:0}</style><script type="text/preview">(function(){"use strict";var a=function(a){return Array.prototype.slice.call(a)},b=document.getElementsByTagName("body")[0],c=["link","visited","hover","active","focus","target","enabled","disabled","checked"],d=new RegExp(":(("+c.join(")|(")+"))","gi"),e=a(document.styleSheets).map(function(b){return a(b.cssRules).filter(function(a){return a.selectorText&&a.selectorText.match(d)}).map(function(a){return a.cssText.replace(d,".\\3A $1")}).join("")}).join("");if(e.length){var f=document.createElement("style");f.innerText=e;var g=document.getElementsByTagName("style")[0];g.parentNode.insertBefore(f,g)}var h=function(){var a=window.getComputedStyle(b,null);return function(){if(b.childElementCount===0)return b.offsetHeight;var c=b.getElementsByTagName("*"),d=[];for(var e=0,f=c.length;e<f;e++)d.push(c[e].offsetTop+c[e].offsetHeight+parseInt(window.getComputedStyle(c[e],null).getPropertyValue("margin-bottom")));var g=Math.max.apply(Math,d);return g+=parseInt(a.getPropertyValue("padding-bottom"),10),Math.max(g,b.offsetHeight)}}(),i={getHeight:function(){window.parent.postMessage({height:h()},"*")}};window.addEventListener("message",function(a){if(a.data==null)return;typeof a.data=="string"&&i[a.data]()},!1)})(),function(){var a=["../../jquery/jquery.js","../../mage/terms.js","../../mage/dropdowns.js","../../jquery/jquery.popups.js","../../js/mui.js"];for(var b=0,c=a.length;b<c;b++){var d=document.createElement("script");d.type="text/javascript",d.async=!1,d.src=a[b];var e=document.getElementsByTagName("script")[0];e.parentNode.insertBefore(d,e)}}()</script><style type="text/preview">body{margin:0;padding:0}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section,summary{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none;height:0}nav ul,nav ol{list-style:none;list-style-image:none}img{border:0;-ms-interpolation-mode:bicubic}svg:not(:root){overflow:hidden}figure{margin:0}html{font-size:62.5%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{font-size:14px;font-size:1.4rem;color:#333;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.42857143}p{margin-top:0;margin-top:0rem;margin-bottom:10px;margin-bottom:1rem}abbr[title]{cursor:help;border-bottom:1px dotted #d1d1d1}b,strong{font-weight:700}em,i{font-style:italic}mark{background-color:#f0f0f0;color:#000}small,.small{font-size:12px}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #d1d1d1}sub,sup{font-size:71.42857143000001%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}dfn{font-style:italic}h1{font-size:40px;font-size:4rem;font-weight:300;line-height:1.1;margin-top:20px;margin-top:2rem;margin-bottom:20px;margin-bottom:2rem}h2{font-size:26px;font-size:2.6rem;font-weight:300;line-height:1.1;margin-top:25px;margin-top:2.5rem;margin-bottom:20px;margin-bottom:2rem}h3{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem}h4{font-size:14px;font-size:1.4rem;font-weight:700;line-height:1.1;margin-top:20px;margin-top:2rem;margin-bottom:20px;margin-bottom:2rem}h5{font-size:12px;font-size:1.2rem;font-weight:700;line-height:1.1;margin-top:20px;margin-top:2rem;margin-bottom:20px;margin-bottom:2rem}h6{font-size:10px;font-size:1rem;font-weight:700;line-height:1.1;margin-top:20px;margin-top:2rem;margin-bottom:20px;margin-bottom:2rem}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small{font-size:71.42857143000001%;color:#333;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1}a,.alink{color:#1979c3;text-decoration:none}a:visited,.alink:visited{color:#800080;text-decoration:none}a:hover,.alink:hover{color:#006bb4;text-decoration:underline}a:active,.alink:active{color:#ff5501;text-decoration:underline}a:focus,.alink:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}ul,ol{margin-top:0;margin-top:0rem;margin-bottom:25px;margin-bottom:2.5rem}ul>li,ol>li{margin-top:0;margin-top:0rem;margin-bottom:10px;margin-bottom:1rem}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}dl{margin-top:0;margin-bottom:20px}dt{font-weight:700;margin-top:0;margin-bottom:5px}dd{margin-top:0;margin-bottom:10px}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,'Courier New',monospace}code{padding:2px 4px;font-size:12px;font-size:1.2rem;color:#111;background-color:#f0f0f0;white-space:nowrap}kbd{padding:2px 4px;font-size:12px;font-size:1.2rem;color:#111;background-color:#f0f0f0}pre{background-color:#f0f0f0;border:1px solid #d1d1d1;color:#111;display:block;font-size:12px;font-size:1.2rem;margin:0 0 10px;line-height:1.42857143;padding:10px;word-break:break-all;word-wrap:break-word}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}blockquote{padding:0;margin:0 0 20px 40px;font-size:14px;font-size:1.4rem;color:#333;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:italic;line-height:1.42857143;border-left:0 solid #d1d1d1}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{color:#333;display:block;font-size:10px;font-size:1rem;line-height:1.42857143}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}blockquote cite{font-style:normal}blockquote:before,blockquote:after{content:""}q{quotes:none}q:before,q:after{content:'';content:none}cite{font-style:normal}table{border-collapse:collapse;border-spacing:0;margin-bottom:20px;max-width:100%;width:100%}table th{text-align:left}table>tbody>tr>th,table>tfoot>tr>th,table>tbody>tr>td,table>tfoot>tr>td{vertical-align:top}table>thead>tr>th,table>thead>tr>td{vertical-align:bottom}table>thead>tr>th,table>tbody>tr>th,table>tfoot>tr>th,table>thead>tr>td,table>tbody>tr>td,table>tfoot>tr>td{padding:3px 10px}button,.cart.table.wrapper .cart.items .action{background-image:none;background-color:#f2f2f2;padding:0 15px;color:#333;border:1px solid #cdcdcd;cursor:pointer;display:inline-block;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;line-height:30px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;margin:0;vertical-align:middle}button:focus,button:active,.cart.table.wrapper .cart.items .action:focus,.cart.table.wrapper .cart.items .action:active{background-color:#e2e2e2;border:1px solid #cdcdcd;outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;color:#333}button:hover,.cart.table.wrapper .cart.items .action:hover{background-color:#e2e2e2;border:1px solid #cdcdcd;color:#555}button.disabled,button[disabled],fieldset[disabled] button,.cart.table.wrapper .cart.items .action.disabled,.cart.table.wrapper .cart.items .action[disabled],fieldset[disabled] .cart.table.wrapper .cart.items .action{cursor:default;pointer-events:none;opacity:.5}button::-moz-focus-inner,.cart.table.wrapper .cart.items .action::-moz-focus-inner{border:0;padding:0}input[type="text"],input[type="password"],input[type="url"],input[type="tel"],input[type="search"],input[type="number"],input[type="datetime"],input[type="email"]{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;border:1px solid #c2c2c2;border-radius:1px;height:32px;width:100%;padding:0 10px;font-size:14px;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;line-height:1.42857143;font-style:normal;color:#333;background-clip:padding-box;vertical-align:baseline}input[type="text"]:disabled,input[type="password"]:disabled,input[type="url"]:disabled,input[type="tel"]:disabled,input[type="search"]:disabled,input[type="number"]:disabled,input[type="datetime"]:disabled,input[type="email"]:disabled{opacity:.5}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type="search"]{-webkit-appearance:none}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-results-button,input[type="search"]::-webkit-search-results-decoration{-webkit-appearance:none}select{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;border:1px solid #c2c2c2;border-radius:1px;height:32px;width:100%;padding:5px 10px 4px;font-size:14px;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;line-height:1.42857143;font-style:normal;color:#333;background-clip:padding-box;vertical-align:baseline}select:disabled{opacity:.5}select[multiple="multiple"]{height:auto}textarea{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;border:1px solid #c2c2c2;border-radius:1px;height:auto;width:100%;padding:10px;font-size:14px;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;line-height:1.42857143;font-style:normal;color:#333;background-clip:padding-box;vertical-align:baseline;resize:vertical}textarea:disabled{opacity:.5}input[type="checkbox"]{vertical-align:top;margin:2px 5px 0 0}input[type="checkbox"]:disabled{opacity:.5}input[type="radio"]{vertical-align:top;margin:2px 5px 0 0}input[type="radio"]:disabled{opacity:.5}input.mage-error,select.mage-error,textarea.mage-error{border-color:#ed8380}input+div.mage-error,select+div.mage-error,textarea+div.mage-error{font-size:12px;font-size:1.2rem;color:#e02b27;margin:3px 0 0}input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button;*overflow:visible}input::-moz-focus-inner{border:0;padding:0}address{font-style:normal}@font-face{font-family:'icons-blank-theme';src:url('http://magento2.loc/pub/lib/fonts/Blank-Theme-Icons/Blank-Theme-Icons.eot');src:url('http://magento2.loc/pub/lib/fonts/Blank-Theme-Icons/Blank-Theme-Icons.eot?#iefix') format('embedded-opentype'),url('http://magento2.loc/pub/lib/fonts/Blank-Theme-Icons/Blank-Theme-Icons.woff') format('woff'),url('http://magento2.loc/pub/lib/fonts/Blank-Theme-Icons/Blank-Theme-Icons.ttf') format('truetype'),url('http://magento2.loc/pub/lib/fonts/Blank-Theme-Icons/Blank-Theme-Icons.svg#icons-blank-theme') format('svg');font-weight:400;font-style:normal}.truncated.full.value{display:none}.truncated.full.value.show{display:block}.layout-2-left.account .column.sidebar{width:22.3%}.layout-2-left.account .column.main{width:77.7%}.account .messages{margin-bottom:20px}.account .column.main h2{margin-top:0}.account .column.main .products.toolbar{background:transparent;margin-bottom:20px}.account .column.main .block:not(.widget) .title{margin-bottom:15px}.account .column.main .block:not(.widget) .title>strong{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem}.account .column.main .block:not(.widget) .title>.action{margin-left:15px}.account .column.main .block:not(.widget) .subtitle{display:inline-block;margin:5px 0 10px}.account .column.main .block:not(.widget) .subtitle>span{font-size:14px;font-size:1.4rem;font-weight:700;line-height:1.1;margin-top:20px;margin-top:2rem;margin-bottom:20px;margin-bottom:2rem}.account .column.main .block:not(.widget) .subtitle>.action{font-weight:400;margin-left:15px}.account .column.main .block:not(.widget) .content:before,.account .column.main .block:not(.widget) .content:after{content:"";display:table}.account .column.main .block:not(.widget) .content:after{clear:both}.account .column.main .block:not(.widget) .content p:last-child{margin-bottom:0}.account .column.main .block:not(.widget) .content .box{margin-bottom:20px}.account .block.account.nav{background:#f5f5f5;padding:15px 0}.account .block.account.nav .title{padding:0 18px;margin-bottom:25px}.account .block.account.nav .title strong{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem}.account .block.account.nav .nav.items{padding:0;margin:0}.account .block.account.nav .nav.items .nav.item{margin:2px 0 0;padding:0 18px 0 15px;line-height:30px;border-left:3px solid transparent}.account .block.account.nav .nav.items .nav.item:first-child{margin-top:0}.account .block.account.nav .nav.items .nav.item.current{border-color:#ff5501}.account .block.account.nav .nav.items .nav.item.current strong{font-weight:400}.account .wrapper.table{margin-bottom:20px}.account .wrapper.table:last-child{margin-bottom:0}.account .wrapper.table .data.table{border:0;margin-bottom:0}.account .wrapper.table .data.table>caption{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.account .wrapper.table .data.table>thead>tr>th,.account .wrapper.table .data.table>tbody>tr>th,.account .wrapper.table .data.table>tfoot>tr>th,.account .wrapper.table .data.table>thead>tr>td,.account .wrapper.table .data.table>tbody>tr>td,.account .wrapper.table .data.table>tfoot>tr>td{border:0}.account .wrapper.table .data.table>thead>tr>th,.account .wrapper.table .data.table>thead>tr>td{border-bottom:1px solid #d1d1d1}.account .wrapper.table .data.table .col.actions .action{margin-right:15px}.account .wrapper.table .data.table .col.actions .action:last-child{margin-left:0}.page.main>.page.title{margin-bottom:40px}.page.main>.page.title .title{display:inline-block}.page.main>.page.title .title+.action{float:right;margin-top:33px}.block:last-child{margin:0}.block .title{margin-bottom:10px}.block .title strong{font-size:14px;font-size:1.4rem;font-weight:700;line-height:1.1;margin-top:20px;margin-top:2rem;margin-bottom:20px;margin-bottom:2rem}.column.main .block .title strong{font-size:18px}.widget ol,.block ol,.widget ul,.block ul{margin:0;padding:0;list-style-type:none;list-style-image:none}.widget ol li,.block ol li,.widget ul li,.block ul li{margin-bottom:6px}.widget ol strong,.block ol strong,.widget ul strong,.block ul strong{font-weight:400}.block.compare .item{position:relative}.block.compare .item .product.name{margin-left:22px}.block.compare .item .action.delete{position:absolute;left:-6px;top:0}.block.reorder .item .checkbox{position:relative;top:2px;vertical-align:baseline}.block.wishlist .item.product{margin-bottom:14px}.block.wishlist .item.product>.product{position:relative}.block.wishlist .item.product>.product .product.photo{position:absolute;left:0;top:0}.block.wishlist .item.product>.product .product.details{margin:0 25px 0 64px}.block.wishlist .price-box{display:block;margin:7px 0}.block.wishlist .actions{margin:7px 0}.block.wishlist .actions .action.delete{position:absolute;right:0;top:0}.block.wishlist .actions a.action.tocart{display:inline-block;text-decoration:none}.block.wishlist .actions a.action.tocart:hover,.block.wishlist .actions a.action.tocart:active,.block.wishlist .actions a.action.tocart:focus{text-decoration:none}.block.wishlist .actions .action.tocart{width:112px;padding:0 7px}.block.wishlist .text,.block.compare .text{margin-right:8px}.block.wishlist .counter.qty,.block.compare .counter.qty{color:#999;font-size:12px;white-space:nowrap}.block.reorder .actions.toolbar,.block.compare .actions.toolbar{margin:17px 0;max-width:178px}.column.sidebar .block.reorder .subtitle,.column.sidebar .block.wishlist .subtitle{display:none}.product-list-item,.bundle.options.container .block.bundle.summary .bundle.items,.block.filter .items,.prices.tier.items,.cart .checkout.methods,.opc.wrapper>.opc,.order.details ul.items,.products.list.items{margin:0;padding:0;list-style-type:none;list-style-image:none}.product-list-item>li,.bundle.options.container .block.bundle.summary .bundle.items>li,.block.filter .items>li,.prices.tier.items>li,.cart .checkout.methods>li,.opc.wrapper>.opc>li,.order.details ul.items>li,.products.list.items>li{margin:0}.block.wishlist .actions .action.tocart,.product-list-item .action.tocart,.actions.toolbar .primary .action,.cart .action.primary,.opc.wrapper .action.continue,.opc.wrapper .action.primary.checkout,.minicart.wrapper .action.checkout,.products.list.items .action.tocart{background-image:none;background-color:#1979c3;padding:0 15px;color:#fff;border:1px solid #1979c3;cursor:pointer;display:inline-block;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;line-height:30px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;vertical-align:middle;border-radius:3px}.action-primary:focus,.action-primary:active,.block.wishlist .actions .action.tocart:focus,.block.wishlist .actions .action.tocart:active,.product-list-item .action.tocart:focus,.product-list-item .action.tocart:active,.actions.toolbar .primary .action:focus,.actions.toolbar .primary .action:active,.cart .action.primary:focus,.cart .action.primary:active,.opc.wrapper .action.continue:focus,.opc.wrapper .action.continue:active,.opc.wrapper .action.primary.checkout:focus,.opc.wrapper .action.primary.checkout:active,.minicart.wrapper .action.checkout:focus,.minicart.wrapper .action.checkout:active,.products.list.items .action.tocart:focus,.products.list.items .action.tocart:active{background-color:#006bb4;border:1px solid #006bb4;outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;color:#fff}.action-primary:hover,.block.wishlist .actions .action.tocart:hover,.product-list-item .action.tocart:hover,.actions.toolbar .primary .action:hover,.cart .action.primary:hover,.opc.wrapper .action.continue:hover,.opc.wrapper .action.primary.checkout:hover,.minicart.wrapper .action.checkout:hover,.products.list.items .action.tocart:hover{background-color:#006bb4;border:1px solid #006bb4;color:#fff}.action-primary.disabled,.action-primary[disabled],fieldset[disabled] .action-primary,.block.wishlist .actions .action.tocart.disabled,.block.wishlist .actions .action.tocart[disabled],fieldset[disabled] .block.wishlist .actions .action.tocart,.product-list-item .action.tocart.disabled,.product-list-item .action.tocart[disabled],fieldset[disabled] .product-list-item .action.tocart,.actions.toolbar .primary .action.disabled,.actions.toolbar .primary .action[disabled],fieldset[disabled] .actions.toolbar .primary .action,.cart .action.primary.disabled,.cart .action.primary[disabled],fieldset[disabled] .cart .action.primary,.opc.wrapper .action.continue.disabled,.opc.wrapper .action.continue[disabled],fieldset[disabled] .opc.wrapper .action.continue,.opc.wrapper .action.primary.checkout.disabled,.opc.wrapper .action.primary.checkout[disabled],fieldset[disabled] .opc.wrapper .action.primary.checkout,.minicart.wrapper .action.checkout.disabled,.minicart.wrapper .action.checkout[disabled],fieldset[disabled] .minicart.wrapper .action.checkout,.products.list.items .action.tocart.disabled,.products.list.items .action.tocart[disabled],fieldset[disabled] .products.list.items .action.tocart{cursor:default;pointer-events:none;opacity:.5}.product.info.main .action.tocompare,.product.info.main .action.towishlist{background-image:none;background-color:#f2f2f2;padding:0 15px;color:#333;border:1px solid #cdcdcd;cursor:pointer;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;line-height:30px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;margin:0;vertical-align:middle;display:inline-block;text-decoration:none;border-radius:3px}.action-link-button:focus,.action-link-button:active,.product.info.main .action.tocompare:focus,.product.info.main .action.tocompare:active,.product.info.main .action.towishlist:focus,.product.info.main .action.towishlist:active{background-color:#e2e2e2;border:1px solid #cdcdcd;outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;color:#333}.action-link-button:hover,.product.info.main .action.tocompare:hover,.product.info.main .action.towishlist:hover{background-color:#e2e2e2;border:1px solid #cdcdcd;color:#555}.action-link-button.disabled,.action-link-button[disabled],fieldset[disabled] .action-link-button,.product.info.main .action.tocompare.disabled,.product.info.main .action.tocompare[disabled],fieldset[disabled] .product.info.main .action.tocompare,.product.info.main .action.towishlist.disabled,.product.info.main .action.towishlist[disabled],fieldset[disabled] .product.info.main .action.towishlist{cursor:default;pointer-events:none;opacity:.5}.action-link-button:hover,.action-link-button:active,.action-link-button:focus,.product.info.main .action.tocompare:hover,.product.info.main .action.tocompare:active,.product.info.main .action.tocompare:focus,.product.info.main .action.towishlist:hover,.product.info.main .action.towishlist:active,.product.info.main .action.towishlist:focus{text-decoration:none}.products.list.items .product.item{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;display:inline-block;position:relative;vertical-align:top}.products.list.items .img.container{max-width:100%;margin-bottom:20px}.products.list.items .img.container>.image{max-width:100%;height:auto}.products.list.items .name{font-weight:400;display:block}.product-list-item .name>a,.products.list.items .name>a{color:#333;text-decoration:none}.product-list-item .name>a:visited,.products.list.items .name>a:visited{color:#333;text-decoration:none}.product-list-item .name>a:hover,.products.list.items .name>a:hover{color:#333;text-decoration:underline}.product-list-item .name>a:active,.products.list.items .name>a:active{color:#333;text-decoration:underline}.product-list-item .name>a:focus,.products.list.items .name>a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.products.list.items .price-box{margin-top:10px}.products.list.items .price-box .price{font-weight:700}.products.list.items .actions{text-align:left}.product-list-item .actions:before,.product-list-item .actions:after,.products.list.items .actions:before,.products.list.items .actions:after{content:"";display:table}.product-list-item .actions:after,.products.list.items .actions:after{clear:both}.product-list-item .actions .primary,.products.list.items .actions .primary{float:left}.product-list-item .actions .primary,.product-list-item .actions .secondary,.products.list.items .actions .primary,.products.list.items .actions .secondary{display:inline-block}.product-list-item .actions .primary .action,.product-list-item .actions .secondary .action,.products.list.items .actions .primary .action,.products.list.items .actions .secondary .action{margin:10px 0 0}.product-list-item .actions .primary a.action,.product-list-item .actions .secondary a.action,.products.list.items .actions .primary a.action,.products.list.items .actions .secondary a.action{display:inline-block}.product-list-item .actions .primary .action,.products.list.items .actions .primary .action{margin:10px 5px 0 0}.product-list-item .actions .secondary a.action,.products.list.items .actions .secondary a.action{margin-top:10px}.products.list.items .action.towishlist{display:inline-block;text-decoration:none}.product-list-item .action.towishlist>span,.products.list.items .action.towishlist>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.product-list-item .action.towishlist:before,.products.list.items .action.towishlist:before{font-family:"icons-blank-theme";content:'\e601';font-size:28px;line-height:inherit;color:#7d7d7d;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:baseline;text-align:center}.product-list-item .action.towishlist>span,.products.list.items .action.towishlist>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.products.list.items .action.tocompare{display:inline-block;text-decoration:none}.product-list-item .action.tocompare>span,.products.list.items .action.tocompare>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.product-list-item .action.tocompare:before,.products.list.items .action.tocompare:before{font-family:"icons-blank-theme";content:'\e61f';font-size:28px;line-height:inherit;color:#7d7d7d;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:baseline;text-align:center}.cart.table.wrapper .item.options dt:after,.opc.wrapper .data.table dt:after{content:':'}.cart.table.wrapper .item.options dt,.opc.wrapper .data.table dt{float:left;clear:left;margin:0 10px 5px 0}.cart.table.wrapper .item.options dd,.opc.wrapper .data.table dd{display:inline-block;margin:0 0 5px}.column.main .block.addbysku .fields .action.remove,.form.giftregistry.validation .fieldset.add-row .action.remove,.form.send.friend .action.delete{display:inline-block;text-decoration:none}.action-remove:before,.column.main .block.addbysku .fields .action.remove:before,.form.giftregistry.validation .fieldset.add-row .action.remove:before,.form.send.friend .action.delete:before{font-family:"icons-blank-theme";content:'\e616';font-size:26px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.account .column.main .block:not(.widget) .content .box,.opc.wrapper .step.login.wrapper .block,.login.container .block,.block.addresses.list ol.items.addresses li.item,.order.details .block{width:48.8%}.account .column.main .block:not(.widget) .content .box:nth-child(odd),.opc.wrapper .step.login.wrapper .block:nth-child(odd),.login.container .block:nth-child(odd),.block.addresses.list ol.items.addresses li.item:nth-child(odd),.order.details .block:nth-child(odd){float:left;clear:left}.account .column.main .block:not(.widget) .content .box:nth-child(even),.opc.wrapper .step.login.wrapper .block:nth-child(even),.login.container .block:nth-child(even),.block.addresses.list ol.items.addresses li.item:nth-child(even),.order.details .block:nth-child(even){float:right}.opc.wrapper .step.login.wrapper .block>.title{padding-bottom:15px;margin-bottom:15px;border-bottom:1px solid #e8e8e8}.opc.wrapper .step.login.wrapper .block>.title strong{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem}.dropdown.giftregisty,.dropdown.wishlist{line-height:normal;display:inline-block;position:relative}.dropdown-simple:before,.dropdown-simple:after,.dropdown.giftregisty:before,.dropdown.giftregisty:after,.dropdown.wishlist:before,.dropdown.wishlist:after{content:"";display:table}.dropdown-simple:after,.dropdown.giftregisty:after,.dropdown.wishlist:after{clear:both}.dropdown-simple .action.toggle,.dropdown.giftregisty .action.toggle,.dropdown.wishlist .action.toggle{cursor:pointer;display:inline-block;text-decoration:none}.dropdown-simple .action.toggle:after,.dropdown.giftregisty .action.toggle:after,.dropdown.wishlist .action.toggle:after{font-family:"icons-blank-theme";content:'\e607';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.dropdown-simple .action.toggle:hover:after,.dropdown.giftregisty .action.toggle:hover:after,.dropdown.wishlist .action.toggle:hover:after{color:inherit}.dropdown-simple .action.toggle:active:after,.dropdown.giftregisty .action.toggle:active:after,.dropdown.wishlist .action.toggle:active:after{color:inherit}.dropdown-simple .action.toggle.active,.dropdown.giftregisty .action.toggle.active,.dropdown.wishlist .action.toggle.active{display:inline-block;text-decoration:none}.dropdown-simple .action.toggle.active:after,.dropdown.giftregisty .action.toggle.active:after,.dropdown.wishlist .action.toggle.active:after{font-family:"icons-blank-theme";content:'\e618';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.dropdown-simple .action.toggle.active:hover:after,.dropdown.giftregisty .action.toggle.active:hover:after,.dropdown.wishlist .action.toggle.active:hover:after{color:inherit}.dropdown-simple .action.toggle.active:active:after,.dropdown.giftregisty .action.toggle.active:active:after,.dropdown.wishlist .action.toggle.active:active:after{color:inherit}.dropdown-simple ul.dropdown,.dropdown.giftregisty ul.dropdown,.dropdown.wishlist ul.dropdown{margin:0;padding:0;list-style-type:none;list-style-image:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;background-color:#fff;border:1px solid #bbb;position:absolute;z-index:100;min-width:100%;display:none;-webkit-box-shadow:0 3px 3px rgba(0,0,0,.15);-moz-box-shadow:0 3px 3px rgba(0,0,0,.15);box-shadow:0 3px 3px rgba(0,0,0,.15);margin-top:4px}.dropdown-simple ul.dropdown li,.dropdown.giftregisty ul.dropdown li,.dropdown.wishlist ul.dropdown li{margin:0;padding:3px 5px}.dropdown-simple ul.dropdown li:hover,.dropdown.giftregisty ul.dropdown li:hover,.dropdown.wishlist ul.dropdown li:hover{background-color:#e8e8e8;cursor:pointer}.dropdown-simple ul.dropdown:before,.dropdown-simple ul.dropdown:after,.dropdown.giftregisty ul.dropdown:before,.dropdown.giftregisty ul.dropdown:after,.dropdown.wishlist ul.dropdown:before,.dropdown.wishlist ul.dropdown:after{content:"";position:absolute;display:block;width:0;height:0;border-bottom-style:solid}.dropdown-simple ul.dropdown:before,.dropdown.giftregisty ul.dropdown:before,.dropdown.wishlist ul.dropdown:before{top:-12px;left:10px;z-index:99;border:solid 6px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #fff rgba(0,0,0,0)}.dropdown-simple ul.dropdown:after,.dropdown.giftregisty ul.dropdown:after,.dropdown.wishlist ul.dropdown:after{top:-14px;left:9px;z-index:98;border:solid 7px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #bbb rgba(0,0,0,0)}.dropdown-simple.active,.dropdown.giftregisty.active,.dropdown.wishlist.active{overflow:visible}.dropdown-simple.active ul.dropdown,.dropdown.giftregisty.active ul.dropdown,.dropdown.wishlist.active ul.dropdown{display:block}.dropdown.giftregisty ul.items.dropdown,.dropdown.wishlist ul.items.dropdown{min-width:155px}.column.main .block.addbysku .fields .field .control .qty,.data.table.giftregistry .field.qty .qty,.table.data.grouped .col.qty .control.qty .qty,.data.table.wishlist .box.tocart .qty{width:50px;text-align:center}.block,.widget.banners,div.widget.product.link,div.widget.category.link,.widget.widget-cms-link,.widget.widget-cms-hierarchy-link{margin-bottom:40px}.column.sidebar .widget.block.addbysku .field,.column.sidebar .widget.block.addbysku .fields .field,.block.widget.giftregistry .field,.block.widget.giftregistry .fields .field,.widget.block.wishlist.find .field,.widget.block.wishlist.find .fields .field,.widget.block.orders.returns .field,.widget.block.orders.returns .fields .field{margin:0 0 10px;border:0}.form-fields-for-widgets .field:not(.choice)>.label,.form-fields-for-widgets .fields .field:not(.choice)>.label,.column.sidebar .widget.block.addbysku .field:not(.choice)>.label,.column.sidebar .widget.block.addbysku .fields .field:not(.choice)>.label,.block.widget.giftregistry .field:not(.choice)>.label,.block.widget.giftregistry .fields .field:not(.choice)>.label,.widget.block.wishlist.find .field:not(.choice)>.label,.widget.block.wishlist.find .fields .field:not(.choice)>.label,.widget.block.orders.returns .field:not(.choice)>.label,.widget.block.orders.returns .fields .field:not(.choice)>.label{display:inline-block;width:auto;float:none;text-align:left;margin:0 0 5px}.form-fields-for-widgets .field.choice:before,.form-fields-for-widgets .fields .field.choice:before,.form-fields-for-widgets .field.no-label:before,.form-fields-for-widgets .fields .field.no-label:before,.column.sidebar .widget.block.addbysku .field.choice:before,.column.sidebar .widget.block.addbysku .fields .field.choice:before,.column.sidebar .widget.block.addbysku .field.no-label:before,.column.sidebar .widget.block.addbysku .fields .field.no-label:before,.block.widget.giftregistry .field.choice:before,.block.widget.giftregistry .fields .field.choice:before,.block.widget.giftregistry .field.no-label:before,.block.widget.giftregistry .fields .field.no-label:before,.widget.block.wishlist.find .field.choice:before,.widget.block.wishlist.find .fields .field.choice:before,.widget.block.wishlist.find .field.no-label:before,.widget.block.wishlist.find .fields .field.no-label:before,.widget.block.orders.returns .field.choice:before,.widget.block.orders.returns .fields .field.choice:before,.widget.block.orders.returns .field.no-label:before,.widget.block.orders.returns .fields .field.no-label:before{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;content:" ";height:auto;float:none;width:auto;padding:0}.form-fields-for-widgets .field>.control,.form-fields-for-widgets .fields .field>.control,.column.sidebar .widget.block.addbysku .field>.control,.column.sidebar .widget.block.addbysku .fields .field>.control,.block.widget.giftregistry .field>.control,.block.widget.giftregistry .fields .field>.control,.widget.block.wishlist.find .field>.control,.widget.block.wishlist.find .fields .field>.control,.widget.block.orders.returns .field>.control,.widget.block.orders.returns .fields .field>.control{float:none;width:auto}.form-fields-for-widgets .field>.label,.form-fields-for-widgets .fields .field>.label,.column.sidebar .widget.block.addbysku .field>.label,.column.sidebar .widget.block.addbysku .fields .field>.label,.block.widget.giftregistry .field>.label,.block.widget.giftregistry .fields .field>.label,.widget.block.wishlist.find .field>.label,.widget.block.wishlist.find .fields .field>.label,.widget.block.orders.returns .field>.label,.widget.block.orders.returns .fields .field>.label{font-size:14px;font-size:1.4rem;font-weight:400}.form-fields-for-widgets .field>.label+br,.form-fields-for-widgets .fields .field>.label+br,.column.sidebar .widget.block.addbysku .field>.label+br,.column.sidebar .widget.block.addbysku .fields .field>.label+br,.block.widget.giftregistry .field>.label+br,.block.widget.giftregistry .fields .field>.label+br,.widget.block.wishlist.find .field>.label+br,.widget.block.wishlist.find .fields .field>.label+br,.widget.block.orders.returns .field>.label+br,.widget.block.orders.returns .fields .field>.label+br{display:none}.form-fields-for-widgets .field.required>.label:after,.form-fields-for-widgets .fields .field.required>.label:after,.column.sidebar .widget.block.addbysku .field.required>.label:after,.column.sidebar .widget.block.addbysku .fields .field.required>.label:after,.block.widget.giftregistry .field.required>.label:after,.block.widget.giftregistry .fields .field.required>.label:after,.widget.block.wishlist.find .field.required>.label:after,.widget.block.wishlist.find .fields .field.required>.label:after,.widget.block.orders.returns .field.required>.label:after,.widget.block.orders.returns .fields .field.required>.label:after{content:'*';font-size:12px;font-size:1.2rem;color:#e02b27;margin:0 0 0 5px}.form-fields-for-widgets .field .nested .field,.form-fields-for-widgets .fields .field .nested .field,.column.sidebar .widget.block.addbysku .field .nested .field,.column.sidebar .widget.block.addbysku .fields .field .nested .field,.block.widget.giftregistry .field .nested .field,.block.widget.giftregistry .fields .field .nested .field,.widget.block.wishlist.find .field .nested .field,.widget.block.wishlist.find .fields .field .nested .field,.widget.block.orders.returns .field .nested .field,.widget.block.orders.returns .fields .field .nested .field{margin:5px 0}.form-fields-for-widgets .field.choice>.label,.form-fields-for-widgets .fields .field.choice>.label,.column.sidebar .widget.block.addbysku .field.choice>.label,.column.sidebar .widget.block.addbysku .fields .field.choice>.label,.block.widget.giftregistry .field.choice>.label,.block.widget.giftregistry .fields .field.choice>.label,.widget.block.wishlist.find .field.choice>.label,.widget.block.wishlist.find .fields .field.choice>.label,.widget.block.orders.returns .field.choice>.label,.widget.block.orders.returns .fields .field.choice>.label{display:inline}.form-fields-for-widgets .field.choice>input,.form-fields-for-widgets .fields .field.choice>input,.column.sidebar .widget.block.addbysku .field.choice>input,.column.sidebar .widget.block.addbysku .fields .field.choice>input,.block.widget.giftregistry .field.choice>input,.block.widget.giftregistry .fields .field.choice>input,.widget.block.wishlist.find .field.choice>input,.widget.block.wishlist.find .fields .field.choice>input,.widget.block.orders.returns .field.choice>input,.widget.block.orders.returns .fields .field.choice>input{vertical-align:top}.form-fields-for-widgets .field .fields.group,.form-fields-for-widgets .fields .field .fields.group,.column.sidebar .widget.block.addbysku .field .fields.group,.column.sidebar .widget.block.addbysku .fields .field .fields.group,.block.widget.giftregistry .field .fields.group,.block.widget.giftregistry .fields .field .fields.group,.widget.block.wishlist.find .field .fields.group,.widget.block.wishlist.find .fields .field .fields.group,.widget.block.orders.returns .field .fields.group,.widget.block.orders.returns .fields .field .fields.group{display:flex;letter-spacing:-.31em;*letter-spacing:normal;word-spacing:-.43em;margin-right:- 20px}.form-fields-for-widgets .field .fields.group>*,.form-fields-for-widgets .fields .field .fields.group>*,.column.sidebar .widget.block.addbysku .field .fields.group>*,.column.sidebar .widget.block.addbysku .fields .field .fields.group>*,.block.widget.giftregistry .field .fields.group>*,.block.widget.giftregistry .fields .field .fields.group>*,.widget.block.wishlist.find .field .fields.group>*,.widget.block.wishlist.find .fields .field .fields.group>*,.widget.block.orders.returns .field .fields.group>*,.widget.block.orders.returns .fields .field .fields.group>*{letter-spacing:normal;word-spacing:normal}.form-fields-for-widgets .field .fields.group .field,.form-fields-for-widgets .fields .field .fields.group .field,.column.sidebar .widget.block.addbysku .field .fields.group .field,.column.sidebar .widget.block.addbysku .fields .field .fields.group .field,.block.widget.giftregistry .field .fields.group .field,.block.widget.giftregistry .fields .field .fields.group .field,.widget.block.wishlist.find .field .fields.group .field,.widget.block.wishlist.find .fields .field .fields.group .field,.widget.block.orders.returns .field .fields.group .field,.widget.block.orders.returns .fields .field .fields.group .field{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;vertical-align:top;margin:0!important}.form-fields-for-widgets .field .fields.group .field .label,.form-fields-for-widgets .fields .field .fields.group .field .label,.column.sidebar .widget.block.addbysku .field .fields.group .field .label,.column.sidebar .widget.block.addbysku .fields .field .fields.group .field .label,.block.widget.giftregistry .field .fields.group .field .label,.block.widget.giftregistry .fields .field .fields.group .field .label,.widget.block.wishlist.find .field .fields.group .field .label,.widget.block.wishlist.find .fields .field .fields.group .field .label,.widget.block.orders.returns .field .fields.group .field .label,.widget.block.orders.returns .fields .field .fields.group .field .label{width:auto;float:none;text-align:left;padding-right:0}.form-fields-for-widgets .field .fields.group .field .control,.form-fields-for-widgets .fields .field .fields.group .field .control,.column.sidebar .widget.block.addbysku .field .fields.group .field .control,.column.sidebar .widget.block.addbysku .fields .field .fields.group .field .control,.block.widget.giftregistry .field .fields.group .field .control,.block.widget.giftregistry .fields .field .fields.group .field .control,.widget.block.wishlist.find .field .fields.group .field .control,.widget.block.wishlist.find .fields .field .fields.group .field .control,.widget.block.orders.returns .field .fields.group .field .control,.widget.block.orders.returns .fields .field .fields.group .field .control{float:none;width:auto}.form-fields-for-widgets .field .fields.group.group-2 .field,.form-fields-for-widgets .fields .field .fields.group.group-2 .field,.column.sidebar .widget.block.addbysku .field .fields.group.group-2 .field,.column.sidebar .widget.block.addbysku .fields .field .fields.group.group-2 .field,.block.widget.giftregistry .field .fields.group.group-2 .field,.block.widget.giftregistry .fields .field .fields.group.group-2 .field,.widget.block.wishlist.find .field .fields.group.group-2 .field,.widget.block.wishlist.find .fields .field .fields.group.group-2 .field,.widget.block.orders.returns .field .fields.group.group-2 .field,.widget.block.orders.returns .fields .field .fields.group.group-2 .field{width:50%!important;display:inline-block}.form-fields-for-widgets .field .fields.group.group-3 .field,.form-fields-for-widgets .fields .field .fields.group.group-3 .field,.column.sidebar .widget.block.addbysku .field .fields.group.group-3 .field,.column.sidebar .widget.block.addbysku .fields .field .fields.group.group-3 .field,.block.widget.giftregistry .field .fields.group.group-3 .field,.block.widget.giftregistry .fields .field .fields.group.group-3 .field,.widget.block.wishlist.find .field .fields.group.group-3 .field,.widget.block.wishlist.find .fields .field .fields.group.group-3 .field,.widget.block.orders.returns .field .fields.group.group-3 .field,.widget.block.orders.returns .fields .field .fields.group.group-3 .field{width:33.3%!important;display:inline-block}.form-fields-for-widgets .field .fields.group.group-4 .field,.form-fields-for-widgets .fields .field .fields.group.group-4 .field,.column.sidebar .widget.block.addbysku .field .fields.group.group-4 .field,.column.sidebar .widget.block.addbysku .fields .field .fields.group.group-4 .field,.block.widget.giftregistry .field .fields.group.group-4 .field,.block.widget.giftregistry .fields .field .fields.group.group-4 .field,.widget.block.wishlist.find .field .fields.group.group-4 .field,.widget.block.wishlist.find .fields .field .fields.group.group-4 .field,.widget.block.orders.returns .field .fields.group.group-4 .field,.widget.block.orders.returns .fields .field .fields.group.group-4 .field{width:25%!important;display:inline-block}.form-fields-for-widgets .field .fields.group.group-5 .field,.form-fields-for-widgets .fields .field .fields.group.group-5 .field,.column.sidebar .widget.block.addbysku .field .fields.group.group-5 .field,.column.sidebar .widget.block.addbysku .fields .field .fields.group.group-5 .field,.block.widget.giftregistry .field .fields.group.group-5 .field,.block.widget.giftregistry .fields .field .fields.group.group-5 .field,.widget.block.wishlist.find .field .fields.group.group-5 .field,.widget.block.wishlist.find .fields .field .fields.group.group-5 .field,.widget.block.orders.returns .field .fields.group.group-5 .field,.widget.block.orders.returns .fields .field .fields.group.group-5 .field{width:20%!important;display:inline-block}.form-fields-for-widgets .field .addon,.form-fields-for-widgets .fields .field .addon,.column.sidebar .widget.block.addbysku .field .addon,.column.sidebar .widget.block.addbysku .fields .field .addon,.block.widget.giftregistry .field .addon,.block.widget.giftregistry .fields .field .addon,.widget.block.wishlist.find .field .addon,.widget.block.wishlist.find .fields .field .addon,.widget.block.orders.returns .field .addon,.widget.block.orders.returns .fields .field .addon{display:inline-flex;flex-wrap:nowrap;padding:0;width:100%}.form-fields-for-widgets .field .addon textarea,.form-fields-for-widgets .fields .field .addon textarea,.form-fields-for-widgets .field .addon select,.form-fields-for-widgets .fields .field .addon select,.form-fields-for-widgets .field .addon input,.form-fields-for-widgets .fields .field .addon input,.column.sidebar .widget.block.addbysku .field .addon textarea,.column.sidebar .widget.block.addbysku .fields .field .addon textarea,.column.sidebar .widget.block.addbysku .field .addon select,.column.sidebar .widget.block.addbysku .fields .field .addon select,.column.sidebar .widget.block.addbysku .field .addon input,.column.sidebar .widget.block.addbysku .fields .field .addon input,.block.widget.giftregistry .field .addon textarea,.block.widget.giftregistry .fields .field .addon textarea,.block.widget.giftregistry .field .addon select,.block.widget.giftregistry .fields .field .addon select,.block.widget.giftregistry .field .addon input,.block.widget.giftregistry .fields .field .addon input,.widget.block.wishlist.find .field .addon textarea,.widget.block.wishlist.find .fields .field .addon textarea,.widget.block.wishlist.find .field .addon select,.widget.block.wishlist.find .fields .field .addon select,.widget.block.wishlist.find .field .addon input,.widget.block.wishlist.find .fields .field .addon input,.widget.block.orders.returns .field .addon textarea,.widget.block.orders.returns .fields .field .addon textarea,.widget.block.orders.returns .field .addon select,.widget.block.orders.returns .fields .field .addon select,.widget.block.orders.returns .field .addon input,.widget.block.orders.returns .fields .field .addon input{order:2;box-shadow:none;display:inline-block;margin:0;width:auto;flex-basis:100%}.form-fields-for-widgets .field .addon .addbefore,.form-fields-for-widgets .fields .field .addon .addbefore,.form-fields-for-widgets .field .addon .addafter,.form-fields-for-widgets .fields .field .addon .addafter,.column.sidebar .widget.block.addbysku .field .addon .addbefore,.column.sidebar .widget.block.addbysku .fields .field .addon .addbefore,.column.sidebar .widget.block.addbysku .field .addon .addafter,.column.sidebar .widget.block.addbysku .fields .field .addon .addafter,.block.widget.giftregistry .field .addon .addbefore,.block.widget.giftregistry .fields .field .addon .addbefore,.block.widget.giftregistry .field .addon .addafter,.block.widget.giftregistry .fields .field .addon .addafter,.widget.block.wishlist.find .field .addon .addbefore,.widget.block.wishlist.find .fields .field .addon .addbefore,.widget.block.wishlist.find .field .addon .addafter,.widget.block.wishlist.find .fields .field .addon .addafter,.widget.block.orders.returns .field .addon .addbefore,.widget.block.orders.returns .fields .field .addon .addbefore,.widget.block.orders.returns .field .addon .addafter,.widget.block.orders.returns .fields .field .addon .addafter{order:3;display:inline-block;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;border:1px solid #c2c2c2;border-radius:1px;height:32px;width:100%;padding:0 10px;font-size:14px;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;line-height:1.42857143;font-style:normal;color:#333;background-clip:padding-box;vertical-align:baseline;width:auto;white-space:nowrap;vertical-align:middle}.form-fields-for-widgets .field .addon .addbefore:disabled,.form-fields-for-widgets .fields .field .addon .addbefore:disabled,.form-fields-for-widgets .field .addon .addafter:disabled,.form-fields-for-widgets .fields .field .addon .addafter:disabled,.column.sidebar .widget.block.addbysku .field .addon .addbefore:disabled,.column.sidebar .widget.block.addbysku .fields .field .addon .addbefore:disabled,.column.sidebar .widget.block.addbysku .field .addon .addafter:disabled,.column.sidebar .widget.block.addbysku .fields .field .addon .addafter:disabled,.block.widget.giftregistry .field .addon .addbefore:disabled,.block.widget.giftregistry .fields .field .addon .addbefore:disabled,.block.widget.giftregistry .field .addon .addafter:disabled,.block.widget.giftregistry .fields .field .addon .addafter:disabled,.widget.block.wishlist.find .field .addon .addbefore:disabled,.widget.block.wishlist.find .fields .field .addon .addbefore:disabled,.widget.block.wishlist.find .field .addon .addafter:disabled,.widget.block.wishlist.find .fields .field .addon .addafter:disabled,.widget.block.orders.returns .field .addon .addbefore:disabled,.widget.block.orders.returns .fields .field .addon .addbefore:disabled,.widget.block.orders.returns .field .addon .addafter:disabled,.widget.block.orders.returns .fields .field .addon .addafter:disabled{opacity:.5}.form-fields-for-widgets .field .addon .addbefore,.form-fields-for-widgets .fields .field .addon .addbefore,.column.sidebar .widget.block.addbysku .field .addon .addbefore,.column.sidebar .widget.block.addbysku .fields .field .addon .addbefore,.block.widget.giftregistry .field .addon .addbefore,.block.widget.giftregistry .fields .field .addon .addbefore,.widget.block.wishlist.find .field .addon .addbefore,.widget.block.wishlist.find .fields .field .addon .addbefore,.widget.block.orders.returns .field .addon .addbefore,.widget.block.orders.returns .fields .field .addon .addbefore{float:left;order:1}.form-fields-for-widgets .field .note,.form-fields-for-widgets .fields .field .note,.column.sidebar .widget.block.addbysku .field .note,.column.sidebar .widget.block.addbysku .fields .field .note,.block.widget.giftregistry .field .note,.block.widget.giftregistry .fields .field .note,.widget.block.wishlist.find .field .note,.widget.block.wishlist.find .fields .field .note,.widget.block.orders.returns .field .note,.widget.block.orders.returns .fields .field .note{font-size:12px;font-size:1.2rem;margin:3px 0 0;padding:0;display:inline-block;text-decoration:none}.form-fields-for-widgets .field .note:before,.form-fields-for-widgets .fields .field .note:before,.column.sidebar .widget.block.addbysku .field .note:before,.column.sidebar .widget.block.addbysku .fields .field .note:before,.block.widget.giftregistry .field .note:before,.block.widget.giftregistry .fields .field .note:before,.widget.block.wishlist.find .field .note:before,.widget.block.wishlist.find .fields .field .note:before,.widget.block.orders.returns .field .note:before,.widget.block.orders.returns .fields .field .note:before{font-family:"icons-blank-theme";content:'\e618';font-size:24px;line-height:12px;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.block.compare .item .action.delete,.block.wishlist .actions .action.delete,.data.comparison .cell.remove .action.delete{display:inline-block;text-decoration:none}.remove-button-for-blocks>span,.block.compare .item .action.delete>span,.block.wishlist .actions .action.delete>span,.data.comparison .cell.remove .action.delete>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.remove-button-for-blocks:before,.block.compare .item .action.delete:before,.block.wishlist .actions .action.delete:before,.data.comparison .cell.remove .action.delete:before{font-family:"icons-blank-theme";content:'\e616';font-size:26px;line-height:15px;color:#303030;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.remove-button-for-blocks:hover:before,.block.compare .item .action.delete:hover:before,.block.wishlist .actions .action.delete:hover:before,.data.comparison .cell.remove .action.delete:hover:before{color:#303030}.remove-button-for-blocks:active:before,.block.compare .item .action.delete:active:before,.block.wishlist .actions .action.delete:active:before,.data.comparison .cell.remove .action.delete:active:before{color:#303030}.block.compare .product.name a,.block.viewed.links .product.name a,.block.reorder .product.name a,.block.compared.links .product.name a,.block.wishlist .product.name a,.data.comparison .product.name a,.widget.product.link a{color:#303030;text-decoration:none}.product-link:visited,.block.compare .product.name a:visited,.block.viewed.links .product.name a:visited,.block.reorder .product.name a:visited,.block.compared.links .product.name a:visited,.block.wishlist .product.name a:visited,.data.comparison .product.name a:visited,.widget.product.link a:visited{color:#303030;text-decoration:none}.product-link:hover,.block.compare .product.name a:hover,.block.viewed.links .product.name a:hover,.block.reorder .product.name a:hover,.block.compared.links .product.name a:hover,.block.wishlist .product.name a:hover,.data.comparison .product.name a:hover,.widget.product.link a:hover{color:#303030;text-decoration:underline}.product-link:active,.block.compare .product.name a:active,.block.viewed.links .product.name a:active,.block.reorder .product.name a:active,.block.compared.links .product.name a:active,.block.wishlist .product.name a:active,.data.comparison .product.name a:active,.widget.product.link a:active{color:#303030;text-decoration:underline}.product-link:focus,.block.compare .product.name a:focus,.block.viewed.links .product.name a:focus,.block.reorder .product.name a:focus,.block.compared.links .product.name a:focus,.block.wishlist .product.name a:focus,.data.comparison .product.name a:focus,.widget.product.link a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.form.new.agreement .actions.toolbar,.opc.wrapper .form.shipping.methods .actions.toolbar,.opc.wrapper .form.payments .actions.toolbar,.form.giftregistry.items .actions.toolbar,.form.wishlist.items .actions.toolbar{margin-left:0}@font-face{font-family:'Open Sans';src:url('http://magento2.loc/pub/lib/fonts/opensans/light/opensans-300.eot');src:url('http://magento2.loc/pub/lib/fonts/opensans/light/opensans-300.eot?#iefix') format('embedded-opentype'),url('http://magento2.loc/pub/lib/fonts/opensans/light/opensans-300.woff') format('woff'),url('http://magento2.loc/pub/lib/fonts/opensans/light/opensans-300.ttf') format('truetype'),url('http://magento2.loc/pub/lib/fonts/opensans/light/opensans-300.svg#Open Sans') format('svg');font-weight:300;font-style:normal}@font-face{font-family:'Open Sans';src:url('http://magento2.loc/pub/lib/fonts/opensans/regular/opensans-400.eot');src:url('http://magento2.loc/pub/lib/fonts/opensans/regular/opensans-400.eot?#iefix') format('embedded-opentype'),url('http://magento2.loc/pub/lib/fonts/opensans/regular/opensans-400.woff') format('woff'),url('http://magento2.loc/pub/lib/fonts/opensans/regular/opensans-400.ttf') format('truetype'),url('http://magento2.loc/pub/lib/fonts/opensans/regular/opensans-400.svg#Open Sans') format('svg');font-weight:400;font-style:normal}@font-face{font-family:'Open Sans';src:url('http://magento2.loc/pub/lib/fonts/opensans/semibold/opensans-600.eot');src:url('http://magento2.loc/pub/lib/fonts/opensans/semibold/opensans-600.eot?#iefix') format('embedded-opentype'),url('http://magento2.loc/pub/lib/fonts/opensans/semibold/opensans-600.woff') format('woff'),url('http://magento2.loc/pub/lib/fonts/opensans/semibold/opensans-600.ttf') format('truetype'),url('http://magento2.loc/pub/lib/fonts/opensans/semibold/opensans-600.svg#Open Sans') format('svg');font-weight:600;font-style:normal}@font-face{font-family:'Open Sans';src:url('http://magento2.loc/pub/lib/fonts/opensans/bold/opensans-700.eot');src:url('http://magento2.loc/pub/lib/fonts/opensans/bold/opensans-700.eot?#iefix') format('embedded-opentype'),url('http://magento2.loc/pub/lib/fonts/opensans/bold/opensans-700.woff') format('woff'),url('http://magento2.loc/pub/lib/fonts/opensans/bold/opensans-700.ttf') format('truetype'),url('http://magento2.loc/pub/lib/fonts/opensans/bold/opensans-700.svg#Open Sans') format('svg');font-weight:700;font-style:normal}.navigation>ul,.breadcrumbs,.page.header .header.panel,.header.content,.footer.content,.page.main,.page.wrapper>.widget,.page.wrapper>.page.bottom,.block.category.event{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;margin:0 auto;padding-left:20px;padding-right:20px;width:auto;min-width:1000px;max-width:1280px}.columns{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;display:flex;flex-direction:row;flex-wrap:wrap}.columns:after{content:" ";display:block;height:0;clear:both;overlow:hidden;visibility:hidden}.columns>.column{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;padding-bottom:40px}.column.main{min-height:300px}.layout-1 .column.main{width:100%;order:2}.layout-3 .column.main{width:66.66666667%;display:inline-block;order:2}.layout-2-left .column.main{width:83.33333333%;float:right;order:2}.layout-2-right .column.main{width:83.33333333%;float:left;order:1}.column.left{padding-right:2%}.layout-3 .column.left{width:16.66666667%;float:left;order:1}.layout-2-left .column.left{width:16.66666667%;float:left;order:1}.layout-2-right .column.left{width:16.66666667%;float:left;order:1}.column.right{padding-left:2%}.layout-3 .column.right{width:16.66666667%;float:right;order:3}.layout-2-left .column.right{width:16.66666667%;float:right;order:2}.layout-2-right .column.right{width:16.66666667%;float:right;order:2}.message.info{display:block;margin:0 0 10px;padding:10px 20px;border-radius:0;font-size:13px;font-size:1.3rem;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.2em;background:#fdf0d5;border-color:none;color:#6f4400;position:relative;padding-left:40px}.message.info a{color:#1979c3}.message.info a:hover{color:#006bb4}.message.info a:active{color:#006bb4}.message.info>:first-child:before{font-family:"icons-blank-theme";content:'\e602';font-size:28px;line-height:28px;color:#c07600;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;margin:-14px 0 0;position:absolute;left:0;top:50%;text-align:center;width:40px}.message.error{display:block;margin:0 0 10px;padding:10px 20px;border-radius:0;font-size:13px;font-size:1.3rem;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.2em;background:#fae5e5;border-color:none;color:#e02b27;position:relative;padding-left:40px}.message.error a{color:#1979c3}.message.error a:hover{color:#006bb4}.message.error a:active{color:#006bb4}.message.error>:first-child:before{font-family:"icons-blank-theme";content:'\e602';font-size:28px;line-height:28px;color:#b30000;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;margin:-14px 0 0;position:absolute;left:0;top:50%;text-align:center;width:40px}.message.warning{display:block;margin:0 0 10px;padding:10px 20px;border-radius:0;font-size:13px;font-size:1.3rem;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.2em;background:#fdf0d5;border-color:none;color:#6f4400;position:relative;padding-left:40px}.message.warning a{color:#1979c3}.message.warning a:hover{color:#006bb4}.message.warning a:active{color:#006bb4}.message.warning>:first-child:before{font-family:"icons-blank-theme";content:'\e602';font-size:28px;line-height:28px;color:#c07600;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;margin:-14px 0 0;position:absolute;left:0;top:50%;text-align:center;width:40px}.message.notice{display:block;margin:0 0 10px;padding:10px 20px;border-radius:0;font-size:13px;font-size:1.3rem;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.2em;background:#fdf0d5;border-color:none;color:#6f4400;position:relative;padding-left:40px}.message.notice a{color:#1979c3}.message.notice a:hover{color:#006bb4}.message.notice a:active{color:#006bb4}.message.notice>:first-child:before{font-family:"icons-blank-theme";content:'\e602';font-size:28px;line-height:28px;color:#c07600;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;margin:-14px 0 0;position:absolute;left:0;top:50%;text-align:center;width:40px}.message.success{display:block;margin:0 0 10px;padding:10px 20px;border-radius:0;font-size:13px;font-size:1.3rem;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.2em;background:#e5efe5;border-color:none;color:#006400;position:relative;padding-left:40px}.message.success a{color:#1979c3}.message.success a:hover{color:#006bb4}.message.success a:active{color:#006bb4}.message.success>:first-child:before{font-family:"icons-blank-theme";content:'\e610';font-size:28px;line-height:28px;color:#006400;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;margin:-14px 0 0;position:absolute;left:0;top:50%;text-align:center;width:40px}.navigation{background:#e8e8e8;margin:0;padding:0;list-style-type:none;list-style-image:none;position:relative;z-index:2}.navigation>li{display:inline-block;vertical-align:top}.navigation:empty{display:none}.navigation .level0{display:inline-block;position:relative;vertical-align:top;margin:0 10px 0 0}.navigation .level0:last-child{margin-right:0;padding-right:0}.navigation .level0>.level-top{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;color:#575757;line-height:53px;padding:0 12px;display:inline-block;position:relative}.navigation .level0>.level-top:hover{color:#333}.navigation .level0.active>.level-top{color:#333}.navigation .level0.parent>.submenu:before,.navigation .level0.parent>.submenu:after{content:'';overflow:hidden;display:block;position:absolute;top:-20px}.navigation .level0.parent>.submenu:before{left:20px;color:#fff;z-index:4;width:0;height:0;border:10px solid rgba(0,0,0,0);border-bottom-color:#fff}.navigation .level0.parent>.submenu:after{left:19px;color:#d1d1d1;z-index:3;width:0;height:0;border:11px solid rgba(0,0,0,0);border-bottom-color:#d1d1d1}.navigation .level0.parent:hover>.submenu{overflow:visible!important}.navigation .level0.hover>.submenu,.navigation .level0:hover>.submenu{z-index:2}.navigation .level0.more{position:relative;display:inline-block;text-decoration:none}.navigation .level0.more:after{font-family:"icons-blank-theme";content:'\e607';font-size:26px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.navigation .level0.more:before{display:none}.navigation .level0.more:after{border-radius:4px 4px 0 0;cursor:pointer;padding:8px 12px;position:relative;z-index:1}.navigation .level0>.submenu{display:none;min-width:230px;position:absolute;left:0;top:100%;z-index:1}.navigation .level0>.submenu>ul{background:#fff;border:1px solid #d1d1d1;box-shadow:0 5px 5px rgba(0,0,0,.19);padding:15px 0;position:relative;margin:0}.navigation .level0>.submenu>ul>li{display:block;margin:0;position:relative}.navigation .level0>.submenu>ul>li a{display:block;line-height:normal;padding:8px 20px;color:#575757}.navigation .level0>.submenu>ul>li a:hover{background:#e8e8e8;color:#333;text-decoration:none}.navigation .level0>.submenu .submenu ul{padding-left:0}.navigation .level0>.submenu .submenu ul li{margin:0}.navigation .level0>.submenu .submenu ul a{padding-left:40px}.navigation{margin:0 0 30px}.navigation>ul>.level0{font-weight:700}.navigation>ul>.level0>a,.navigation>ul>.level0 .action.back>a{text-decoration:none;text-transform:uppercase}.load.indicator{position:fixed;left:0;top:0;right:0;bottom:0;background-color:rgba(255,255,255,.5);z-index:9999;position:absolute}.load.indicator:before{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;background-color:rgba(0,0,0,0);background-image:url('http://magento2.loc/pub/lib/images/loader-2.gif');background-position:50% 50%;background-repeat:no-repeat;border-radius:5px;content:'';position:absolute;top:0;right:0;left:0;bottom:0;margin:auto;width:160px;height:160px}.load.indicator:before{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;background-color:rgba(0,0,0,0);background-image:url('http://magento2.loc/pub/lib/images/loader-2.gif');background-position:50% 50%;background-repeat:no-repeat;border-radius:5px;content:'';position:absolute;top:0;right:0;left:0;bottom:0;margin:auto;width:160px;height:160px}.load.indicator>span{display:none}.fieldset{border:0;margin:0 0 40px;padding:0;letter-spacing:-.31em;word-spacing:-.43em}.fieldset .legend+.fieldset,.fieldset .legend+div{clear:both}.fieldset>*{letter-spacing:normal;word-spacing:normal}.fieldset>.legend{margin:0 0 25px 25.8%;padding:0;font-size:20px;font-size:2rem;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.2;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;float:left;width:74.2%}.fieldset>.legend+br{display:block;visibility:hidden;height:0;overflow:hidden;clear:both}.fieldset:last-child{margin-bottom:0}.fieldset>.field,.fieldset .fields>.field{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;margin:0 0 29px;border:0}.fieldset>.field:last-child,.fieldset .fields>.field:last-child{margin-bottom:0}.fieldset>.field.no-label>.label,.fieldset .fields>.field.no-label>.label{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.fieldset>.field .label,.fieldset .fields>.field .label{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.fieldset>.field:before,.fieldset .fields>.field:before,.fieldset>.field:after,.fieldset .fields>.field:after{content:"";display:table}.fieldset>.field:after,.fieldset .fields>.field:after{clear:both}.fieldset>.field:not(.choice)>.label,.fieldset .fields>.field:not(.choice)>.label{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;float:left;width:25.8%;text-align:right;padding:6px 15px 0 0}.fieldset>.field>.description,.fieldset .fields>.field>.description{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;float:left;width:25.8%;text-align:right;padding:6px 15px 0 0}.fieldset>.field.choice:before,.fieldset .fields>.field.choice:before,.fieldset>.field.no-label:before,.fieldset .fields>.field.no-label:before{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;content:" ";height:1px;float:left;width:25.8%;padding:6px 15px 0 0}.fieldset>.field>.control,.fieldset .fields>.field>.control{float:left;width:74.2%}.fieldset>.field>.label,.fieldset .fields>.field>.label{font-size:14px;font-size:1.4rem;font-weight:700}.fieldset>.field>.label+br,.fieldset .fields>.field>.label+br{display:none}.fieldset>.field.required>.label:after,.fieldset .fields>.field.required>.label:after{content:'*';font-size:12px;font-size:1.2rem;color:#e02b27;margin:0 0 0 5px}.fieldset>.field .nested .field,.fieldset .fields>.field .nested .field{margin:5px 0}.fieldset>.field.choice>.label,.fieldset .fields>.field.choice>.label{display:inline}.fieldset>.field.choice>input,.fieldset .fields>.field.choice>input{vertical-align:top}.fieldset>.field .fields.group,.fieldset .fields>.field .fields.group{display:flex;letter-spacing:-.31em;*letter-spacing:normal;word-spacing:-.43em;margin-right:- 20px}.fieldset>.field .fields.group>*,.fieldset .fields>.field .fields.group>*{letter-spacing:normal;word-spacing:normal}.fieldset>.field .fields.group .field,.fieldset .fields>.field .fields.group .field{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;vertical-align:top;margin:0!important}.fieldset>.field .fields.group .field .label,.fieldset .fields>.field .fields.group .field .label{width:auto;float:none;text-align:left;padding-right:0}.fieldset>.field .fields.group .field .control,.fieldset .fields>.field .fields.group .field .control{float:none;width:auto}.fieldset>.field .fields.group.group-2 .field,.fieldset .fields>.field .fields.group.group-2 .field{width:50%!important;display:inline-block}.fieldset>.field .fields.group.group-3 .field,.fieldset .fields>.field .fields.group.group-3 .field{width:33.3%!important;display:inline-block}.fieldset>.field .fields.group.group-4 .field,.fieldset .fields>.field .fields.group.group-4 .field{width:25%!important;display:inline-block}.fieldset>.field .fields.group.group-5 .field,.fieldset .fields>.field .fields.group.group-5 .field{width:20%!important;display:inline-block}.fieldset>.field .addon,.fieldset .fields>.field .addon{display:inline-flex;flex-wrap:nowrap;padding:0;width:100%}.fieldset>.field .addon textarea,.fieldset .fields>.field .addon textarea,.fieldset>.field .addon select,.fieldset .fields>.field .addon select,.fieldset>.field .addon input,.fieldset .fields>.field .addon input{order:2;box-shadow:none;display:inline-block;margin:0;width:auto;flex-basis:100%}.fieldset>.field .addon .addbefore,.fieldset .fields>.field .addon .addbefore,.fieldset>.field .addon .addafter,.fieldset .fields>.field .addon .addafter{order:3;display:inline-block;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;border:1px solid #c2c2c2;border-radius:1px;height:32px;width:100%;padding:0 10px;font-size:14px;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;line-height:1.42857143;font-style:normal;color:#333;background-clip:padding-box;vertical-align:baseline;width:auto;white-space:nowrap;vertical-align:middle}.fieldset>.field .addon .addbefore:disabled,.fieldset .fields>.field .addon .addbefore:disabled,.fieldset>.field .addon .addafter:disabled,.fieldset .fields>.field .addon .addafter:disabled{opacity:.5}.fieldset>.field .addon .addbefore,.fieldset .fields>.field .addon .addbefore{float:left;order:1}.fieldset>.field .note,.fieldset .fields>.field .note{font-size:12px;font-size:1.2rem;margin:3px 0 0;padding:0;display:inline-block;text-decoration:none}.fieldset>.field .note:before,.fieldset .fields>.field .note:before{font-family:"icons-blank-theme";content:'\e618';font-size:24px;line-height:12px;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.fieldset>.field.choice .label,.fieldset .fields>.field.choice .label{font-weight:400}.field .tooltip{position:relative;display:inline-block}.field .tooltip .tooltip-content{z-index:100;background:#fff;min-width:210px;max-width:360px;padding:12px 16px;display:none;position:absolute;text-align:left;font-size:14px;font-size:1.4rem;color:#333;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.4;border:1px solid #bbb;left:100%;top:0;margin-left:5px}.field .tooltip .tooltip-content:after,.field .tooltip .tooltip-content:before{border:solid transparent;content:'';height:0;width:0;position:absolute}.field .tooltip .tooltip-content:after{border-color:transparent;border-width:5px}.field .tooltip .tooltip-content:before{border-color:transparent;border-width:6px}.field .tooltip .tooltip-content:after,.field .tooltip .tooltip-content:before{right:100%}.field .tooltip .tooltip-content:after{border-right-color:#fff;margin-top:-5px;top:15px}.field .tooltip .tooltip-content:before{border-right-color:#bbb;margin-top:-6px;top:15px}.field .tooltip>:first-child{cursor:help}.field .tooltip>:first-child:hover+.tooltip-content,.field .tooltip>:first-child:focus+.tooltip-content,.field .tooltip:hover>.tooltip-content{display:block}.field .tooltip .tooltip-content{min-width:200px;white-space:normal}input:focus~.tooltip .tooltip-content,select:focus~.tooltip .tooltip-content{display:block}button,.cart.table.wrapper .cart.items .action{border-radius:3px}button:active,button:focus,.cart.table.wrapper .cart.items .action:active,.cart.table.wrapper .cart.items .action:focus{box-shadow:inset 0 2px 1px rgba(0,0,0,.12)}@media only screen and (max-width: 99999px){.product.data.items{ position:relative;z-index:1}.product.data.items:before,.product.data.items:after{content:"";display:table}.product.data.items:after{clear:both}.product.data.items>.item.title{float:left}.product.data.items>.item.title>.switch{display:block;position:relative;z-index:2;height:20px}.product.data.items>.item.content{margin-top:20px;width:100%;float:right;margin-left:-100%;display:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.product.data.items>.item.content:before,.product.data.items>.item.content:after{content:"";display:table}.product.data.items>.item.content:after{clear:both}.product.data.items>.item.content.active{display:block}.product.data.items>.item.title{margin:0 5px 0 0}.product.data.items>.item.title>.switch{font-size:14px;font-size:1.4rem;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:600;font-style:normal;line-height:20px;color:#7d7d7d;text-decoration:none;height:20px;padding:5px 20px 5px 20px;border:1px solid #d1d1d1;background-color:#f0f0f0;border-bottom:0}.product.data.items>.item.title>.switch:visited{color:#7d7d7d;text-decoration:none}.product.data.items>.item.title>.switch:hover{color:#7d7d7d;text-decoration:none}.product.data.items>.item.title>.switch:active{color:#333;text-decoration:none}.product.data.items>.item.title>.switch:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.product.data.items>.item.title:not(.disabled)>.switch:focus,.product.data.items>.item.title:not(.disabled)>.switch:hover{background-color:#fcfcfc}.product.data.items>.item.title:not(.disabled)>.switch:active,.product.data.items>.item.title.active>.switch,.product.data.items>.item.title.active>.switch:focus,.product.data.items>.item.title.active>.switch:hover{background-color:#fff;color:#333}.product.data.items>.item.title.active>.switch{padding-bottom:6px}.product.data.items>.item.content{background-color:#fff;margin-top:31px;padding:20px 20px 20px 20px;border-top:1px solid #d1d1d1}}@media only screen and (max-width: 768px){.product.data.items{ margin:0;padding:0}.product.data.items>.item.title{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;float:none;width:100%}.product.data.items>.item.title>.switch{display:block}.product.data.items>.item.content{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;float:none;margin:0;display:none}.product.data.items>.item.content:before,.product.data.items>.item.content:after{content:"";display:table}.product.data.items>.item.content:after{clear:both}.product.data.items>.item.content.active{display:block}.product.data.items>.item.title{margin:0 0 5px}.product.data.items>.item.title>.switch{border:1px solid #d1d1d1;background-color:#f0f0f0;font-size:18px;font-size:1.8rem;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:600;font-style:normal;line-height:40px;color:#7d7d7d;text-decoration:none;height:40px;padding:5px 20px 5px 20px}.product.data.items>.item.title>.switch:visited{color:#7d7d7d;text-decoration:none}.product.data.items>.item.title>.switch:hover{color:#7d7d7d;text-decoration:#7d7d7d}.product.data.items>.item.title>.switch:active{color:#333;text-decoration:none}.product.data.items>.item.title>.switch:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.product.data.items>.item.title:not(.disabled)>.switch:focus,.product.data.items>.item.title:not(.disabled)>.switch:hover{background-color:#fcfcfc}.product.data.items>.item.title:not(.disabled)>.switch:active,.product.data.items>.item.title.active>.switch,.product.data.items>.item.title.active>.switch:focus,.product.data.items>.item.title.active>.switch:hover{background-color:#fff;padding-bottom:5px}.product.data.items>.item.content{margin:0;padding:20px 20px 20px 20px;background-color:#fff;border:1px solid #d1d1d1}}.pages>.label{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.pages .items{font-size:0;line-height:0;letter-spacing:-1px;white-space:nowrap;margin:0;padding:0;list-style-type:none;list-style-image:none;display:inline-block;font-weight:400}.pages .item{font-size:1.2rem;font-size:12px;line-height:32px;letter-spacing:normal;margin:0 1px;display:inline-block}.pages .item .label{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.pages a.page{padding:0 10px;color:#1979c3;display:inline-block;text-decoration:none}.pages a.page:visited{color:#800080}.pages a.page:hover{color:#006bb4;text-decoration:none}.pages a.page:active{color:#ff5501}.pages strong.page{font-size:1.2rem;font-size:12px;line-height:32px;letter-spacing:normal;padding:0 10px;color:#333;display:inline-block;font-weight:700}.pages .action{border:1px solid #d1d1d1;padding:0;color:#7d7d7d;display:inline-block;text-decoration:none}.pages .action:visited{color:#7d7d7d}.pages .action:hover{color:#7d7d7d;text-decoration:none}.pages .action:active{color:#7d7d7d}.pages .action.next{display:inline-block;text-decoration:none}.pages .action.next:visited:before{color:#7d7d7d}.pages .action.next:active:before{color:#7d7d7d}.pages .action.next>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.pages .action.next:before{font-family:"icons-blank-theme";content:'\e608';font-size:32px;line-height:inherit;color:#7d7d7d;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center}.pages .action.next:hover:before{color:#7d7d7d}.pages .action.next:active:before{color:#7d7d7d}.pages .action.previous{display:inline-block;text-decoration:none}.pages .action.previous:visited:before{color:#7d7d7d}.pages .action.previous:active:before{color:#7d7d7d}.pages .action.previous>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.pages .action.previous:before{font-family:"icons-blank-theme";content:'\e617';font-size:32px;line-height:inherit;color:#7d7d7d;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center}.pages .action.previous:hover:before{color:#7d7d7d}.pages .action.previous:active:before{color:#7d7d7d}.rating.summary{overflow:hidden}.rating.summary .rating.result{width:100px;display:inline-block;vertical-align:middle;position:relative}.rating.summary .rating.result:before{position:absolute;z-index:1;top:0;left:0;width:100%;display:block;font-family:'icons-blank-theme';content:'\e605' '\e605' '\e605' '\e605' '\e605';font-style:normal;font-size:28px;line-height:28px;height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#ccc}.rating.summary .rating.result>span{display:block;overflow:hidden}.rating.summary .rating.result>span:before{position:relative;z-index:2;display:block;font-family:'icons-blank-theme';content:'\e605' '\e605' '\e605' '\e605' '\e605';font-style:normal;font-size:28px;line-height:28px;height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#ff5601}.rating.summary .rating.result>span span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.product.reviews.summary .label,.data.table.reviews .label{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.control.rating.vote{overflow:hidden}.control.rating.vote:before{letter-spacing:-10px;font-family:'icons-blank-theme';font-style:normal;font-size:28px;line-height:28px;height:28px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#ccc;content:'\e605' '\e605' '\e605' '\e605' '\e605';position:absolute;z-index:1;display:block}.control.rating.vote input[type="radio"]{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.control.rating.vote input[type="radio"]:focus+label:before,.control.rating.vote input[type="radio"]:checked+label:before{opacity:1}.control.rating.vote label{position:absolute;display:block;cursor:pointer}.control.rating.vote label span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.control.rating.vote label:before{letter-spacing:-10px;font-family:'icons-blank-theme';font-style:normal;font-size:28px;line-height:28px;height:28px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#ff5601;opacity:0}.control.rating.vote label:hover:before{opacity:1}.control.rating.vote label:hover~label:before{opacity:0}.control.rating.vote .rating-5{z-index:2}.control.rating.vote .rating-5:before{content:'\e605' '\e605' '\e605' '\e605' '\e605'}.control.rating.vote .rating-4{z-index:3}.control.rating.vote .rating-4:before{content:'\e605' '\e605' '\e605' '\e605'}.control.rating.vote .rating-3{z-index:4}.control.rating.vote .rating-3:before{content:'\e605' '\e605' '\e605'}.control.rating.vote .rating-2{z-index:5}.control.rating.vote .rating-2:before{content:'\e605' '\e605'}.control.rating.vote .rating-1{z-index:6}.control.rating.vote .rating-1:before{content:'\e605'}.actions.toolbar:before,.actions.toolbar:after{content:"";display:table}.actions.toolbar:after{clear:both}.actions.toolbar .primary{float:left}.actions.toolbar .secondary{float:right}.actions.toolbar .primary,.actions.toolbar .secondary{display:inline-block}.actions.toolbar .primary a.action,.actions.toolbar .secondary a.action{display:inline-block}.actions.toolbar .primary .action{margin:0 5px 0 0}.actions.toolbar .secondary a.action{margin-top:6px}.actions.toolbar .primary a.action{display:inline-block;text-decoration:none}.actions.toolbar .primary a.action:hover,.actions.toolbar .primary a.action:active,.actions.toolbar .primary a.action:focus{text-decoration:none}.actions.toolbar .secondary a.action:visited{color:#1979c3}.form .actions.toolbar{margin-left:25.8%}.breadcrumbs{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;margin:0 auto;padding-left:20px;padding-right:20px;width:auto;min-width:1000px;max-width:1280px}.breadcrumbs .label{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.breadcrumbs .items{font-size:12px;font-size:1.2rem;color:#a3a3a3;margin:0;padding:0;list-style-type:none;list-style-image:none}.breadcrumbs .items>li{display:inline-block;vertical-align:top}.breadcrumbs a{color:#333;text-decoration:none}.breadcrumbs a:visited{color:#333;text-decoration:none}.breadcrumbs a:hover{color:#333;text-decoration:underline}.breadcrumbs a:active{color:#333;text-decoration:none}.breadcrumbs strong{font-weight:400}.breadcrumbs .item:not(:last-child):after{color:#a3a3a3;content:'>'}.paypal.after:after{content:"- " attr(data-label) " -";display:block;margin:0 5px 10px;text-transform:uppercase}.paypal.before:before{content:"- " attr(data-label) " -";display:block;margin:10px 5px;text-align:center;text-transform:uppercase}.column.main .block.addbysku .title{margin-bottom:30px}.column.main .block.addbysku .fields{position:relative;margin-bottom:45px}.column.main .block.addbysku .fields:last-child{margin-bottom:0}.column.main .block.addbysku .fields .field .control{width:50%}.column.main .block.addbysku .fields .action.remove{background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400;line-height:normal;position:absolute;top:4px;margin-left:75.8%}.column.main .block.addbysku .fields .action.remove:focus,.column.main .block.addbysku .fields .action.remove:active{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;background:0;border:0}.column.main .block.addbysku .fields .action.remove:hover{background:0;border:0}.column.main .block.addbysku .fields .action.remove.disabled,.column.main .block.addbysku .fields .action.remove[disabled],fieldset[disabled] .column.main .block.addbysku .fields .action.remove{cursor:not-allowed;pointer-events:none;opacity:.5}.column.main .block.addbysku .actions.toolbar .secondary{float:left}.column.main .block.addbysku .field .note{display:block}.column.main .block.addbysku .field .note p:first-child{display:inline-block}.actions.bundle{margin:10px 0}.actions.bundle .action.primary.customize{background-image:none;background-color:#1979c3;padding:0 15px;color:#fff;border:1px solid #1979c3;cursor:pointer;display:inline-block;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;line-height:30px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;vertical-align:middle;line-height:50px;padding:0 17px;font-size:18px;font-size:1.8rem}.actions.bundle .action.primary.customize:focus,.actions.bundle .action.primary.customize:active{background-color:#006bb4;border:1px solid #006bb4;outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;color:#fff}.actions.bundle .action.primary.customize:hover{background-color:#006bb4;border:1px solid #006bb4;color:#fff}.actions.bundle .action.primary.customize.disabled,.actions.bundle .action.primary.customize[disabled],fieldset[disabled] .actions.bundle .action.primary.customize{cursor:default;pointer-events:none;opacity:.5}.bundle.options.container{clear:both;margin-bottom:40px}.bundle.options.container .legend.title{font-size:26px;font-size:2.6rem;font-weight:300;line-height:1.1;margin-top:25px;margin-top:2.5rem;margin-bottom:20px;margin-bottom:2rem}.bundle.options.container .product.add.form{display:none}.bundle.options.container .field.option{margin:0 0 20px;border:0}.bundle.options.container .field.option:not(.choice)>.label{display:inline-block;width:auto;float:none;text-align:left;margin:0 0 5px}.bundle.options.container .field.option.choice:before,.bundle.options.container .field.option.no-label:before{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;content:" ";height:auto;float:none;width:auto;padding:0}.bundle.options.container .field.option>.control{float:none;width:auto}.bundle.options.container .field.option>.label{font-size:14px;font-size:1.4rem;font-weight:700}.bundle.options.container .field.option>.label+br{display:none}.bundle.options.container .field.option.required>.label:after{content:'*';font-size:12px;font-size:1.2rem;color:#e02b27;margin:0 0 0 5px}.bundle.options.container .field.option .nested .field{margin:5px 0}.bundle.options.container .field.option.choice>.label{display:inline}.bundle.options.container .field.option.choice>input{vertical-align:top}.bundle.options.container .field.option .fields.group{display:flex;letter-spacing:-.31em;*letter-spacing:normal;word-spacing:-.43em;margin-right:- 20px}.bundle.options.container .field.option .fields.group>*{letter-spacing:normal;word-spacing:normal}.bundle.options.container .field.option .fields.group .field{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;vertical-align:top;margin:0!important}.bundle.options.container .field.option .fields.group .field .label{width:auto;float:none;text-align:left;padding-right:0}.bundle.options.container .field.option .fields.group .field .control{float:none;width:auto}.bundle.options.container .field.option .fields.group.group-2 .field{width:50%!important;display:inline-block}.bundle.options.container .field.option .fields.group.group-3 .field{width:33.3%!important;display:inline-block}.bundle.options.container .field.option .fields.group.group-4 .field{width:25%!important;display:inline-block}.bundle.options.container .field.option .fields.group.group-5 .field{width:20%!important;display:inline-block}.bundle.options.container .field.option .addon{display:inline-flex;flex-wrap:nowrap;padding:0;width:100%}.bundle.options.container .field.option .addon textarea,.bundle.options.container .field.option .addon select,.bundle.options.container .field.option .addon input{order:2;box-shadow:none;display:inline-block;margin:0;width:auto;flex-basis:100%}.bundle.options.container .field.option .addon .addbefore,.bundle.options.container .field.option .addon .addafter{order:3;display:inline-block;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;border:1px solid #c2c2c2;border-radius:1px;height:32px;width:100%;padding:0 10px;font-size:14px;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;line-height:1.42857143;font-style:normal;color:#333;background-clip:padding-box;vertical-align:baseline;width:auto;white-space:nowrap;vertical-align:middle}.bundle.options.container .field.option .addon .addbefore:disabled,.bundle.options.container .field.option .addon .addafter:disabled{opacity:.5}.bundle.options.container .field.option .addon .addbefore{float:left;order:1}.bundle.options.container .field.option .note{font-size:12px;font-size:1.2rem;margin:3px 0 0;padding:0;display:inline-block;text-decoration:none}.bundle.options.container .field.option .note:before{font-family:"icons-blank-theme";content:'\e618';font-size:24px;line-height:12px;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.bundle.options.container .input-text.qty{width:50px}.bundle.options.container .product.options.wrapper{float:left;width:57%;margin-bottom:30px}.layout-2-left .bundle.options.container .product.options.wrapper,.layout-2-right .bundle.options.container .product.options.wrapper{width:48%}.layout-3 .bundle.options.container .product.options.wrapper{width:48%}.bundle.options.container .product.options.bottom{width:57%;clear:both}.layout-2-left .bundle.options.container .product.options.bottom,.layout-2-right .bundle.options.container .product.options.bottom{width:48%}.layout-3 .bundle.options.container .product.options.bottom{width:48%}.bundle.options.container .price-box .price{font-weight:700;font-size:18px}.bundle.options.container .block.bundle.summary{float:right;position:relative;width:40%;padding:10px 20px;background:#e8e8e8;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.layout-2-left .bundle.options.container .block.bundle.summary,.layout-2-right .bundle.options.container .block.bundle.summary{width:48%}.layout-3 .bundle.options.container .block.bundle.summary{width:48%}.bundle.options.container .block.bundle.summary>.title>strong{font-size:26px;font-size:2.6rem;font-weight:300;line-height:1.1;margin-top:25px;margin-top:2.5rem;margin-bottom:20px;margin-bottom:2rem}.bundle.options.container .block.bundle.summary .bundle.summary{margin-top:30px}.bundle.options.container .block.bundle.summary .bundle.summary>.subtitle{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem;display:block}.bundle.options.container .block.bundle.summary .bundle.items>li{margin-bottom:10px}.bundle.options.container .block.bundle.summary .tocart .actions{margin:10px 0}.bundle.options.container .block.bundle.summary .tocart .action.primary{background-image:none;background-color:#1979c3;padding:0 15px;color:#fff;border:1px solid #1979c3;cursor:pointer;display:inline-block;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;line-height:30px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;vertical-align:middle}.bundle.options.container .block.bundle.summary .tocart .action.primary:focus,.bundle.options.container .block.bundle.summary .tocart .action.primary:active{background-color:#006bb4;border:1px solid #006bb4;outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;color:#fff}.bundle.options.container .block.bundle.summary .tocart .action.primary:hover{background-color:#006bb4;border:1px solid #006bb4;color:#fff}.bundle.options.container .block.bundle.summary .tocart .action.primary.disabled,.bundle.options.container .block.bundle.summary .tocart .action.primary[disabled],fieldset[disabled] .bundle.options.container .block.bundle.summary .tocart .action.primary{cursor:default;pointer-events:none;opacity:.5}.bundle.options.container .block.bundle.summary .addto.links .action{background-image:none;background-color:#f2f2f2;padding:0 15px;color:#333;border:1px solid #cdcdcd;cursor:pointer;display:inline-block;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;line-height:30px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;margin:0;vertical-align:middle;margin-bottom:5px}.bundle.options.container .block.bundle.summary .addto.links .action:focus,.bundle.options.container .block.bundle.summary .addto.links .action:active{background-color:#e2e2e2;border:1px solid #cdcdcd;outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;color:#333}.bundle.options.container .block.bundle.summary .addto.links .action:hover{background-color:#e2e2e2;border:1px solid #cdcdcd;color:#555}.bundle.options.container .block.bundle.summary .addto.links .action.disabled,.bundle.options.container .block.bundle.summary .addto.links .action[disabled],fieldset[disabled] .bundle.options.container .block.bundle.summary .addto.links .action{cursor:default;pointer-events:none;opacity:.5}.bundle.options.container p.required{color:#e02b27}.layout-1 .products.grid .item.product{width:20%}.layout-2-left .products.grid .item.product{width:25%}.layout-2-right .products.grid .item.product{width:25%}.layout-3 .products.grid .item.product{width:33.33333333%}.old-price,.old.price{text-decoration:line-through}.actual.price{font-weight:700}.products.wrapper.grid .item.product{padding:0 20px 20px;margin:0 0 30px}.products.wrapper.list .item.product{margin-bottom:80px}.products.wrapper.list .item.product>.product{display:table;width:100%;table-layout:fixed}.products.wrapper.list .item.product .product.photo{display:table-cell;vertical-align:top;width:30%;padding-right:35px}.products.wrapper.list .item.product .product.details{display:table-cell;vertical-align:top}.products.wrapper.list .item.product .product.name{font-size:18px;margin-bottom:20px}.products.wrapper.list .item.product .price-box{width:30%;margin-right:2%;float:left}.products.wrapper.list .item.product .product.description{margin-top:30px;color:#111}.products.toolbar{display:table;width:100%;padding:10px;background:#f0f0f0;margin-bottom:40px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.products.toolbar .settings{display:table-cell;vertical-align:middle;text-align:left}.products.toolbar .pager{display:table-cell;vertical-align:middle;text-align:right}.products.toolbar .pages{display:table-cell;vertical-align:middle}.products.toolbar .modes{display:inline;margin-right:20px}.products.toolbar .modes .label{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.products.toolbar .modes .mode{border:1px solid #d1d1d1;width:37px;text-align:center;color:#7d7d7d}.products.toolbar .modes .mode>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.products.toolbar .modes .mode.active{background:#e5e5e5;color:#c7c7c7}.products.toolbar .modes .mode+.mode{margin-left:-4px;border-left:0}.products.toolbar .modes .mode.grid{display:inline-block;text-decoration:none}.products.toolbar .modes .mode.grid:before{font-family:"icons-blank-theme";content:'\e60d';font-size:26px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.products.toolbar .modes .mode.list{display:inline-block;text-decoration:none}.products.toolbar .modes .mode.list:before{font-family:"icons-blank-theme";content:'\e60b';font-size:26px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.products.toolbar .sorter{display:inline}.products.toolbar .sorter select{width:auto}.products.toolbar .sorter .action.sort.asc{display:inline-block;text-decoration:none}.products.toolbar .sorter .action.sort.asc:before{font-family:"icons-blank-theme";content:'\e614';font-size:27px;line-height:inherit;color:#7d7d7d;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.products.toolbar .sorter .action.sort.asc>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.products.toolbar .sorter .action.sort.desc{display:inline-block;text-decoration:none}.products.toolbar .sorter .action.sort.desc:before{font-family:"icons-blank-theme";content:'\e613';font-size:27px;line-height:inherit;color:#7d7d7d;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.products.toolbar .sorter .action.sort.desc>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.products.toolbar .limiter{display:inline;margin-left:20px}.products.toolbar .limiter select{width:auto}.products.toolbar .amount{display:inline}.block.filter .subtitle{display:block;font-size:12px;font-size:1.2rem;font-weight:700;line-height:1.1;margin-top:20px;margin-top:2rem;margin-bottom:20px;margin-bottom:2rem}.block.filter .options{margin:0}.block.filter .options>dt{font-size:12px;font-size:1.2rem;font-weight:700;line-height:1.1;margin-top:20px;margin-top:2rem;margin-bottom:20px;margin-bottom:2rem}.block.filter .options>dd{margin:0 0 30px}.block.filter .options .count{color:#7d7d7d}.block.filter .options .count:before{content:"("}.block.filter .options .count:after{content:")"}.block.filter .filtered .item{position:relative;padding-left:25px}.block.filter .filtered .item .label{font-weight:700}.block.filter .filtered .item .action.remove{position:absolute;top:-4px;left:0;display:inline-block;text-decoration:none}.block.filter .filtered .item .action.remove:before{font-family:"icons-blank-theme";content:'\e616';font-size:28px;line-height:1;color:#7d7d7d;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.block.filter .filtered .item .action.remove>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.block.filter .filtered+.actions{margin-bottom:30px}.layout-1 .product.info.main{width:40%;float:right}.layout-1 .product.media{float:left;width:57%}.layout-2-left .product.info.main,.layout-2-right .product.info.main{width:48%;float:right}.layout-2-left .product.media,.layout-2-right .product.media{float:left;width:50%}.layout-3 .product.info.main{width:48%;float:right}.layout-3 .product.media{float:left;width:50%}.product.media .photo.image{display:block;max-width:100%;height:auto}.product.media .notice{margin:10px 0;color:#7d7d7d;font-size:12px;font-size:1.2rem}.product.media .product.thumbs{margin:20px 0 30px}.product.media .items.thumbs{margin:0;padding:0;list-style-type:none;list-style-image:none}.product.media .items.thumbs>li{display:inline-block;vertical-align:top}.product.media .items.thumbs .active{display:block;line-height:1;outline:1px solid #ff5501}.product.info.detailed{clear:both}.product.info.detailed .table.additional.attributes{width:auto}.product.info.detailed .table.additional.attributes>caption{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.product.info.detailed .table.additional.attributes>thead>tr>td,.product.info.detailed .table.additional.attributes>tbody>tr>td,.product.info.detailed .table.additional.attributes>tfoot>tr>td{padding:1.5px 5px 10px 5px}.product.info.detailed .table.additional.attributes>thead>tr>th,.product.info.detailed .table.additional.attributes>tbody>tr>th,.product.info.detailed .table.additional.attributes>tfoot>tr>th{padding:1.5px 30px 10px 0}.product.info.main .stock.available,.product.info.main .stock.unavailable{display:inline-block;vertical-align:top;margin-bottom:5px;margin-right:20px}.product.info.main .product.attibute.sku{display:inline-block;vertical-align:top;margin-bottom:10px;color:#7d7d7d}.product.info.main .product.attibute.sku>.value{display:inline-block;vertical-align:top}.product.info.main .product.attibute.overview{margin:20px 0}.product.info.main .product.alert{margin:10px 0}.product.info.main .product.options.wrapper .field{margin:0 0 20px;border:0}.product.info.main .product.options.wrapper .field:not(.choice)>.label{display:inline-block;width:auto;float:none;text-align:left;margin:0 0 5px}.product.info.main .product.options.wrapper .field.choice:before,.product.info.main .product.options.wrapper .field.no-label:before{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;content:" ";height:auto;float:none;width:auto;padding:0}.product.info.main .product.options.wrapper .field>.control{float:none;width:auto}.product.info.main .product.options.wrapper .field>.label{font-size:14px;font-size:1.4rem;font-weight:700}.product.info.main .product.options.wrapper .field>.label+br{display:none}.product.info.main .product.options.wrapper .field.required>.label:after{content:'*';font-size:12px;font-size:1.2rem;color:#e02b27;margin:0 0 0 5px}.product.info.main .product.options.wrapper .field .nested .field{margin:5px 0}.product.info.main .product.options.wrapper .field.choice>.label{display:inline}.product.info.main .product.options.wrapper .field.choice>input{vertical-align:top}.product.info.main .product.options.wrapper .field .fields.group{display:flex;letter-spacing:-.31em;*letter-spacing:normal;word-spacing:-.43em;margin-right:- 20px}.product.info.main .product.options.wrapper .field .fields.group>*{letter-spacing:normal;word-spacing:normal}.product.info.main .product.options.wrapper .field .fields.group .field{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;vertical-align:top;margin:0!important}.product.info.main .product.options.wrapper .field .fields.group .field .label{width:auto;float:none;text-align:left;padding-right:0}.product.info.main .product.options.wrapper .field .fields.group .field .control{float:none;width:auto}.product.info.main .product.options.wrapper .field .fields.group.group-2 .field{width:50%!important;display:inline-block}.product.info.main .product.options.wrapper .field .fields.group.group-3 .field{width:33.3%!important;display:inline-block}.product.info.main .product.options.wrapper .field .fields.group.group-4 .field{width:25%!important;display:inline-block}.product.info.main .product.options.wrapper .field .fields.group.group-5 .field{width:20%!important;display:inline-block}.product.info.main .product.options.wrapper .field .addon{display:inline-flex;flex-wrap:nowrap;padding:0;width:100%}.product.info.main .product.options.wrapper .field .addon textarea,.product.info.main .product.options.wrapper .field .addon select,.product.info.main .product.options.wrapper .field .addon input{order:2;box-shadow:none;display:inline-block;margin:0;width:auto;flex-basis:100%}.product.info.main .product.options.wrapper .field .addon .addbefore,.product.info.main .product.options.wrapper .field .addon .addafter{order:3;display:inline-block;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;border:1px solid #c2c2c2;border-radius:1px;height:32px;width:100%;padding:0 10px;font-size:14px;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;line-height:1.42857143;font-style:normal;color:#333;background-clip:padding-box;vertical-align:baseline;width:auto;white-space:nowrap;vertical-align:middle}.product.info.main .product.options.wrapper .field .addon .addbefore:disabled,.product.info.main .product.options.wrapper .field .addon .addafter:disabled{opacity:.5}.product.info.main .product.options.wrapper .field .addon .addbefore{float:left;order:1}.product.info.main .product.options.wrapper .field .note{font-size:12px;font-size:1.2rem;margin:3px 0 0;padding:0;display:inline-block;text-decoration:none}.product.info.main .product.options.wrapper .field .note:before{font-family:"icons-blank-theme";content:'\e618';font-size:24px;line-height:12px;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.product.info.main .price-box .price{font-weight:700;font-size:18px}.product.info.main .box.tocart{display:table;margin:20px 0}.product.info.main .box.tocart .field.qty{display:table-cell;vertical-align:bottom;padding-right:15px}.product.info.main .box.tocart .input-text.qty{height:52px;width:52px;text-align:center}.product.info.main .box.tocart .actions{display:table-cell;vertical-align:bottom}.product.info.main .box.tocart .action.tocart{background-image:none;background-color:#1979c3;padding:0 15px;color:#fff;border:1px solid #1979c3;cursor:pointer;display:inline-block;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;line-height:30px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;vertical-align:middle;line-height:50px;padding:0 17px;font-size:18px;font-size:1.8rem}.product.info.main .box.tocart .action.tocart:focus,.product.info.main .box.tocart .action.tocart:active{background-color:#006bb4;border:1px solid #006bb4;outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;color:#fff}.product.info.main .box.tocart .action.tocart:hover{background-color:#006bb4;border:1px solid #006bb4;color:#fff}.product.info.main .box.tocart .action.tocart.disabled,.product.info.main .box.tocart .action.tocart[disabled],fieldset[disabled] .product.info.main .box.tocart .action.tocart{cursor:default;pointer-events:none;opacity:.5}.product.info.main .addto{margin:20px 0}.product.info.main .action.tocompare{line-height:22px;padding:0 8px;font-size:11px;font-size:1.1rem}.prices.tier.items{background:#f5f5f5;padding:10px 15px;margin:10px 0}.minimal-price-link,.price-excluding-tax,.price-including-tax{white-space:nowrap;display:inline-block}.map.popup{width:380px;background-color:#fff;padding:22px;border:1px solid #aeaeae;-webkit-box-shadow:0 3px 3px rgba(0,0,0,.15);-moz-box-shadow:0 3px 3px rgba(0,0,0,.15);box-shadow:0 3px 3px rgba(0,0,0,.15);display:none;position:fixed;top:20%;left:50%;margin-top:10px;margin-left:0;z-index:1001;opacity:0;-webkit-transition:opacity .3s linear;-moz-transition:opacity .3s linear;transition:opacity .3s linear;position:absolute}.map.popup .popup.header .title{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem}.map.popup .popup.content{margin:10px 0 0}.map.popup .popup.actions .action.close{position:absolute;display:inline-block;background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400;top:10px;right:10px}.map.popup .popup.actions .action.close>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.map.popup .popup.actions .action.close:before{font-family:"icons-blank-theme";content:'\e616';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.map.popup .popup.actions .action.close:hover:before{color:inherit}.map.popup .popup.actions .action.close:active:before{color:inherit}.map.popup .popup.actions .action.close:focus,.map.popup .popup.actions .action.close:active{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;background:0;border:0}.map.popup .popup.actions .action.close:hover{background:0;border:0}.map.popup .popup.actions .action.close.disabled,.map.popup .popup.actions .action.close[disabled],fieldset[disabled] .map.popup .popup.actions .action.close{cursor:not-allowed;pointer-events:none;opacity:.5}.map.popup.active{opacity:1}.map.popup .form.map.checkout{float:right}.map.popup .action.tocart{background-image:none;background-color:#1979c3;padding:0 15px;color:#fff;border:1px solid #1979c3;cursor:pointer;display:inline-block;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;line-height:30px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;vertical-align:middle}.map.popup .action.tocart:focus,.map.popup .action.tocart:active{background-color:#006bb4;border:1px solid #006bb4;outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;color:#fff}.map.popup .action.tocart:hover{background-color:#006bb4;border:1px solid #006bb4;color:#fff}.map.popup .action.tocart.disabled,.map.popup .action.tocart[disabled],fieldset[disabled] .map.popup .action.tocart{cursor:default;pointer-events:none;opacity:.5}body.catalog-product-compare-index .action.print{float:right;margin:15px 0}.comparison.wrapper{clear:both;position:relative;z-index:1;margin-bottom:50px}.comparison.container{overflow-x:auto}.data.comparison{table-layout:fixed;margin-bottom:0}.data.comparison caption,.data.comparison .cell.label.remove,.data.comparison .cell.label.product{font:0/0 a}.data.comparison .cell.label{font-weight:700;border-right:1px solid #e5e5e5}.data.comparison .cell.label .attribute.label{display:block;width:100%;word-break:break-all}.data.comparison .cell{width:140px;padding:15px;vertical-align:top}.data.comparison .cell .attibute.value{width:100%;overflow:hidden}.data.comparison .cell.product.info,.data.comparison .cell.product.label{border-bottom:1px solid #e5e5e5}.data.comparison .cell.attribute{font-size:13px}.data.comparison .cell.attribute img{max-width:100%;height:auto}.data.comparison td:last-child{border-right:1px solid #e5e5e5}.data.comparison .product.photo{text-align:center;display:block;margin:0 auto 15px}.data.comparison .product.photo .img.photo.container{display:inline-block!important}.data.comparison .actions,.data.comparison .price-box,.data.comparison .product.rating,.data.comparison .product.name{display:block;margin:15px 0}.data.comparison .action.tocart{background-image:none;background-color:#1979c3;padding:0 15px;color:#fff;border:1px solid #1979c3;cursor:pointer;display:inline-block;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;line-height:30px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;vertical-align:middle}.data.comparison .action.tocart:focus,.data.comparison .action.tocart:active{background-color:#006bb4;border:1px solid #006bb4;outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;color:#fff}.data.comparison .action.tocart:hover{background-color:#006bb4;border:1px solid #006bb4;color:#fff}.data.comparison .action.tocart.disabled,.data.comparison .action.tocart[disabled],fieldset[disabled] .data.comparison .action.tocart{cursor:default;pointer-events:none;opacity:.5}.data.comparison .addto.links{margin-top:15px}.data.comparison .addto.links .action.split,.data.comparison .addto.links .action.toggle{line-height:22px;padding:0 8px;font-size:11px;font-size:1.1rem}.data.comparison .addto.links .action.toggle{padding:0}.data.comparison .cell.remove{padding-top:0;padding-bottom:0;text-align:right}.comparison.headings{position:absolute;z-index:2;top:0;left:0;width:auto;background:#fff}.block.event{clear:both}.block.event.category{margin-top:10px;margin-bottom:25px}.block.event.category .content{padding:15px;text-align:center;min-height:67px}.block.event .ticker li{display:none;margin:0 3px}.block.event .ticker .value{font-size:21px}.block.event .ticker .label{display:block;font-size:12px}.block.event .dates .start,.block.event .dates .end{display:inline-block}.block.event .dates .date{font-size:21px}.block.event .dates .start:after{content:"\2013";margin:0 10px;display:inline-block}.block.event .content{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;position:relative}.block.event .content:before,.block.event .content:after{content:"";position:absolute;display:block;width:0;height:0;border-bottom-style:solid;pointer-events:none}.block.event .content:before{bottom:-30px;left:50%;margin-left:-15px;z-index:99;border:solid 15px}.block.event .content:after{bottom:-32px;left:50%;margin-left:-16px;z-index:98;border:solid 16px}.block.event .content .subtitle{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem;display:block;margin-top:0}.block.event.open .content,.block.event .open .content{background:#feebe5;border:1px solid #f99d84;color:#da370a}.block.event.open .content:before,.block.event .open .content:before{border-color:#feebe5 rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0)}.block.event.open .content:after,.block.event .open .content:after{border-color:#f99d84 rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0)}.block.event.upcoming .content,.block.event .upcoming .content{background:#daf2fa;border:1px solid #81d2ed;color:#1b92ba}.block.event.upcoming .content:before,.block.event .upcoming .content:before{border-color:#daf2fa rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0)}.block.event.upcoming .content:after,.block.event .upcoming .content:after{border-color:#81d2ed rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0)}.block.event.closed .content,.block.event .closed .content{background:#f7f7f7;border:1px solid #c3c3c3;color:#777}.block.event.closed .content:before,.block.event .closed .content:before{border-color:#f7f7f7 rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0)}.block.event.closed .content:after,.block.event .closed .content:after{border-color:#c3c3c3 rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0)}.columns .block.event{position:relative;z-index:2}.block.event .panel{position:relative;overflow:hidden;z-index:2}.block.event .panel>.slider{white-space:nowrap}.block.event .panel>.slider .item{display:inline-block;text-align:center;white-space:normal;vertical-align:top;width:16.35%}.sidebar .block.event .panel>.slider .item{width:100%}.block.event .panel>.slider .item img{max-width:100%}.block.event .panel>.slider .item>.event .content{border-left:0;border-right:0;padding:15px 0;min-height:156px}.block.event .panel>.slider .item>.event .subtitle{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem;display:block;margin-top:0}.block.event .panel>.slider .item>.event .dates .start,.block.event .panel>.slider .item>.event .dates .end{display:block}.block.event .panel>.slider .item>.event .dates .start:after{display:block}.block.event .panel>.slider .item>.event .dates .date{font-size:14px;font-weight:600}.block.event .panel>.slider .item>.event .dates .time{font-size:10px}.block.event .panel>.slider .item>.event .action.event{margin-top:15px;display:inline-block}.block.event .panel>.slider .item .action.show{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;display:block;padding:0}.block.event .panel>.slider .item .action.show .category.name{display:inline-block;padding:30px 10px 0}.block.event .action.slider{cursor:pointer;position:absolute;z-index:3;top:50%;margin-top:-15px}.block.event .action.slider.backward,.block.event .action.slider.forward{width:20px;overflow:hidden;opacity:.5;display:inline-block;text-decoration:none}.block.event .action.slider.backward>span,.block.event .action.slider.forward>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.block.event .action.slider.backward:before,.block.event .action.slider.forward:before{font-family:"icons-blank-theme";content:'\e617';font-size:80px;line-height:30px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.block.event .action.slider.backward:before,.block.event .action.slider.forward:before{margin-left:-30px}.block.event .action.slider.backward{left:0}.block.event .action.slider.forward{right:0}.block.event .action.slider.forward:before{content:'\e608'}.block.event .action.slider.inactive{cursor:default;display:none}.block.event .action.slider:hover{opacity:1}.block.search{float:right;padding-left:15px;position:relative;width:250px;z-index:1}.block.search input{padding-right:35px}.block.search .label{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.block.search .title{display:none}.block.search .action.search{position:absolute;right:10px;top:0;z-index:1;background-color:#f2f2f2;padding:0 15px;color:#333;border:1px solid #cdcdcd;cursor:pointer;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;line-height:30px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;margin:3px;vertical-align:middle;display:inline-block;background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400}.block.search .action.search>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.block.search .action.search:before{font-family:"icons-blank-theme";content:'\e615';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.block.search .action.search:hover:before{color:inherit}.block.search .action.search:active:before{color:inherit}.block.search .action.search:focus,.block.search .action.search:active{background-color:#e2e2e2;border:1px solid #cdcdcd;outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;color:#333}.block.search .action.search:hover{background-color:#e2e2e2;border:1px solid #cdcdcd;color:#555}.block.search .action.search.disabled,.block.search .action.search[disabled],fieldset[disabled] .block.search .action.search{cursor:default;pointer-events:none;opacity:.5}.block.search .action.search:focus,.block.search .action.search:active{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;background:0;border:0}.block.search .action.search:hover{background:0;border:0}.block.search .action.search.disabled,.block.search .action.search[disabled],fieldset[disabled] .block.search .action.search{cursor:not-allowed;pointer-events:none;opacity:.5}.block.search .nested{padding-top:5px;position:absolute}.cart.container:before,.cart.container:after{content:"";display:table}.cart.container:after{clear:both}.cart.summary{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;float:right;width:23%;background:#f5f5f5;margin-bottom:25px;padding:1px 15px 25px}.cart.summary>.title{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem;display:block}.cart.summary .block{margin-bottom:0}.cart.summary .block>.title{display:inline-block;text-decoration:none;border-top:1px solid #d1d1d1;cursor:pointer;display:block;font-weight:600;line-height:36px;margin-bottom:0;padding:0 20px 0 5px;position:relative}.cart.summary .block>.title:after{font-family:"icons-blank-theme";content:'\e622';font-size:30px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.cart.summary .block>.title:after{position:absolute;right:0;top:0}.cart.summary .block>.title.active:after{content:'\e617'}.cart.summary .block>.title strong{font-weight:400}.cart.summary .block .content{display:none}.cart.summary .block.active .content{display:block}.cart.summary .block .item.options{margin-left:0}.cart.summary .block.discount .field>.label{display:block;float:none;text-align:left;width:auto}.cart.summary .fieldset{margin:15px 0 25px 5px}.cart.summary .field{margin:0 0 10px;border:0}.cart.summary .field:not(.choice)>.label{display:inline-block;width:auto;float:none;text-align:left;margin:0 0 5px}.cart.summary .field.choice:before,.cart.summary .field.no-label:before{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;content:" ";height:auto;float:none;width:auto;padding:0}.cart.summary .field>.control{float:none;width:auto}.cart.summary .field>.label{font-size:14px;font-size:1.4rem;font-weight:700}.cart.summary .field>.label+br{display:none}.cart.summary .field.required>.label:after{content:'*';font-size:12px;font-size:1.2rem;color:#e02b27;margin:0 0 0 5px}.cart.summary .field .nested .field{margin:5px 0}.cart.summary .field.choice>.label{display:inline}.cart.summary .field.choice>input{vertical-align:top}.cart.summary .field .fields.group{display:flex;letter-spacing:-.31em;*letter-spacing:normal;word-spacing:-.43em;margin-right:- 20px}.cart.summary .field .fields.group>*{letter-spacing:normal;word-spacing:normal}.cart.summary .field .fields.group .field{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;vertical-align:top;margin:0!important}.cart.summary .field .fields.group .field .label{width:auto;float:none;text-align:left;padding-right:0}.cart.summary .field .fields.group .field .control{float:none;width:auto}.cart.summary .field .fields.group.group-2 .field{width:50%!important;display:inline-block}.cart.summary .field .fields.group.group-3 .field{width:33.3%!important;display:inline-block}.cart.summary .field .fields.group.group-4 .field{width:25%!important;display:inline-block}.cart.summary .field .fields.group.group-5 .field{width:20%!important;display:inline-block}.cart.summary .field .addon{display:inline-flex;flex-wrap:nowrap;padding:0;width:100%}.cart.summary .field .addon textarea,.cart.summary .field .addon select,.cart.summary .field .addon input{order:2;box-shadow:none;display:inline-block;margin:0;width:auto;flex-basis:100%}.cart.summary .field .addon .addbefore,.cart.summary .field .addon .addafter{order:3;display:inline-block;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;border:1px solid #c2c2c2;border-radius:1px;height:32px;width:100%;padding:0 10px;font-size:14px;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;line-height:1.42857143;font-style:normal;color:#333;background-clip:padding-box;vertical-align:baseline;width:auto;white-space:nowrap;vertical-align:middle}.cart.summary .field .addon .addbefore:disabled,.cart.summary .field .addon .addafter:disabled{opacity:.5}.cart.summary .field .addon .addbefore{float:left;order:1}.cart.summary .field .note{font-size:12px;font-size:1.2rem;margin:3px 0 0;padding:0;display:inline-block;text-decoration:none}.cart.summary .field .note:before{font-family:"icons-blank-theme";content:'\e618';font-size:24px;line-height:12px;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.cart.summary .field.note{font-size:12px}.cart.summary .field.postcode,.cart.summary .coupon .field{display:table-cell;position:relative;vertical-align:bottom;width:99%;z-index:1}.cart.summary .field.postcode div.mage-error,.cart.summary .coupon .field div.mage-error{position:absolute}.cart.summary .control{float:none;width:auto}.cart.summary .estimate .actions,.cart.summary .coupon .actions{display:table-cell;width:1%;white-space:nowrap;vertical-align:bottom}.cart.summary .action.quote,.cart.summary .action.apply,.cart.summary .action.cancel{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;border-top-left-radius:0;border-bottom-left-radius:0;margin-left:-1px}.cart.totals{border-top:1px solid #d1d1d1;padding-top:10px}.cart.totals .mark{padding-left:4px}.cart.totals .amount{padding-right:4px;text-align:right}.cart.totals .grand .mark,.cart.totals .grand .amount{padding-top:25px}.cart.totals .grand .mark strong{font-weight:400}.cart.totals .msrp{margin-bottom:10px}.cart .checkout.methods{text-align:center}.cart .action.primary{line-height:50px;padding:0 17px;font-size:18px;font-size:1.8rem;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;margin-bottom:20px;width:100%}.cart.table.wrapper{float:left;width:73%}.cart.table.wrapper .cart.items>caption{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.cart.table.wrapper .cart.items .action{display:inline-block;text-decoration:none;margin-left:10px}.cart.table.wrapper .cart.items .action:hover,.cart.table.wrapper .cart.items .action:active,.cart.table.wrapper .cart.items .action:focus{text-decoration:none}.cart.table.wrapper .cart.items .action.help.map{background:0;border:0;display:inline;line-height:1.42857143;margin:0;padding:0;color:#1979c3;text-decoration:none;font-weight:400}.cart.table.wrapper .cart.items .action.help.map:visited{color:#800080;text-decoration:none}.cart.table.wrapper .cart.items .action.help.map:hover{color:#006bb4;text-decoration:underline}.cart.table.wrapper .cart.items .action.help.map:active{color:#ff5501;text-decoration:underline}.cart.table.wrapper .cart.items .action.help.map:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.cart.table.wrapper .cart.items .action.help.map:hover,.cart.table.wrapper .cart.items .action.help.map:active,.cart.table.wrapper .cart.items .action.help.map:focus{background:0;border:0;outline:0}.cart.table.wrapper .cart.items .action.help.map.disabled,.cart.table.wrapper .cart.items .action.help.map[disabled],fieldset[disabled] .cart.table.wrapper .cart.items .action.help.map{color:#1979c3;text-decoration:underline;cursor:default;pointer-events:none;opacity:.5}.cart.table.wrapper .cart.items thead+.cart.item{border-top:1px solid #d1d1d1}.cart.table.wrapper .cart.items>.item.cart{border-bottom:1px solid #d1d1d1}.cart.table.wrapper .item .col{padding-top:27px}.cart.table.wrapper .item .col.qty{padding-top:20px}.cart.table.wrapper .item .col.qty .input-text{width:3.3em}.cart.table.wrapper .item.actions td{padding-bottom:17px;text-align:right}.cart.table.wrapper .col.price,.cart.table.wrapper .col.qty,.cart.table.wrapper .col.qty .qty,.cart.table.wrapper .col.subtotal{white-space:nowrap;text-align:center}.cart.table.wrapper .product.photo{display:table-cell;padding-right:20px;vertical-align:top;width:1%}.cart.table.wrapper .product.details{display:table-cell;vertical-align:top;width:99%}.cart.table.wrapper .item.options{font-size:12px;margin-top:10px}.cart.table.wrapper .action.continue{background-image:none;background-color:#f2f2f2;padding:0 15px 0 5px;color:#333;border:1px solid #cdcdcd;cursor:pointer;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;line-height:30px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;margin:0;vertical-align:middle;display:inline-block;text-decoration:none;border-radius:3px;font-weight:700}.cart.table.wrapper .action.continue:hover,.cart.table.wrapper .action.continue:active,.cart.table.wrapper .action.continue:focus{text-decoration:none}.cart.table.wrapper .action.continue:before{font-family:"icons-blank-theme";content:'\e617';font-size:32px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.cart.table.wrapper .action.continue:hover:before{color:inherit}.cart.table.wrapper .action.continue:active:before{color:inherit}.cart.table.wrapper .action.continue:focus,.cart.table.wrapper .action.continue:active{background-color:#e2e2e2;border:1px solid #cdcdcd;outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;color:#333}.cart.table.wrapper .action.continue:hover{background-color:#e2e2e2;border:1px solid #cdcdcd;color:#555}.cart.table.wrapper .action.continue.disabled,.cart.table.wrapper .action.continue[disabled],fieldset[disabled] .cart.table.wrapper .action.continue{cursor:default;pointer-events:none;opacity:.5}.cart.table.wrapper .action.continue:active{box-shadow:inset 0 3px 1px rgba(0,0,0,.29)}.cart.table.wrapper .action.update{display:inline-block;text-decoration:none;float:right;padding-left:5px}.cart.table.wrapper .action.update:before{font-family:"icons-blank-theme";content:'\e603';font-size:32px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.cart.table.wrapper .action.clear{float:right;margin-right:10px}.block.crosssell{margin-top:70px}.block.crosssell .title{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem}.block.crosssell .title strong{font-weight:400}.block.crosssell .item.product{margin:0 0 30px;padding:0 15px 0 0;width:20%}.block.progress.onepage{background:#f5f5f5;margin-bottom:30px;padding:1px 15px 5px}.block.progress.onepage>.title{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem;margin-bottom:20px}.block.progress.onepage>.title strong{font-weight:400}.block.progress.onepage .content dd.complete{margin:0 0 15px}.block.progress.onepage .content dd.complete .content{margin:0}.block.progress.onepage .content .action,.block.progress.onepage .content .payment.method .title{font-weight:400}.block.progress.onepage .content .data.table{font-size:12px}.opc.wrapper .section.allow>.title{cursor:pointer}.opc.wrapper .step.title{line-height:50px;border-bottom:1px solid #d1d1d1}.opc.wrapper .step.title h2,.opc.wrapper .step.title .number{display:inline-block;font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem}.opc.wrapper .step.title .number:after{content:"."}.opc.wrapper .step.content{padding:20px 25px 40px;position:relative}.opc.wrapper .step.content .addresses .control{margin:20px 0 30px}.opc.wrapper .step.content .fieldset{margin-bottom:0}.opc.wrapper .step.content .form:after{content:attr(data-hasrequired);display:block;font-size:12px;font-size:1.2rem;color:#e02b27;margin:10px 0 0;letter-spacing:normal;word-spacing:normal}.opc.wrapper .step.content .form:after{text-align:right}.opc.wrapper .step.content .form>.choice{margin-left:25.8%;margin-top:29px}.opc.wrapper .step.content .actions{margin-top:40px}.opc.wrapper .items.methods .content{margin-left:20px}.opc.wrapper .items.methods img{vertical-align:middle}.opc.wrapper .items.methods .field.month{padding-right:10px}.opc.wrapper .items.methods.payment .content{margin-bottom:0}.opc.wrapper .items.methods.payment .content .fieldset{padding:15px 0}.opc.wrapper .items.methods.payment .content .label{font-weight:400}.opc.wrapper .fieldset.gift.message>legend{margin-left:0;padding:0}.opc.wrapper .fieldset.gift.message .field.choice{font-weight:400;margin-left:20px}.opc.wrapper .fieldset.gift.message .field.choice:before{display:none}.opc.wrapper .fieldset.gift.message .block.items{background:#f5f5f5;display:block;padding:20px 30px;margin-bottom:0}.opc.wrapper .fieldset.gift.message .block.items>dt{margin-top:10px;margin-bottom:0}.opc.wrapper .fieldset.gift.message .block.items .block.message{margin-bottom:10px}.opc.wrapper .fieldset.gift.message .block.items .options.individual{margin-left:20px}.opc.wrapper .options.individual{margin-top:10px}.opc.wrapper .options.individual ol>.item{border-bottom:1px solid #d1d1d1;padding-bottom:10px;margin-bottom:20px}.opc.wrapper .options.individual ol>.item .product{margin-bottom:10px}.opc.wrapper .options.individual ol>.item .product:before,.opc.wrapper .options.individual ol>.item .product:after{content:"";display:table}.opc.wrapper .options.individual ol>.item .product:after{clear:both}.opc.wrapper .options.individual ol>.item .product .img{float:left;margin-right:20px}.opc.wrapper .options.individual ol>.item:last-child{border-bottom:0;padding-bottom:0}.opc.wrapper .options.individual .number{font-size:12px}.opc.wrapper .activate.message{display:inline-block;margin:10px 0}.opc.wrapper .data.table>caption{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.opc.wrapper .data.table tbody tr:first-child td{border-top:1px solid #d1d1d1}.opc.wrapper .data.table .col.price,.opc.wrapper .data.table .col.qty{text-align:center;white-space:nowrap}.opc.wrapper .data.table .col.subtotal{text-align:right;white-space:nowrap}.opc.wrapper .data.table .amount{text-align:right}.opc.wrapper .data.table td{padding:7px 10px}.opc.wrapper .data.table tbody tr:last-child td{border-bottom:1px solid #d1d1d1}.opc.wrapper .action.primary.checkout{margin:0 0 20px}.opc.wrapper .hidden{display:none}.opc.wrapper .step.login.wrapper:before,.opc.wrapper .step.login.wrapper:after{content:"";display:table}.opc.wrapper .step.login.wrapper:after{clear:both}.opc.wrapper .step.login.wrapper .fieldset.guest{margin-top:20px}.opc.wrapper .step.login.wrapper .field.choice{margin-bottom:10px}.opc.wrapper .step.login.wrapper .field.choice:before{display:none}.block.minicart.empty{text-align:center;font-size:12px}.block.minicart .subtotal{border-top:1px solid #e8e8e8;padding-top:10px}.block.minicart .subtotal .amount{font-size:21px}.block.minicart .subtitle{margin-bottom:15px}.block.minicart>.content>.actions{margin-top:10px}.block.minicart>.content>.actions .secondary,.block.minicart>.content>.actions .primary{padding-right:20px;display:inline}.minicart.wrapper{float:right;order:3;display:inline-block;position:relative}.minicart.wrapper:before,.minicart.wrapper:after{content:"";display:table}.minicart.wrapper:after{clear:both}.minicart.wrapper .action.showcart{cursor:pointer;display:inline-block;text-decoration:none}.minicart.wrapper .action.showcart:before{font-family:"icons-blank-theme";content:'\e611';font-size:35px;line-height:33px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.minicart.wrapper .action.showcart:hover:before{color:inherit}.minicart.wrapper .action.showcart:active:before{color:inherit}.minicart.wrapper .action.showcart.active{display:inline-block;text-decoration:none}.minicart.wrapper .action.showcart.active:before{font-family:"icons-blank-theme";content:'\e611';font-size:35px;line-height:33px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.minicart.wrapper .action.showcart.active:hover:before{color:inherit}.minicart.wrapper .action.showcart.active:active:before{color:inherit}.minicart.wrapper .block.minicart{margin:0;padding:0;list-style-type:none;list-style-image:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;background-color:#fff;border:1px solid #bbb;position:absolute;z-index:100;min-width:100%;display:none;-webkit-box-shadow:0 3px 3px rgba(0,0,0,.15);-moz-box-shadow:0 3px 3px rgba(0,0,0,.15);box-shadow:0 3px 3px rgba(0,0,0,.15);margin-top:4px}.minicart.wrapper .block.minicart li{margin:0}.minicart.wrapper .block.minicart li:hover{cursor:pointer}.minicart.wrapper .block.minicart:before,.minicart.wrapper .block.minicart:after{content:"";position:absolute;display:block;width:0;height:0;border-bottom-style:solid}.minicart.wrapper .block.minicart:before{top:-12px;left:10px;z-index:99;border:solid 6px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #fff rgba(0,0,0,0)}.minicart.wrapper .block.minicart:after{top:-14px;left:9px;z-index:98;border:solid 7px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #bbb rgba(0,0,0,0)}.minicart.wrapper.active{overflow:visible}.minicart.wrapper.active .block.minicart{display:block}.minicart.wrapper .action.showcart{white-space:nowrap}.minicart.wrapper .action.showcart .text{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.minicart.wrapper .action.showcart .counter.qty{overflow:hidden;margin:3px 0 0;padding:0 3px;clip:none;display:inline-block;white-space:normal;min-width:20px;max-width:2em;background:#ff5501;text-align:center;color:#fff;line-height:26px;height:26px;border-radius:2px}.minicart.wrapper .action.showcart .counter.qty.empty:before{content:"0"}.minicart.wrapper .block.minicart{right:-15px;width:380px;padding:15px 15px 15px}.minicart.wrapper .block.minicart>.title{display:none}.minicart.wrapper .block.minicart:before,.minicart.wrapper .block.minicart:after{left:auto;right:25px}.minicart.wrapper .block.minicart:before{right:26px}.minicart.wrapper .product.actions{text-align:right}.minicart.wrapper .product.actions .primary,.minicart.wrapper .product.actions .secondary{display:inline}.minicart.wrapper .pricing.details{display:table}.minicart.wrapper .pricing.details .rate,.minicart.wrapper .pricing.details .details.qty{display:table-row}.minicart.wrapper .pricing.details .value,.minicart.wrapper .pricing.details .label{padding-right:10px;display:table-cell}.minicart.wrapper .pricing.details .label:after{content:":"}.minicart.wrapper .action.edit{display:inline-block;text-decoration:none}.minicart.wrapper .action.edit>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.minicart.wrapper .action.edit:before{font-family:"icons-blank-theme";content:'\e606';font-size:28px;line-height:28px;color:#303030;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.minicart.wrapper .action.edit:hover:before{color:#303030}.minicart.wrapper .action.edit:active:before{color:#303030}.minicart.wrapper .action.close{position:absolute;right:14px;top:6px;display:inline-block;background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400}.minicart.wrapper .action.close:before{font-family:"icons-blank-theme";content:'\e616';font-size:33px;line-height:33px;color:#7d7d7d;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.minicart.wrapper .action.close:focus,.minicart.wrapper .action.close:active{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;background:0;border:0}.minicart.wrapper .action.close:hover{background:0;border:0}.minicart.wrapper .action.close.disabled,.minicart.wrapper .action.close[disabled],fieldset[disabled] .minicart.wrapper .action.close{cursor:not-allowed;pointer-events:none;opacity:.5}.minicart.wrapper .action.close>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.minilist{margin:0;padding:0;list-style-type:none;list-style-image:none}.minilist .item{border-top:1px solid #e8e8e8;padding:15px 0;z-index:1}.minilist .item>.product{display:flex}.minilist .item>.product:before,.minilist .item>.product:after{content:"";display:table}.minilist .item>.product:after{clear:both}.minilist .product.photo{margin-right:10px}.minilist .product.details{flex-grow:1}.minilist .action.delete{display:inline-block;text-decoration:none}.minilist .action.delete>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.minilist .action.delete:before{font-family:"icons-blank-theme";content:'\e604';font-size:28px;line-height:28px;color:#303030;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.minilist .action.delete:hover:before{color:#303030}.minilist .action.delete:active:before{color:#303030}.login.container:before,.login.container:after{content:"";display:table}.login.container:after{clear:both}.login.container .block.login .actions.toolbar .primary{margin-right:30px}.login.container .block.login .actions.toolbar .secondary{float:left}.login.container .block.new .actions.toolbar{margin-top:25px}.login.container .block .title{padding-bottom:15px;margin-bottom:15px;border-bottom:1px solid #e8e8e8}.login.container .block .title strong{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem}.login.container .fieldset:after{content:attr(data-hasrequired);display:block;font-size:12px;font-size:1.2rem;color:#e02b27;margin:10px 0 0;letter-spacing:normal;word-spacing:normal}.login.container .fieldset:after{margin:35px 0 0 25.8%}.login.container .fieldset>.field>.control{width:55%}.form.password.reset,.form.send.confirmation,.form.password.forget,.form.create.account{width:50%}.block.addresses.list ol.items.addresses:before,.block.addresses.list ol.items.addresses:after{content:"";display:table}.block.addresses.list ol.items.addresses:after{clear:both}.block.addresses.list ol.items.addresses li.item{margin-bottom:20px}.block.addresses.list ol.items.addresses li.item:nth-last-child(1),.block.addresses.list ol.items.addresses li.item:nth-last-child(2){margin-bottom:0}.downloadable.samples{margin-bottom:20px}.downloadable.samples dd{margin:0 0 10px}.field.downloads{margin:0 0 20px;border:0}.field.downloads:not(.choice)>.label{display:inline-block;width:auto;float:none;text-align:left;margin:0 0 5px}.field.downloads.choice:before,.field.downloads.no-label:before{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;content:" ";height:auto;float:none;width:auto;padding:0}.field.downloads>.control{float:none;width:auto}.field.downloads>.label{font-size:14px;font-size:1.4rem;font-weight:700}.field.downloads>.label+br{display:none}.field.downloads.required>.label:after{content:'*';font-size:12px;font-size:1.2rem;color:#e02b27;margin:0 0 0 5px}.field.downloads .nested .field{margin:5px 0}.field.downloads.choice>.label{display:inline}.field.downloads.choice>input{vertical-align:top}.field.downloads .fields.group{display:flex;letter-spacing:-.31em;*letter-spacing:normal;word-spacing:-.43em;margin-right:- 20px}.field.downloads .fields.group>*{letter-spacing:normal;word-spacing:normal}.field.downloads .fields.group .field{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;vertical-align:top;margin:0!important}.field.downloads .fields.group .field .label{width:auto;float:none;text-align:left;padding-right:0}.field.downloads .fields.group .field .control{float:none;width:auto}.field.downloads .fields.group.group-2 .field{width:50%!important;display:inline-block}.field.downloads .fields.group.group-3 .field{width:33.3%!important;display:inline-block}.field.downloads .fields.group.group-4 .field{width:25%!important;display:inline-block}.field.downloads .fields.group.group-5 .field{width:20%!important;display:inline-block}.field.downloads .addon{display:inline-flex;flex-wrap:nowrap;padding:0;width:100%}.field.downloads .addon textarea,.field.downloads .addon select,.field.downloads .addon input{order:2;box-shadow:none;display:inline-block;margin:0;width:auto;flex-basis:100%}.field.downloads .addon .addbefore,.field.downloads .addon .addafter{order:3;display:inline-block;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;border:1px solid #c2c2c2;border-radius:1px;height:32px;width:100%;padding:0 10px;font-size:14px;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;line-height:1.42857143;font-style:normal;color:#333;background-clip:padding-box;vertical-align:baseline;width:auto;white-space:nowrap;vertical-align:middle}.field.downloads .addon .addbefore:disabled,.field.downloads .addon .addafter:disabled{opacity:.5}.field.downloads .addon .addbefore{float:left;order:1}.field.downloads .note{font-size:12px;font-size:1.2rem;margin:3px 0 0;padding:0;display:inline-block;text-decoration:none}.field.downloads .note:before{font-family:"icons-blank-theme";content:'\e618';font-size:24px;line-height:12px;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.product.add.form .giftcard.form .field{margin:0 0 20px;border:0}.product.add.form .giftcard.form .field:not(.choice)>.label{display:inline-block;width:auto;float:none;text-align:left;margin:0 0 5px}.product.add.form .giftcard.form .field.choice:before,.product.add.form .giftcard.form .field.no-label:before{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;content:" ";height:auto;float:none;width:auto;padding:0}.product.add.form .giftcard.form .field>.control{float:none;width:auto}.product.add.form .giftcard.form .field>.label{font-size:14px;font-size:1.4rem;font-weight:700}.product.add.form .giftcard.form .field>.label+br{display:none}.product.add.form .giftcard.form .field.required>.label:after{content:'*';font-size:12px;font-size:1.2rem;color:#e02b27;margin:0 0 0 5px}.product.add.form .giftcard.form .field .nested .field{margin:5px 0}.product.add.form .giftcard.form .field.choice>.label{display:inline}.product.add.form .giftcard.form .field.choice>input{vertical-align:top}.product.add.form .giftcard.form .field .fields.group{display:flex;letter-spacing:-.31em;*letter-spacing:normal;word-spacing:-.43em;margin-right:- 20px}.product.add.form .giftcard.form .field .fields.group>*{letter-spacing:normal;word-spacing:normal}.product.add.form .giftcard.form .field .fields.group .field{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;vertical-align:top;margin:0!important}.product.add.form .giftcard.form .field .fields.group .field .label{width:auto;float:none;text-align:left;padding-right:0}.product.add.form .giftcard.form .field .fields.group .field .control{float:none;width:auto}.product.add.form .giftcard.form .field .fields.group.group-2 .field{width:50%!important;display:inline-block}.product.add.form .giftcard.form .field .fields.group.group-3 .field{width:33.3%!important;display:inline-block}.product.add.form .giftcard.form .field .fields.group.group-4 .field{width:25%!important;display:inline-block}.product.add.form .giftcard.form .field .fields.group.group-5 .field{width:20%!important;display:inline-block}.product.add.form .giftcard.form .field .addon{display:inline-flex;flex-wrap:nowrap;padding:0;width:100%}.product.add.form .giftcard.form .field .addon textarea,.product.add.form .giftcard.form .field .addon select,.product.add.form .giftcard.form .field .addon input{order:2;box-shadow:none;display:inline-block;margin:0;width:auto;flex-basis:100%}.product.add.form .giftcard.form .field .addon .addbefore,.product.add.form .giftcard.form .field .addon .addafter{order:3;display:inline-block;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;border:1px solid #c2c2c2;border-radius:1px;height:32px;width:100%;padding:0 10px;font-size:14px;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;line-height:1.42857143;font-style:normal;color:#333;background-clip:padding-box;vertical-align:baseline;width:auto;white-space:nowrap;vertical-align:middle}.product.add.form .giftcard.form .field .addon .addbefore:disabled,.product.add.form .giftcard.form .field .addon .addafter:disabled{opacity:.5}.product.add.form .giftcard.form .field .addon .addbefore{float:left;order:1}.product.add.form .giftcard.form .field .note{font-size:12px;font-size:1.2rem;margin:3px 0 0;padding:0;display:inline-block;text-decoration:none}.product.add.form .giftcard.form .field .note:before{font-family:"icons-blank-theme";content:'\e618';font-size:24px;line-height:12px;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.cart.summary .block.giftcard .fieldset{padding-bottom:52px;position:relative}.cart.summary .block.giftcard .action.check{line-height:22px;padding:0 8px;font-size:11px;font-size:1.1rem;margin-top:12px;bottom:0;left:0;position:absolute}.cart.summary .block.giftcard .field>.label{display:block;float:none;text-align:left;width:auto}.cart.summary .giftcard .field{display:table-cell;position:relative;vertical-align:bottom;width:99%;z-index:1}.cart.summary .giftcard .field div.mage-error{position:absolute}.cart.summary .giftcard .actions{display:table-cell;width:1%;white-space:nowrap;vertical-align:bottom}.cart.summary .action.add{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;border-top-left-radius:0;border-bottom-left-radius:0;margin-left:-1px}.form.giftcard.redeem .giftcard.ballance{margin-bottom:30px}.form.giftregistry.validation .fieldset.recipients .field .control{width:50%}.form.giftregistry.validation .fieldset.add-row{margin-top:45px;position:relative}.form.giftregistry.validation .fieldset.add-row .action.remove{line-height:normal;position:absolute;top:4px;margin-left:75.8%}.form.giftregistry.edit .actions.toolbar:not(:last-child){margin-bottom:40px}.table.data.grouped>thead>tr>th,.table.data.grouped>tbody>tr>th,.table.data.grouped>tfoot>tr>th,.table.data.grouped>thead>tr>td,.table.data.grouped>tbody>tr>td,.table.data.grouped>tfoot>tr>td{border-top:1px solid #d1d1d1}.table.data.grouped>caption+thead>tr:first-child>th,.table.data.grouped>colgroup+thead>tr:first-child>th,.table.data.grouped>thead:first-child>tr:first-child>th,.table.data.grouped>caption+thead>tr:first-child>td,.table.data.grouped>colgroup+thead>tr:first-child>td,.table.data.grouped>thead:first-child>tr:first-child>td{border-top:0}.table.data.grouped>tbody+tbody{border-top:1px solid #919191}.table.data.grouped td{vertical-align:middle}.table.data.grouped .product.name{font-weight:400}.table.data.grouped .price-box .price{font-weight:400;font-size:14px}.table.data.grouped .col.qty .stock.unavailable{margin:0;white-space:nowrap}.wishlist.split.button,.cart.table.wrapper .cart.items .split.button{display:inline-block;position:relative;vertical-align:top}.wishlist.split.button:before,.wishlist.split.button:after,.cart.table.wrapper .cart.items .split.button:before,.cart.table.wrapper .cart.items .split.button:after{content:"";display:table}.wishlist.split.button:after,.cart.table.wrapper .cart.items .split.button:after{clear:both}.wishlist.split.button .action.split,.cart.table.wrapper .cart.items .split.button .action.split{float:left;margin:0}.wishlist.split.button .action.toggle,.cart.table.wrapper .cart.items .split.button .action.toggle{float:right;margin:0}.wishlist.split.button button.action.split,.wishlist.split.button .cart.table.wrapper .cart.items .action.action.split,.cart.table.wrapper .cart.items .split.button button.action.split{-webkit-border-top-right-radius:0;-webkit-border-bottom-right-radius:0;border-top-right-radius:0;border-bottom-right-radius:0}.wishlist.split.button button+.action.toggle,.wishlist.split.button .cart.table.wrapper .cart.items .action+.action.toggle,.cart.table.wrapper .cart.items .split.button button+.action.toggle{border-left:0;-webkit-border-top-left-radius:0;-webkit-border-bottom-left-radius:0;border-top-left-radius:0;border-bottom-left-radius:0}.wishlist.split.button .action.split,.cart.table.wrapper .cart.items .split.button .action.split{padding:0 5px}.wishlist.split.button .action.toggle,.cart.table.wrapper .cart.items .split.button .action.toggle{padding:0 5px;display:inline-block;text-decoration:none}.wishlist.split.button .action.toggle>span,.cart.table.wrapper .cart.items .split.button .action.toggle>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.wishlist.split.button .action.toggle:after,.cart.table.wrapper .cart.items .split.button .action.toggle:after{font-family:"icons-blank-theme";content:'\e607';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.wishlist.split.button .action.toggle:hover:after,.cart.table.wrapper .cart.items .split.button .action.toggle:hover:after{color:inherit}.wishlist.split.button .action.toggle:active:after,.cart.table.wrapper .cart.items .split.button .action.toggle:active:after{color:inherit}.wishlist.split.button .action.toggle.active,.cart.table.wrapper .cart.items .split.button .action.toggle.active{display:inline-block;text-decoration:none}.wishlist.split.button .action.toggle.active>span,.cart.table.wrapper .cart.items .split.button .action.toggle.active>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.wishlist.split.button .action.toggle.active:after,.cart.table.wrapper .cart.items .split.button .action.toggle.active:after{font-family:"icons-blank-theme";content:'\e618';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.wishlist.split.button .action.toggle.active:hover:after,.cart.table.wrapper .cart.items .split.button .action.toggle.active:hover:after{color:inherit}.wishlist.split.button .action.toggle.active:active:after,.cart.table.wrapper .cart.items .split.button .action.toggle.active:active:after{color:inherit}.wishlist.split.button .items,.cart.table.wrapper .cart.items .split.button .items{margin:0;padding:0;list-style-type:none;list-style-image:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;background-color:#fff;border:1px solid #bbb;position:absolute;z-index:100;min-width:100%;display:none;-webkit-box-shadow:0 3px 3px rgba(0,0,0,.15);-moz-box-shadow:0 3px 3px rgba(0,0,0,.15);box-shadow:0 3px 3px rgba(0,0,0,.15);margin-top:4px}.wishlist.split.button .items li,.cart.table.wrapper .cart.items .split.button .items li{margin:0;padding:3px 5px}.wishlist.split.button .items li:hover,.cart.table.wrapper .cart.items .split.button .items li:hover{background-color:#e8e8e8;cursor:pointer}.wishlist.split.button .items:before,.wishlist.split.button .items:after,.cart.table.wrapper .cart.items .split.button .items:before,.cart.table.wrapper .cart.items .split.button .items:after{content:"";position:absolute;display:block;width:0;height:0;border-bottom-style:solid}.wishlist.split.button .items:before,.cart.table.wrapper .cart.items .split.button .items:before{top:-12px;left:10px;z-index:99;border:solid 6px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #fff rgba(0,0,0,0)}.wishlist.split.button .items:after,.cart.table.wrapper .cart.items .split.button .items:after{top:-14px;left:9px;z-index:98;border:solid 7px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #bbb rgba(0,0,0,0)}.wishlist.split.button.active,.cart.table.wrapper .cart.items .split.button.active{overflow:visible}.wishlist.split.button.active .items,.cart.table.wrapper .cart.items .split.button.active .items{display:block}.wishlist.split.button .items,.cart.table.wrapper .cart.items .split.button .items{top:100%;left:100%;margin-left:-36px}.product.info.main .wishlist.split.button .split,.product.info.main .wishlist.split.button .toggle,.product.info.main .cart.table.wrapper .cart.items .split.button .split,.product.info.main .cart.table.wrapper .cart.items .split.button .toggle{line-height:22px;padding:0 8px;font-size:11px;font-size:1.1rem}.wishlist.window.popup{width:380px;background-color:#fff;padding:22px;border:1px solid #aeaeae;-webkit-box-shadow:0 3px 3px rgba(0,0,0,.15);-moz-box-shadow:0 3px 3px rgba(0,0,0,.15);box-shadow:0 3px 3px rgba(0,0,0,.15);display:none;position:fixed;top:20%;left:50%;margin-left:-212px;z-index:1001;opacity:0;-webkit-transition:opacity .3s linear;-moz-transition:opacity .3s linear;transition:opacity .3s linear}.wishlist.window.popup .popup.header .title{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem}.wishlist.window.popup .popup.actions .action.close{position:absolute;display:inline-block;background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400;top:10px;right:10px}.wishlist.window.popup .popup.actions .action.close>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.wishlist.window.popup .popup.actions .action.close:before{font-family:"icons-blank-theme";content:'\e616';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.wishlist.window.popup .popup.actions .action.close:hover:before{color:inherit}.wishlist.window.popup .popup.actions .action.close:active:before{color:inherit}.wishlist.window.popup .popup.actions .action.close:focus,.wishlist.window.popup .popup.actions .action.close:active{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;background:0;border:0}.wishlist.window.popup .popup.actions .action.close:hover{background:0;border:0}.wishlist.window.popup .popup.actions .action.close.disabled,.wishlist.window.popup .popup.actions .action.close[disabled],fieldset[disabled] .wishlist.window.popup .popup.actions .action.close{cursor:not-allowed;pointer-events:none;opacity:.5}.wishlist.window.popup.active{opacity:1}.wishlist.window.popup.active{display:block}.wishlist.window.popup .field{margin:0 0 20px;border:0}.wishlist.window.popup .field:not(.choice)>.label{display:inline-block;width:auto;float:none;text-align:left;margin:0 0 5px}.wishlist.window.popup .field.choice:before,.wishlist.window.popup .field.no-label:before{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;content:" ";height:auto;float:none;width:auto;padding:0}.wishlist.window.popup .field>.control{float:none;width:auto}.wishlist.window.popup .field>.label{font-size:14px;font-size:1.4rem;font-weight:700}.wishlist.window.popup .field>.label+br{display:none}.wishlist.window.popup .field.required>.label:after{content:'*';font-size:12px;font-size:1.2rem;color:#e02b27;margin:0 0 0 5px}.wishlist.window.popup .field .nested .field{margin:5px 0}.wishlist.window.popup .field.choice>.label{display:inline}.wishlist.window.popup .field.choice>input{vertical-align:top}.wishlist.window.popup .field .fields.group{display:flex;letter-spacing:-.31em;*letter-spacing:normal;word-spacing:-.43em;margin-right:- 20px}.wishlist.window.popup .field .fields.group>*{letter-spacing:normal;word-spacing:normal}.wishlist.window.popup .field .fields.group .field{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;vertical-align:top;margin:0!important}.wishlist.window.popup .field .fields.group .field .label{width:auto;float:none;text-align:left;padding-right:0}.wishlist.window.popup .field .fields.group .field .control{float:none;width:auto}.wishlist.window.popup .field .fields.group.group-2 .field{width:50%!important;display:inline-block}.wishlist.window.popup .field .fields.group.group-3 .field{width:33.3%!important;display:inline-block}.wishlist.window.popup .field .fields.group.group-4 .field{width:25%!important;display:inline-block}.wishlist.window.popup .field .fields.group.group-5 .field{width:20%!important;display:inline-block}.wishlist.window.popup .field .addon{display:inline-flex;flex-wrap:nowrap;padding:0;width:100%}.wishlist.window.popup .field .addon textarea,.wishlist.window.popup .field .addon select,.wishlist.window.popup .field .addon input{order:2;box-shadow:none;display:inline-block;margin:0;width:auto;flex-basis:100%}.wishlist.window.popup .field .addon .addbefore,.wishlist.window.popup .field .addon .addafter{order:3;display:inline-block;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;border:1px solid #c2c2c2;border-radius:1px;height:32px;width:100%;padding:0 10px;font-size:14px;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;line-height:1.42857143;font-style:normal;color:#333;background-clip:padding-box;vertical-align:baseline;width:auto;white-space:nowrap;vertical-align:middle}.wishlist.window.popup .field .addon .addbefore:disabled,.wishlist.window.popup .field .addon .addafter:disabled{opacity:.5}.wishlist.window.popup .field .addon .addbefore{float:left;order:1}.wishlist.window.popup .field .note{font-size:12px;font-size:1.2rem;margin:3px 0 0;padding:0;display:inline-block;text-decoration:none}.wishlist.window.popup .field .note:before{font-family:"icons-blank-theme";content:'\e618';font-size:24px;line-height:12px;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.wishlist.overlay{-webkit-transition:opacity .15s linear;-moz-transition:opacity .15s linear;transition:opacity .15s linear;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background-color:#000;opacity:0}.wishlist.overlay.active{opacity:.5;filter:alpha(opacity=50)}.cart.table.wrapper .cart.items .split.button .items{text-align:left}.cart.table.wrapper .cart.items .split.button .action.new{background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400}.cart.table.wrapper .cart.items .split.button .action.new:focus,.cart.table.wrapper .cart.items .split.button .action.new:active{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;background:0;border:0}.cart.table.wrapper .cart.items .split.button .action.new:hover{background:0;border:0}.cart.table.wrapper .cart.items .split.button .action.new.disabled,.cart.table.wrapper .cart.items .split.button .action.new[disabled],fieldset[disabled] .cart.table.wrapper .cart.items .split.button .action.new{cursor:not-allowed;pointer-events:none;opacity:.5}.form.wishlist.items .message.notice.msg-private{margin-bottom:20px}.block.wishlist.management .action.add.wishlist{float:right;margin-top:-8px}.block.wishlist.management .title .counter.qty{font-size:14px;margin-left:15px}.block.wishlist.management .content .subtitle{float:left}.block.wishlist.management .content .toolbar.wishlist{float:right;margin-top:5px}.block.newsletter{position:relative;z-index:1}.block.newsletter .fieldset{margin:0;padding:0;display:inline-block;vertical-align:top}.block.newsletter .control{display:inline-block;text-decoration:none;width:250px}.block.newsletter .control:before{font-family:"icons-blank-theme";content:'\e61d';font-size:35px;line-height:33px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.block.newsletter .control:before{position:absolute}.block.newsletter input{padding-left:35px}.block.newsletter .title{display:none}.block.newsletter .label{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.block.newsletter .actions{display:inline-block;vertical-align:top}.block.add.review>.title{font-size:26px;font-size:2.6rem;font-weight:300;line-height:1.1;margin-top:25px;margin-top:2.5rem;margin-bottom:20px;margin-bottom:2rem}.block.add.review fieldset{border:0;margin:0;padding:0;letter-spacing:-.31em;word-spacing:-.43em}.block.add.review fieldset>*{letter-spacing:normal;word-spacing:normal}.block.add.review fieldset>.legend{margin:0 0 10px;padding:0;font-size:20px;font-size:2rem;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.2;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;float:left;width:74.2%}.block.add.review fieldset>.legend+br{display:block;visibility:hidden;height:0;overflow:hidden;clear:both}.block.add.review .legend{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem}.block.add.review .field.rating{display:table-row}.block.add.review .field.rating .label{display:table-cell;vertical-align:middle;padding:5px 0}.block.add.review .field.rating .control{display:table-cell;vertical-align:top}.block.add.review .form.actions{margin-left:25.8%}.block.reviews.list>.title{font-size:26px;font-size:2.6rem;font-weight:300;line-height:1.1;margin-top:25px;margin-top:2.5rem;margin-bottom:20px;margin-bottom:2rem}.block.reviews.list .review.item{margin-bottom:40px}.block.reviews.list .review.title{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem}.data.table.reviews .rating.summary{margin-top:-4px}.customer.review.view .review.title,.customer.review.view .ratings.summary.items,.customer.review.view .product.details{margin-bottom:20px}.product.reviews.summary{display:table;margin-left:-5px}.product.reviews.summary.empty{margin-left:0}.product.reviews.summary .rating.summary{display:table-cell;vertical-align:middle}.product.reviews.summary .reviews.actions{display:table-cell;vertical-align:middle;line-height:40px;font-size:11px}.product.reviews.summary .reviews.actions a{margin-right:5px}.order.details:before,.order.details:after{content:"";display:table}.order.details:after{clear:both}.order.details ul.items{clear:both;margin-bottom:20px}.order.details ul.items:before,.order.details ul.items:after{content:"";display:table}.order.details ul.items:after{clear:both}.order.details ul.items .item{float:left;margin-left:15px}.order.details ul.items .item:first-child{margin-left:0}.order.details .order.status{display:inline-block;font-size:26px;font-size:2.6rem;font-weight:300;line-height:1.1;margin-top:25px;margin-top:2.5rem;margin-bottom:20px;margin-bottom:2rem;margin-top:0}.order.details .order.date{margin-bottom:20px}.order.details .order.toolbar{float:right}.order.details .order.toolbar .action{margin-left:15px}.order.details .order.toolbar .action:first-child{margin-left:0}.order.details .order.subtitle.caption,.order.details .order.title{margin-bottom:20px}.order.details .order.subtitle.caption strong,.order.details .order.title strong{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem}.order.details .order.subtitle.caption .action,.order.details .order.title .action{margin-left:15px}.form.send.friend .actions.toolbar{margin-top:10px}.form.send.friend .recipients .title{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem;margin-left:25.8%}.form.send.friend .recipients .message{margin-left:25.8%}.action.mailto.friend{display:inline-block;text-decoration:none}.action.mailto.friend:before{font-family:"icons-blank-theme";content:'\e61d';font-size:28px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.page.header{background-color:none}.page.header .panel.wrapper{border-bottom:1px solid #e8e8e8}.page.header .header.panel{display:flex;flex-direction:row;justify-content:flex-start;flex-wrap:wrap;padding-top:10px;padding-bottom:10px}.page.header .header.panel:after{content:"";display:table;clear:both}.header.links{float:right;margin:0;padding:0;list-style-type:none;list-style-image:none;margin-left:auto}.header.links>li{display:inline-block;vertical-align:top}.header.links li{margin:0 0 0 15px}.header.content{padding-top:30px;display:flex;flex-direction:row;justify-content:flex-end;flex-wrap:wrap}.header.content:after{content:"";display:table;clear:both}.logo{float:left;margin:-15px auto 25px 0}.action.skip{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.switcher{float:left;margin-right:15px}.switcher .options{display:inline-block;position:relative}.switcher .options:before,.switcher .options:after{content:"";display:table}.switcher .options:after{clear:both}.switcher .options .action.switch{padding:0;cursor:pointer;display:inline-block;text-decoration:none}.switcher .options .action.switch>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.switcher .options .action.switch:after{font-family:"icons-blank-theme";content:'\e622';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.switcher .options .action.switch:hover:after{color:inherit}.switcher .options .action.switch:active:after{color:inherit}.switcher .options .action.switch.active{display:inline-block;text-decoration:none}.switcher .options .action.switch.active>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.switcher .options .action.switch.active:after{font-family:"icons-blank-theme";content:'\e621';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.switcher .options .action.switch.active:hover:after{color:inherit}.switcher .options .action.switch.active:active:after{color:inherit}.switcher .options ul{margin:0;padding:0;list-style-type:none;list-style-image:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;background-color:#fff;border:1px solid #bbb;position:absolute;z-index:100;min-width:100%;display:none;-webkit-box-shadow:0 3px 3px rgba(0,0,0,.15);-moz-box-shadow:0 3px 3px rgba(0,0,0,.15);box-shadow:0 3px 3px rgba(0,0,0,.15);margin-top:4px}.switcher .options ul li{margin:0;padding:8px}.switcher .options ul li:hover{background-color:#e8e8e8;cursor:pointer}.switcher .options ul:before,.switcher .options ul:after{content:"";position:absolute;display:block;width:0;height:0;border-bottom-style:solid}.switcher .options ul:before{top:-12px;left:10px;z-index:99;border:solid 6px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #fff rgba(0,0,0,0)}.switcher .options ul:after{top:-14px;left:9px;z-index:98;border:solid 7px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #bbb rgba(0,0,0,0)}.switcher .options.active{overflow:visible}.switcher .options.active ul{display:block}.switcher li{margin:0;font-size:12px}.switcher strong{font-weight:400}.switcher .action.switch{background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400}.switcher .action.switch:focus,.switcher .action.switch:active{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;background:0;border:0}.switcher .action.switch:hover{background:0;border:0}.switcher .action.switch.disabled,.switcher .action.switch[disabled],fieldset[disabled] .switcher .action.switch{cursor:not-allowed;pointer-events:none;opacity:.5}.switcher .label{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.message.global>.content{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;margin:0 auto;padding-left:20px;padding-right:20px;width:auto;min-width:1000px;max-width:1280px}.message.global p{margin:0}.message.global.noscript,.message.global.cookie{display:block;margin:0 0 10px;padding:10px 20px;border-radius:0;font-size:13px;font-size:1.3rem;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.2em;background:#ffee9c;border-color:#d6ca8e;color:#333;margin:0}.message.global.noscript a,.message.global.cookie a{color:#1979c3}.message.global.noscript a:hover,.message.global.cookie a:hover{color:#006bb4}.message.global.noscript a:active,.message.global.cookie a:active{color:#ff5501}.message.global.cookie{position:fixed;bottom:0;left:0;right:0;z-index:3}.message.global.cookie .actions{margin-top:10px}.message.global.cookie .action.allow{background-image:none;background-color:#1979c3;padding:0 15px;color:#fff;border:1px solid #1979c3;cursor:pointer;display:inline-block;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;line-height:30px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;vertical-align:middle}.message.global.cookie .action.allow:focus,.message.global.cookie .action.allow:active{background-color:#006bb4;border:1px solid #006bb4;outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;color:#fff}.message.global.cookie .action.allow:hover{background-color:#006bb4;border:1px solid #006bb4;color:#fff}.message.global.cookie .action.allow.disabled,.message.global.cookie .action.allow[disabled],fieldset[disabled] .message.global.cookie .action.allow{cursor:default;pointer-events:none;opacity:.5}.message.global.demo{display:block;margin:0 0 10px;padding:10px 20px;border-radius:0;font-size:13px;font-size:1.3rem;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.2em;background:#ff0101;border-color:none;color:#fff;text-align:center}.message.global.demo a{color:#1979c3}.message.global.demo a:hover{color:#006bb4}.message.global.demo a:active{color:#ff5501}body{background-color:#fff}.footer.page{margin-top:25px;background-color:none}.footer.content{padding-top:25px;padding-bottom:25px;border-top:1px solid #d1d1d1}.footer.content ul{margin:0;padding:0 50px 0 0;list-style-type:none;list-style-image:none}.footer.content .links{display:inline-block;vertical-align:top}.footer.content .block{float:right}.footer .copyright:before{clear:both;margin-bottom:25px;content:"";display:block}.product.info.main .action.towishlist{line-height:22px;padding:0 8px;font-size:11px;font-size:1.1rem}.column.sidebar .widget.block.addbysku .field{display:inline-block;vertical-align:top}.column.sidebar .widget.block.addbysku .fieldset{margin-bottom:0}.column.sidebar .widget.block.addbysku .fields{position:relative;margin-right:30px}.column.sidebar .widget.block.addbysku .field.sku{width:100%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;padding-right:54px;margin-right:-54px}.column.sidebar .widget.block.addbysku .field.qty{width:50px}.column.sidebar .widget.block.addbysku .action.remove{background-image:none;background-color:#f2f2f2;padding:0 15px;color:#333;border:1px solid #cdcdcd;cursor:pointer;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;line-height:30px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;vertical-align:middle;display:inline-block;background:0;border:0;display:inline;line-height:1.42857143;margin:0;padding:0;color:#1979c3;text-decoration:none;position:absolute;right:-27px;top:23px}.column.sidebar .widget.block.addbysku .action.remove>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.column.sidebar .widget.block.addbysku .action.remove:before{font-family:"icons-blank-theme";content:'\e616';font-size:26px;line-height:inherit;color:#303030;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.column.sidebar .widget.block.addbysku .action.remove:hover:before{color:#303030}.column.sidebar .widget.block.addbysku .action.remove:active:before{color:#303030}.column.sidebar .widget.block.addbysku .action.remove:focus,.column.sidebar .widget.block.addbysku .action.remove:active{background-color:#e2e2e2;border:1px solid #cdcdcd;outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;color:#333}.column.sidebar .widget.block.addbysku .action.remove:hover{background-color:#e2e2e2;border:1px solid #cdcdcd;color:#555}.column.sidebar .widget.block.addbysku .action.remove.disabled,.column.sidebar .widget.block.addbysku .action.remove[disabled],fieldset[disabled] .column.sidebar .widget.block.addbysku .action.remove{cursor:default;pointer-events:none;opacity:.5}.column.sidebar .widget.block.addbysku .action.remove:visited{color:#800080;text-decoration:none}.column.sidebar .widget.block.addbysku .action.remove:hover{color:#006bb4;text-decoration:underline}.column.sidebar .widget.block.addbysku .action.remove:active{color:#ff5501;text-decoration:underline}.column.sidebar .widget.block.addbysku .action.remove:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.column.sidebar .widget.block.addbysku .action.remove:hover,.column.sidebar .widget.block.addbysku .action.remove:active,.column.sidebar .widget.block.addbysku .action.remove:focus{background:0;border:0;outline:0}.column.sidebar .widget.block.addbysku .action.remove.disabled,.column.sidebar .widget.block.addbysku .action.remove[disabled],fieldset[disabled] .column.sidebar .widget.block.addbysku .action.remove{color:#1979c3;text-decoration:underline;cursor:default;pointer-events:none;opacity:.5}.column.sidebar .widget.block.addbysku .action.remove:hover,.column.sidebar .widget.block.addbysku .action.remove:active,.column.sidebar .widget.block.addbysku .action.remove:focus{box-shadow:none;text-decoration:none}.column.sidebar .widget.block.addbysku .actions.toolbar{position:relative;padding-top:50px;margin-left:0}.column.sidebar .widget.block.addbysku .actions.toolbar .action.add{background-image:none;background-color:#f2f2f2;padding:0 15px;color:#333;border:1px solid #cdcdcd;cursor:pointer;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;line-height:30px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;margin:0;vertical-align:middle;display:inline-block;text-decoration:none;position:absolute;top:0;left:0;padding:0 3px}.column.sidebar .widget.block.addbysku .actions.toolbar .action.add>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.column.sidebar .widget.block.addbysku .actions.toolbar .action.add:before{font-family:"icons-blank-theme";content:'\e61c';font-size:31px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.column.sidebar .widget.block.addbysku .actions.toolbar .action.add:hover:before{color:inherit}.column.sidebar .widget.block.addbysku .actions.toolbar .action.add:active:before{color:inherit}.column.sidebar .widget.block.addbysku .actions.toolbar .action.add:focus,.column.sidebar .widget.block.addbysku .actions.toolbar .action.add:active{background-color:#e2e2e2;border:1px solid #cdcdcd;outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;color:#333}.column.sidebar .widget.block.addbysku .actions.toolbar .action.add:hover{background-color:#e2e2e2;border:1px solid #cdcdcd;color:#555}.column.sidebar .widget.block.addbysku .actions.toolbar .action.add.disabled,.column.sidebar .widget.block.addbysku .actions.toolbar .action.add[disabled],fieldset[disabled] .column.sidebar .widget.block.addbysku .actions.toolbar .action.add{cursor:default;pointer-events:none;opacity:.5}.block.widget.new .pager{margin:0 0 40px;padding:10px;background:#f0f0f0}.block.widget.new .pager .pages{text-align:center}.block.widget.new .pager .amount{float:right;margin:7px 0 0}.widget.widget-cms-link{display:block}.widget.widget-cms-hierarchy-link{display:block}@media only screen and (max-width: 768px){._rwd_columns,.columns,.columns{ flex-direction:column!important}._rwd_column,.layout-1 .column.main,.layout-3 .column.main,.layout-2-left .column.main,.layout-2-right .column.main,.layout-3 .column.left,.layout-2-left .column.left,.layout-2-right .column.left,.layout-3 .column.right,.layout-2-left .column.right,.layout-2-right .column.right,.layout-1 .column.main,.layout-3 .column.main,.layout-2-left .column.main,.layout-2-right .column.main,.layout-3 .column.left,.layout-2-left .column.left,.layout-2-right .column.left,.layout-3 .column.right,.layout-2-left .column.right,.layout-2-right .column.right,.layout-example-3 .column.main,.layout-example-3 .column.left,.layout-example-3 .column.right,.layout-example-3-1 .column.main,.layout-example-3-1 .column.left,.layout-example-3-1 .column.right{order:0!important;width:100%!important}._rwd_width,.navigation>ul,.breadcrumbs,.page.header .header.panel,.header.content,.footer.content,.page.main,.page.wrapper>.widget,.page.wrapper>.page.bottom,.block.category.event,.breadcrumbs,.message.global>.content,.example-breadcrumbs-1,.example-breadcrumbs-1,header.header,footer.footer,.page.main{min-width:0!important;max-width:auto!important}._rwd_floats{float:none!important}._rwd_margins,.actions.toolbar,.actions.toolbar .primary .action,.actions.toolbar .secondary .action,.login.container .fieldset:after{margin-left:0!important;margin-right:0!important}._rwd_width_float,.account .column.main .block .content .box,.fieldset>.field>.label,.fieldset .fields>.field>.label,.fieldset>.field>.control,.fieldset .fields>.field>.control,.fieldset>.field.choice:before,.fieldset .fields>.field.choice:before,.bundle.options.container .product.add.form .product.options.wrapper,.bundle.options.container .product.add.form .product.options.bottom,.bundle.options.container .product.add.form .block.bundle.summary,.column.main .product.info.main,.column.main .product.media,.column.main .box.tocart,.products.wrapper.list .item.product .price-box,.cart.summary,.cart.table.wrapper,.form.password.forget,.form.create.account{width:100%!important;float:none!important}._rwd_width_float_margins,.fieldset>.legend,.actions.toolbar .primary,.actions.toolbar .secondary,.login.container .block.customer{width:100%!important;float:none!important;margin-left:0!important;margin-right:0!important}.page.main>.page.title{margin-bottom:30px}.page.main>.page.title .title+.action{margin-top:0}.account .column.main{margin-bottom:30px}.account .column.main .block .content .box{margin-bottom:20px}.account .column.main .block .content .box:last-child{margin-bottom:0}.account .column.sidebar{margin-right:0}.button-responsive,.page.main>.page.title .title+.action,.actions.toolbar .primary .action,.actions.toolbar .secondary .action,.column.main .action.primary.tocart,.products.wrapper.list .item.product .product.actions .action.tocart{float:none;width:100%}h1{font-size:26px}.wrapper.table{width:100%;margin-bottom:20px;overflow-y:hidden;overflow-x:auto;-ms-overflow-style:-ms-autohiding-scrollbar;-webkit-overflow-scrolling:touch}.wrapper.table>table{margin-bottom:0}.wrapper.table>table>thead>tr>th,.wrapper.table>table>tbody>tr>th,.wrapper.table>table>tfoot>tr>th,.wrapper.table>table>thead>tr>td,.wrapper.table>table>tbody>tr>td,.wrapper.table>table>tfoot>tr>td{white-space:nowrap}.navigation{background:#f5f5f5;display:block;height:100%;left:-86%;overflow:auto;position:absolute;width:86%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;-webkit-transition:left .3s ease-out 0;-moz-transition:left .3s ease-out 0;transition:left .3s ease-out 0}.navigation ul{margin:0;padding:0}.navigation .nav{-webkit-transition:left .3s linear 0;-moz-transition:left .3s linear 0;transition:left .3s linear 0;position:relative;overflow:hidden}.navigation .nav>.level0{font-size:16px;font-size:1.6rem;border-top:1px solid #d1d1d1;display:block;margin:0}.navigation .nav>.level0>a{display:block;line-height:inherit;padding:10px 35px 10px 16px}.navigation .nav>.level0.parent{display:block}.navigation .nav>.level0.parent:before{display:none}.navigation .nav>.level0.parent:after{opacity:1;height:auto}.navigation .nav>.level0.parent>a{display:block}.navigation .nav>.level0.parent>a:after{color:inherit;content:'\e622';display:block;font-family:'icons-blank-theme';font-size:34px;font-weight:400;border:0;top:0;right:5px;left:auto;height:34px;overflow:hidden;opacity:1;position:absolute;width:auto}.navigation .nav>.level0.parent>a.action.back:after{content:'\e617'}.navigation .nav>.level0.parent>a.action.back:after{content:'\e617'}.navigation .nav>.level0.parent .submenu{display:none;position:relative;width:100%;overflow-x:hidden;-webkit-transition:left .3s ease-out 0;-moz-transition:left .3s ease-out 0;transition:left .3s ease-out 0;font-weight:400}.navigation .nav>.level0.parent .submenu.opened{display:block}.navigation .nav>.level0.parent .submenu>ul{display:block;padding-top:0;padding-bottom:0}.navigation .nav>.level0.parent .submenu>ul li{margin:0}.navigation .nav>.level0.parent .submenu>ul a:hover>span{background:0}.navigation .nav>.level0.parent .submenu ul{background:#f5f5f5;box-shadow:none}.navigation .nav>.level0.parent .submenu:before,.navigation .nav>.level0.parent .submenu:after{display:none}.navigation .nav>.level0>a{display:block;line-height:inherit;padding:10px 35px 10px 16px}.navigation .nav .parent:after{display:none}.navigation .nav .parent>a{position:relative}.navigation .nav .parent>a:after{color:inherit;content:'\e622';display:block;font-family:'icons-blank-theme';font-size:34px;font-weight:400;border:0;top:0;right:5px;left:auto;height:34px;overflow:hidden;opacity:1;position:absolute;width:auto}.navigation .nav .parent>a.action.back:after{content:'\e617'}.navigation .nav .parent>a.action.back:after{content:'\e617'}.navigation .nav .parent .submenu{display:none;position:relative;width:100%;overflow-x:hidden;-webkit-transition:left .3s ease-out 0;-moz-transition:left .3s ease-out 0;transition:left .3s ease-out 0}.navigation .nav .parent .submenu.opened{display:block}.navigation .nav .parent .submenu>ul{display:block;padding-top:0;padding-bottom:0}.navigation .nav .parent .submenu>ul li{margin:0}.navigation .nav .parent .submenu>ul a:hover>span{background:0}.navigation .submenu{background:0;display:none;position:relative;width:100%;overflow-x:hidden;-webkit-transition:left .3s ease-out 0;-moz-transition:left .3s ease-out 0;transition:left .3s ease-out 0}.navigation .submenu.opened{display:block}.navigation .submenu>ul{display:block;padding-top:0;padding-bottom:0}.navigation .submenu>ul li{margin:0}.navigation .submenu>ul a:hover>span{background:0}.navigation .settings.panel>.title{font-weight:600;position:relative;padding:10px 20px;cursor:pointer;font-size:18px}.navigation .settings.panel>.title:after{color:inherit;content:'\e622';display:block;font-family:'icons-blank-theme';font-size:34px;font-weight:400;border:0;top:0;right:5px;left:auto;height:34px;overflow:hidden;opacity:1;position:absolute;width:auto}.navigation .settings.panel>.title.action.back:after{content:'\e617'}.navigation .settings.panel>.content{display:none;margin:0;padding:10px 20px}.navigation .settings.panel>.content .switcher{margin:0;padding:0;display:block}.navigation .settings.panel>.content .switcher:first-child{padding-bottom:0}.navigation .settings.panel>.content .switcher .label{display:block;font-weight:400;font-size:16px;font-size:1.6rem;padding:8px 0;position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.navigation .settings.panel>.content .switcher .options{display:block}.navigation .settings.panel>.content .switcher .options strong{display:block;position:relative;padding:8px 20px;cursor:pointer}.navigation .settings.panel>.content .switcher .options strong:after{color:inherit;content:'\e622';display:block;font-family:'icons-blank-theme';font-size:34px;font-weight:400;border:0;top:0;right:5px;left:auto;height:34px;overflow:hidden;opacity:1;position:absolute;width:auto}.navigation .settings.panel>.content .switcher .options strong.action.back:after{content:'\e617'}.navigation .settings.panel>.content .switcher .options button,.navigation .settings.panel>.content .switcher .options .cart.table.wrapper .cart.items .action{display:none}.navigation .settings.panel>.content .switcher .options ul{display:none;position:relative;margin:0;border:0;background:0}.navigation .settings.panel>.content .switcher .options ul li{font-size:14px;font-size:1.4rem;padding:0}.navigation .settings.panel>.content .switcher .options ul li a{display:block;color:#333;padding:8px 20px;text-decoration:none}.navigation .settings.panel>.content .switcher .options ul li a:hover{color:#333;text-decoration:none}.navigation .settings.panel>.content .switcher .options ul li:hover{background:0}.navigation .settings.panel>.content .switcher .options ul:before,.navigation .settings.panel>.content .switcher .options ul:after{display:none}.navigation .settings.panel>.content .switcher .options.active ul{box-shadow:none;display:block;margin:0}.navigation .settings.panel>.content .header.links li{display:block;margin:0}.navigation .settings.panel>.content .header.links li>a{display:block;font-size:16px;font-size:1.6rem;padding:8px 0}.navigation .settings.panel.active>.content{display:block}.nav>.parent>.submenu>.level0>li>a{font-weight:700}.header.links{padding:10px 20px}.header.links li{display:block;margin:0}.header.links li a{display:block;line-height:35px;color:#575757}.header.links li a:hover{color:#333;text-decoration:none}.header.links li.welcome{line-height:35px}.actions.toolbar .primary,.actions.toolbar .secondary{text-align:center;margin-bottom:10px}.actions.toolbar .primary .action,.actions.toolbar .secondary .action{margin-bottom:10px}.actions.toolbar .primary .action:last-child,.actions.toolbar .secondary .action:last-child{margin-bottom:0}.actions.toolbar .primary:last-child,.actions.toolbar .secondary:last-child{margin-bottom:0}.column.main .widget.block.addbysku .fields{margin-top:25px}.column.main .widget.block.addbysku .fields .action.remove{margin-left:0;right:0;top:-25px}.column.main .widget.block.addbysku .fields .action.remove+.field{clear:both}.bundle.options.container .product.add.form .block.bundle.summary{position:static}.column.main .wrapper.grid .products.list .item.product{width:50%}.products.list.items .actions>.secondary{display:none}.products.list.items .actions>.primary{display:block;float:none}.products.toolbar{display:block}.products.toolbar .settings,.products.toolbar .pages,.products.toolbar .pager{display:block;text-align:center;margin:0 0 10px}.products.toolbar .modes,.products.toolbar .sorter{display:inline-block;margin-bottom:10px}.products.toolbar .limiter .text{display:none}.products.wrapper.list .item.product{display:block;margin-bottom:30px}.products.wrapper.list .item.product .product{display:block}.products.wrapper.list .item.product .product.photo{display:block;width:auto}.products.wrapper.list .item.product .product.details{display:block;width:auto;text-align:center}.block.search{float:none;margin:0;padding:0;position:relative;width:100%;z-index:4}.block.search .action.search{display:none}.block.search .control{border-top:1px solid #d1d1d1;clear:both;margin:0 -90px -1px -20px;padding:0 20px}.block.search .label{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto;text-decoration:none;display:inline-block;float:right}.block.search .label>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.block.search .label:before{font-family:"icons-blank-theme";content:'\e615';font-size:35px;line-height:33px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.block.search .label:active,.block.search .label:focus{outline:0!important}.block.search .nested{left:-300%}.block.search input:focus{position:static;margin:15px 0}.block.search input{left:-300%;position:absolute}.minicart.wrapper{position:absolute;right:10px}.cart.summary,.cart.table.wrapper{position:relative}.cart.summary thead .col.price,.cart.table.wrapper thead .col.price,.cart.summary thead .col.subtotal,.cart.table.wrapper thead .col.subtotal{display:none}.cart.summary .col.price,.cart.table.wrapper .col.price,.cart.summary .col.subtotal,.cart.table.wrapper .col.subtotal{display:block;padding-top:3px;padding-bottom:1px;text-align:left}.cart.summary .col.price:before,.cart.table.wrapper .col.price:before,.cart.summary .col.subtotal:before,.cart.table.wrapper .col.subtotal:before{content:attr(data-th) ":";color:#7d7d7d;display:inline-block;font-size:12px;padding-left:5px}.cart.summary .col.qty,.cart.table.wrapper .col.qty{right:0;position:absolute;width:45px}.cart.summary .cart.items>.item.cart,.cart.table.wrapper .cart.items>.item.cart{display:block;position:relative}.cart.summary .item .col.item,.cart.table.wrapper .item .col.item{display:block;padding:25px 70px 10px 75px;position:relative;min-height:75px}.cart.summary .item .col.qty,.cart.table.wrapper .item .col.qty{top:0}.cart.summary .item.actions td,.cart.table.wrapper .item.actions td{padding-top:20px}.cart.summary .product.photo,.cart.table.wrapper .product.photo{display:block;max-width:60px;left:0;padding:0;position:absolute;top:15px;width:100%}.cart.summary .product.photo .container,.cart.table.wrapper .product.photo .container,.cart.summary .product.photo .container .image,.cart.table.wrapper .product.photo .container .image{max-width:100%;bottom:inherit!important}.cart.summary .actions.main,.cart.table.wrapper .actions.main{text-align:center}.cart.summary .action.update,.cart.table.wrapper .action.update,.cart.summary .action.continue,.cart.table.wrapper .action.continue,.cart.summary .action.clear,.cart.table.wrapper .action.clear{float:none;margin:0 auto 10px}.cart.summary .action.update,.cart.table.wrapper .action.update{display:block}.login.container .fieldset:after{text-align:center}.form.giftregistry.validation .fieldset.add-row .action.remove{float:right;position:static;margin-left:0}.form.giftregistry.validation .fieldset.add-row .action.remove+.field{clear:both}.footer.content .block.newsletter{float:none}.footer.content .block.newsletter .subscribe.form{display:flex}.footer.content .block.newsletter .fieldset,.footer.content .block.newsletter .control{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;width:90%}.footer.content .block.newsletter .actions{padding-left:10px;display:block;vertical-align:top}html.opened{overflow:hidden}body{width:100%;height:100%}body.opened{-webkit-tap-highlight-color:rgba(0,0,0,0);position:relative;height:100%;width:100%;overflow:hidden}body.opened .navigation{left:0;-webkit-box-shadow:1px 1px 3px rgba(0,0,0,.5);box-shadow:1px 1px 3px rgba(0,0,0,.5);-webkit-transition:left .3s ease-out 0;-moz-transition:left .3s ease-out 0;transition:left .3s ease-out 0}body.opened .page.wrapper{margin-right:-86%;cursor:pointer}.page.wrapper{position:relative;width:100%;float:right;margin:0;-webkit-transition:margin .3s ease-out 0;-moz-transition:margin .3s ease-out 0;transition:margin .3s ease-out 0}.logo{position:relative;z-index:5;float:left;max-width:50%;margin:0 0 10px 44px}.logo img{max-height:50px}.header.page{margin-bottom:20px;border-bottom:1px solid #d1d1d1}.header.content{padding-top:10px;position:relative;display:block;padding-right:90px}.header.content:after{content:"";display:table;clear:both}.header .switcher,.header .links,.header .panel{display:none}.action.toggle.nav{display:inline-block;text-decoration:none;display:block;position:absolute;top:12px;left:20px;font-size:0;z-index:14;cursor:pointer}.action.toggle.nav:before{font-family:"icons-blank-theme";content:'\e609';font-size:28px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.action.toggle.nav>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.copyright,.bugs{display:block;margin:20px 0}.block.widget.new .pager .amount{float:none;margin:0 0 7px;text-align:center}}.actions.toolbar:before,.actions.toolbar:after{content:"";display:table}.actions.toolbar:after{clear:both}.actions.toolbar .primary{float:left}.actions.toolbar .secondary{float:right}.actions.toolbar .primary,.actions.toolbar .secondary{display:inline-block}.actions.toolbar .primary a.action,.actions.toolbar .secondary a.action{display:inline-block}.actions.toolbar .primary .action{margin:0 5px 0 0}.actions.toolbar .secondary a.action{margin-top:6px}.example-actions-toolbar-1:before,.example-actions-toolbar-1:after{content:"";display:table}.example-actions-toolbar-1:after{clear:both}.example-actions-toolbar-1 .primary{float:left}.example-actions-toolbar-1 .secondary{float:right}.example-actions-toolbar-1 .primary,.example-actions-toolbar-1 .secondary{display:inline-block}.example-actions-toolbar-1 .primary a.action,.example-actions-toolbar-1 .secondary a.action{display:inline-block}.example-actions-toolbar-1 .primary .action{margin:0 5px 0 0}.example-actions-toolbar-1 .secondary a.action{margin-top:6px}.example-actions-toolbar-2:before,.example-actions-toolbar-2:after{content:"";display:table}.example-actions-toolbar-2:after{clear:both}.example-actions-toolbar-2 .primary{float:left}.example-actions-toolbar-2 .secondary{float:right}.example-actions-toolbar-2 .primary,.example-actions-toolbar-2 .secondary{display:inline-block}.example-actions-toolbar-2 .primary a.action,.example-actions-toolbar-2 .secondary a.action{display:inline-block}.example-actions-toolbar-2 .primary .action{margin:0 5px 0 0}.example-actions-toolbar-2 .secondary a.action{margin-top:6px}.example-actions-toolbar-3{text-align:left}.example-actions-toolbar-3:before,.example-actions-toolbar-3:after{content:"";display:table}.example-actions-toolbar-3:after{clear:both}.example-actions-toolbar-3 .primary{float:left}.example-actions-toolbar-3 .primary,.example-actions-toolbar-3 .secondary{display:inline-block}.example-actions-toolbar-3 .primary a.action,.example-actions-toolbar-3 .secondary a.action{display:inline-block}.example-actions-toolbar-3 .primary .action{margin:0 5px 0 0}.example-actions-toolbar-3 .secondary a.action{margin-top:6px}.example-actions-toolbar-4{text-align:right}.example-actions-toolbar-4:before,.example-actions-toolbar-4:after{content:"";display:table}.example-actions-toolbar-4:after{clear:both}.example-actions-toolbar-4 .secondary{float:right}.example-actions-toolbar-4 .primary,.example-actions-toolbar-4 .secondary{display:inline-block}.example-actions-toolbar-4 .primary a.action,.example-actions-toolbar-4 .secondary a.action{display:inline-block}.example-actions-toolbar-4 .primary .action{margin:0 5px 0 0}.example-actions-toolbar-4 .secondary a.action{margin-top:6px}.example-actions-toolbar-5{text-align:center}.example-actions-toolbar-5:before,.example-actions-toolbar-5:after{content:"";display:table}.example-actions-toolbar-5:after{clear:both}.example-actions-toolbar-5 .primary,.example-actions-toolbar-5 .secondary{vertical-align:top}.example-actions-toolbar-5 .primary,.example-actions-toolbar-5 .secondary{display:inline-block}.example-actions-toolbar-5 .primary a.action,.example-actions-toolbar-5 .secondary a.action{display:inline-block}.example-actions-toolbar-5 .primary .action{margin:0 5px 0 0}.example-actions-toolbar-5 .secondary a.action{margin-top:6px}.example-actions-toolbar-6:before,.example-actions-toolbar-6:after{content:"";display:table}.example-actions-toolbar-6:after{clear:both}.example-actions-toolbar-6 .primary{float:right}.example-actions-toolbar-6 .secondary{float:left}.example-actions-toolbar-6 .primary,.example-actions-toolbar-6 .secondary{display:inline-block}.example-actions-toolbar-6 .primary a.action,.example-actions-toolbar-6 .secondary a.action{display:inline-block}.example-actions-toolbar-6 .primary .action{margin:0 5px 0 0}.example-actions-toolbar-6 .secondary a.action{margin-top:6px}.example-actions-toolbar-7{text-align:left}.example-actions-toolbar-7:before,.example-actions-toolbar-7:after{content:"";display:table}.example-actions-toolbar-7:after{clear:both}.example-actions-toolbar-7 .secondary{float:left}.example-actions-toolbar-7 .primary,.example-actions-toolbar-7 .secondary{display:inline-block}.example-actions-toolbar-7 .primary a.action,.example-actions-toolbar-7 .secondary a.action{display:inline-block}.example-actions-toolbar-7 .primary .action{margin:0 5px 0 0}.example-actions-toolbar-7 .secondary a.action{margin-top:6px}.example-actions-toolbar-8{text-align:right}.example-actions-toolbar-8:before,.example-actions-toolbar-8:after{content:"";display:table}.example-actions-toolbar-8:after{clear:both}.example-actions-toolbar-8 .primary{float:right}.example-actions-toolbar-8 .primary,.example-actions-toolbar-8 .secondary{display:inline-block}.example-actions-toolbar-8 .primary a.action,.example-actions-toolbar-8 .secondary a.action{display:inline-block}.example-actions-toolbar-8 .primary .action{margin:0 5px 0 0}.example-actions-toolbar-8 .secondary a.action{margin-top:6px}.example-actions-toolbar-9{margin:10px;padding:10px}.example-actions-toolbar-9:before,.example-actions-toolbar-9:after{content:"";display:table}.example-actions-toolbar-9:after{clear:both}.example-actions-toolbar-9 .primary{float:left}.example-actions-toolbar-9 .secondary{float:right}.example-actions-toolbar-9 .primary,.example-actions-toolbar-9 .secondary{display:inline-block}.example-actions-toolbar-9 .primary a.action,.example-actions-toolbar-9 .secondary a.action{display:inline-block}.example-actions-toolbar-9 .primary .action{margin:0 5px 0 0}.example-actions-toolbar-9 .secondary a.action{margin-top:6px}.example-actions-toolbar-10{text-align:left}.example-actions-toolbar-10:before,.example-actions-toolbar-10:after{content:"";display:table}.example-actions-toolbar-10:after{clear:both}.example-actions-toolbar-10 .primary{float:left}.example-actions-toolbar-10 .primary,.example-actions-toolbar-10 .secondary{display:inline-block}.example-actions-toolbar-10 .primary a.action,.example-actions-toolbar-10 .secondary a.action{display:inline-block}.example-actions-toolbar-10 .primary .action{margin:0 50px 0 0}.example-actions-toolbar-10 .secondary a.action{margin-top:6px}.example-actions-toolbar-11{text-align:left}.example-actions-toolbar-11:before,.example-actions-toolbar-11:after{content:"";display:table}.example-actions-toolbar-11:after{clear:both}.example-actions-toolbar-11 .primary{float:left}.example-actions-toolbar-11 .primary,.example-actions-toolbar-11 .secondary{display:inline-block}.example-actions-toolbar-11 .primary a.action,.example-actions-toolbar-11 .secondary a.action{display:inline-block}.example-actions-toolbar-11 .primary .action{margin:0 5px 0 0}.example-actions-toolbar-11 .secondary .action{margin:0 50px 0 0}.example-actions-toolbar-11 .secondary a.action{margin-top:6px}.example-actions-toolbar-12:before,.example-actions-toolbar-12:after{content:"";display:table}.example-actions-toolbar-12:after{clear:both}.example-actions-toolbar-12 .primary{float:left}.example-actions-toolbar-12 .secondary{float:right}.example-actions-toolbar-12 .primary,.example-actions-toolbar-12 .secondary{display:inline-block}.example-actions-toolbar-12 .primary a.action,.example-actions-toolbar-12 .secondary a.action{display:inline-block}.example-actions-toolbar-12 .primary .action{margin:0 5px 0 0}.example-actions-toolbar-12 .secondary a.action{margin-top:6px}@media only screen and (max-width: 768px){.example-actions-toolbar-12 .primary,.example-actions-toolbar-12 .secondary{ display:block;float:none}}.example-breadcrumbs-1{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;margin:0 auto;padding-left:20px;padding-right:20px;width:auto;min-width:1000px;max-width:1280px}.example-breadcrumbs-1 .label{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-breadcrumbs-1 .items{font-size:12px;font-size:1.2rem;color:#a3a3a3;margin:0;padding:0;list-style-type:none;list-style-image:none}.example-breadcrumbs-1 .items>li{display:inline-block;vertical-align:top}.example-breadcrumbs-1 a{color:#333;text-decoration:none}.example-breadcrumbs-1 a:visited{color:#333;text-decoration:none}.example-breadcrumbs-1 a:hover{color:#333;text-decoration:underline}.example-breadcrumbs-1 a:active{color:#333;text-decoration:none}.example-breadcrumbs-1 strong{font-weight:400}.example-breadcrumbs-1 .item:not(:last-child):after{color:#a3a3a3;content:'>'}.example-breadcrumbs-1 .label{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-breadcrumbs-1 .items{font-size:12px;font-size:1.2rem;color:#a3a3a3;margin:0;padding:0;list-style-type:none;list-style-image:none}.example-breadcrumbs-1 .items>li{display:inline-block;vertical-align:top}.example-breadcrumbs-1 a{color:#333;text-decoration:none}.example-breadcrumbs-1 a:visited{color:#333;text-decoration:none}.example-breadcrumbs-1 a:hover{color:#333;text-decoration:underline}.example-breadcrumbs-1 a:active{color:#333;text-decoration:none}.example-breadcrumbs-1 strong{font-weight:400}.example-breadcrumbs-1 .item:not(:last-child):after{color:#a3a3a3;content:'>'}.example-breadcrumbs-2 .label{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-breadcrumbs-2 .items{font-size:12px;font-size:1.2rem;color:#1979c3;margin:0;padding:0;list-style-type:none;list-style-image:none}.example-breadcrumbs-2 .items>li{display:inline-block;vertical-align:top}.example-breadcrumbs-2 a{padding:3px 5px;display:inline-block;background-color:#ccc;background-repeat:repeat-x;background-image:-webkit-linear-gradient(top, #f4f4f4 0, #ccc 100%);background-image:linear-gradient(to bottom, #f4f4f4 0, #ccc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f4f4f4', endColorstr='#cccccc', GradientType=0);border:1px solid #ccc;color:#333;text-decoration:none}.example-breadcrumbs-2 a:visited{background-color:'';background-repeat:repeat-x;background-image:-webkit-linear-gradient(top,'' 0,'' 100%);background-image:linear-gradient(to bottom,'' 0,'' 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='''', endColorstr='''', GradientType=0);color:#333;text-decoration:none}.example-breadcrumbs-2 a:hover{background-color:#f4f4f4;background-repeat:repeat-x;background-image:-webkit-linear-gradient(top, #ccc 0, #f4f4f4 100%);background-image:linear-gradient(to bottom, #ccc 0, #f4f4f4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#cccccc', endColorstr='#f4f4f4', GradientType=0);color:#333;text-decoration:none}.example-breadcrumbs-2 a:active{background-color:'';background-repeat:repeat-x;background-image:-webkit-linear-gradient(top,'' 0,'' 100%);background-image:linear-gradient(to bottom,'' 0,'' 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='''', endColorstr='''', GradientType=0);color:#333;text-decoration:none}.example-breadcrumbs-2 strong{background-color:#ff5501;background-repeat:repeat-x;background-image:-webkit-linear-gradient(top, #f7b32e 0, #ff5501 100%);background-image:linear-gradient(to bottom, #f7b32e 0, #ff5501 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f7b32e', endColorstr='#ff5501', GradientType=0);border:1px solid #d04b0a;padding:3px 5px;display:inline-block;font-weight:400}.example-breadcrumbs-2 .item:not(:last-child):after{color:#a3a3a3;content:''}.example-breadcrumbs-3 .label{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-breadcrumbs-3 .items{font-size:12px;font-size:1.2rem;color:#333;margin:0;padding:0;list-style-type:none;list-style-image:none}.example-breadcrumbs-3 .items>li{display:inline-block;vertical-align:top}.example-breadcrumbs-3 a{padding:3px 5px;display:inline-block;background-color:#f4f4f4;color:#333;text-decoration:none}.example-breadcrumbs-3 a:visited{color:#333;text-decoration:none}.example-breadcrumbs-3 a:hover{background-color:#ccc;color:#333;text-decoration:none}.example-breadcrumbs-3 a:active{color:#333;text-decoration:none}.example-breadcrumbs-3 strong{background-color:#e7e7e7;padding:3px 5px;display:inline-block;font-weight:400}.example-breadcrumbs-3 .item:not(:last-child):after{color:#a3a3a3;content:''}.example-breadcrumbs-3 .item a{position:relative;margin:0 11px 0 0}.example-breadcrumbs-3 .item a:after{width:0;height:0;border:12px solid rgba(0,0,0,0);border-left-color:#f4f4f4;content:"";position:absolute;display:block;top:0;right:-23px}.example-breadcrumbs-3 .item a:hover:after{border-color:transparent transparent transparent #ccc}button,.cart.table.wrapper .cart.items .action{background-image:none;background-color:#f2f2f2;padding:0 15px;color:#333;border:1px solid #cdcdcd;cursor:pointer;display:inline-block;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;line-height:30px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;margin:3px;vertical-align:middle;border-radius:3px}button:focus,button:active,.cart.table.wrapper .cart.items .action:focus,.cart.table.wrapper .cart.items .action:active{background-color:#e2e2e2;border:1px solid #cdcdcd;outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;color:#333}button:hover,.cart.table.wrapper .cart.items .action:hover{background-color:#e2e2e2;border:1px solid #cdcdcd;color:#555}button.disabled,button[disabled],fieldset[disabled] button,.cart.table.wrapper .cart.items .action.disabled,.cart.table.wrapper .cart.items .action[disabled],fieldset[disabled] .cart.table.wrapper .cart.items .action{cursor:default;pointer-events:none;opacity:.5}button:active,button:focus,.cart.table.wrapper .cart.items .action:active,.cart.table.wrapper .cart.items .action:focus{box-shadow:inset 0 2px 1px rgba(0,0,0,.12)}.example-button-1.example-button-2{line-height:50px;padding:0 17px;font-size:18px;font-size:1.8rem}.example-button-1.example-button-3{line-height:22px;padding:0 8px;font-size:11px;font-size:1.1rem;border-radius:0;color:#000}.example-button-1.example-button-3:hover,.example-button-1.example-button-3.active{color:#000}.example-button-10{background-color:#f2f2f2;padding:0 15px;color:#333;border:1px solid #cdcdcd;cursor:pointer;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;line-height:30px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;margin:3px;vertical-align:middle;display:inline-block;background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400}.example-button-10>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-button-10:before{font-family:"icons-blank-theme";content:'\e611';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-button-10:hover:before{color:inherit}.example-button-10:active:before{color:inherit}.example-button-10:focus,.example-button-10:active{background-color:#e2e2e2;border:1px solid #cdcdcd;outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;color:#333}.example-button-10:hover{background-color:#e2e2e2;border:1px solid #cdcdcd;color:#555}.example-button-10.disabled,.example-button-10[disabled],fieldset[disabled] .example-button-10{cursor:default;pointer-events:none;opacity:.5}.example-button-10:focus,.example-button-10:active{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;background:0;border:0}.example-button-10:hover{background:0;border:0}.example-button-10.disabled,.example-button-10[disabled],fieldset[disabled] .example-button-10{cursor:not-allowed;pointer-events:none;opacity:.5}.example-button-11{background-image:none;background-color:#f2f2f2;padding:0 15px;color:#333;border:1px solid #cdcdcd;cursor:pointer;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;line-height:30px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;margin:3px;vertical-align:middle;display:inline-block;text-decoration:none}.example-button-11:before{font-family:"icons-blank-theme";content:'\e611';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-button-11:hover:before{color:inherit}.example-button-11:active:before{color:inherit}.example-button-11:focus,.example-button-11:active{background-color:#e2e2e2;border:1px solid #cdcdcd;outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;color:#333}.example-button-11:hover{background-color:#e2e2e2;border:1px solid #cdcdcd;color:#555}.example-button-11.disabled,.example-button-11[disabled],fieldset[disabled] .example-button-11{cursor:default;pointer-events:none;opacity:.5}.example-button-12{background-image:none;background-color:#f2f2f2;padding:0 15px;color:#333;border:1px solid #cdcdcd;cursor:pointer;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;line-height:30px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;margin:3px;vertical-align:middle;display:inline-block;text-decoration:none}.example-button-12:after{font-family:"icons-blank-theme";content:'\e611';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-button-12:hover:after{color:inherit}.example-button-12:active:after{color:inherit}.example-button-12:focus,.example-button-12:active{background-color:#e2e2e2;border:1px solid #cdcdcd;outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;color:#333}.example-button-12:hover{background-color:#e2e2e2;border:1px solid #cdcdcd;color:#555}.example-button-12.disabled,.example-button-12[disabled],fieldset[disabled] .example-button-12{cursor:default;pointer-events:none;opacity:.5}.example-button-13{background-image:none;background-color:#f2f2f2;padding:0 15px;width:100px;color:#333;border:1px solid #cdcdcd;cursor:pointer;display:inline-block;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;line-height:30px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;margin:3px;vertical-align:middle}.example-button-13:focus,.example-button-13:active{background-color:#e2e2e2;border:1px solid #cdcdcd;outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;color:#333}.example-button-13:hover{background-color:#e2e2e2;border:1px solid #cdcdcd;color:#555}.example-button-13.disabled,.example-button-13[disabled],fieldset[disabled] .example-button-13{cursor:default;pointer-events:none;opacity:.5}.example-button-4{background-image:none;background-color:#1979c3;padding:0 15px;color:#fff;border:1px solid #1979c3;cursor:pointer;display:inline-block;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;line-height:30px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;margin:3px;vertical-align:middle}.example-button-4:focus,.example-button-4:active{background-color:#006bb4;border:1px solid #006bb4;outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;color:#fff}.example-button-4:hover{background-color:#006bb4;border:1px solid #006bb4;color:#fff}.example-button-4.disabled,.example-button-4[disabled],fieldset[disabled] .example-button-4{cursor:default;pointer-events:none;opacity:.5}.example-button-4:active{box-shadow:inset 0 3px 1px rgba(0,0,0,.29)}.example-button-4.example-button-5{line-height:50px;padding:0 35px;font-size:18px;font-size:1.8rem}.example-button-4.example-button-6{line-height:22px;padding:0 14px;font-size:11px;font-size:1.1rem;color:#fff}.example-button-4.example-button-6:hover,.example-button-4.example-button-6.active{color:#fff}.example-button-7{background-image:none;background-color:#f2f2f2;background-color:#006bb4;background-repeat:repeat-x;background-image:-webkit-linear-gradient(top, #1979c3 0, #006bb4 100%);background-image:linear-gradient(to bottom, #1979c3 0, #006bb4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1979c3', endColorstr='#006bb4', GradientType=0);padding:0 15px;color:#fff;border:1px solid #1979c3;cursor:pointer;display:inline-block;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;line-height:30px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;margin:3px;vertical-align:middle;border-radius:3px}.example-button-7:focus,.example-button-7:active{background-color:#e2e2e2;background-color:#006bb4;background-repeat:repeat-x;background-image:-webkit-linear-gradient(top, #006bb4 0, #006bb4 100%);background-image:linear-gradient(to bottom, #006bb4 0, #006bb4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#006bb4', endColorstr='#006bb4', GradientType=0);border:1px solid #006bb4;outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;color:#fff}.example-button-7:hover{background-color:#e2e2e2;background-color:#1979c3;background-repeat:repeat-x;background-image:-webkit-linear-gradient(top, #006bb4 0, #1979c3 100%);background-image:linear-gradient(to bottom, #006bb4 0, #1979c3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#006bb4', endColorstr='#1979c3', GradientType=0);border:1px solid #006bb4;color:#fff}.example-button-7.disabled,.example-button-7[disabled],fieldset[disabled] .example-button-7{cursor:default;pointer-events:none;opacity:.5}.example-button-7:active{box-shadow:inset 0 3px 1px rgba(0,0,0,.29)}.example-button-8{background:0;border:0;display:inline;line-height:1.42857143;margin:0;padding:0;color:#1979c3;text-decoration:none;font-weight:400}.example-button-8:visited{color:#800080;text-decoration:none}.example-button-8:hover{color:#006bb4;text-decoration:underline}.example-button-8:active{color:#ff5501;text-decoration:underline}.example-button-8:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.example-button-8:hover,.example-button-8:active,.example-button-8:focus{background:0;border:0;outline:0}.example-button-8.disabled,.example-button-8[disabled],fieldset[disabled] .example-button-8{color:#1979c3;text-decoration:underline;cursor:default;pointer-events:none;opacity:.5}.example-button-8:active{box-shadow:none}.example-button-9{text-decoration:none;background-image:none;background-color:#f2f2f2;padding:0 15px;color:#333;border:1px solid #cdcdcd;cursor:pointer;display:inline-block;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;line-height:30px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;margin:0;vertical-align:middle;margin:3px;border-radius:3px;font-weight:700}.example-button-9:hover,.example-button-9:active,.example-button-9:focus{text-decoration:none}.example-button-9:focus,.example-button-9:active{background-color:#e2e2e2;border:1px solid #cdcdcd;outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;color:#333}.example-button-9:hover{background-color:#e2e2e2;border:1px solid #cdcdcd;color:#555}.example-button-9.disabled,.example-button-9[disabled],fieldset[disabled] .example-button-9{cursor:default;pointer-events:none;opacity:.5}.example-button-9:active{box-shadow:inset 0 3px 1px rgba(0,0,0,.29)}.example-dropdown-1{display:inline-block;position:relative}.example-dropdown-1:before,.example-dropdown-1:after{content:"";display:table}.example-dropdown-1:after{clear:both}.example-dropdown-1 .action.toggle{cursor:pointer;display:inline-block;text-decoration:none}.example-dropdown-1 .action.toggle:after{font-family:"icons-blank-theme";content:'\e607';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-1 .action.toggle:hover:after{color:inherit}.example-dropdown-1 .action.toggle:active:after{color:inherit}.example-dropdown-1 .action.toggle.active{display:inline-block;text-decoration:none}.example-dropdown-1 .action.toggle.active:after{font-family:"icons-blank-theme";content:'\e618';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-1 .action.toggle.active:hover:after{color:inherit}.example-dropdown-1 .action.toggle.active:active:after{color:inherit}.example-dropdown-1 ul.dropdown{margin:0;padding:0;list-style-type:none;list-style-image:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;background-color:#fff;border:1px solid #bbb;position:absolute;z-index:100;min-width:100%;display:none;-webkit-box-shadow:0 3px 3px rgba(0,0,0,.15);-moz-box-shadow:0 3px 3px rgba(0,0,0,.15);box-shadow:0 3px 3px rgba(0,0,0,.15);margin-top:4px}.example-dropdown-1 ul.dropdown li{margin:0;padding:3px 5px}.example-dropdown-1 ul.dropdown li:hover{background-color:#e8e8e8;cursor:pointer}.example-dropdown-1 ul.dropdown:before,.example-dropdown-1 ul.dropdown:after{content:"";position:absolute;display:block;width:0;height:0;border-bottom-style:solid}.example-dropdown-1 ul.dropdown:before{top:-12px;left:10px;z-index:99;border:solid 6px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #fff rgba(0,0,0,0)}.example-dropdown-1 ul.dropdown:after{top:-14px;left:9px;z-index:98;border:solid 7px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #bbb rgba(0,0,0,0)}.example-dropdown-1.active{overflow:visible}.example-dropdown-1.active ul.dropdown{display:block}.example-dropdown-2{display:inline-block;position:relative}.example-dropdown-2:before,.example-dropdown-2:after{content:"";display:table}.example-dropdown-2:after{clear:both}.example-dropdown-2 .action.toggle{cursor:pointer;display:inline-block;text-decoration:none}.example-dropdown-2 .action.toggle:after{font-family:"icons-blank-theme";content:'\e607';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-2 .action.toggle:hover:after{color:inherit}.example-dropdown-2 .action.toggle:active:after{color:inherit}.example-dropdown-2 .action.toggle.active{display:inline-block;text-decoration:none}.example-dropdown-2 .action.toggle.active:after{font-family:"icons-blank-theme";content:'\e618';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-2 .action.toggle.active:hover:after{color:inherit}.example-dropdown-2 .action.toggle.active:active:after{color:inherit}.example-dropdown-2 ul.dropdown{margin:0;padding:0;list-style-type:none;list-style-image:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;background-color:#fff;border:1px solid #bbb;position:absolute;z-index:100;min-width:100%;display:none;-webkit-box-shadow:0 3px 3px rgba(0,0,0,.15);-moz-box-shadow:0 3px 3px rgba(0,0,0,.15);box-shadow:0 3px 3px rgba(0,0,0,.15);margin-top:4px}.example-dropdown-2 ul.dropdown li{margin:0;padding:3px 5px}.example-dropdown-2 ul.dropdown li:hover{background-color:#e8e8e8;cursor:pointer}.example-dropdown-2 ul.dropdown:before,.example-dropdown-2 ul.dropdown:after{content:"";position:absolute;display:block;width:0;height:0;border-bottom-style:solid}.example-dropdown-2 ul.dropdown:before{top:-12px;left:10px;z-index:99;border:solid 6px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #fff rgba(0,0,0,0)}.example-dropdown-2 ul.dropdown:after{top:-14px;left:9px;z-index:98;border:solid 7px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #bbb rgba(0,0,0,0)}.example-dropdown-2.active{overflow:visible}.example-dropdown-2.active ul.dropdown{display:block}.example-dropdown-3{display:inline-block;position:relative}.example-dropdown-3:before,.example-dropdown-3:after{content:"";display:table}.example-dropdown-3:after{clear:both}.example-dropdown-3 .action.toggle{cursor:pointer;display:inline-block;text-decoration:none}.example-dropdown-3 .action.toggle:before{font-family:"icons-blank-theme";content:'\e61c';font-size:22px;line-height:1;color:red;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-3 .action.toggle:hover:before{color:red}.example-dropdown-3 .action.toggle:active:before{color:inherit}.example-dropdown-3 .action.toggle.active{display:inline-block;text-decoration:none}.example-dropdown-3 .action.toggle.active:before{font-family:"icons-blank-theme";content:'\e60f';font-size:22px;line-height:1;color:red;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-3 .action.toggle.active:hover:before{color:red}.example-dropdown-3 .action.toggle.active:active:before{color:inherit}.example-dropdown-3 ul.dropdown{margin:0;padding:0;list-style-type:none;list-style-image:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;background-color:#fff;border:1px solid #bbb;position:absolute;z-index:100;min-width:100%;display:none;-webkit-box-shadow:0 3px 3px rgba(0,0,0,.15);-moz-box-shadow:0 3px 3px rgba(0,0,0,.15);box-shadow:0 3px 3px rgba(0,0,0,.15);margin-top:4px}.example-dropdown-3 ul.dropdown li{margin:0;padding:3px 5px}.example-dropdown-3 ul.dropdown li:hover{background-color:#e8e8e8;cursor:pointer}.example-dropdown-3 ul.dropdown:before,.example-dropdown-3 ul.dropdown:after{content:"";position:absolute;display:block;width:0;height:0;border-bottom-style:solid}.example-dropdown-3 ul.dropdown:before{top:-12px;left:10px;z-index:99;border:solid 6px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #fff rgba(0,0,0,0)}.example-dropdown-3 ul.dropdown:after{top:-14px;left:9px;z-index:98;border:solid 7px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #bbb rgba(0,0,0,0)}.example-dropdown-3.active{overflow:visible}.example-dropdown-3.active ul.dropdown{display:block}.example-dropdown-5{display:inline-block;position:relative}.example-dropdown-5:before,.example-dropdown-5:after{content:"";display:table}.example-dropdown-5:after{clear:both}.example-dropdown-5 .action.toggle{cursor:pointer;display:inline-block;text-decoration:none}.example-dropdown-5 .action.toggle:after{font-family:"icons-blank-theme";content:'\e607';font-size:22px;line-height:1;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-5 .action.toggle:hover:after{color:inherit}.example-dropdown-5 .action.toggle:active:after{color:inherit}.example-dropdown-5 .action.toggle.active{display:inline-block;text-decoration:none}.example-dropdown-5 .action.toggle.active:after{font-family:"icons-blank-theme";content:'\e618';font-size:22px;line-height:1;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-5 .action.toggle.active:hover:after{color:inherit}.example-dropdown-5 .action.toggle.active:active:after{color:inherit}.example-dropdown-5 ul.dropdown{margin:0;padding:0;list-style-type:none;list-style-image:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;background-color:#eef1f3;border:2px solid #ced1d4;position:absolute;z-index:100;min-width:100%;display:none}.example-dropdown-5 ul.dropdown li{margin:0;padding:10px;border-top:2px solid #e8eaed}.example-dropdown-5 ul.dropdown li:first-child{border:0}.example-dropdown-5 ul.dropdown li:hover{background-color:#d8e3e3;cursor:pointer}.example-dropdown-5.active{overflow:visible}.example-dropdown-5.active ul.dropdown{display:block}.example-dropdown-6{display:inline-block;position:relative}.example-dropdown-6:before,.example-dropdown-6:after{content:"";display:table}.example-dropdown-6:after{clear:both}.example-dropdown-6 .action.split{float:left;margin:0}.example-dropdown-6 .action.toggle{float:right;margin:0}.example-dropdown-6 button.action.split,.example-dropdown-6 .cart.table.wrapper .cart.items .action.action.split{-webkit-border-top-right-radius:0;-webkit-border-bottom-right-radius:0;border-top-right-radius:0;border-bottom-right-radius:0}.example-dropdown-6 button+.action.toggle,.example-dropdown-6 .cart.table.wrapper .cart.items .action+.action.toggle{border-left:0;-webkit-border-top-left-radius:0;-webkit-border-bottom-left-radius:0;border-top-left-radius:0;border-bottom-left-radius:0}.example-dropdown-6 .action.split{padding:0 5px}.example-dropdown-6 .action.toggle{padding:0 5px;display:inline-block;text-decoration:none}.example-dropdown-6 .action.toggle>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-dropdown-6 .action.toggle:after{font-family:"icons-blank-theme";content:'\e607';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-6 .action.toggle:hover:after{color:inherit}.example-dropdown-6 .action.toggle:active:after{color:inherit}.example-dropdown-6 .action.toggle.active{display:inline-block;text-decoration:none}.example-dropdown-6 .action.toggle.active>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-dropdown-6 .action.toggle.active:after{font-family:"icons-blank-theme";content:'\e618';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-6 .action.toggle.active:hover:after{color:inherit}.example-dropdown-6 .action.toggle.active:active:after{color:inherit}.example-dropdown-6 ul.dropdown{margin:0;padding:0;list-style-type:none;list-style-image:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;background-color:#fff;border:1px solid #bbb;position:absolute;z-index:100;min-width:100%;display:none;-webkit-box-shadow:0 3px 3px rgba(0,0,0,.15);-moz-box-shadow:0 3px 3px rgba(0,0,0,.15);box-shadow:0 3px 3px rgba(0,0,0,.15);margin-top:4px}.example-dropdown-6 ul.dropdown li{margin:0;padding:3px 5px}.example-dropdown-6 ul.dropdown li:hover{background-color:#e8e8e8;cursor:pointer}.example-dropdown-6 ul.dropdown:before,.example-dropdown-6 ul.dropdown:after{content:"";position:absolute;display:block;width:0;height:0;border-bottom-style:solid}.example-dropdown-6 ul.dropdown:before{top:-12px;left:10px;z-index:99;border:solid 6px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #fff rgba(0,0,0,0)}.example-dropdown-6 ul.dropdown:after{top:-14px;left:9px;z-index:98;border:solid 7px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #bbb rgba(0,0,0,0)}.example-dropdown-6.active{overflow:visible}.example-dropdown-6.active ul.dropdown{display:block}.example-dropdown-6 ul.dropdown{top:100%;left:100%;margin-left:-36px}.split.example-dropdown-7{display:inline-block;position:relative}.split.example-dropdown-7:before,.split.example-dropdown-7:after{content:"";display:table}.split.example-dropdown-7:after{clear:both}.split.example-dropdown-7 .action.split{float:left;margin:0}.split.example-dropdown-7 .action.toggle{float:right;margin:0}.split.example-dropdown-7 .action.split{padding:0 5px}.split.example-dropdown-7 .action.toggle{padding:0 5px;display:inline-block;text-decoration:none}.split.example-dropdown-7 .action.toggle>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.split.example-dropdown-7 .action.toggle:after{font-family:"icons-blank-theme";content:'\e607';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.split.example-dropdown-7 .action.toggle:hover:after{color:inherit}.split.example-dropdown-7 .action.toggle:active:after{color:inherit}.split.example-dropdown-7 .action.toggle.active{display:inline-block;text-decoration:none}.split.example-dropdown-7 .action.toggle.active>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.split.example-dropdown-7 .action.toggle.active:after{font-family:"icons-blank-theme";content:'\e618';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.split.example-dropdown-7 .action.toggle.active:hover:after{color:inherit}.split.example-dropdown-7 .action.toggle.active:active:after{color:inherit}.split.example-dropdown-7 ul.dropdown{margin:0;padding:0;list-style-type:none;list-style-image:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;background-color:#fff;border:1px solid #bbb;position:absolute;z-index:100;min-width:100%;display:none;-webkit-box-shadow:0 3px 3px rgba(0,0,0,.15);-moz-box-shadow:0 3px 3px rgba(0,0,0,.15);box-shadow:0 3px 3px rgba(0,0,0,.15);margin-top:4px}.split.example-dropdown-7 ul.dropdown li{margin:0;padding:3px 5px}.split.example-dropdown-7 ul.dropdown li:hover{background-color:#e8e8e8;cursor:pointer}.split.example-dropdown-7 ul.dropdown:before,.split.example-dropdown-7 ul.dropdown:after{content:"";position:absolute;display:block;width:0;height:0;border-bottom-style:solid}.split.example-dropdown-7 ul.dropdown:before{top:-12px;left:10px;z-index:99;border:solid 6px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #fff rgba(0,0,0,0)}.split.example-dropdown-7 ul.dropdown:after{top:-14px;left:9px;z-index:98;border:solid 7px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #bbb rgba(0,0,0,0)}.split.example-dropdown-7.active{overflow:visible}.split.example-dropdown-7.active ul.dropdown{display:block}.split.example-dropdown-7 ul.dropdown{top:100%;left:100%;margin-left:-36px}.example-dropdown-8{display:inline-block;position:relative}.example-dropdown-8:before,.example-dropdown-8:after{content:"";display:table}.example-dropdown-8:after{clear:both}.example-dropdown-8 .action.split{float:left;margin:0}.example-dropdown-8 .action.toggle{float:right;margin:0}.example-dropdown-8 button.action.split,.example-dropdown-8 .cart.table.wrapper .cart.items .action.action.split{-webkit-border-top-right-radius:0;-webkit-border-bottom-right-radius:0;border-top-right-radius:0;border-bottom-right-radius:0}.example-dropdown-8 button+.action.toggle,.example-dropdown-8 .cart.table.wrapper .cart.items .action+.action.toggle{border-left:0;-webkit-border-top-left-radius:0;-webkit-border-bottom-left-radius:0;border-top-left-radius:0;border-bottom-left-radius:0}.example-dropdown-8 .action.split{padding:0 5px}.example-dropdown-8 .action.toggle{padding:0 5px;display:inline-block;text-decoration:none}.example-dropdown-8 .action.toggle>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-dropdown-8 .action.toggle:after{font-family:"icons-blank-theme";content:'\e607';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-8 .action.toggle:hover:after{color:inherit}.example-dropdown-8 .action.toggle:active:after{color:inherit}.example-dropdown-8 .action.toggle.active{display:inline-block;text-decoration:none}.example-dropdown-8 .action.toggle.active>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-dropdown-8 .action.toggle.active:after{font-family:"icons-blank-theme";content:'\e618';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-8 .action.toggle.active:hover:after{color:inherit}.example-dropdown-8 .action.toggle.active:active:after{color:inherit}.example-dropdown-8 ul.dropdown{margin:0;padding:0;list-style-type:none;list-style-image:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;background-color:#fff;border:1px solid #bbb;position:absolute;z-index:100;min-width:100%;display:none;-webkit-box-shadow:0 3px 3px rgba(0,0,0,.15);-moz-box-shadow:0 3px 3px rgba(0,0,0,.15);box-shadow:0 3px 3px rgba(0,0,0,.15);margin-top:4px}.example-dropdown-8 ul.dropdown li{margin:0;padding:3px 5px}.example-dropdown-8 ul.dropdown li:hover{background-color:#e8e8e8;cursor:pointer}.example-dropdown-8 ul.dropdown:before,.example-dropdown-8 ul.dropdown:after{content:"";position:absolute;display:block;width:0;height:0;border-bottom-style:solid}.example-dropdown-8 ul.dropdown:before{top:-12px;left:10px;z-index:99;border:solid 6px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #fff rgba(0,0,0,0)}.example-dropdown-8 ul.dropdown:after{top:-14px;left:9px;z-index:98;border:solid 7px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #bbb rgba(0,0,0,0)}.example-dropdown-8.active{overflow:visible}.example-dropdown-8.active ul.dropdown{display:block}.example-dropdown-8 ul.dropdown{top:100%;left:100%;margin-left:-36px}.example-dropdown-9{display:inline-block;position:relative}.example-dropdown-9 .action.split,.example-dropdown-9 .action.toggle{line-height:50px;padding:0 17px;font-size:18px;font-size:1.8rem}.example-dropdown-9:before,.example-dropdown-9:after{content:"";display:table}.example-dropdown-9:after{clear:both}.example-dropdown-9 .action.split{float:left;margin:0}.example-dropdown-9 .action.toggle{float:right;margin:0}.example-dropdown-9 button.action.split,.example-dropdown-9 .cart.table.wrapper .cart.items .action.action.split{-webkit-border-top-right-radius:0;-webkit-border-bottom-right-radius:0;border-top-right-radius:0;border-bottom-right-radius:0}.example-dropdown-9 button+.action.toggle,.example-dropdown-9 .cart.table.wrapper .cart.items .action+.action.toggle{border-left:0;-webkit-border-top-left-radius:0;-webkit-border-bottom-left-radius:0;border-top-left-radius:0;border-bottom-left-radius:0}.example-dropdown-9 .action.split{padding:0 5px}.example-dropdown-9 .action.toggle{padding:0 5px;display:inline-block;text-decoration:none}.example-dropdown-9 .action.toggle>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-dropdown-9 .action.toggle:after{font-family:"icons-blank-theme";content:'\e607';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-9 .action.toggle:hover:after{color:inherit}.example-dropdown-9 .action.toggle:active:after{color:inherit}.example-dropdown-9 .action.toggle.active{display:inline-block;text-decoration:none}.example-dropdown-9 .action.toggle.active>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-dropdown-9 .action.toggle.active:after{font-family:"icons-blank-theme";content:'\e618';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-9 .action.toggle.active:hover:after{color:inherit}.example-dropdown-9 .action.toggle.active:active:after{color:inherit}.example-dropdown-9 ul.dropdown{margin:0;padding:0;list-style-type:none;list-style-image:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;background-color:#fff;border:1px solid #bbb;position:absolute;z-index:100;min-width:100%;display:none;-webkit-box-shadow:0 3px 3px rgba(0,0,0,.15);-moz-box-shadow:0 3px 3px rgba(0,0,0,.15);box-shadow:0 3px 3px rgba(0,0,0,.15);margin-top:4px}.example-dropdown-9 ul.dropdown li{margin:0;padding:3px 5px}.example-dropdown-9 ul.dropdown li:hover{background-color:#e8e8e8;cursor:pointer}.example-dropdown-9 ul.dropdown:before,.example-dropdown-9 ul.dropdown:after{content:"";position:absolute;display:block;width:0;height:0;border-bottom-style:solid}.example-dropdown-9 ul.dropdown:before{top:-12px;left:10px;z-index:99;border:solid 6px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #fff rgba(0,0,0,0)}.example-dropdown-9 ul.dropdown:after{top:-14px;left:9px;z-index:98;border:solid 7px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #bbb rgba(0,0,0,0)}.example-dropdown-9.active{overflow:visible}.example-dropdown-9.active ul.dropdown{display:block}.example-dropdown-9 ul.dropdown{top:100%;left:100%;margin-left:-36px}.example-dropdown-10{display:inline-block;position:relative}.example-dropdown-10 .action.split,.example-dropdown-10 .action.toggle{line-height:22px;padding:0 8px;font-size:11px;font-size:1.1rem}.example-dropdown-10:before,.example-dropdown-10:after{content:"";display:table}.example-dropdown-10:after{clear:both}.example-dropdown-10 .action.split{float:left;margin:0}.example-dropdown-10 .action.toggle{float:right;margin:0}.example-dropdown-10 button.action.split,.example-dropdown-10 .cart.table.wrapper .cart.items .action.action.split{-webkit-border-top-right-radius:0;-webkit-border-bottom-right-radius:0;border-top-right-radius:0;border-bottom-right-radius:0}.example-dropdown-10 button+.action.toggle,.example-dropdown-10 .cart.table.wrapper .cart.items .action+.action.toggle{border-left:0;-webkit-border-top-left-radius:0;-webkit-border-bottom-left-radius:0;border-top-left-radius:0;border-bottom-left-radius:0}.example-dropdown-10 .action.split{padding:0 5px}.example-dropdown-10 .action.toggle{padding:0 5px;display:inline-block;text-decoration:none}.example-dropdown-10 .action.toggle>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-dropdown-10 .action.toggle:after{font-family:"icons-blank-theme";content:'\e607';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-10 .action.toggle:hover:after{color:inherit}.example-dropdown-10 .action.toggle:active:after{color:inherit}.example-dropdown-10 .action.toggle.active{display:inline-block;text-decoration:none}.example-dropdown-10 .action.toggle.active>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-dropdown-10 .action.toggle.active:after{font-family:"icons-blank-theme";content:'\e618';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-10 .action.toggle.active:hover:after{color:inherit}.example-dropdown-10 .action.toggle.active:active:after{color:inherit}.example-dropdown-10 ul.dropdown{margin:0;padding:0;list-style-type:none;list-style-image:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;background-color:#fff;border:1px solid #bbb;position:absolute;z-index:100;min-width:100%;display:none;-webkit-box-shadow:0 3px 3px rgba(0,0,0,.15);-moz-box-shadow:0 3px 3px rgba(0,0,0,.15);box-shadow:0 3px 3px rgba(0,0,0,.15);margin-top:4px}.example-dropdown-10 ul.dropdown li{margin:0;padding:3px 5px}.example-dropdown-10 ul.dropdown li:hover{background-color:#e8e8e8;cursor:pointer}.example-dropdown-10 ul.dropdown:before,.example-dropdown-10 ul.dropdown:after{content:"";position:absolute;display:block;width:0;height:0;border-bottom-style:solid}.example-dropdown-10 ul.dropdown:before{top:-12px;left:10px;z-index:99;border:solid 6px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #fff rgba(0,0,0,0)}.example-dropdown-10 ul.dropdown:after{top:-14px;left:9px;z-index:98;border:solid 7px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #bbb rgba(0,0,0,0)}.example-dropdown-10.active{overflow:visible}.example-dropdown-10.active ul.dropdown{display:block}.example-dropdown-10 ul.dropdown{top:100%;left:100%;margin-left:-36px}.example-dropdown-11{display:inline-block;position:relative}.example-dropdown-11:before,.example-dropdown-11:after{content:"";display:table}.example-dropdown-11:after{clear:both}.example-dropdown-11 .action.split{float:right;margin:0}.example-dropdown-11 .action.toggle{float:left;margin:0}.example-dropdown-11 button.action.split,.example-dropdown-11 .cart.table.wrapper .cart.items .action.action.split{-webkit-border-top-left-radius:0;-webkit-border-bottom-left-radius:0;border-top-left-radius:0;border-bottom-left-radius:0}.example-dropdown-11 button+.action.toggle,.example-dropdown-11 .cart.table.wrapper .cart.items .action+.action.toggle{border-right:0;-webkit-border-top-right-radius:0;-webkit-border-bottom-right-radius:0;border-top-right-radius:0;border-bottom-right-radius:0}.example-dropdown-11 .action.split{padding:0 5px}.example-dropdown-11 .action.toggle{padding:0 5px;display:inline-block;text-decoration:none}.example-dropdown-11 .action.toggle>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-dropdown-11 .action.toggle:before{font-family:"icons-blank-theme";content:'\e61c';font-size:22px;line-height:inherit;color:red;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-11 .action.toggle:hover:before{color:red}.example-dropdown-11 .action.toggle:active:before{color:inherit}.example-dropdown-11 .action.toggle.active{display:inline-block;text-decoration:none}.example-dropdown-11 .action.toggle.active>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-dropdown-11 .action.toggle.active:before{font-family:"icons-blank-theme";content:'\e60f';font-size:22px;line-height:inherit;color:red;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-11 .action.toggle.active:hover:before{color:red}.example-dropdown-11 .action.toggle.active:active:before{color:inherit}.example-dropdown-11 ul.dropdown{margin:0;padding:0;list-style-type:none;list-style-image:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;background-color:#fff;border:1px solid #bbb;position:absolute;z-index:100;min-width:100%;display:none;-webkit-box-shadow:0 3px 3px rgba(0,0,0,.15);-moz-box-shadow:0 3px 3px rgba(0,0,0,.15);box-shadow:0 3px 3px rgba(0,0,0,.15);margin-top:4px}.example-dropdown-11 ul.dropdown li{margin:0;padding:3px 5px}.example-dropdown-11 ul.dropdown li:hover{background-color:#e8e8e8;cursor:pointer}.example-dropdown-11 ul.dropdown:before,.example-dropdown-11 ul.dropdown:after{content:"";position:absolute;display:block;width:0;height:0;border-bottom-style:solid}.example-dropdown-11 ul.dropdown:before{top:-12px;left:10px;z-index:99;border:solid 6px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #fff rgba(0,0,0,0)}.example-dropdown-11 ul.dropdown:after{top:-14px;left:9px;z-index:98;border:solid 7px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #bbb rgba(0,0,0,0)}.example-dropdown-11.active{overflow:visible}.example-dropdown-11.active ul.dropdown{display:block}.example-dropdown-11 ul.dropdown{top:100%;left:0}.example-dropdown-12{display:inline-block;position:relative}.example-dropdown-12:before,.example-dropdown-12:after{content:"";display:table}.example-dropdown-12:after{clear:both}.example-dropdown-12 .action.split{float:left;margin:0}.example-dropdown-12 .action.toggle{float:right;margin:0}.example-dropdown-12 button.action.split,.example-dropdown-12 .cart.table.wrapper .cart.items .action.action.split{-webkit-border-top-right-radius:0;-webkit-border-bottom-right-radius:0;border-top-right-radius:0;border-bottom-right-radius:0}.example-dropdown-12 button+.action.toggle,.example-dropdown-12 .cart.table.wrapper .cart.items .action+.action.toggle{border-left:0;-webkit-border-top-left-radius:0;-webkit-border-bottom-left-radius:0;border-top-left-radius:0;border-bottom-left-radius:0}.example-dropdown-12 .action.split{padding:0 5px}.example-dropdown-12 .action.toggle{padding:0 5px;display:inline-block;text-decoration:none}.example-dropdown-12 .action.toggle>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-dropdown-12 .action.toggle:after{font-family:"icons-blank-theme";content:'\e607';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-12 .action.toggle:hover:after{color:inherit}.example-dropdown-12 .action.toggle:active:after{color:inherit}.example-dropdown-12 .action.toggle.active{display:inline-block;text-decoration:none}.example-dropdown-12 .action.toggle.active>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-dropdown-12 .action.toggle.active:after{font-family:"icons-blank-theme";content:'\e618';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-12 .action.toggle.active:hover:after{color:inherit}.example-dropdown-12 .action.toggle.active:active:after{color:inherit}.example-dropdown-12 ul.dropdown{margin:0;padding:0;list-style-type:none;list-style-image:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;background-color:#eef1f3;border:2px solid #ced1d4;position:absolute;z-index:100;min-width:100%;display:none}.example-dropdown-12 ul.dropdown li{margin:0;padding:10px;border-top:2px solid #e8eaed}.example-dropdown-12 ul.dropdown li:first-child{border:0}.example-dropdown-12 ul.dropdown li:hover{background-color:#d8e3e3;cursor:pointer}.example-dropdown-12.active{overflow:visible}.example-dropdown-12.active ul.dropdown{display:block}.example-dropdown-12 ul.dropdown{top:100%;left:100%;margin-left:-36px}.example-form-1 .example-form-1-fieldset{border:0;margin:0 0 40px;padding:0;letter-spacing:-.31em;word-spacing:-.43em}.example-form-1 .example-form-1-fieldset>*{letter-spacing:normal;word-spacing:normal}.example-form-1 .example-form-1-fieldset>.legend{margin:0 0 25px 25.8%;padding:0;font-size:20px;font-size:2rem;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.2;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;float:left;width:74.2%}.example-form-1 .example-form-1-fieldset>.legend+br{display:block;visibility:hidden;height:0;overflow:hidden;clear:both}.example-form-1 .example-form-1-fieldset:after{content:attr(data-hasrequired);display:block;font-size:12px;font-size:1.2rem;color:#e02b27;margin:10px 0 0;letter-spacing:normal;word-spacing:normal}.example-form-1 .example-form-1-fieldset>.field{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;margin:0 0 29px;border:0}.example-form-1 .example-form-1-fieldset>.field:before,.example-form-1 .example-form-1-fieldset>.field:after{content:"";display:table}.example-form-1 .example-form-1-fieldset>.field:after{clear:both}.example-form-1 .example-form-1-fieldset>.field:not(.choice)>.label{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;float:left;width:25.8%;text-align:right;padding:6px 15px 0 0}.example-form-1 .example-form-1-fieldset>.field>.description{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;float:left;width:25.8%;text-align:right;padding:6px 15px 0 0}.example-form-1 .example-form-1-fieldset>.field.choice:before,.example-form-1 .example-form-1-fieldset>.field.no-label:before{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;content:" ";height:1px;float:left;width:25.8%;padding:6px 15px 0 0}.example-form-1 .example-form-1-fieldset>.field>.control{float:left;width:74.2%}.example-form-1 .example-form-1-fieldset>.field>.label{font-size:14px;font-size:1.4rem;font-weight:700}.example-form-1 .example-form-1-fieldset>.field>.label+br{display:none}.example-form-1 .example-form-1-fieldset>.field.required>.label:after{content:'*';font-size:12px;font-size:1.2rem;color:#e02b27;margin:0 0 0 5px}.example-form-1 .example-form-1-fieldset>.field .nested .field{margin:5px 0}.example-form-1 .example-form-1-fieldset>.field.choice>.label{display:inline}.example-form-1 .example-form-1-fieldset>.field.choice>input{vertical-align:top}.example-form-1 .example-form-1-fieldset>.field .fields.group{display:flex;letter-spacing:-.31em;*letter-spacing:normal;word-spacing:-.43em;margin-right:- 20px}.example-form-1 .example-form-1-fieldset>.field .fields.group>*{letter-spacing:normal;word-spacing:normal}.example-form-1 .example-form-1-fieldset>.field .fields.group .field{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;vertical-align:top;margin:0!important}.example-form-1 .example-form-1-fieldset>.field .fields.group .field .label{width:auto;float:none;text-align:left;padding-right:0}.example-form-1 .example-form-1-fieldset>.field .fields.group .field .control{float:none;width:auto}.example-form-1 .example-form-1-fieldset>.field .fields.group.group-2 .field{width:50%!important;display:inline-block}.example-form-1 .example-form-1-fieldset>.field .fields.group.group-3 .field{width:33.3%!important;display:inline-block}.example-form-1 .example-form-1-fieldset>.field .fields.group.group-4 .field{width:25%!important;display:inline-block}.example-form-1 .example-form-1-fieldset>.field .fields.group.group-5 .field{width:20%!important;display:inline-block}.example-form-1 .example-form-1-fieldset>.field .addon{display:inline-flex;flex-wrap:nowrap;padding:0;width:100%}.example-form-1 .example-form-1-fieldset>.field .addon textarea,.example-form-1 .example-form-1-fieldset>.field .addon select,.example-form-1 .example-form-1-fieldset>.field .addon input{order:2;box-shadow:none;display:inline-block;margin:0;width:auto;flex-basis:100%}.example-form-1 .example-form-1-fieldset>.field .addon .addbefore,.example-form-1 .example-form-1-fieldset>.field .addon .addafter{order:3;display:inline-block;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;border:1px solid #c2c2c2;border-radius:1px;height:32px;width:100%;padding:0 10px;font-size:14px;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;line-height:1.42857143;font-style:normal;color:#333;background-clip:padding-box;vertical-align:baseline;width:auto;white-space:nowrap;vertical-align:middle}.example-form-1 .example-form-1-fieldset>.field .addon .addbefore:disabled,.example-form-1 .example-form-1-fieldset>.field .addon .addafter:disabled{opacity:.5}.example-form-1 .example-form-1-fieldset>.field .addon .addbefore{float:left;order:1}.example-form-1 .example-form-1-fieldset>.field .note{font-size:12px;font-size:1.2rem;margin:3px 0 0;padding:0;display:inline-block;text-decoration:none}.example-form-1 .example-form-1-fieldset>.field .note:before{font-family:"icons-blank-theme";content:'\e618';font-size:24px;line-height:12px;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.example-form-2 .example-form-2-fieldset{border:0;margin:0 0 40px;padding:0;letter-spacing:-.31em;word-spacing:-.43em}.example-form-2 .example-form-2-fieldset>*{letter-spacing:normal;word-spacing:normal}.example-form-2 .example-form-2-fieldset>.legend{margin:0 0 25px 25.8%;padding:0;font-size:20px;font-size:2rem;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.2;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;float:left;width:74.2%}.example-form-2 .example-form-2-fieldset>.legend+br{display:block;visibility:hidden;height:0;overflow:hidden;clear:both}.example-form-2 .example-form-2-fieldset>.field{margin:0 0 20px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;display:inline-block;padding:0 20px 0 0;width:50%;vertical-align:top;border:0}.example-form-2 .example-form-2-fieldset>.field:not(.choice)>.label{display:inline-block;width:auto;float:none;text-align:left;margin:0 0 5px}.example-form-2 .example-form-2-fieldset>.field.choice:before,.example-form-2 .example-form-2-fieldset>.field.no-label:before{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;content:" ";height:auto;float:none;width:auto;padding:0}.example-form-2 .example-form-2-fieldset>.field>.control{float:none;width:auto}.example-form-2 .example-form-2-fieldset>.field .nested .field{width:100%}.example-form-2 .example-form-2-fieldset>.field>.label{font-size:14px;font-size:1.4rem;font-weight:700}.example-form-2 .example-form-2-fieldset>.field>.label+br{display:none}.example-form-2 .example-form-2-fieldset>.field.required>.label:after{content:'*';font-size:12px;font-size:1.2rem;color:#e02b27;margin:0 0 0 5px}.example-form-2 .example-form-2-fieldset>.field .nested .field{margin:5px 0}.example-form-2 .example-form-2-fieldset>.field.choice>.label{display:inline}.example-form-2 .example-form-2-fieldset>.field.choice>input{vertical-align:top}.example-form-2 .example-form-2-fieldset>.field .fields.group{display:flex;letter-spacing:-.31em;*letter-spacing:normal;word-spacing:-.43em;margin-right:- 20px}.example-form-2 .example-form-2-fieldset>.field .fields.group>*{letter-spacing:normal;word-spacing:normal}.example-form-2 .example-form-2-fieldset>.field .fields.group .field{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;vertical-align:top;margin:0!important}.example-form-2 .example-form-2-fieldset>.field .fields.group .field .label{width:auto;float:none;text-align:left;padding-right:0}.example-form-2 .example-form-2-fieldset>.field .fields.group .field .control{float:none;width:auto}.example-form-2 .example-form-2-fieldset>.field .fields.group.group-2 .field{width:50%!important;display:inline-block}.example-form-2 .example-form-2-fieldset>.field .fields.group.group-3 .field{width:33.3%!important;display:inline-block}.example-form-2 .example-form-2-fieldset>.field .fields.group.group-4 .field{width:25%!important;display:inline-block}.example-form-2 .example-form-2-fieldset>.field .fields.group.group-5 .field{width:20%!important;display:inline-block}.example-form-2 .example-form-2-fieldset>.field .addon{display:inline-flex;flex-wrap:nowrap;padding:0;width:100%}.example-form-2 .example-form-2-fieldset>.field .addon textarea,.example-form-2 .example-form-2-fieldset>.field .addon select,.example-form-2 .example-form-2-fieldset>.field .addon input{order:2;box-shadow:none;display:inline-block;margin:0;width:auto;flex-basis:100%}.example-form-2 .example-form-2-fieldset>.field .addon .addbefore,.example-form-2 .example-form-2-fieldset>.field .addon .addafter{order:3;display:inline-block;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;border:1px solid #c2c2c2;border-radius:1px;height:32px;width:100%;padding:0 10px;font-size:14px;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;line-height:1.42857143;font-style:normal;color:#333;background-clip:padding-box;vertical-align:baseline;width:auto;white-space:nowrap;vertical-align:middle}.example-form-2 .example-form-2-fieldset>.field .addon .addbefore:disabled,.example-form-2 .example-form-2-fieldset>.field .addon .addafter:disabled{opacity:.5}.example-form-2 .example-form-2-fieldset>.field .addon .addbefore{float:left;order:1}.example-form-2 .example-form-2-fieldset>.field .note{font-size:12px;font-size:1.2rem;margin:3px 0 0;padding:0;display:inline-block;text-decoration:none}.example-form-2 .example-form-2-fieldset>.field .note:before{font-family:"icons-blank-theme";content:'\e618';font-size:24px;line-height:12px;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}input[type="text"],input[type="password"],input[type="url"],input[type="tel"],input[type="search"],input[type="number"],input[type="datetime"],input[type="email"]{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;border:1px solid #c2c2c2;border-radius:1px;height:32px;width:100%;padding:0 10px;font-size:14px;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;line-height:1.42857143;font-style:normal;color:#333;background-clip:padding-box;vertical-align:baseline;margin-bottom:20px}input[type="text"]:disabled,input[type="password"]:disabled,input[type="url"]:disabled,input[type="tel"]:disabled,input[type="search"]:disabled,input[type="number"]:disabled,input[type="datetime"]:disabled,input[type="email"]:disabled{opacity:.5}select{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;border:1px solid #c2c2c2;border-radius:1px;height:32px;width:100%;padding:5px 10px 4px;font-size:14px;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;line-height:1.42857143;font-style:normal;color:#333;background-clip:padding-box;vertical-align:baseline;margin-bottom:20px}select:disabled{opacity:.5}select[multiple="multiple"]{height:auto;margin-bottom:20px}textarea{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;border:1px solid #c2c2c2;border-radius:1px;height:auto;width:100%;padding:10px;font-size:14px;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;line-height:1.42857143;font-style:normal;color:#333;background-clip:padding-box;vertical-align:baseline;resize:vertical}textarea:disabled{opacity:.5}input[type="checkbox"]{vertical-align:top;margin:2px 5px 0 0}input[type="checkbox"]:disabled{opacity:.5}input[type="radio"]{vertical-align:top;margin:2px 5px 0 0}input[type="radio"]:disabled{opacity:.5}input.text-example-2,select.select-example-2{height:42px}input.text-example-2,select.select-example-2,textarea.textarea-example-2{margin:0 0 50px 0;padding:5px 25px}input.text-example-1,select.select-example-1,textarea.textarea-example-1{border-color:#24adb2;background-color:#fffced}input.text-example-1:focus,select.select-example-1:focus,textarea.textarea-example-1:focus{border-color:#00f;color:#008000}input.text-example-1:disabled,select.select-example-1:disabled,textarea.textarea-example-1:disabled{color:red}input.text-example-1::-moz-placeholder,textarea.textarea-example-1::-moz-placeholder{color:#a9a9a9}input.text-example-1::-webkit-input-placeholder,textarea.textarea-example-1::-webkit-input-placeholder{color:#a9a9a9}input.text-example-1:-ms-input-placeholder,textarea.textarea-example-1:-ms-input-placeholder{color:#a9a9a9}input.checkbox-example-1,input.radio-example-1{margin:15px}input.text-example-3,select.select-example-3{height:42px;width:50%}textarea.textarea-example-3{width:50%}.number-example::-webkit-inner-spin-button,.number-example::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.search-example{-webkit-appearance:none}.search-example::-webkit-search-cancel-button,.search-example::-webkit-search-decoration,.search-example::-webkit-search-results-button,.search-example::-webkit-search-results-decoration{-webkit-appearance:none}input.mage-error,textarea.mage-error,select.mage-error{border-color:#ed8380}input+div.mage-error,textarea+div.mage-error,select+div.mage-error{font-size:12px;font-size:1.2rem;color:#e02b27;margin:3px 0 0}input.text-example-6.mage-error,input.text-example-7.mage-error{border-color:#ed8380}input.text-example-6+div.mage-error,input.text-example-7+div.mage-error{font-size:12px;font-size:1.2rem;color:#e02b27;margin:3px 0 0;display:inline-block;text-decoration:none}input.text-example-6+div.mage-error:before,input.text-example-7+div.mage-error:before{font-family:"icons-blank-theme";content:'\e618';font-size:24px;line-height:12px;color:#e02b27;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}input.text-example-8.mage-error,input.text-example-9.mage-error{border-color:#f47a1f;background-color:#ffead8;color:#71360d}input.text-example-8.valid,input.text-example-9.valid{border-color:#17ad67;background-color:#c9f5e3;color:#0a864d}input.text-example-8+div.mage-error,input.text-example-9+div.mage-error{color:#831fe0}.example-icon-1{display:inline-block}.example-icon-1:before{content:'';display:inline-block;width:26px;height:26px;line-height:26px;vertical-align:middle;background-image:url('http://magento2.loc/pub/lib/images/blank-theme-icons.png');background-position:0 0;background-repeat:no-repeat;margin:''}.example-icon-2{display:inline-block}.example-icon-2:after{content:'';display:inline-block;width:26px;height:26px;line-height:26px;vertical-align:middle;background-image:url('http://magento2.loc/pub/lib/images/blank-theme-icons.png');background-position:-26px 0;background-repeat:no-repeat;margin:''}.example-icon-3{display:inline-block}.example-icon-3>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-icon-3:before{content:'';display:inline-block;width:26px;height:26px;line-height:26px;vertical-align:middle;background-image:url('http://magento2.loc/pub/lib/images/blank-theme-icons.png');background-position:-156px -52px;background-repeat:no-repeat;margin:''}.example-icon-4{display:inline-block;text-decoration:none}.example-icon-4:before{font-family:"icons-blank-theme";content:'\e606';font-size:24px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.example-icon-5{display:inline-block;text-decoration:none}.example-icon-5:after{font-family:"icons-blank-theme";content:'\e605';font-size:24px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.example-icon-6{display:inline-block;text-decoration:none}.example-icon-6>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-icon-6:before{font-family:"icons-blank-theme";content:'\e61b';font-size:24px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.example-icon-7{display:inline-block}.example-icon-7:before{content:'';display:inline-block;width:26px;height:26px;line-height:26px;vertical-align:middle;background-image:url('http://magento2.loc/pub/lib/images/blank-theme-icons.png');background-position:0 0;background-repeat:no-repeat;margin:''}.example-icon-8{display:inline-block}.example-icon-8:before{content:'';display:inline-block;width:26px;height:26px;line-height:26px;vertical-align:middle;background-image:url('http://magento2.loc/pub/lib/images/blank-theme-icons.png');background-position:0 0;background-repeat:no-repeat;margin:''}.example-icon-8:before{background-position:-182px 0}.example-icon-9{display:inline-block}.example-icon-9:after{content:'';display:inline-block;width:26px;height:26px;line-height:26px;vertical-align:middle;background-image:url('http://magento2.loc/pub/lib/images/blank-theme-icons.png');background-position:0 0;background-repeat:no-repeat;margin:''}.example-icon-9:after{background-position:-52px -26px}.example-icon-10{display:inline-block}.example-icon-10:before{content:'';display:inline-block;width:26px;height:26px;line-height:26px;vertical-align:middle;background-image:url('http://magento2.loc/pub/lib/images/blank-theme-icons.png');background-position:0 0;background-repeat:no-repeat;margin:''}.example-icon-10:before{background-position:-104px 0}.example-icon-11{display:inline-block}.example-icon-11:before{content:'';display:inline-block;width:26px;height:26px;line-height:26px;vertical-align:middle;background-image:url('http://magento2.loc/pub/lib/images/blank-theme-icons.png');background-position:0 0;background-repeat:no-repeat;margin:''}.example-icon-11:before{width:30px;height:30px}.example-icon-11:after{width:30px;height:30px}.example-icon-11:before{background-color:#f1f1f1}.example-icon-12{display:inline-block;text-decoration:none}.example-icon-12:before{font-family:"icons-blank-theme";content:'\e612';font-size:28px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.example-icon-13{display:inline-block;text-decoration:none}.example-icon-13:before{font-family:"icons-blank-theme";content:'\e612';font-size:inherit;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.example-icon-13:before{font-size:26px;line-height:inherit}.example-icon-14{display:inline-block;text-decoration:none}.example-icon-14:before{font-family:"icons-blank-theme";content:'\e61d';font-size:26px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.example-icon-14>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.icons-image-list{list-style:none;padding:0}.icons-image-list li{float:left;width:33%}.icons-image-list li>span{display:inline-block}.icons-image-list li>span:before{content:'';display:inline-block;width:26px;height:26px;line-height:26px;vertical-align:middle;background-image:url('http://magento2.loc/pub/lib/images/blank-theme-icons.png');background-position:0 0;background-repeat:no-repeat;margin:''}.icons-image-list li .icon-search:before{background-position:0 0}.icons-image-list li .icon-cart:before{background-position:-26px 0}.icons-image-list li .icon-arrow-down:before{background-position:-52px 0}.icons-image-list li .icon-arrow-up:before{background-position:-78px 0}.icons-image-list li .icon-grid:before{background-position:-104px 0}.icons-image-list li .icon-list:before{background-position:-130px 0}.icons-image-list li .icon-remove:before{background-position:-156px 0}.icons-image-list li .icon-star:before{background-position:-182px 0}.icons-image-list li .icon-pointer-down:before{background-position:-208px 0}.icons-image-list li .icon-pointer-up:before{background-position:-234px 0}.icons-image-list li .icon-pointer-left:before{background-position:-260px 0}.icons-image-list li .icon-pointer-right:before{background-position:-286px 0}.icons-image-list li .icon-compare-empty:before{background-position:0 -26px}.icons-image-list li .icon-compare-full:before{background-position:-26px -26px}.icons-image-list li .icon-wishlist-empty:before{background-position:-52px -26px}.icons-image-list li .icon-wishlist-full:before{background-position:-78px -26px}.icons-image-list li .icon-update:before{background-position:-104px -26px}.icons-image-list li .icon-collapse:before{background-position:-130px -26px}.icons-image-list li .icon-expand:before{background-position:-156px -26px}.icons-image-list li .icon-menu:before{background-position:-182px -26px}.icons-image-list li .icon-prev:before{background-position:-208px -26px}.icons-image-list li .icon-next:before{background-position:-234px -26px}.icons-image-list li .icon-settings:before{background-position:-260px -26px}.icons-image-list li .icon-info:before{background-position:-286px -26px}.icons-image-list li .icon-checkmark:before{background-position:0 -52px}.icons-image-list li .icon-calendar:before{background-position:-26px -52px}.icons-image-list li .icon-comment:before{background-position:-52px -52px}.icons-image-list li .icon-comment-reflected:before{background-position:-78px -52px}.icons-image-list li .icon-envelope:before{background-position:-104px -52px}.icons-image-list li .icon-warning:before{background-position:-130px -52px}.icons-image-list li .icon-trash:before{background-position:-156px -52px}.icons-image-list li .icon-flag:before{background-position:-182px -52px}.icons-image-list li .icon-location:before{background-position:-208px -52px}.icons-image-list li .icon-up:before{background-position:-234px -52px}.icons-image-list li .icon-down:before{background-position:-260px -52px}.icons-font-list{list-style:none;padding:0}.icons-font-list li{float:left;width:25%;margin-bottom:35px;text-align:center}.icons-font-list li>span{display:inline-block;text-decoration:none}.icons-font-list li>span:before{font-family:"icons-blank-theme";content:'';font-size:34px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.icons-font-list li>span:before{content:attr(data-icon);margin:0 auto;display:block}.loader{position:fixed;left:0;top:0;right:0;bottom:0;background-color:rgba(255,255,255,.5);z-index:9999}.loader:before{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;background-color:rgba(0,0,0,0);background-image:url('http://magento2.loc/pub/lib/images/loader-2.gif');background-position:50% 50%;background-repeat:no-repeat;border-radius:5px;content:'';position:absolute;top:0;right:0;left:0;bottom:0;margin:auto;width:160px;height:160px}.loading{position:relative}.loading:before{content:'';position:absolute;left:0;top:0;right:0;bottom:0;background-color:rgba(255,255,255,.5);background-image:url('http://magento2.loc/pub/lib/images/loader-2.gif');background-position:50% 50%;background-repeat:no-repeat}.example-message-info{display:block;margin:0 0 10px;padding:10px 20px;border-radius:0;font-size:13px;font-size:1.3rem;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.2em;background:#fdf0d5;border-color:none;color:#6f4400}.example-message-info a{color:#1979c3}.example-message-info a:hover{color:#006bb4}.example-message-info a:active{color:#006bb4}.example-message-warning{display:block;margin:0 0 10px;padding:10px 20px;border-radius:0;font-size:13px;font-size:1.3rem;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.2em;background:#fdf0d5;border-color:none;color:#6f4400}.example-message-warning a{color:#1979c3}.example-message-warning a:hover{color:#006bb4}.example-message-warning a:active{color:#006bb4}.example-message-error{display:block;margin:0 0 10px;padding:10px 20px;border-radius:0;font-size:13px;font-size:1.3rem;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.2em;background:#fae5e5;border-color:none;color:#e02b27}.example-message-error a{color:#1979c3}.example-message-error a:hover{color:#006bb4}.example-message-error a:active{color:#006bb4}.example-message-success{display:block;margin:0 0 10px;padding:10px 20px;border-radius:0;font-size:13px;font-size:1.3rem;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.2em;background:#e5efe5;border-color:none;color:#006400}.example-message-success a{color:#1979c3}.example-message-success a:hover{color:#006bb4}.example-message-success a:active{color:#006bb4}.example-message-notice{display:block;margin:0 0 10px;padding:10px 20px;border-radius:0;font-size:13px;font-size:1.3rem;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.2em;background:#fdf0d5;border-color:none;color:#6f4400}.example-message-notice a{color:#1979c3}.example-message-notice a:hover{color:#006bb4}.example-message-notice a:active{color:#006bb4}.example-message-1{display:block;margin:0 0 10px;padding:10px 20px;border-radius:0;font-size:13px;font-size:1.3rem;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.2em;background:#fdf0d5;border-color:none;color:#6f4400;position:relative;padding-left:40px}.example-message-1 a{color:#1979c3}.example-message-1 a:hover{color:#006bb4}.example-message-1 a:active{color:#006bb4}.example-message-1>:first-child:before{font-family:"icons-blank-theme";content:'\e602';font-size:28px;line-height:28px;color:#c07600;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;margin:-14px 0 0;position:absolute;left:0;top:50%;text-align:center;width:40px}.example-message-2{display:block;margin:0 0 10px;padding:10px 20px;border-radius:0;font-size:13px;font-size:1.3rem;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.2em;background:#fae5e5;border-color:none;color:#e02b27;position:relative;padding-right:40px}.example-message-2 a{color:#1979c3}.example-message-2 a:hover{color:#006bb4}.example-message-2 a:active{color:#006bb4}.example-message-2:before{content:'';position:absolute;width:30px;text-align:center;top:0;height:100%;display:block;padding:0;background:#b30000}.example-message-2>:first-child:before{content:'';position:absolute;overflow:hidden;top:50%;margin-top:-5px}.example-message-2>:first-child:after{font-family:"icons-blank-theme";content:'\e602';font-size:28px;line-height:28px;color:#fff;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;margin:-14px 0 0;position:absolute;top:50%;text-align:center;width:30px}.example-message-2:before{right:0;border-radius:0}.example-message-2>:first-child:before{width:0;height:0;border:5px solid rgba(0,0,0,0);border-right-color:#b30000;right:30px}.example-message-2>:first-child:after{right:0}.example-message-3{display:block;margin:0 0 10px;padding:10px 20px;border-radius:0;font-size:13px;font-size:1.3rem;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.2em;background:#e5efe5;border-color:none;color:#006400;position:relative;padding-left:40px}.example-message-3 a{color:#1979c3}.example-message-3 a:hover{color:#006bb4}.example-message-3 a:active{color:#006bb4}.example-message-3:before{content:'';position:absolute;width:30px;text-align:center;top:0;height:100%;display:block;padding:0;background:#006400}.example-message-3>:first-child:before{content:'';position:absolute;overflow:hidden;top:50%;margin-top:-5px}.example-message-3>:first-child:after{font-family:"icons-blank-theme";content:'\e610';font-size:28px;line-height:28px;color:#fff;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;margin:-14px 0 0;position:absolute;top:50%;text-align:center;width:30px}.example-message-3:before{left:0;border-radius:0}.example-message-3>:first-child:before{width:0;height:0;border:5px solid rgba(0,0,0,0);border-left-color:#006400;left:30px}.example-message-3>:first-child:after{left:0}.example-message-4{display:block;margin:0 0 10px;padding:10px 20px;border-radius:0;font-size:13px;font-size:1.3rem;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.2em;background:#fc0;border-color:#ffa500;color:#000;position:relative;padding-left:40px;border-width:4px;border-radius:10px}.example-message-4 a{color:#00f}.example-message-4 a:hover{color:#009}.example-message-4 a:active{color:#006}.example-message-4:before{content:'';position:absolute;width:30px;text-align:center;top:0;height:100%;display:block;padding:0;background:#green}.example-message-4>:first-child:before{content:'';position:absolute;overflow:hidden;top:50%;margin-top:-5px}.example-message-4>:first-child:after{font-family:"icons-blank-theme";content:'\e606';font-size:28px;line-height:28px;color:#000;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;margin:-14px 0 0;position:absolute;top:50%;text-align:center;width:30px}.example-message-4:before{left:0;border-radius:0}.example-message-4>:first-child:before{width:0;height:0;border:5px solid rgba(0,0,0,0);border-left-color:#green;left:30px}.example-message-4>:first-child:after{left:0}header.header{background-color:rgba(255,0,0,.2)}.column.main{background-color:rgba(255,255,0,.2)}.column.left{background-color:rgba(0,255,255,.2)}.column.right{background-color:rgba(0,0,255,.2)}footer.footer{background-color:rgba(0,0,0,.2)}.columns{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;display:flex;flex-direction:row;flex-wrap:wrap}.columns:after{content:" ";display:block;height:0;clear:both;overlow:hidden;visibility:hidden}.columns>.column{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;min-height:10px}.layout-1 .column.main{width:100%;order:2}.layout-3 .column.main{width:66.66666667%;display:inline-block;order:2}.layout-2-left .column.main{width:83.33333333%;float:right;order:2}.layout-2-right .column.main{width:83.33333333%;float:left;order:1}.layout-3 .column.left{width:16.66666667%;float:left;order:1}.layout-2-left .column.left{width:16.66666667%;float:left;order:1}.layout-2-right .column.left{width:16.66666667%;float:left;order:1}.layout-3 .column.right{width:16.66666667%;float:right;order:3}.layout-2-left .column.right{width:16.66666667%;float:right;order:2}.layout-2-right .column.right{width:16.66666667%;float:right;order:2}.layout-example-3 .column.main{width:60%;display:inline-block;order:2}.layout-example-3 .column.left{width:20%;float:left;order:1}.layout-example-3 .column.right{width:20%;float:right;order:3}.layout-example-3-1 .column.main{width:60%;float:left;order:1}.layout-example-3-1 .column.left{width:20%;display:inline-block;order:2}.layout-example-3-1 .column.right{width:20%;float:right;order:3}header.header,footer.footer,.page.main{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;margin:0 auto;padding-left:20px;padding-right:20px;width:auto;min-width:1000px;max-width:1280px}.pages>.label{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.pages .items{font-size:0;line-height:0;letter-spacing:-1px;white-space:nowrap;margin:0;padding:0;list-style-type:none;list-style-image:none;display:inline-block;font-weight:400}.pages .item{font-size:1.2rem;font-size:12px;line-height:32px;letter-spacing:normal;margin:0 1px;display:inline-block}.pages .item .label{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.pages a.page{padding:0 10px;color:#1979c3;display:inline-block;text-decoration:none}.pages a.page:visited{color:#800080}.pages a.page:hover{color:#006bb4;text-decoration:none}.pages a.page:active{color:#ff5501}.pages strong.page{font-size:1.2rem;font-size:12px;line-height:32px;letter-spacing:normal;padding:0 10px;color:#333;display:inline-block;font-weight:700}.pages .action{border:1px solid #d1d1d1;padding:0;color:#7d7d7d;display:inline-block;text-decoration:none}.pages .action:visited{color:#7d7d7d}.pages .action:hover{color:#7d7d7d;text-decoration:none}.pages .action:active{color:#7d7d7d}.pages .action.next{display:inline-block;text-decoration:none}.pages .action.next:visited:before{color:#7d7d7d}.pages .action.next:active:before{color:#7d7d7d}.pages .action.next>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.pages .action.next:before{font-family:"icons-blank-theme";content:'\e608';font-size:32px;line-height:inherit;color:#7d7d7d;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center}.pages .action.next:hover:before{color:#7d7d7d}.pages .action.next:active:before{color:#7d7d7d}.pages .action.previous{display:inline-block;text-decoration:none}.pages .action.previous:visited:before{color:#7d7d7d}.pages .action.previous:active:before{color:#7d7d7d}.pages .action.previous>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.pages .action.previous:before{font-family:"icons-blank-theme";content:'\e617';font-size:32px;line-height:inherit;color:#7d7d7d;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center}.pages .action.previous:hover:before{color:#7d7d7d}.pages .action.previous:active:before{color:#7d7d7d}.example-pages-1>.label{display:inline-block;font-weight:400;font-size:1.2rem;font-size:12px;line-height:32px;letter-spacing:normal}.example-pages-1>.label:after{content:':'}.example-pages-1 .items{font-size:0;line-height:0;letter-spacing:-1px;white-space:nowrap;margin:0;padding:0;list-style-type:none;list-style-image:none;display:inline-block;font-weight:400}.example-pages-1 .item{font-size:1.2rem;font-size:12px;line-height:32px;letter-spacing:normal;margin:0 3px;display:inline-block}.example-pages-1 .item .label{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-pages-1 a.page{background-color:#ccc;background-repeat:repeat-x;background-image:-webkit-linear-gradient(top, #f4f4f4 0, #ccc 100%);background-image:linear-gradient(to bottom, #f4f4f4 0, #ccc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f4f4f4', endColorstr='#cccccc', GradientType=0);border:1px solid #b3b3b3;padding:0 10px;color:#333;display:inline-block;text-decoration:none}.example-pages-1 a.page:visited{background-color:'';background-repeat:repeat-x;background-image:-webkit-linear-gradient(top,'' 0,'' 100%);background-image:linear-gradient(to bottom,'' 0,'' 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='''', endColorstr='''', GradientType=0);color:#800080}.example-pages-1 a.page:hover{background-color:#f4f4f4;background-repeat:repeat-x;background-image:-webkit-linear-gradient(top, #ccc 0, #f4f4f4 100%);background-image:linear-gradient(to bottom, #ccc 0, #f4f4f4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#cccccc', endColorstr='#f4f4f4', GradientType=0);border:1px solid #999;color:#333;text-decoration:none}.example-pages-1 a.page:active{background-color:'';background-repeat:repeat-x;background-image:-webkit-linear-gradient(top,'' 0,'' 100%);background-image:linear-gradient(to bottom,'' 0,'' 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='''', endColorstr='''', GradientType=0);color:#ff5501}.example-pages-1 strong.page{background-color:#1979c3;border:1px solid #135d96;font-size:1.2rem;font-size:12px;line-height:32px;letter-spacing:normal;padding:0 10px;color:#f7b32e;display:inline-block;font-weight:700}.example-pages-1 .action{border:1px solid #d1d1d1;padding:0;color:#7d7d7d;display:inline-block;text-decoration:none}.example-pages-1 .action:visited{color:#7d7d7d}.example-pages-1 .action:hover{color:#ff5501;text-decoration:none}.example-pages-1 .action:active{color:#7d7d7d}.example-pages-1 .action.next{display:inline-block;text-decoration:none}.example-pages-1 .action.next:visited:before{color:#7d7d7d}.example-pages-1 .action.next:active:before{color:#7d7d7d}.example-pages-1 .action.next>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-pages-1 .action.next:before{font-family:"icons-blank-theme";content:'\e608';font-size:30px;line-height:inherit;color:#7d7d7d;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center}.example-pages-1 .action.next:hover:before{color:#ff5501}.example-pages-1 .action.next:active:before{color:#7d7d7d}.example-pages-1 .action.previous{display:inline-block;text-decoration:none}.example-pages-1 .action.previous:visited:before{color:#7d7d7d}.example-pages-1 .action.previous:active:before{color:#7d7d7d}.example-pages-1 .action.previous>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-pages-1 .action.previous:before{font-family:"icons-blank-theme";content:'\e617';font-size:30px;line-height:inherit;color:#7d7d7d;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center}.example-pages-1 .action.previous:hover:before{color:#ff5501}.example-pages-1 .action.previous:active:before{color:#7d7d7d}.example-pages-2>.label{display:inline-block;font-weight:400;font-size:1.2rem;font-size:12px;line-height:32px;letter-spacing:normal}.example-pages-2>.label:after{content:':'}.example-pages-2 .items{font-size:0;line-height:0;letter-spacing:-1px;white-space:nowrap;margin:0;padding:0;list-style-type:none;list-style-image:none;display:inline-block;font-weight:400}.example-pages-2 .item{font-size:1.2rem;font-size:12px;line-height:32px;letter-spacing:normal;margin:0 1px;display:inline-block}.example-pages-2 .item .label{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-pages-2 a.page{padding:0 10px;color:#1979c3;display:inline-block;text-decoration:none}.example-pages-2 a.page:visited{color:#800080}.example-pages-2 a.page:hover{color:#006bb4;text-decoration:none}.example-pages-2 a.page:active{color:#ff5501}.example-pages-2 strong.page{font-size:1.2rem;font-size:12px;line-height:32px;letter-spacing:normal;padding:0 10px;color:#333;display:inline-block;font-weight:700}.example-pages-2 .action{border:1px solid #d1d1d1;padding:0;color:#7d7d7d;display:inline-block;text-decoration:none}.example-pages-2 .action:visited{color:#7d7d7d}.example-pages-2 .action:hover{color:#7d7d7d;text-decoration:none}.example-pages-2 .action:active{color:#7d7d7d}.example-pages-3>.label{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-pages-3 .items{font-size:0;line-height:0;letter-spacing:-1px;white-space:nowrap;margin:0;padding:0;list-style-type:none;list-style-image:none;display:inline-block;font-weight:400}.example-pages-3 .item{font-size:1.2rem;font-size:12px;line-height:32px;letter-spacing:normal;margin:0 1px;display:inline-block}.example-pages-3 .item .label{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-pages-3 a.page{background-color:#1979c3;padding:0 10px;color:#fff;display:inline-block;text-decoration:none}.example-pages-3 a.page:visited{background-color:#800080;color:#fff}.example-pages-3 a.page:hover{background-color:#006bb4;color:#fff;text-decoration:none}.example-pages-3 a.page:active{background-color:#ff5501;color:#fff}.example-pages-3 strong.page{background-color:#800080;font-size:1.2rem;font-size:12px;line-height:32px;letter-spacing:normal;padding:0 10px;color:#fff;display:inline-block;font-weight:700}.example-pages-3 .action{background-color:#1979c3;border:1px solid #d1d1d1;padding:0;color:#fff;display:inline-block;text-decoration:none}.example-pages-3 .action:visited{background-color:#800080;color:#7d7d7d}.example-pages-3 .action:hover{background-color:#006bb4;color:#fff;text-decoration:none}.example-pages-3 .action:active{background-color:#ff5501;color:#fff}.example-pages-3 .action.next{display:inline-block;text-decoration:none}.example-pages-3 .action.next:visited:before{color:#7d7d7d}.example-pages-3 .action.next:active:before{color:#fff}.example-pages-3 .action.next>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-pages-3 .action.next:before{font-family:"icons-blank-theme";content:'\e608';font-size:32px;line-height:inherit;color:#fff;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center}.example-pages-3 .action.next:hover:before{color:#fff}.example-pages-3 .action.next:active:before{color:#fff}.example-pages-3 .action.previous{display:inline-block;text-decoration:none}.example-pages-3 .action.previous:visited:before{color:#7d7d7d}.example-pages-3 .action.previous:active:before{color:#fff}.example-pages-3 .action.previous>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-pages-3 .action.previous:before{font-family:"icons-blank-theme";content:'\e617';font-size:32px;line-height:inherit;color:#fff;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center}.example-pages-3 .action.previous:hover:before{color:#fff}.example-pages-3 .action.previous:active:before{color:#fff}.window.popup.popup-example{width:380px;background-color:#fff;padding:22px;border:1px solid #aeaeae;-webkit-box-shadow:0 3px 3px rgba(0,0,0,.15);-moz-box-shadow:0 3px 3px rgba(0,0,0,.15);box-shadow:0 3px 3px rgba(0,0,0,.15);display:none;position:fixed;top:20%;left:50%;margin-left:-212px;z-index:1001;opacity:0;-webkit-transition:opacity .3s linear;-moz-transition:opacity .3s linear;transition:opacity .3s linear}.window.popup.popup-example .popup.header .title{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem}.window.popup.popup-example .popup.actions .action.close{position:absolute;display:inline-block;background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400;top:10px;right:10px}.window.popup.popup-example .popup.actions .action.close>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.window.popup.popup-example .popup.actions .action.close:before{font-family:"icons-blank-theme";content:'\e616';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.window.popup.popup-example .popup.actions .action.close:hover:before{color:inherit}.window.popup.popup-example .popup.actions .action.close:active:before{color:inherit}.window.popup.popup-example .popup.actions .action.close:focus,.window.popup.popup-example .popup.actions .action.close:active{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;background:0;border:0}.window.popup.popup-example .popup.actions .action.close:hover{background:0;border:0}.window.popup.popup-example .popup.actions .action.close.disabled,.window.popup.popup-example .popup.actions .action.close[disabled],fieldset[disabled] .window.popup.popup-example .popup.actions .action.close{cursor:not-allowed;pointer-events:none;opacity:.5}.window.popup.popup-example.active{opacity:1}.window.popup.popup-example-1{width:380px;background-color:#fff;padding:22px;border:1px solid #aeaeae;-webkit-box-shadow:0 3px 3px rgba(0,0,0,.15);-moz-box-shadow:0 3px 3px rgba(0,0,0,.15);box-shadow:0 3px 3px rgba(0,0,0,.15);display:none;position:fixed;top:20%;left:50%;margin-left:-212px;z-index:1001;opacity:0;-webkit-transition:opacity .3s linear;-moz-transition:opacity .3s linear;transition:opacity .3s linear}.window.popup.popup-example-1 .popup.header .title{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem}.window.popup.popup-example-1 .popup.actions .action.close{position:absolute;display:inline-block;background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400;top:10px;right:10px}.window.popup.popup-example-1 .popup.actions .action.close>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.window.popup.popup-example-1 .popup.actions .action.close:before{font-family:"icons-blank-theme";content:'\e616';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.window.popup.popup-example-1 .popup.actions .action.close:hover:before{color:inherit}.window.popup.popup-example-1 .popup.actions .action.close:active:before{color:inherit}.window.popup.popup-example-1 .popup.actions .action.close:focus,.window.popup.popup-example-1 .popup.actions .action.close:active{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;background:0;border:0}.window.popup.popup-example-1 .popup.actions .action.close:hover{background:0;border:0}.window.popup.popup-example-1 .popup.actions .action.close.disabled,.window.popup.popup-example-1 .popup.actions .action.close[disabled],fieldset[disabled] .window.popup.popup-example-1 .popup.actions .action.close{cursor:not-allowed;pointer-events:none;opacity:.5}.window.popup.popup-example-1.active{opacity:1}.window.overlay{-webkit-transition:opacity .15s linear;-moz-transition:opacity .15s linear;transition:opacity .15s linear;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background-color:#000;opacity:0}.window.overlay.active{opacity:.5;filter:alpha(opacity=50)}.window.popup.popup-example-2{width:380px;background-color:#fff;padding:22px;border:1px solid #aeaeae;overflow-y:auto;max-height:200px;-webkit-box-shadow:0 3px 3px rgba(0,0,0,.15);-moz-box-shadow:0 3px 3px rgba(0,0,0,.15);box-shadow:0 3px 3px rgba(0,0,0,.15);display:none;position:fixed;top:20%;left:50%;margin-left:-212px;z-index:1001;opacity:0;-webkit-transition:opacity .3s linear;-moz-transition:opacity .3s linear;transition:opacity .3s linear}.window.popup.popup-example-2 .popup.header .title{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem}.window.popup.popup-example-2 .popup.actions .action.close{position:absolute;display:inline-block;background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400;top:10px;right:10px}.window.popup.popup-example-2 .popup.actions .action.close>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.window.popup.popup-example-2 .popup.actions .action.close:before{font-family:"icons-blank-theme";content:'\e616';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.window.popup.popup-example-2 .popup.actions .action.close:hover:before{color:inherit}.window.popup.popup-example-2 .popup.actions .action.close:active:before{color:inherit}.window.popup.popup-example-2 .popup.actions .action.close:focus,.window.popup.popup-example-2 .popup.actions .action.close:active{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;background:0;border:0}.window.popup.popup-example-2 .popup.actions .action.close:hover{background:0;border:0}.window.popup.popup-example-2 .popup.actions .action.close.disabled,.window.popup.popup-example-2 .popup.actions .action.close[disabled],fieldset[disabled] .window.popup.popup-example-2 .popup.actions .action.close{cursor:not-allowed;pointer-events:none;opacity:.5}.window.popup.popup-example-2.active{opacity:1}.window.popup.popup-example-3{width:380px;background-color:#fff;padding:22px;border:1px solid #aeaeae;-webkit-box-shadow:0 3px 3px rgba(0,0,0,.15);-moz-box-shadow:0 3px 3px rgba(0,0,0,.15);box-shadow:0 3px 3px rgba(0,0,0,.15);display:none;position:fixed;top:20%;left:50%;margin-left:-212px;z-index:1001;opacity:0;-webkit-transition:opacity .3s linear;-moz-transition:opacity .3s linear;transition:opacity .3s linear}.window.popup.popup-example-3 .popup.header .title{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem}.window.popup.popup-example-3 .popup.content{overflow-y:auto;max-height:200px}.window.popup.popup-example-3 .popup.actions .action.close{position:absolute;display:inline-block;background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400;top:10px;right:10px}.window.popup.popup-example-3 .popup.actions .action.close>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.window.popup.popup-example-3 .popup.actions .action.close:before{font-family:"icons-blank-theme";content:'\e616';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.window.popup.popup-example-3 .popup.actions .action.close:hover:before{color:inherit}.window.popup.popup-example-3 .popup.actions .action.close:active:before{color:inherit}.window.popup.popup-example-3 .popup.actions .action.close:focus,.window.popup.popup-example-3 .popup.actions .action.close:active{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;background:0;border:0}.window.popup.popup-example-3 .popup.actions .action.close:hover{background:0;border:0}.window.popup.popup-example-3 .popup.actions .action.close.disabled,.window.popup.popup-example-3 .popup.actions .action.close[disabled],fieldset[disabled] .window.popup.popup-example-3 .popup.actions .action.close{cursor:not-allowed;pointer-events:none;opacity:.5}.window.popup.popup-example-3.active{opacity:1}.window.popup.popup-example-4{width:380px;background-color:#fff;padding:22px;border:1px solid #aeaeae;-webkit-box-shadow:0 3px 3px rgba(0,0,0,.15);-moz-box-shadow:0 3px 3px rgba(0,0,0,.15);box-shadow:0 3px 3px rgba(0,0,0,.15);display:none;position:fixed;top:20%;left:50%;margin-left:-212px;z-index:1001;opacity:0;-webkit-transition:opacity .3s linear;-moz-transition:opacity .3s linear;transition:opacity .3s linear}.window.popup.popup-example-4 .popup.header{margin:0 0 25px}.window.popup.popup-example-4 .popup.header .title{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem}.window.popup.popup-example-4 .popup.content{margin:0 0 20px}.window.popup.popup-example-4 .popup.footer{margin:0 20px}.window.popup.popup-example-4 .popup.actions .action.close{position:absolute;display:inline-block;background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400;top:10px;right:10px}.window.popup.popup-example-4 .popup.actions .action.close>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.window.popup.popup-example-4 .popup.actions .action.close:before{font-family:"icons-blank-theme";content:'\e616';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.window.popup.popup-example-4 .popup.actions .action.close:hover:before{color:inherit}.window.popup.popup-example-4 .popup.actions .action.close:active:before{color:inherit}.window.popup.popup-example-4 .popup.actions .action.close:focus,.window.popup.popup-example-4 .popup.actions .action.close:active{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;background:0;border:0}.window.popup.popup-example-4 .popup.actions .action.close:hover{background:0;border:0}.window.popup.popup-example-4 .popup.actions .action.close.disabled,.window.popup.popup-example-4 .popup.actions .action.close[disabled],fieldset[disabled] .window.popup.popup-example-4 .popup.actions .action.close{cursor:not-allowed;pointer-events:none;opacity:.5}.window.popup.popup-example-4.active{opacity:1}.window.popup.popup-example-5{width:380px;background-color:#fff;padding:22px;border:1px solid #aeaeae;-webkit-box-shadow:0 3px 3px rgba(0,0,0,.15);-moz-box-shadow:0 3px 3px rgba(0,0,0,.15);box-shadow:0 3px 3px rgba(0,0,0,.15);display:none;position:fixed;top:20%;left:50%;margin-left:-212px;z-index:1001;opacity:0;-webkit-transition:opacity .3s linear;-moz-transition:opacity .3s linear;transition:opacity .3s linear}.window.popup.popup-example-5 .popup.header .title{font-size:40px;font-size:4rem;font-weight:300;line-height:1.1;margin-top:20px;margin-top:2rem;margin-bottom:20px;margin-bottom:2rem}.window.popup.popup-example-5 .popup.actions .action.close{position:absolute;display:inline-block;background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400;top:10px;right:10px}.window.popup.popup-example-5 .popup.actions .action.close>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.window.popup.popup-example-5 .popup.actions .action.close:before{font-family:"icons-blank-theme";content:'\e616';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.window.popup.popup-example-5 .popup.actions .action.close:hover:before{color:inherit}.window.popup.popup-example-5 .popup.actions .action.close:active:before{color:inherit}.window.popup.popup-example-5 .popup.actions .action.close:focus,.window.popup.popup-example-5 .popup.actions .action.close:active{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;background:0;border:0}.window.popup.popup-example-5 .popup.actions .action.close:hover{background:0;border:0}.window.popup.popup-example-5 .popup.actions .action.close.disabled,.window.popup.popup-example-5 .popup.actions .action.close[disabled],fieldset[disabled] .window.popup.popup-example-5 .popup.actions .action.close{cursor:not-allowed;pointer-events:none;opacity:.5}.window.popup.popup-example-5.active{opacity:1}.window.popup.popup-example-6{width:380px;background-color:#fff;padding:22px;border:1px solid #aeaeae;-webkit-box-shadow:0 3px 3px rgba(0,0,0,.15);-moz-box-shadow:0 3px 3px rgba(0,0,0,.15);box-shadow:0 3px 3px rgba(0,0,0,.15);display:none;position:fixed;top:20%;left:50%;margin-left:-212px;z-index:1001;opacity:0;-webkit-transition:opacity .3s linear;-moz-transition:opacity .3s linear;transition:opacity .3s linear}.window.popup.popup-example-6 .popup.footer .actions.toolbar{text-align:left}.window.popup.popup-example-6 .popup.footer .actions.toolbar:before,.window.popup.popup-example-6 .popup.footer .actions.toolbar:after{content:"";display:table}.window.popup.popup-example-6 .popup.footer .actions.toolbar:after{clear:both}.window.popup.popup-example-6 .popup.footer .actions.toolbar .secondary{float:left}.window.popup.popup-example-6 .popup.footer .actions.toolbar .primary,.window.popup.popup-example-6 .popup.footer .actions.toolbar .secondary{display:inline-block}.window.popup.popup-example-6 .popup.footer .actions.toolbar .primary a.action,.window.popup.popup-example-6 .popup.footer .actions.toolbar .secondary a.action{display:inline-block}.window.popup.popup-example-6 .popup.footer .actions.toolbar .primary .action{margin:0 5px 0 0}.window.popup.popup-example-6 .popup.footer .actions.toolbar .secondary a.action{margin-top:6px}.window.popup.popup-example-6 .popup.header .title{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem}.window.popup.popup-example-6 .popup.actions .action.close{position:absolute;display:inline-block;background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400;top:10px;right:10px}.window.popup.popup-example-6 .popup.actions .action.close>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.window.popup.popup-example-6 .popup.actions .action.close:before{font-family:"icons-blank-theme";content:'\e616';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.window.popup.popup-example-6 .popup.actions .action.close:hover:before{color:inherit}.window.popup.popup-example-6 .popup.actions .action.close:active:before{color:inherit}.window.popup.popup-example-6 .popup.actions .action.close:focus,.window.popup.popup-example-6 .popup.actions .action.close:active{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;background:0;border:0}.window.popup.popup-example-6 .popup.actions .action.close:hover{background:0;border:0}.window.popup.popup-example-6 .popup.actions .action.close.disabled,.window.popup.popup-example-6 .popup.actions .action.close[disabled],fieldset[disabled] .window.popup.popup-example-6 .popup.actions .action.close{cursor:not-allowed;pointer-events:none;opacity:.5}.window.popup.popup-example-6.active{opacity:1}.window.popup.popup-example-7{width:380px;background-color:#fff;padding:22px;border:1px solid #aeaeae;-webkit-box-shadow:0 3px 3px rgba(0,0,0,.15);-moz-box-shadow:0 3px 3px rgba(0,0,0,.15);box-shadow:0 3px 3px rgba(0,0,0,.15);display:none;position:fixed;top:20%;left:50%;margin-left:-212px;z-index:1001;opacity:0;-webkit-transition:opacity .3s linear;-moz-transition:opacity .3s linear;transition:opacity .3s linear}.window.popup.popup-example-7 .popup.header .title{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem}.window.popup.popup-example-7 .popup.actions .action.close{position:absolute;top:10px;right:10px}.window.popup.popup-example-7.active{opacity:1}.window.popup.popup-example-8{width:380px;background-color:#fff;padding:22px;border:1px solid #aeaeae;-webkit-box-shadow:0 3px 3px rgba(0,0,0,.15);-moz-box-shadow:0 3px 3px rgba(0,0,0,.15);box-shadow:0 3px 3px rgba(0,0,0,.15);display:none;position:fixed;top:20%;left:50%;margin-left:-212px;z-index:1001;opacity:0;-webkit-transition:opacity .3s linear;-moz-transition:opacity .3s linear;transition:opacity .3s linear}.window.popup.popup-example-8 .popup.header .title{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem}.window.popup.popup-example-8 .popup.actions .action.close{position:absolute;display:inline-block;background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400;top:10px;right:10px}.window.popup.popup-example-8 .popup.actions .action.close:before{font-family:"icons-blank-theme";content:'\e613';font-size:30px;line-height:inherit;color:red;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center;margin:0}.window.popup.popup-example-8 .popup.actions .action.close:hover:before{color:#008000}.window.popup.popup-example-8 .popup.actions .action.close:active:before{color:#00f}.window.popup.popup-example-8 .popup.actions .action.close:focus,.window.popup.popup-example-8 .popup.actions .action.close:active{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;background:0;border:0}.window.popup.popup-example-8 .popup.actions .action.close:hover{background:0;border:0}.window.popup.popup-example-8 .popup.actions .action.close.disabled,.window.popup.popup-example-8 .popup.actions .action.close[disabled],fieldset[disabled] .window.popup.popup-example-8 .popup.actions .action.close{cursor:not-allowed;pointer-events:none;opacity:.5}.window.popup.popup-example-8.active{opacity:1}.window.popup.popup-example-9{width:380px;background-color:#fff;padding:22px;border:1px solid #aeaeae;-webkit-box-shadow:0 3px 3px rgba(0,0,0,.15);-moz-box-shadow:0 3px 3px rgba(0,0,0,.15);box-shadow:0 3px 3px rgba(0,0,0,.15);display:none;position:fixed;top:20%;left:50%;margin-left:-212px;z-index:1001;opacity:0;-webkit-transition:opacity .3s linear;-moz-transition:opacity .3s linear;transition:opacity .3s linear}.window.popup.popup-example-9 .popup.header .title{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem}.window.popup.popup-example-9 .popup.actions .action.close{position:absolute;display:inline-block;background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400;top:10px;right:10px}.window.popup.popup-example-9 .popup.actions .action.close>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.window.popup.popup-example-9 .popup.actions .action.close:before{font-family:"icons-blank-theme";content:'\e616';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.window.popup.popup-example-9 .popup.actions .action.close:hover:before{color:inherit}.window.popup.popup-example-9 .popup.actions .action.close:active:before{color:inherit}.window.popup.popup-example-9 .popup.actions .action.close:focus,.window.popup.popup-example-9 .popup.actions .action.close:active{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;background:0;border:0}.window.popup.popup-example-9 .popup.actions .action.close:hover{background:0;border:0}.window.popup.popup-example-9 .popup.actions .action.close.disabled,.window.popup.popup-example-9 .popup.actions .action.close[disabled],fieldset[disabled] .window.popup.popup-example-9 .popup.actions .action.close{cursor:not-allowed;pointer-events:none;opacity:.5}.window.popup.popup-example-9.active{opacity:1}.window.overlay.example-overlay-1.active{-webkit-transition:opacity .15s linear;-moz-transition:opacity .15s linear;transition:opacity .15s linear;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background-color:#0f5293;opacity:0}.window.overlay.example-overlay-1.active.active{opacity:.8;filter:alpha(opacity=50)}.example-ratings-1{overflow:hidden}.example-ratings-1:before{letter-spacing:-10px;font-family:'icons-blank-theme';font-style:normal;font-size:28px;line-height:28px;height:28px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#ccc;content:'\e605' '\e605' '\e605' '\e605' '\e605';position:absolute;z-index:1;display:block}.example-ratings-1 input[type="radio"]{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-ratings-1 input[type="radio"]:focus+label:before,.example-ratings-1 input[type="radio"]:checked+label:before{opacity:1}.example-ratings-1 label{position:absolute;display:block;cursor:pointer}.example-ratings-1 label span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-ratings-1 label:before{letter-spacing:-10px;font-family:'icons-blank-theme';font-style:normal;font-size:28px;line-height:28px;height:28px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#ff5601;opacity:0}.example-ratings-1 label:hover:before{opacity:1}.example-ratings-1 label:hover~label:before{opacity:0}.example-ratings-1 .rating-5{z-index:2}.example-ratings-1 .rating-5:before{content:'\e605' '\e605' '\e605' '\e605' '\e605'}.example-ratings-1 .rating-4{z-index:3}.example-ratings-1 .rating-4:before{content:'\e605' '\e605' '\e605' '\e605'}.example-ratings-1 .rating-3{z-index:4}.example-ratings-1 .rating-3:before{content:'\e605' '\e605' '\e605'}.example-ratings-1 .rating-2{z-index:5}.example-ratings-1 .rating-2:before{content:'\e605' '\e605'}.example-ratings-1 .rating-1{z-index:6}.example-ratings-1 .rating-1:before{content:'\e605'}.example-ratings-2{overflow:hidden}.example-ratings-2:before{letter-spacing:-10px;font-family:'icons-blank-theme';font-style:normal;font-size:28px;line-height:28px;height:28px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#ccc;content:'\e605' '\e605' '\e605' '\e605' '\e605' '\e605' '\e605' '\e605';position:absolute;z-index:1;display:block}.example-ratings-2 input[type="radio"]{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-ratings-2 input[type="radio"]:focus+label:before,.example-ratings-2 input[type="radio"]:checked+label:before{opacity:1}.example-ratings-2 label{position:absolute;display:block;cursor:pointer}.example-ratings-2 label span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-ratings-2 label:before{letter-spacing:-10px;font-family:'icons-blank-theme';font-style:normal;font-size:28px;line-height:28px;height:28px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#ff5601;opacity:0}.example-ratings-2 label:hover:before{opacity:1}.example-ratings-2 label:hover~label:before{opacity:0}.example-ratings-2 .rating-8{z-index:2}.example-ratings-2 .rating-8:before{content:'\e605' '\e605' '\e605' '\e605' '\e605' '\e605' '\e605' '\e605'}.example-ratings-2 .rating-7{z-index:3}.example-ratings-2 .rating-7:before{content:'\e605' '\e605' '\e605' '\e605' '\e605' '\e605' '\e605'}.example-ratings-2 .rating-6{z-index:4}.example-ratings-2 .rating-6:before{content:'\e605' '\e605' '\e605' '\e605' '\e605' '\e605'}.example-ratings-2 .rating-5{z-index:5}.example-ratings-2 .rating-5:before{content:'\e605' '\e605' '\e605' '\e605' '\e605'}.example-ratings-2 .rating-4{z-index:6}.example-ratings-2 .rating-4:before{content:'\e605' '\e605' '\e605' '\e605'}.example-ratings-2 .rating-3{z-index:7}.example-ratings-2 .rating-3:before{content:'\e605' '\e605' '\e605'}.example-ratings-2 .rating-2{z-index:8}.example-ratings-2 .rating-2:before{content:'\e605' '\e605'}.example-ratings-2 .rating-1{z-index:9}.example-ratings-2 .rating-1:before{content:'\e605'}.example-ratings-3{overflow:hidden}.example-ratings-3:before{letter-spacing:-10px;font-family:'icons-blank-theme';font-style:normal;font-size:28px;line-height:28px;height:28px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#aff5e3;content:'\e605' '\e605' '\e605' '\e605' '\e605';position:absolute;z-index:1;display:block}.example-ratings-3 input[type="radio"]{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-ratings-3 input[type="radio"]:focus+label:before,.example-ratings-3 input[type="radio"]:checked+label:before{opacity:1}.example-ratings-3 label{position:absolute;display:block;cursor:pointer}.example-ratings-3 label span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-ratings-3 label:before{letter-spacing:-10px;font-family:'icons-blank-theme';font-style:normal;font-size:28px;line-height:28px;height:28px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#0a6767;opacity:0}.example-ratings-3 label:hover:before{opacity:1}.example-ratings-3 label:hover~label:before{opacity:0}.example-ratings-3 .rating-5{z-index:2}.example-ratings-3 .rating-5:before{content:'\e605' '\e605' '\e605' '\e605' '\e605'}.example-ratings-3 .rating-4{z-index:3}.example-ratings-3 .rating-4:before{content:'\e605' '\e605' '\e605' '\e605'}.example-ratings-3 .rating-3{z-index:4}.example-ratings-3 .rating-3:before{content:'\e605' '\e605' '\e605'}.example-ratings-3 .rating-2{z-index:5}.example-ratings-3 .rating-2:before{content:'\e605' '\e605'}.example-ratings-3 .rating-1{z-index:6}.example-ratings-3 .rating-1:before{content:'\e605'}.example-ratings-4{overflow:hidden}.example-ratings-4:before{letter-spacing:-10px;font-family:'icons-blank-theme';font-style:normal;font-size:28px;line-height:28px;height:28px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#ccc;content:'\e600' '\e600' '\e600' '\e600' '\e600';position:absolute;z-index:1;display:block}.example-ratings-4 input[type="radio"]{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-ratings-4 input[type="radio"]:focus+label:before,.example-ratings-4 input[type="radio"]:checked+label:before{opacity:1}.example-ratings-4 label{position:absolute;display:block;cursor:pointer}.example-ratings-4 label span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-ratings-4 label:before{letter-spacing:-10px;font-family:'icons-blank-theme';font-style:normal;font-size:28px;line-height:28px;height:28px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#ff5601;opacity:0}.example-ratings-4 label:hover:before{opacity:1}.example-ratings-4 label:hover~label:before{opacity:0}.example-ratings-4 .rating-5{z-index:2}.example-ratings-4 .rating-5:before{content:'\e600' '\e600' '\e600' '\e600' '\e600'}.example-ratings-4 .rating-4{z-index:3}.example-ratings-4 .rating-4:before{content:'\e600' '\e600' '\e600' '\e600'}.example-ratings-4 .rating-3{z-index:4}.example-ratings-4 .rating-3:before{content:'\e600' '\e600' '\e600'}.example-ratings-4 .rating-2{z-index:5}.example-ratings-4 .rating-2:before{content:'\e600' '\e600'}.example-ratings-4 .rating-1{z-index:6}.example-ratings-4 .rating-1:before{content:'\e600'}.exapmle-ratings-5 .control.rating.vote{overflow:hidden}.exapmle-ratings-5 .control.rating.vote:before{letter-spacing:-10px;font-family:'icons-blank-theme';font-style:normal;font-size:28px;line-height:28px;height:28px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#ccc;content:'\e605' '\e605' '\e605' '\e605' '\e605';position:absolute;z-index:1;display:block}.exapmle-ratings-5 .control.rating.vote input[type="radio"]{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.exapmle-ratings-5 .control.rating.vote input[type="radio"]:focus+label:before,.exapmle-ratings-5 .control.rating.vote input[type="radio"]:checked+label:before{opacity:1}.exapmle-ratings-5 .control.rating.vote label{position:absolute;display:block;cursor:pointer}.exapmle-ratings-5 .control.rating.vote label span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.exapmle-ratings-5 .control.rating.vote label:before{letter-spacing:-10px;font-family:'icons-blank-theme';font-style:normal;font-size:28px;line-height:28px;height:28px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#ff5601;opacity:0}.exapmle-ratings-5 .control.rating.vote label:hover:before{opacity:1}.exapmle-ratings-5 .control.rating.vote label:hover~label:before{opacity:0}.exapmle-ratings-5 .control.rating.vote .rating-5{z-index:2}.exapmle-ratings-5 .control.rating.vote .rating-5:before{content:'\e605' '\e605' '\e605' '\e605' '\e605'}.exapmle-ratings-5 .control.rating.vote .rating-4{z-index:3}.exapmle-ratings-5 .control.rating.vote .rating-4:before{content:'\e605' '\e605' '\e605' '\e605'}.exapmle-ratings-5 .control.rating.vote .rating-3{z-index:4}.exapmle-ratings-5 .control.rating.vote .rating-3:before{content:'\e605' '\e605' '\e605'}.exapmle-ratings-5 .control.rating.vote .rating-2{z-index:5}.exapmle-ratings-5 .control.rating.vote .rating-2:before{content:'\e605' '\e605'}.exapmle-ratings-5 .control.rating.vote .rating-1{z-index:6}.exapmle-ratings-5 .control.rating.vote .rating-1:before{content:'\e605'}.example-rating-summary-1{overflow:hidden}.example-rating-summary-1 .rating.result{width:100px;display:inline-block;vertical-align:middle;position:relative}.example-rating-summary-1 .rating.result:before{position:absolute;z-index:1;top:0;left:0;width:100%;display:block;font-family:'icons-blank-theme';content:'\e605' '\e605' '\e605' '\e605' '\e605';font-style:normal;font-size:28px;line-height:28px;height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#ccc}.example-rating-summary-1 .rating.result>span{display:block;overflow:hidden}.example-rating-summary-1 .rating.result>span:before{position:relative;z-index:2;display:block;font-family:'icons-blank-theme';content:'\e605' '\e605' '\e605' '\e605' '\e605';font-style:normal;font-size:28px;line-height:28px;height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#ff5601}.example-rating-summary-1 .rating.result>span span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-rating-summary-2{overflow:hidden}.example-rating-summary-2 .rating.result{width:154px;display:inline-block;vertical-align:middle;position:relative}.example-rating-summary-2 .rating.result:before{position:absolute;z-index:1;top:0;left:0;width:100%;display:block;font-family:'icons-blank-theme';content:'\e605' '\e605' '\e605' '\e605' '\e605' '\e605' '\e605' '\e605';font-style:normal;font-size:28px;line-height:28px;height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#ccc}.example-rating-summary-2 .rating.result>span{display:block;overflow:hidden}.example-rating-summary-2 .rating.result>span:before{position:relative;z-index:2;display:block;font-family:'icons-blank-theme';content:'\e605' '\e605' '\e605' '\e605' '\e605' '\e605' '\e605' '\e605';font-style:normal;font-size:28px;line-height:28px;height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#ff5601}.example-rating-summary-2 .rating.result>span span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-rating-summary-3{overflow:hidden}.example-rating-summary-3 .rating.result{width:100px;display:inline-block;vertical-align:middle;position:relative}.example-rating-summary-3 .rating.result:before{position:absolute;z-index:1;top:0;left:0;width:100%;display:block;font-family:'icons-blank-theme';content:'\e605' '\e605' '\e605' '\e605' '\e605';font-style:normal;font-size:28px;line-height:28px;height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#aff5e3}.example-rating-summary-3 .rating.result>span{display:block;overflow:hidden}.example-rating-summary-3 .rating.result>span:before{position:relative;z-index:2;display:block;font-family:'icons-blank-theme';content:'\e605' '\e605' '\e605' '\e605' '\e605';font-style:normal;font-size:28px;line-height:28px;height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#0a6767}.example-rating-summary-3 .rating.result>span span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-rating-summary-4{overflow:hidden}.example-rating-summary-4 .rating.result{width:100px;display:inline-block;vertical-align:middle;position:relative}.example-rating-summary-4 .rating.result:before{position:absolute;z-index:1;top:0;left:0;width:100%;display:block;font-family:'icons-blank-theme';content:'\e600' '\e600' '\e600' '\e600' '\e600';font-style:normal;font-size:28px;line-height:28px;height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#ccc}.example-rating-summary-4 .rating.result>span{display:block;overflow:hidden}.example-rating-summary-4 .rating.result>span:before{position:relative;z-index:2;display:block;font-family:'icons-blank-theme';content:'\e600' '\e600' '\e600' '\e600' '\e600';font-style:normal;font-size:28px;line-height:28px;height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#ff5601}.example-rating-summary-4 .rating.result>span span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-rating-summary-5{overflow:hidden}.example-rating-summary-5 .label{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-rating-summary-5 .rating.result{width:100px;display:inline-block;vertical-align:middle;position:relative}.example-rating-summary-5 .rating.result:before{position:absolute;z-index:1;top:0;left:0;width:100%;display:block;font-family:'icons-blank-theme';content:'\e605' '\e605' '\e605' '\e605' '\e605';font-style:normal;font-size:28px;line-height:28px;height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#ccc}.example-rating-summary-5 .rating.result>span{display:block;overflow:hidden}.example-rating-summary-5 .rating.result>span:before{position:relative;z-index:2;display:block;font-family:'icons-blank-theme';content:'\e605' '\e605' '\e605' '\e605' '\e605';font-style:normal;font-size:28px;line-height:28px;height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#ff5601}.example-rating-summary-5 .rating.result>span span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-rating-summary-6 .rating.summary{overflow:hidden}.example-rating-summary-6 .rating.summary .rating.result{width:100px;display:inline-block;vertical-align:middle;position:relative}.example-rating-summary-6 .rating.summary .rating.result:before{position:absolute;z-index:1;top:0;left:0;width:100%;display:block;font-family:'icons-blank-theme';content:'\e605' '\e605' '\e605' '\e605' '\e605';font-style:normal;font-size:28px;line-height:28px;height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#ccc}.example-rating-summary-6 .rating.summary .rating.result>span{display:block;overflow:hidden}.example-rating-summary-6 .rating.summary .rating.result>span:before{position:relative;z-index:2;display:block;font-family:'icons-blank-theme';content:'\e605' '\e605' '\e605' '\e605' '\e605';font-style:normal;font-size:28px;line-height:28px;height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#ff5601}.example-rating-summary-6 .rating.summary .rating.result>span span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-rating-summary-7{overflow:hidden}.example-rating-summary-7 .rating.result{width:100px;display:inline-block;vertical-align:middle;position:relative}.example-rating-summary-7 .rating.result:before{position:absolute;z-index:1;top:0;left:0;width:100%;display:block;font-family:'icons-blank-theme';content:'\e605' '\e605' '\e605' '\e605' '\e605';font-style:normal;font-size:28px;line-height:28px;height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#ccc}.example-rating-summary-7 .rating.result>span{display:block;overflow:hidden}.example-rating-summary-7 .rating.result>span:before{position:relative;z-index:2;display:block;font-family:'icons-blank-theme';content:'\e605' '\e605' '\e605' '\e605' '\e605';font-style:normal;font-size:28px;line-height:28px;height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#ff5601}.example-rating-summary-7 .rating.result>span span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-rating-summary-7 .label{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-sections-1{position:relative;z-index:1}.example-sections-1:before,.example-sections-1:after{content:"";display:table}.example-sections-1:after{clear:both}.example-sections-1>.item.title{float:left}.example-sections-1>.item.title>.switch{display:block;position:relative;z-index:2;height:20px}.example-sections-1>.item.content{margin-top:20px;width:100%;float:right;margin-left:-100%;display:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.example-sections-1>.item.content:before,.example-sections-1>.item.content:after{content:"";display:table}.example-sections-1>.item.content:after{clear:both}.example-sections-1>.item.content.active{display:block}.example-sections-1>.item.title{margin:0 5px 0 0}.example-sections-1>.item.title>.switch{font-size:14px;font-size:1.4rem;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:600;font-style:normal;line-height:20px;color:#7d7d7d;text-decoration:none;height:20px;padding:5px 20px 5px 20px;border:1px solid #d1d1d1;background-color:#f0f0f0;border-bottom:0}.example-sections-1>.item.title>.switch:visited{color:#7d7d7d;text-decoration:none}.example-sections-1>.item.title>.switch:hover{color:#7d7d7d;text-decoration:none}.example-sections-1>.item.title>.switch:active{color:#333;text-decoration:none}.example-sections-1>.item.title>.switch:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.example-sections-1>.item.title:not(.disabled)>.switch:focus,.example-sections-1>.item.title:not(.disabled)>.switch:hover{background-color:#fcfcfc}.example-sections-1>.item.title:not(.disabled)>.switch:active,.example-sections-1>.item.title.active>.switch,.example-sections-1>.item.title.active>.switch:focus,.example-sections-1>.item.title.active>.switch:hover{background-color:#fff;color:#333}.example-sections-1>.item.title.active>.switch{padding-bottom:6px}.example-sections-1>.item.content{background-color:#fff;margin-top:31px;padding:20px 20px 20px 20px;border:1px solid #d1d1d1}.example-sections-2{position:relative;z-index:1}.example-sections-2:before,.example-sections-2:after{content:"";display:table}.example-sections-2:after{clear:both}.example-sections-2>.item.title{float:left}.example-sections-2>.item.title>.switch{display:block;position:relative;z-index:2;height:20px}.example-sections-2>.item.content{margin-top:20px;width:100%;float:right;margin-left:-100%;display:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.example-sections-2>.item.content:before,.example-sections-2>.item.content:after{content:"";display:table}.example-sections-2>.item.content:after{clear:both}.example-sections-2>.item.content.active{display:block}.example-sections-2>.item.title{margin:0 5px 0 0}.example-sections-2>.item.title>.switch{font-size:14px;font-size:1.4rem;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:600;font-style:normal;line-height:20px;color:#7d7d7d;text-decoration:none;height:20px;padding:5px 20px 5px 20px;border:1px solid #d1d1d1;background-color:#f0f0f0;border-bottom:0}.example-sections-2>.item.title>.switch:visited{color:#7d7d7d;text-decoration:none}.example-sections-2>.item.title>.switch:hover{color:#7d7d7d;text-decoration:none}.example-sections-2>.item.title>.switch:active{color:#333;text-decoration:none}.example-sections-2>.item.title>.switch:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.example-sections-2>.item.title:not(.disabled)>.switch:focus,.example-sections-2>.item.title:not(.disabled)>.switch:hover{background-color:#fcfcfc}.example-sections-2>.item.title:not(.disabled)>.switch:active,.example-sections-2>.item.title.active>.switch,.example-sections-2>.item.title.active>.switch:focus,.example-sections-2>.item.title.active>.switch:hover{background-color:#fff;color:#333}.example-sections-2>.item.title.active>.switch{padding-bottom:6px}.example-sections-2>.item.content{background-color:#fff;margin-top:31px;padding:20px 20px 20px 20px;border-top:1px solid #d1d1d1}.example-sections-3{margin:0;padding:0}.example-sections-3>.item.title{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;float:none;width:100%}.example-sections-3>.item.title>.switch{display:block}.example-sections-3>.item.content{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;float:none;margin:0;display:none}.example-sections-3>.item.content:before,.example-sections-3>.item.content:after{content:"";display:table}.example-sections-3>.item.content:after{clear:both}.example-sections-3>.item.content.active{display:block}.example-sections-3>.item.title{margin:0 0 5px}.example-sections-3>.item.title>.switch{border:1px solid #d1d1d1;background-color:#f0f0f0;font-size:18px;font-size:1.8rem;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:600;font-style:normal;line-height:40px;color:#7d7d7d;text-decoration:none;height:40px;padding:5px 20px 5px 20px}.example-sections-3>.item.title>.switch:visited{color:#7d7d7d;text-decoration:none}.example-sections-3>.item.title>.switch:hover{color:#7d7d7d;text-decoration:#7d7d7d}.example-sections-3>.item.title>.switch:active{color:#333;text-decoration:none}.example-sections-3>.item.title>.switch:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.example-sections-3>.item.title:not(.disabled)>.switch:focus,.example-sections-3>.item.title:not(.disabled)>.switch:hover{background-color:#fcfcfc}.example-sections-3>.item.title:not(.disabled)>.switch:active,.example-sections-3>.item.title.active>.switch,.example-sections-3>.item.title.active>.switch:focus,.example-sections-3>.item.title.active>.switch:hover{background-color:#fff;padding-bottom:5px}.example-sections-3>.item.content{margin:0;padding:20px 20px 20px 20px;background-color:#fff;border:1px solid #d1d1d1}@media only screen and (max-width: 99999px){.example-sections-4{ position:relative;z-index:1}.example-sections-4:before,.example-sections-4:after{content:"";display:table}.example-sections-4:after{clear:both}.example-sections-4>.item.title{float:left}.example-sections-4>.item.title>.switch{display:block;position:relative;z-index:2;height:20px}.example-sections-4>.item.content{margin-top:20px;width:100%;float:right;margin-left:-100%;display:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.example-sections-4>.item.content:before,.example-sections-4>.item.content:after{content:"";display:table}.example-sections-4>.item.content:after{clear:both}.example-sections-4>.item.content.active{display:block}.example-sections-4>.item.title{margin:0 5px 0 0}.example-sections-4>.item.title>.switch{font-size:14px;font-size:1.4rem;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:600;font-style:normal;line-height:20px;color:#7d7d7d;text-decoration:none;height:20px;padding:5px 20px 5px 20px;border:1px solid #d1d1d1;background-color:#f0f0f0;border-bottom:0}.example-sections-4>.item.title>.switch:visited{color:#7d7d7d;text-decoration:none}.example-sections-4>.item.title>.switch:hover{color:#7d7d7d;text-decoration:none}.example-sections-4>.item.title>.switch:active{color:#333;text-decoration:none}.example-sections-4>.item.title>.switch:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.example-sections-4>.item.title:not(.disabled)>.switch:focus,.example-sections-4>.item.title:not(.disabled)>.switch:hover{background-color:#fcfcfc}.example-sections-4>.item.title:not(.disabled)>.switch:active,.example-sections-4>.item.title.active>.switch,.example-sections-4>.item.title.active>.switch:focus,.example-sections-4>.item.title.active>.switch:hover{background-color:#fff;color:#333}.example-sections-4>.item.title.active>.switch{padding-bottom:6px}.example-sections-4>.item.content{background-color:#fff;margin-top:31px;padding:20px 20px 20px 20px;border:1px solid #d1d1d1}}@media only screen and (max-width: 768px){.example-sections-4{ margin:0;padding:0}.example-sections-4>.item.title{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;float:none;width:100%}.example-sections-4>.item.title>.switch{display:block}.example-sections-4>.item.content{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;float:none;margin:0;display:none}.example-sections-4>.item.content:before,.example-sections-4>.item.content:after{content:"";display:table}.example-sections-4>.item.content:after{clear:both}.example-sections-4>.item.content.active{display:block}.example-sections-4>.item.title{margin:0 0 5px}.example-sections-4>.item.title>.switch{border:1px solid #d1d1d1;background-color:#f0f0f0;font-size:18px;font-size:1.8rem;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:600;font-style:normal;line-height:40px;color:#7d7d7d;text-decoration:none;height:40px;padding:5px 20px 5px 20px}.example-sections-4>.item.title>.switch:visited{color:#7d7d7d;text-decoration:none}.example-sections-4>.item.title>.switch:hover{color:#7d7d7d;text-decoration:#7d7d7d}.example-sections-4>.item.title>.switch:active{color:#333;text-decoration:none}.example-sections-4>.item.title>.switch:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.example-sections-4>.item.title:not(.disabled)>.switch:focus,.example-sections-4>.item.title:not(.disabled)>.switch:hover{background-color:#fcfcfc}.example-sections-4>.item.title:not(.disabled)>.switch:active,.example-sections-4>.item.title.active>.switch,.example-sections-4>.item.title.active>.switch:focus,.example-sections-4>.item.title.active>.switch:hover{background-color:#fff;padding-bottom:5px}.example-sections-4>.item.content{margin:0;padding:20px 20px 20px 20px;background-color:#fff;border:1px solid #d1d1d1}}.example-sections-5{position:relative;z-index:1}.example-sections-5:before,.example-sections-5:after{content:"";display:table}.example-sections-5:after{clear:both}.example-sections-5>.item.title{float:left}.example-sections-5>.item.title>.switch{display:block;position:relative;z-index:2;height:20px}.example-sections-5>.item.content{margin-top:20px;width:100%;float:right;margin-left:-100%;display:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.example-sections-5>.item.content:before,.example-sections-5>.item.content:after{content:"";display:table}.example-sections-5>.item.content:after{clear:both}.example-sections-5>.item.content.active{display:block}.example-sections-6{margin:0;padding:0}.example-sections-6>.item.title{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;float:none;width:100%}.example-sections-6>.item.title>.switch{display:block}.example-sections-6>.item.content{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;float:none;margin:0;display:none}.example-sections-6>.item.content:before,.example-sections-6>.item.content:after{content:"";display:table}.example-sections-6>.item.content:after{clear:both}.example-sections-6>.item.content.active{display:block}.example-table-1{border-collapse:collapse;border-spacing:0;margin-bottom:20px;max-width:100%;width:100%}.example-table-1 th{text-align:left}.example-table-1>tbody>tr>th,.example-table-1>tfoot>tr>th,.example-table-1>tbody>tr>td,.example-table-1>tfoot>tr>td{vertical-align:top}.example-table-1>thead>tr>th,.example-table-1>thead>tr>td{vertical-align:bottom}.example-table-1>thead>tr>th,.example-table-1>tbody>tr>th,.example-table-1>tfoot>tr>th,.example-table-1>thead>tr>td,.example-table-1>tbody>tr>td,.example-table-1>tfoot>tr>td{padding:3px 10px}.example-table-2>thead>tr>td,.example-table-2>tbody>tr>td,.example-table-2>tfoot>tr>td{font-size:14px;font-size:1.4rem;color:#333;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.42857143}.example-table-2>thead>tr>th,.example-table-2>tbody>tr>th,.example-table-2>tfoot>tr>th{font-size:14px;font-size:1.4rem;color:#111;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:700;font-style:normal;line-height:1.42857143}.example-table-3{border-collapse:collapse;border-spacing:0;margin-bottom:20px;max-width:100%;width:100%}.example-table-3 th{text-align:left}.example-table-3>tbody>tr>th,.example-table-3>tfoot>tr>th,.example-table-3>tbody>tr>td,.example-table-3>tfoot>tr>td{vertical-align:top}.example-table-3>thead>tr>th,.example-table-3>thead>tr>td{vertical-align:bottom}.example-table-3>thead>tr>th,.example-table-3>tbody>tr>th,.example-table-3>tfoot>tr>th,.example-table-3>thead>tr>td,.example-table-3>tbody>tr>td,.example-table-3>tfoot>tr>td{padding:3px 10px}.example-table-3>caption{font-size:18px;font-size:1.8rem;color:red;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.42857143;text-align:left;margin-top:20px;margin-bottom:10px}.example-table-4{border-collapse:collapse;border-spacing:0;margin-bottom:20px;max-width:100%;width:100%}.example-table-4 th{text-align:left}.example-table-4>tbody>tr>th,.example-table-4>tfoot>tr>th,.example-table-4>tbody>tr>td,.example-table-4>tfoot>tr>td{vertical-align:top}.example-table-4>thead>tr>th,.example-table-4>thead>tr>td{vertical-align:bottom}.example-table-4>thead>tr>th,.example-table-4>tbody>tr>th,.example-table-4>tfoot>tr>th,.example-table-4>thead>tr>td,.example-table-4>tbody>tr>td,.example-table-4>tfoot>tr>td{padding:3px 10px}.example-table-4>thead>tr>td,.example-table-4>tbody>tr>td,.example-table-4>tfoot>tr>td{padding:15px 25px 5px 0}.example-table-4>thead>tr>th,.example-table-4>tbody>tr>th,.example-table-4>tfoot>tr>th{padding:15px 25px 10px 0}.example-table-5{border-collapse:collapse;border-spacing:0;margin-bottom:20px;max-width:100%;width:100%;background-color:#fff}.example-table-5 th{text-align:left}.example-table-5>tbody>tr>th,.example-table-5>tfoot>tr>th,.example-table-5>tbody>tr>td,.example-table-5>tfoot>tr>td{vertical-align:top}.example-table-5>thead>tr>th,.example-table-5>thead>tr>td{vertical-align:bottom}.example-table-5>thead>tr>th,.example-table-5>tbody>tr>th,.example-table-5>tfoot>tr>th,.example-table-5>thead>tr>td,.example-table-5>tbody>tr>td,.example-table-5>tfoot>tr>td{padding:3px 10px}.example-table-5>thead{background-color:#ff0}.example-table-5>tfoot{background-color:#008000}.example-table-5>tbody>tr>td{background-color:#ffc0cb}.example-table-5>tbody>tr>th{background-color:#ffa500}.example-table-6{border-collapse:collapse;border-spacing:0;margin-bottom:20px;max-width:100%;width:100%;border:1px solid #d1d1d1}.example-table-6 th{text-align:left}.example-table-6>tbody>tr>th,.example-table-6>tfoot>tr>th,.example-table-6>tbody>tr>td,.example-table-6>tfoot>tr>td{vertical-align:top}.example-table-6>thead>tr>th,.example-table-6>thead>tr>td{vertical-align:bottom}.example-table-6>thead>tr>th,.example-table-6>tbody>tr>th,.example-table-6>tfoot>tr>th,.example-table-6>thead>tr>td,.example-table-6>tbody>tr>td,.example-table-6>tfoot>tr>td{padding:3px 10px}.example-table-6>thead>tr>th,.example-table-6>tbody>tr>th,.example-table-6>tfoot>tr>th,.example-table-6>thead>tr>td,.example-table-6>tbody>tr>td,.example-table-6>tfoot>tr>td{border:1px solid #d1d1d1}.example-table-7{border-collapse:collapse;border-spacing:0;margin-bottom:20px;max-width:100%;width:100%}.example-table-7 th{text-align:left}.example-table-7>tbody>tr>th,.example-table-7>tfoot>tr>th,.example-table-7>tbody>tr>td,.example-table-7>tfoot>tr>td{vertical-align:top}.example-table-7>thead>tr>th,.example-table-7>thead>tr>td{vertical-align:bottom}.example-table-7>thead>tr>th,.example-table-7>tbody>tr>th,.example-table-7>tfoot>tr>th,.example-table-7>thead>tr>td,.example-table-7>tbody>tr>td,.example-table-7>tfoot>tr>td{padding:3px 10px}.example-table-7>thead>tr>th,.example-table-7>tbody>tr>th,.example-table-7>tfoot>tr>th,.example-table-7>thead>tr>td,.example-table-7>tbody>tr>td,.example-table-7>tfoot>tr>td{border-top:1px solid #d1d1d1}.example-table-7>caption+thead>tr:first-child>th,.example-table-7>colgroup+thead>tr:first-child>th,.example-table-7>thead:first-child>tr:first-child>th,.example-table-7>caption+thead>tr:first-child>td,.example-table-7>colgroup+thead>tr:first-child>td,.example-table-7>thead:first-child>tr:first-child>td{border-top:0}.example-table-7>tbody+tbody{border-top:1px solid #919191}.example-table-8{border-collapse:collapse;border-spacing:0;margin-bottom:20px;max-width:100%;width:100%}.example-table-8 th{text-align:left}.example-table-8>tbody>tr>th,.example-table-8>tfoot>tr>th,.example-table-8>tbody>tr>td,.example-table-8>tfoot>tr>td{vertical-align:top}.example-table-8>thead>tr>th,.example-table-8>thead>tr>td{vertical-align:bottom}.example-table-8>thead>tr>th,.example-table-8>tbody>tr>th,.example-table-8>tfoot>tr>th,.example-table-8>thead>tr>td,.example-table-8>tbody>tr>td,.example-table-8>tfoot>tr>td{padding:3px 10px}.example-table-8>thead>tr>th,.example-table-8>tbody>tr>th,.example-table-8>tfoot>tr>th,.example-table-8>thead>tr>td,.example-table-8>tbody>tr>td,.example-table-8>tfoot>tr>td{border-left:1px solid #d1d1d1}.example-table-8>thead>tr>th:first-child,.example-table-8>tbody>tr>th:first-child,.example-table-8>tfoot>tr>th:first-child,.example-table-8>thead>tr>td:first-child,.example-table-8>tbody>tr>td:first-child,.example-table-8>tfoot>tr>td:first-child{border-left:0}.example-table-9{border-collapse:collapse;border-spacing:0;margin-bottom:20px;max-width:100%;width:100%;border:0}.example-table-9 th{text-align:left}.example-table-9>tbody>tr>th,.example-table-9>tfoot>tr>th,.example-table-9>tbody>tr>td,.example-table-9>tfoot>tr>td{vertical-align:top}.example-table-9>thead>tr>th,.example-table-9>thead>tr>td{vertical-align:bottom}.example-table-9>thead>tr>th,.example-table-9>tbody>tr>th,.example-table-9>tfoot>tr>th,.example-table-9>thead>tr>td,.example-table-9>tbody>tr>td,.example-table-9>tfoot>tr>td{padding:3px 10px}.example-table-9>thead>tr>th,.example-table-9>tbody>tr>th,.example-table-9>tfoot>tr>th,.example-table-9>thead>tr>td,.example-table-9>tbody>tr>td,.example-table-9>tfoot>tr>td{border:0}.example-table-9>thead>tr>th,.example-table-9>thead>tr>td{border-bottom:1px solid #d1d1d1}.example-table-10{border-collapse:collapse;border-spacing:0;margin-bottom:20px;max-width:100%;width:100%;border:0}.example-table-10 th{text-align:left}.example-table-10>tbody>tr>th,.example-table-10>tfoot>tr>th,.example-table-10>tbody>tr>td,.example-table-10>tfoot>tr>td{vertical-align:top}.example-table-10>thead>tr>th,.example-table-10>thead>tr>td{vertical-align:bottom}.example-table-10>thead>tr>th,.example-table-10>tbody>tr>th,.example-table-10>tfoot>tr>th,.example-table-10>thead>tr>td,.example-table-10>tbody>tr>td,.example-table-10>tfoot>tr>td{padding:3px 10px}.example-table-10>thead>tr>th,.example-table-10>tbody>tr>th,.example-table-10>tfoot>tr>th,.example-table-10>thead>tr>td,.example-table-10>tbody>tr>td,.example-table-10>tfoot>tr>td{border:0}.example-table-11{border-collapse:collapse;border-spacing:0;margin-bottom:20px;max-width:100%;width:100%}.example-table-11 th{text-align:left}.example-table-11>tbody>tr>th,.example-table-11>tfoot>tr>th,.example-table-11>tbody>tr>td,.example-table-11>tfoot>tr>td{vertical-align:top}.example-table-11>thead>tr>th,.example-table-11>thead>tr>td{vertical-align:bottom}.example-table-11>thead>tr>th,.example-table-11>tbody>tr>th,.example-table-11>tfoot>tr>th,.example-table-11>thead>tr>td,.example-table-11>tbody>tr>td,.example-table-11>tfoot>tr>td{padding:3px 10px}.example-table-11>tbody>tr:nth-child(even)>td,.example-table-11>tbody>tr:nth-child(even)>th{background-color:#fc0;color:#000}.example-table-12{border-collapse:collapse;border-spacing:0;margin-bottom:20px;max-width:100%;width:100%}.example-table-12 th{text-align:left}.example-table-12>tbody>tr>th,.example-table-12>tfoot>tr>th,.example-table-12>tbody>tr>td,.example-table-12>tfoot>tr>td{vertical-align:top}.example-table-12>thead>tr>th,.example-table-12>thead>tr>td{vertical-align:bottom}.example-table-12>thead>tr>th,.example-table-12>tbody>tr>th,.example-table-12>tfoot>tr>th,.example-table-12>thead>tr>td,.example-table-12>tbody>tr>td,.example-table-12>tfoot>tr>td{padding:3px 10px}.example-table-12>tbody>tr:nth-child(even):hover>td,.example-table-12>tbody>tr:nth-child(even):hover>th{background-color:#f0f0f0}.example-table-12>tbody>tr:nth-child(odd):hover>td,.example-table-12>tbody>tr:nth-child(odd):hover>th{background-color:#f0f0f0}.example-table-13{border-collapse:collapse;border-spacing:0;margin-bottom:20px;max-width:100%;width:100%;border:1px solid #d1d1d1}.example-table-13 th{text-align:left}.example-table-13>tbody>tr>th,.example-table-13>tfoot>tr>th,.example-table-13>tbody>tr>td,.example-table-13>tfoot>tr>td{vertical-align:top}.example-table-13>thead>tr>th,.example-table-13>thead>tr>td{vertical-align:bottom}.example-table-13>thead>tr>th,.example-table-13>tbody>tr>th,.example-table-13>tfoot>tr>th,.example-table-13>thead>tr>td,.example-table-13>tbody>tr>td,.example-table-13>tfoot>tr>td{padding:3px 10px}.example-table-13>thead>tr>th,.example-table-13>tbody>tr>th,.example-table-13>tfoot>tr>th,.example-table-13>thead>tr>td,.example-table-13>tbody>tr>td,.example-table-13>tfoot>tr>td{border:1px solid #d1d1d1}.example-table-13>tbody>tr:nth-child(odd)>td,.example-table-13>tbody>tr:nth-child(odd)>th{background-color:#fff;color:#333}.example-table-13>tbody>tr:nth-child(even):hover>td,.example-table-13>tbody>tr:nth-child(even):hover>th{background-color:#f0f0f0}.example-table-13>tbody>tr:nth-child(odd):hover>td,.example-table-13>tbody>tr:nth-child(odd):hover>th{background-color:#f0f0f0}@media only screen and (max-width: 768px){.example-table-14{ width:100%;margin-bottom:20px;overflow-y:hidden;overflow-x:auto;-ms-overflow-style:-ms-autohiding-scrollbar;-webkit-overflow-scrolling:touch}.example-table-14>table{margin-bottom:0}.example-table-14>table>thead>tr>th,.example-table-14>table>tbody>tr>th,.example-table-14>table>tfoot>tr>th,.example-table-14>table>thead>tr>td,.example-table-14>table>tbody>tr>td,.example-table-14>table>tfoot>tr>td{white-space:nowrap}}.example-table-15{border-collapse:collapse;border-spacing:0;margin-bottom:20px;max-width:100%;width:100%;border:1px solid #d1d1d1}.example-table-15 th{text-align:left}.example-table-15>tbody>tr>th,.example-table-15>tfoot>tr>th,.example-table-15>tbody>tr>td,.example-table-15>tfoot>tr>td{vertical-align:top}.example-table-15>thead>tr>th,.example-table-15>thead>tr>td{vertical-align:bottom}.example-table-15>thead>tr>th,.example-table-15>tbody>tr>th,.example-table-15>tfoot>tr>th,.example-table-15>thead>tr>td,.example-table-15>tbody>tr>td,.example-table-15>tfoot>tr>td{padding:3px 10px}.example-table-15>thead>tr>th,.example-table-15>tbody>tr>th,.example-table-15>tfoot>tr>th,.example-table-15>thead>tr>td,.example-table-15>tbody>tr>td,.example-table-15>tfoot>tr>td{border:1px solid #d1d1d1}.example-table-15>tbody>tr:nth-child(odd)>td,.example-table-15>tbody>tr:nth-child(odd)>th{background-color:#fff;color:#333}.example-table-15>tbody>tr:nth-child(even):hover>td,.example-table-15>tbody>tr:nth-child(even):hover>th{background-color:#f0f0f0}.example-table-15>tbody>tr:nth-child(odd):hover>td,.example-table-15>tbody>tr:nth-child(odd):hover>th{background-color:#f0f0f0}@media only screen and (max-width: 768px){.example-table-15{ border:0;background-color:#fc0}.example-table-15>tbody>tr:nth-child(odd)>td,.example-table-15>tbody>tr:nth-child(odd)>th{background-color:#fc0;color:#333}.example-table-15>tbody>tr:nth-child(even):hover>td,.example-table-15>tbody>tr:nth-child(even):hover>th{background-color:#fc0}.example-table-15>tbody>tr:nth-child(odd):hover>td,.example-table-15>tbody>tr:nth-child(odd):hover>th{background-color:#fc0}.example-table-15>thead>tr>th{display:none}.example-table-15>tbody>tr td,.example-table-15>tbody>tr th{display:block;padding:1.5px 10px;border-bottom:0}.example-table-15>tbody>tr td:before,.example-table-15>tbody>tr th:before{content:attr(data-th) ":";display:inline-block;padding-right:10px;font-size:14px;font-size:1.4rem;color:#111;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:700;font-style:normal;line-height:1.42857143}.example-table-15>tbody>tr>td{background-color:#fc0}.example-table-15>tfoot>tr td,.example-table-15>tfoot>tr th{display:block}.example-table-15>tbody>tr>th{background-color:#ffa500!important}}.example-tooltip-bottom{position:relative;display:inline-block}.example-tooltip-bottom .tooltip-content{z-index:100;background:#fff;min-width:210px;max-width:360px;padding:12px 16px;display:none;position:absolute;text-align:left;font-size:14px;font-size:1.4rem;color:#333;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.4;border:1px solid #bbb;top:100%;left:0;margin-top:5px}.example-tooltip-bottom .tooltip-content:after,.example-tooltip-bottom .tooltip-content:before{border:solid transparent;content:'';height:0;width:0;position:absolute}.example-tooltip-bottom .tooltip-content:after{border-color:transparent;border-width:5px}.example-tooltip-bottom .tooltip-content:before{border-color:transparent;border-width:6px}.example-tooltip-bottom .tooltip-content:after,.example-tooltip-bottom .tooltip-content:before{bottom:100%}.example-tooltip-bottom .tooltip-content:after{border-bottom-color:#fff;margin-left:-5px;left:15px}.example-tooltip-bottom .tooltip-content:before{border-bottom-color:#bbb;margin-left:-6px;left:15px}.example-tooltip-bottom>:first-child{cursor:help}.example-tooltip-bottom>:first-child:hover+.tooltip-content,.example-tooltip-bottom>:first-child:focus+.tooltip-content,.example-tooltip-bottom:hover>.tooltip-content{display:block}.example-tooltip-left{position:relative;display:inline-block}.example-tooltip-left .tooltip-content{z-index:100;background:#fff;min-width:210px;max-width:360px;padding:12px 16px;display:none;position:absolute;text-align:left;font-size:14px;font-size:1.4rem;color:#333;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.4;border:1px solid #bbb;right:100%;top:0;margin-right:5px}.example-tooltip-left .tooltip-content:after,.example-tooltip-left .tooltip-content:before{border:solid transparent;content:'';height:0;width:0;position:absolute}.example-tooltip-left .tooltip-content:after{border-color:transparent;border-width:5px}.example-tooltip-left .tooltip-content:before{border-color:transparent;border-width:6px}.example-tooltip-left .tooltip-content:after,.example-tooltip-left .tooltip-content:before{left:100%}.example-tooltip-left .tooltip-content:after{border-left-color:#fff;margin-top:-5px;top:15px}.example-tooltip-left .tooltip-content:before{border-left-color:#bbb;margin-top:-6px;top:15px}.example-tooltip-left>:first-child{cursor:help}.example-tooltip-left>:first-child:hover+.tooltip-content,.example-tooltip-left>:first-child:focus+.tooltip-content,.example-tooltip-left:hover>.tooltip-content{display:block}.example-tooltip-right{position:relative;display:inline-block}.example-tooltip-right .tooltip-content{z-index:100;background:#fff;min-width:210px;max-width:360px;padding:12px 16px;display:none;position:absolute;text-align:left;font-size:14px;font-size:1.4rem;color:#333;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.4;border:1px solid #bbb;left:100%;top:0;margin-left:5px}.example-tooltip-right .tooltip-content:after,.example-tooltip-right .tooltip-content:before{border:solid transparent;content:'';height:0;width:0;position:absolute}.example-tooltip-right .tooltip-content:after{border-color:transparent;border-width:5px}.example-tooltip-right .tooltip-content:before{border-color:transparent;border-width:6px}.example-tooltip-right .tooltip-content:after,.example-tooltip-right .tooltip-content:before{right:100%}.example-tooltip-right .tooltip-content:after{border-right-color:#fff;margin-top:-5px;top:15px}.example-tooltip-right .tooltip-content:before{border-right-color:#bbb;margin-top:-6px;top:15px}.example-tooltip-right>:first-child{cursor:help}.example-tooltip-right>:first-child:hover+.tooltip-content,.example-tooltip-right>:first-child:focus+.tooltip-content,.example-tooltip-right:hover>.tooltip-content{display:block}.example-tooltip-top{position:relative;display:inline-block}.example-tooltip-top .tooltip-content{z-index:100;background:#fff;min-width:210px;max-width:360px;padding:12px 16px;display:none;position:absolute;text-align:left;font-size:14px;font-size:1.4rem;color:#333;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.4;border:1px solid #bbb;bottom:100%;left:0;margin-bottom:5px}.example-tooltip-top .tooltip-content:after,.example-tooltip-top .tooltip-content:before{border:solid transparent;content:'';height:0;width:0;position:absolute}.example-tooltip-top .tooltip-content:after{border-color:transparent;border-width:5px}.example-tooltip-top .tooltip-content:before{border-color:transparent;border-width:6px}.example-tooltip-top .tooltip-content:after,.example-tooltip-top .tooltip-content:before{top:100%}.example-tooltip-top .tooltip-content:after{border-top-color:#fff;margin-left:-5px;left:15px}.example-tooltip-top .tooltip-content:before{border-top-color:#bbb;margin-left:-6px;left:15px}.example-tooltip-top>:first-child{cursor:help}.example-tooltip-top>:first-child:hover+.tooltip-content,.example-tooltip-top>:first-child:focus+.tooltip-content,.example-tooltip-top:hover>.tooltip-content{display:block}html{font-size:62.5%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{font-size:14px;font-size:1.4rem;color:#333;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.42857143}p{margin-top:0;margin-top:0rem;margin-bottom:10px;margin-bottom:1rem}abbr[title]{cursor:help;border-bottom:1px dotted #d1d1d1}b,strong{font-weight:700}em,i{font-style:italic}mark{background-color:#f0f0f0;color:#000}small,.small{font-size:12px}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #d1d1d1}sub,sup{font-size:71.42857143000001%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}dfn{font-style:italic}h1{font-size:40px;font-size:4rem;font-weight:300;line-height:1.1;margin-top:20px;margin-top:2rem;margin-bottom:20px;margin-bottom:2rem}h2{font-size:26px;font-size:2.6rem;font-weight:300;line-height:1.1;margin-top:25px;margin-top:2.5rem;margin-bottom:20px;margin-bottom:2rem}h3{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem}h4{font-size:14px;font-size:1.4rem;font-weight:700;line-height:1.1;margin-top:20px;margin-top:2rem;margin-bottom:20px;margin-bottom:2rem}h5{font-size:12px;font-size:1.2rem;font-weight:700;line-height:1.1;margin-top:20px;margin-top:2rem;margin-bottom:20px;margin-bottom:2rem}h6{font-size:10px;font-size:1rem;font-weight:700;line-height:1.1;margin-top:20px;margin-top:2rem;margin-bottom:20px;margin-bottom:2rem}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small{font-size:71.42857143000001%;color:#333;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1}a,.alink{color:#1979c3;text-decoration:none}a:visited,.alink:visited{color:#800080;text-decoration:none}a:hover,.alink:hover{color:#006bb4;text-decoration:underline}a:active,.alink:active{color:#ff5501;text-decoration:underline}a:focus,.alink:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}ul,ol{margin-top:0;margin-top:0rem;margin-bottom:25px;margin-bottom:2.5rem}ul>li,ol>li{margin-top:0;margin-top:0rem;margin-bottom:10px;margin-bottom:1rem}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}dl{margin-top:0;margin-bottom:20px}dt{font-weight:700;margin-top:0;margin-bottom:5px}dd{margin-top:0;margin-bottom:10px}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,'Courier New',monospace}code{padding:2px 4px;font-size:12px;font-size:1.2rem;color:#111;background-color:#f0f0f0;white-space:nowrap}kbd{padding:2px 4px;font-size:12px;font-size:1.2rem;color:#111;background-color:#f0f0f0}pre{background-color:#f0f0f0;border:1px solid #d1d1d1;color:#111;display:block;font-size:12px;font-size:1.2rem;margin:0 0 10px;line-height:1.42857143;padding:10px;word-break:break-all;word-wrap:break-word}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}blockquote{padding:0;margin:0 0 20px 40px;font-size:14px;font-size:1.4rem;color:#333;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:italic;line-height:1.42857143;border-left:0 solid #d1d1d1}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{color:#333;display:block;font-size:10px;font-size:1rem;line-height:1.42857143}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}blockquote cite{font-style:normal}blockquote:before,blockquote:after{content:""}q{quotes:none}q:before,q:after{content:'';content:none}cite{font-style:normal}.example{font-size:25px;font-size:2.5rem}.example-word-wrap{-ms-word-break:break-all;word-break:break-all;word-break:break-word;word-wrap:break-word;-webkit-hyphens:auto;-moz-hyphens:auto;-ms-hyphens:auto;-o-hyphens:auto;hyphens:auto;background:#ccc;width:120px}.example-text-overflow{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:#ccc;width:120px}.example-text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.example-hyphens{word-wrap:break-word;-webkit-hyphens:auto;-moz-hyphens:auto;-ms-hyphens:auto;-o-hyphens:auto;hyphens:auto}.example-hyphens-none{word-wrap:break-word;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;-o-hyphens:none;hyphens:none}.example-typography{font-size:30px;font-size:3rem;color:#fc0;font-family:Menlo,Monaco,Consolas,'Courier New',monospace;font-weight:500;font-style:italic;line-height:1.2}.example-list-reset-styles{margin:0;padding:0;list-style-type:none;list-style-image:none}.example-list-inline{margin:0;padding:0;list-style-type:none;list-style-image:none}.example-list-inline>li{display:inline-block;vertical-align:top}.example-link-default{color:#1979c3;text-decoration:none}.example-link-default:visited{color:#800080;text-decoration:none}.example-link-default:hover{color:#006bb4;text-decoration:underline}.example-link-default:active{color:#ff5501;text-decoration:underline}.example-link-default:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.example-link{color:#008000;text-decoration:none}.example-link:visited{color:#800080;text-decoration:none}.example-link:hover{color:#ffa500;text-decoration:none}.example-link:active{color:#ff5501;text-decoration:underline}.example-link:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.example-heading{font-size:40px;font-size:4rem;font-weight:300;line-height:1.1;margin-top:20px;margin-top:2rem;margin-bottom:20px;margin-bottom:2rem}.example-heading-2{font-size:26px;font-size:2.6rem;font-weight:300;line-height:1.1;margin-top:25px;margin-top:2.5rem;margin-bottom:20px;margin-bottom:2rem}html{font-size:62.5%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{font-size:14px;font-size:1.4rem;color:#333;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.42857143}p{margin-top:0;margin-top:0rem;margin-bottom:10px;margin-bottom:1rem}abbr[title]{cursor:help;border-bottom:1px dotted #d1d1d1}b,strong{font-weight:700}em,i{font-style:italic}mark{background-color:#f0f0f0;color:#000}small,.small{font-size:12px}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #d1d1d1}sub,sup{font-size:71.42857143000001%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}dfn{font-style:italic}h1{font-size:40px;font-size:4rem;font-weight:300;line-height:1.1;margin-top:20px;margin-top:2rem;margin-bottom:20px;margin-bottom:2rem}h2{font-size:26px;font-size:2.6rem;font-weight:300;line-height:1.1;margin-top:25px;margin-top:2.5rem;margin-bottom:20px;margin-bottom:2rem}h3{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem}h4{font-size:14px;font-size:1.4rem;font-weight:700;line-height:1.1;margin-top:20px;margin-top:2rem;margin-bottom:20px;margin-bottom:2rem}h5{font-size:12px;font-size:1.2rem;font-weight:700;line-height:1.1;margin-top:20px;margin-top:2rem;margin-bottom:20px;margin-bottom:2rem}h6{font-size:10px;font-size:1rem;font-weight:700;line-height:1.1;margin-top:20px;margin-top:2rem;margin-bottom:20px;margin-bottom:2rem}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small{font-size:71.42857143000001%;color:#333;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1}a,.alink{color:#1979c3;text-decoration:none}a:visited,.alink:visited{color:#800080;text-decoration:none}a:hover,.alink:hover{color:#006bb4;text-decoration:underline}a:active,.alink:active{color:#ff5501;text-decoration:underline}a:focus,.alink:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}ul,ol{margin-top:0;margin-top:0rem;margin-bottom:25px;margin-bottom:2.5rem}ul>li,ol>li{margin-top:0;margin-top:0rem;margin-bottom:10px;margin-bottom:1rem}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}dl{margin-top:0;margin-bottom:20px}dt{font-weight:700;margin-top:0;margin-bottom:5px}dd{margin-top:0;margin-bottom:10px}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,'Courier New',monospace}code{padding:2px 4px;font-size:12px;font-size:1.2rem;color:#111;background-color:#f0f0f0;white-space:nowrap}kbd{padding:2px 4px;font-size:12px;font-size:1.2rem;color:#111;background-color:#f0f0f0}pre{background-color:#f0f0f0;border:1px solid #d1d1d1;color:#111;display:block;font-size:12px;font-size:1.2rem;margin:0 0 10px;line-height:1.42857143;padding:10px;word-break:break-all;word-wrap:break-word}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}blockquote{padding:0;margin:0 0 20px 40px;font-size:14px;font-size:1.4rem;color:#333;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:italic;line-height:1.42857143;border-left:0 solid #d1d1d1}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{color:#333;display:block;font-size:10px;font-size:1rem;line-height:1.42857143}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}blockquote cite{font-style:normal}blockquote:before,blockquote:after{content:""}q{quotes:none}q:before,q:after{content:'';content:none}cite{font-style:normal}body{padding:15px;background-image:none}</style></head><body><nav class="bar top cf"><div class="container"><a href="index.html" class="brand">Magento UI library</a><ul class="menu"><li><a href="#" data-toggle="dropdown-1" unselectable="on" class="dropdown-toggle">files</a><ul id="dropdown-1" hidden class="dropdown"><li><a href="actions-toolbar.html">actions-toolbar</a></li><li><a href="breadcrumbs.html">breadcrumbs</a></li><li><a href="buttons.html">buttons</a></li><li><a href="docs.html">docs</a></li><li><a href="dropdowns.html">dropdowns</a></li><li><a href="forms.html">forms</a></li><li><a href="icons.html">icons</a></li><li><a href="layout.html">layout</a></li><li><a href="lib.html">lib</a></li><li><a href="loaders.html">loaders</a></li><li><a href="messages.html">messages</a></li><li><a href="navigation.html">navigation</a></li><li><a href="pages.html">pages</a></li><li><a href="popups.html">popups</a></li><li><a href="rating.html">rating</a></li><li><a href="resets.html">resets</a></li><li><a href="sections.html">sections</a></li><li><a href="tables.html">tables</a></li><li><a href="tooltips.html">tooltips</a></li><li><a href="typography.html">typography</a></li><li><a href="variables.html">variables</a></li></ul></li></ul><div class="nav"><button title="Table of Contents" data-toggle="nav-toc"><svg viewBox="0 0 512 512" height="22" width="22" class="icon"><path d="M108.9,403.1V462H50v-58.9H108.9z M108.9,285.4H50v58.9h58.9V285.4zM108.9,50H50v58.9h58.9V50z M108.9,167.7H50v58.9h58.9V167.7z M167.7,344.3H462v-58.9H167.7V344.3zM167.7,50v58.9H462V50H167.7z M167.7,462H462v-58.9H167.7V462z M167.7,226.6H462v-58.9H167.7V226.6z"></path></svg></button><input type="search" placeholder="Search" class="search"></div></div></nav><section class="container"><article id="forms-mixins" class="section"><div class="docs"><a href="#forms-mixins" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="forms-mixins">Forms mixins</h1>
-<p>  Magento UI library provides a set of mixins for forms elements customization. You can customize your forms globally by configuring global variables, or you can customize every form separately using appropriate mixin.</p>
-</div></article><article id="global-forms-elements-customization" class="section"><div class="docs"><a href="#global-forms-elements-customization" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="global-forms-elements-customization">Global forms elements customization</h1>
-<p>  The <code>.form-element-all()</code> mixin is used to set default styles for all form elements in the theme. To configure these elements global variables are used.</p>
-</div></article><article id="fieldsets-fields-customization" class="section"><div class="docs"><a href="#fieldsets-fields-customization" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="fieldsets-fields-customization">Fieldsets &amp; fields customization</h1>
-<p>  The <code>.form-fieldset()</code> mixin is used to customize form fieldset borders and legend.</p>
-<p>  The <code>.form-field()</code> mixin is used to customize form elements.</p>
-<p>  The <code>.form-hasrequired()</code> mixin is used to show and customize &quot;required fields&quot; message if the form or fieldset has required fields and a <code>data-hasrequired</code> attribute.</p>
-<p>  Using these mixins you can customize your forms. By default these mixins use global variables.</p>
-<h2 id="simple-form-with-required-fields-message">Simple form with &quot;required fields&quot; message</h2>
-<textarea class="preview-code" spellcheck="false">    &lt;form class="example-form-1"&gt;
-        &lt;fieldset class="example-form-1-fieldset" data-hasrequired="* Required Fields"&gt;
-            &lt;legend class="legend"&gt;&lt;span&gt;Login Information&lt;/span&gt;&lt;/legend&gt;&lt;br&gt;
-
-            &lt;div class="field password required"&gt;
-                &lt;label for="password" class="label"&gt;&lt;span&gt;Password&lt;/span&gt;&lt;/label&gt;
-
-                &lt;div class="control"&gt;
-                    &lt;input type="password" name="password" id="password" title="Password"&gt;
-                &lt;/div&gt;
-            &lt;/div&gt;
-
-            &lt;div class="field confirmation required"&gt;
-                &lt;label for="confirmation" class="label"&gt;&lt;span&gt;Confirm Password&lt;/span&gt;&lt;/label&gt;
-
-                &lt;div class="control"&gt;
-                    &lt;input type="password" name="confirmation" title="Confirm Password" id="confirmation"&gt;
-                &lt;/div&gt;
-            &lt;/div&gt;
-
-            &lt;div class="field password required"&gt;
-                &lt;label for="password2" class="label"&gt;&lt;span&gt;Password&lt;/span&gt;&lt;/label&gt;
-
-                &lt;div class="control"&gt;
-                    &lt;input type="password" name="password2" id="password2" title="Password"&gt;
-                &lt;/div&gt;
-            &lt;/div&gt;
-
-            &lt;div class="field textarea"&gt;
-                &lt;label for="textarea2" class="label"&gt;&lt;span&gt;Textarea&lt;/span&gt;&lt;/label&gt;
-
-                &lt;div class="control"&gt;
-                    &lt;textarea rows="3" cols="5" id="textarea2" name="textarea2"&gt;&lt;/textarea&gt;
-                    &lt;div class="note"&gt;Please enter your message here&lt;/div&gt;
-                &lt;/div&gt;
-            &lt;/div&gt;
-
-            &lt;div class="field file"&gt;
-                &lt;label for="file2" class="label"&gt;&lt;span&gt;File field&lt;/span&gt;&lt;/label&gt;
-
-                &lt;div class="control"&gt;
-                    &lt;input type="file" id="file2" value="" name="file2"&gt;
-                    &lt;div class="note"&gt;Please choose your picture here&lt;/div&gt;
-                &lt;/div&gt;
-            &lt;/div&gt;
-
-            &lt;div class="field choice"&gt;
-                &lt;input type="radio" id="radio2" checked="" value="1" name="radio2"&gt;
-
-                &lt;label for="radio2" class="label"&gt;&lt;span&gt;Radiobutton choice&lt;/span&gt;&lt;/label&gt;
-            &lt;/div&gt;
-
-            &lt;div class="field choice"&gt;
-                &lt;input type="checkbox" id="checkbox2" value="1" name="checkbox2"&gt;
-
-                &lt;label for="checkbox2" class="label"&gt;&lt;span&gt;Checkbox choice&lt;/span&gt;&lt;/label&gt;
-            &lt;/div&gt;
-
-            &lt;div class="field region"&gt;
-                &lt;label for="select2" class="label"&gt;&lt;span&gt;Select&lt;/span&gt;&lt;/label&gt;
-
-                &lt;div class="control"&gt;
-                    &lt;select name="select2" id="select2"&gt;
-                        &lt;option value=""&gt;Please select&lt;/option&gt;
-                        &lt;option value="5"&gt;5&lt;/option&gt;
-                        &lt;option value="10"&gt;10&lt;/option&gt;
-                        &lt;option value="15"&gt;15&lt;/option&gt;
-                        &lt;option value="20"&gt;20&lt;/option&gt;
-                    &lt;/select&gt;
-                &lt;/div&gt;
-            &lt;/div&gt;
-
-            &lt;div class="field multiselect"&gt;
-                &lt;label for="multiselect2" class="label"&gt;&lt;span&gt;Multiple select&lt;/span&gt;&lt;/label&gt;
-
-                &lt;div class="control"&gt;
-                    &lt;select name="multiselect2" id="multiselect2" multiple="multiple"&gt;
-                        &lt;option value="Option 1"&gt;Option 1&lt;/option&gt;
-                        &lt;option value="Option 2"&gt;Option 2&lt;/option&gt;
-                        &lt;option value="Option 3"&gt;Option 3&lt;/option&gt;
-                        &lt;option value="Option 4"&gt;Option 4&lt;/option&gt;
-                        &lt;option value="Option 5"&gt;Option 5&lt;/option&gt;
-                        &lt;option value="Option 6"&gt;Option 6&lt;/option&gt;
-                        &lt;option value="Option 7"&gt;Option 7&lt;/option&gt;
-                    &lt;/select&gt;
-                &lt;/div&gt;
-            &lt;/div&gt;
-        &lt;/fieldset&gt;
-    &lt;/form&gt;</textarea><h2 id="form-with-fields-in-2-columns">Form with fields in 2 columns</h2>
-<textarea class="preview-code" spellcheck="false">    &lt;form class="example-form-2" action="#" method="post"&gt;
-        &lt;fieldset class="example-form-2-fieldset"&gt;
-            &lt;legend class="legend"&gt;&lt;span&gt;Personal Information&lt;/span&gt;&lt;/legend&gt;&lt;br&gt;
-
-            &lt;div class="field name firstname required"&gt;
-                &lt;label class="label" for="firstname"&gt;&lt;span&gt;First Name&lt;/span&gt;&lt;/label&gt;
-
-                &lt;div class="control"&gt;
-                    &lt;input type="text" id="firstname" name="firstname" value="" title="First Name"&gt;
-                &lt;/div&gt;
-            &lt;/div&gt;
-
-            &lt;div class="field name lastname required"&gt;
-                &lt;label class="label" for="lastname"&gt;&lt;span&gt;Last Name&lt;/span&gt;&lt;/label&gt;
-
-                &lt;div class="control"&gt;
-                    &lt;input type="text" id="lastname" name="lastname" value="" title="Last Name"&gt;
-                &lt;/div&gt;
-            &lt;/div&gt;
-
-            &lt;div class="field required"&gt;
-                &lt;label for="email_address" class="label"&gt;&lt;span&gt;Email Address&lt;/span&gt;&lt;/label&gt;
-
-                &lt;div class="control"&gt;
-                    &lt;input type="email" name="email" id="email_address" value="" title="Email Address"&gt;
-                &lt;/div&gt;
-            &lt;/div&gt;
-
-            &lt;div class="field textarea"&gt;
-                &lt;label for="textarea" class="label"&gt;&lt;span&gt;Textarea&lt;/span&gt;&lt;/label&gt;
-
-                &lt;div class="control"&gt;
-                    &lt;textarea rows="3" cols="5" id="textarea" name="textarea"&gt;&lt;/textarea&gt;
-                    &lt;div class="note"&gt;Please enter your message here&lt;/div&gt;
-                &lt;/div&gt;
-            &lt;/div&gt;
-
-            &lt;div class="field file"&gt;
-                &lt;label for="file" class="label"&gt;&lt;span&gt;File field&lt;/span&gt;&lt;/label&gt;
-
-                &lt;div class="control"&gt;
-                    &lt;input type="file" id="file" value="" name="file"&gt;
-                    &lt;div class="note"&gt;Please choose your picture here&lt;/div&gt;
-                &lt;/div&gt;
-            &lt;/div&gt;
-
-            &lt;div class="field choice"&gt;
-                &lt;input type="radio" id="radio" checked="" value="1" name="radio"&gt;
-
-                &lt;label for="radio" class="label"&gt;&lt;span&gt;Radiobutton choice&lt;/span&gt;&lt;/label&gt;
-            &lt;/div&gt;
-
-            &lt;div class="field choice"&gt;
-                &lt;input type="checkbox" id="checkbox" value="1" name="checkbox"&gt;
-
-                &lt;label for="checkbox" class="label"&gt;&lt;span&gt;Checkbox choice&lt;/span&gt;&lt;/label&gt;
-            &lt;/div&gt;
-
-            &lt;div class="field region"&gt;
-                &lt;label for="select" class="label"&gt;&lt;span&gt;Select&lt;/span&gt;&lt;/label&gt;
-
-                &lt;div class="control"&gt;
-                    &lt;select name="select" id="select"&gt;
-                        &lt;option value=""&gt;Please select&lt;/option&gt;
-                        &lt;option value="5"&gt;5&lt;/option&gt;
-                        &lt;option value="10"&gt;10&lt;/option&gt;
-                        &lt;option value="15"&gt;15&lt;/option&gt;
-                        &lt;option value="20"&gt;20&lt;/option&gt;
-                    &lt;/select&gt;
-                &lt;/div&gt;
-            &lt;/div&gt;
-
-            &lt;div class="field multiselect"&gt;
-                &lt;label for="multiselect" class="label"&gt;&lt;span&gt;Multiple select&lt;/span&gt;&lt;/label&gt;
-
-                &lt;div class="control"&gt;
-                    &lt;select name="multiselect" id="multiselect" multiple="multiple"&gt;
-                        &lt;option value="Option 1"&gt;Option 1&lt;/option&gt;
-                        &lt;option value="Option 2"&gt;Option 2&lt;/option&gt;
-                        &lt;option value="Option 3"&gt;Option 3&lt;/option&gt;
-                        &lt;option value="Option 4"&gt;Option 4&lt;/option&gt;
-                        &lt;option value="Option 5"&gt;Option 5&lt;/option&gt;
-                        &lt;option value="Option 6"&gt;Option 6&lt;/option&gt;
-                        &lt;option value="Option 7"&gt;Option 7&lt;/option&gt;
-                    &lt;/select&gt;
-                &lt;/div&gt;
-            &lt;/div&gt;
-        &lt;/fieldset&gt;
-    &lt;/form&gt;</textarea>
+<!DOCTYPE html><html><head><title>forms | Magento UI library
+</title><meta charset="utf-8"><style>*{-moz-box-sizing:border-box;box-sizing:border-box;margin:0;padding:0;border:0}body{padding:60px 0 40px;background-color:hsl(207,10%,90%);color:hsl(207,5%,30%)}.container{max-width:1300px;margin:0 auto;padding:0 20px}.section{position:relative;margin-bottom:20px}.docs{position:relative;z-index:2;width:68%;min-height:200px;background-color:hsl(207,0%,100%);background-clip:padding-box;border:1px solid hsla(207,5%,5%,.1);border-radius:5px;box-shadow:0 0 3px hsla(207,5%,5%,.1)}.code{position:absolute;top:5px;bottom:5px;right:0;z-index:1;width:33%;padding:10px 10px 10px 20px;border-radius:0 5px 5px 0;border:1px solid hsla(207,20%,10%,.1);background-color:hsla(207,20%,95%,.9);background-clip:padding-box;opacity:.5;-webkit-transition:opacity .4s;-moz-transition:opacity .4s;-o-transition:opacity .4s;transition:opacity .4s}.code:hover{opacity:1}.preview{background:hsl(207,0%,100%);border-top:1px solid hsl(207,30%,95%);position:relative;z-index:1}.preview-code+.preview{margin-top:0;border-top:0}.preview iframe{display:block;width:100%;height:100%;overflow:hidden}.preview-code{position:relative;z-index:2;display:block;width:100%;color:hsl(207,9%,37%);max-height:200px;padding:10px 20px;overflow-y:auto;background:hsl(207,30%,95%);border:1px solid hsl(207,30%,85%);border-left:0;border-right;box-shadow:inset 0 1px 2px hsla(207,30%,10%,.1);line-height:1.1!important;resize:none}.preview-code:focus{outline:0;background:hsl(207,30%,97%);box-shadow:inset 0 1px 2px hsla(207,30%,10%,.1),0 0 5px hsla(207,75%,75%,.9)}.preview-code:last-child{border-bottom:0;border-radius:0 0 5px 5px}.resizeable{padding:15px;overflow:auto;background:hsl(207,0%,100%);box-shadow:0 0 2px hsla(207,10%,20%,.2);resize:both}.preview-code,pre{white-space:pre-wrap;word-wrap:break-word;overflow-y:auto}.code pre{height:100%;margin-top:0}.bar{position:fixed;left:0;right:0;z-index:1010;min-height:40px;line-height:40px;background-image:-webkit-linear-gradient(hsla(207,10%,35%,.97),hsla(207,5%,25%,.92));background-image:-moz-linear-gradient(hsla(207,10%,35%,.97),hsla(207,5%,25%,.92));background-image:-o-linear-gradient(hsla(207,10%,35%,.97),hsla(207,5%,25%,.92));background-image:linear-gradient(hsla(207,10%,35%,.97),hsla(207,5%,25%,.92))}.bar.top{top:0;box-shadow:0 1px 2px hsla(207,5%,0%,.2)}.bar.bottom{bottom:0;box-shadow:0 -1px 2px hsla(207,5%,0%,.2)}.bar ul{margin:0!important}.bar li{display:block;list-style:none}.bar .icon path{fill:hsla(27,10%,75%,.75)}.docs .icon path{fill:hsla(207,10%,75%,.5)}.docs .permalink:hover .icon path{fill:hsl(207,10%,75%)}.bar button{color:hsla(27,10%,75%,.75)}.bar button:hover .icon path,.bar button.is-active .icon path{fill:hsl(27,10%,85%)}.bar button:hover,.bar button.is-active{color:hsl(27,10%,85%)}.bar .icon{vertical-align:middle;display:inline-block}.bar,.bar a,.bar a:visited{color:hsl(27,10%,85%);text-shadow:1px 1px 0 hsla(27,5%,0%,.5)}.bar a:hover,.bar a.is-active{color:hsl(27,10%,95%);text-shadow:1px 1px 0 hsla(27,5%,0%,1);text-decoration:none}.brand{float:left;margin-right:20px;font-weight:700;font-size:16px;text-decoration:none}.brand,a.brand,a.brand:visited{color:hsl(27,5%,5%);text-shadow:1px 1px 0 hsla(27,5%,100%,.2)}.brand:hover,a.brand:hover{color:hsl(27,5%,0%);text-shadow:1px 1px 0 hsla(27,5%,100%,.3);text-decoration:none}.menu{font-size:12px}.menu>li{float:left;position:relative}.menu a{display:block;margin-right:15px}.dropdown-toggle{position:relative;padding-right:15px}.dropdown-toggle:after{display:block;position:absolute;right:0;top:18px;content:'';border:4px solid;border-left-color:transparent;border-right-color:transparent;border-bottom-color:transparent}.nav-results,.dropdown{position:absolute;z-index:1020;top:32px;left:-16px;width:175px;max-height:500px;padding:10px 0;overflow-y:auto;word-wrap:break-word;font-size:11px;line-height:20px;background-color:hsla(207,10%,25%,.97);border:1px solid hsla(207,5%,70%,.3);border-radius:3px;box-shadow:0 0 3px hsla(207,5%,0%,.2)}.toc-list{width:200px}.nav-results{right:0;width:200px;left:auto;padding:5px 0}.nav-results-filename{display:block;font-size:10px;opacity:.75}.nav-results a{display:block;line-height:15px;padding:5px 10px}.nav-results li:not([hidden])~li a{border-top:1px solid hsla(27,10%,90%,.1)}.dropdown a{padding:0 15px}.dropdown li:hover{background-color:hsl(207,10%,22%)}.nav{float:right;position:relative}.nav input[type="search"]{padding:2px 4px;color:#fff;width:150px;border:1px solid hsla(207,5%,0%,.3);background:hsla(207,12%,40%,.9);box-shadow:inset 1px 1px 3px hsla(207,5%,0%,.05),1px 1px 0 hsla(207,5%,100%,.05);border-radius:10px;-webkit-appearance:textfield}.nav input[type="search"]:focus{outline:0;background:hsla(207,7%,45%,.9)}.settings{text-align:center}.bar button{display:inline-block;vertical-align:middle;padding:0 5px;margin:0 3px;background:transparent}.bar button:first-child{margin-left:0}.settings .auto{line-height:32px;font-size:11px;font-weight:700;letter-spacing:-1px;text-shadow:none;text-transform:uppercase}body{font-family:sans-serif;font-size:14px;line-height:1.618}.docs pre,p,ol,ul,dl,figure,blockquote,table{margin-left:20px;margin-right:20px}.preview,.docs pre,p,ol,ul,dl,figure,blockquote,table{margin-top:10px}ul ul,ol ol,ul ol,ol ul,blockquote p:last-child{margin-top:0}ul,ol{padding-left:1.5em}p:last-child,ol:last-child,ul:last-child,dl:last-child{margin-bottom:20px}hr,h1,h2,h3,h4,h5,h6{margin:1em 20px .5em}h1:first-of-type{margin-top:20px}h1,h2,h3,h4,h5,h6{line-height:1.2;color:hsl(207,10%,50%)}h1 a,h1 a:hover,h1 a:visited{color:inherit;text-decoration:inherit}h1{font-size:3.052em;font-weight:400;color:hsl(207,10%,45%)}h2{font-size:1.953em}h3{font-size:1.536em}h1,h2,h3{letter-spacing:-.025em}h4{font-size:1.25em}h5{font-size:1em;text-transform:uppercase}h6{font-size:1em}.permalink{position:absolute;top:15px;right:15px}a{color:hsl(207,90%,50%);text-decoration:none}a:hover{color:hsl(207,95%,40%);text-decoration:underline}a:visited{color:hsl(207,100%,35%)}.preview-code,pre,code,var{font-style:normal;font-family:"Ubuntu Mono","Andale Mono","DejaVu Sans Mono","Monaco","Bitstream Vera Sans Mono","Consolas","Lucida Console",monospace;font-size:12px}.docs pre,code,var{padding:.1em 3px;background:hsla(207,5%,0%,.025);border:1px solid hsla(207,5%,0%,.05);border-radius:3px}.code pre{line-height:1.1!important}pre code{padding:0;background:transparent;border:0}.cf:before,.cf:after{content:'';display:table}.cf:after{clear:both}[unselectable="on"]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}[hidden]{display:none!important}small{font-size:85%;opacity:.9}.docs .vars_list{width:100%}.docs .vars_list th,.docs .vars_list td{width:33%}.docs pre th{text-align:left}.docs pre table{border-collapse:collapse;margin:0}.docs th,.docs td{border:0;padding:9px 10px 9px 0;vertical-align:top}.docs tr th:last-child,.docs tr td:last-child{padding-right:0}.docs pre th{font-weight:400}.docs pre th.vars_head{border-bottom:1px solid #e5e5e5;color:#707070;white-space:nowrap}.docs pre th.vars_section{border-bottom:1px solid #e5e5e5;color:#333;font-size:18px;padding-top:30px}.vars_value{color:#338bb8}.docs li p{margin:0 0 20px}.dropdown a{text-transform:capitalize}#default-button #default-button-big+.preview+.preview-code{display:block}#actions-toolbar-alignment .preview-code,#reverse-primary-and-secondary-blocks .preview-code,#actions-toolbar-indents-customizations .preview-code,#actionstoolbarclearfloats-mixin .preview-code,#responsive-actions-toolbar .preview-code,#button-with-gradient-background .preview-code,#primary-button .preview-code,#button-as-an-icon .preview-code,#button-with-an-icon-on-the-left-or-right-side-of-the-text .preview-code,#button-with-fixed-width .preview-code,#button-as-a-link .preview-code,#link-as-a-button .preview-code,#buttonstyled-breadcrumbs-with-gradient-background-border-and-no-separating-symbol .preview-code,#breadcrumbs-with-solid-background .preview-code,#pagination-without-label-with-solid-background .preview-code,#pagination-with-label-and-text-previousnext-links .preview-code,#pagination-with-label-and-gradient-background-on-links .preview-code,#fixed-height-popup .preview-code,#fixed-content-height-popup .preview-code,#margins-for-header-content-and-footer-block-in-popup .preview-code,#popup-titles-with-styled-as-theme-headings .preview-code,#popup-action-toolbar .preview-code,#popup-close-button-without-an-icon .preview-code,#modify-icon-of-popup-close-button .preview-code,#modify-overlay-styles .preview-code,#rating-summary-multiple-ratings .preview-code,#rating-summary-hide-label .preview-code,#rating-summary-icons-symbol .preview-code,#rating-summary-icons-color .preview-code,#rating-summary-set-number-of-icons .preview-code,#rating-summary .preview-code,#rating-with-vote-icon-symbol .preview-code,#rating-with-vote-setup-icons-colors .preview-code,#rating-with-vote-setup-number-of-icons .preview-code,#tabs-with-content-top-border .preview-code,#accordion-mixin-variables .preview-code,#tabs-base .preview-code,#accordion-base .preview-code,#warning-message .preview-code,#error-message .preview-code,#success-message .preview-code,#notice-message .preview-code,#message-with-inner-icon .preview-code,#message-with-lateral-icon .preview-code,#custom-message-style .preview-code,#modify-dropdown-list-styles .preview-code,#dropdown-with-icon-customization .preview-code,#split-button-button-styling .preview-code,#split-button-icon-customization .preview-code,#split-button-dropdown-list-customization .preview-code,#table-cells-resize .preview-code,#table-caption .preview-code,#table-typography .preview-code,#table-background-customization .preview-code,#table-borders-customization .preview-code,#table-without-borders .preview-code,#table-with-horizontal-borders .preview-code,#table-with-vertical-borders .preview-code,#striped-table .preview-code,#responsive-table-technics-1 .preview-code,#responsive-table-technics-2 .preview-code,#fontsize-mixin .preview-code,#word-breaking-mixin .preview-code,#word-breaking-mixin .preview-code,#text-overflow-mixin .preview-code,#text-hide .preview-code,#hyphens .preview-code,#font-style-and-color .preview-code,#reset-list-styles .preview-code,#inlineblock-list-item-styling .preview-code,#link-styling-mixin .preview-code,#heading-styling-mixin .preview-code,#icon-with-image-or-sprite .preview-code,#change-the-size-of-font-icon .preview-code,#sprite-and-font-icons-for-blank-theme .preview-code,#icon-position-for-an-icon-with-image-or-sprite .preview-code{display:none}article[id$="-variables"] .docs,#resets .docs,#ratings .docs,#tabs-and-accordions .docs,#messages .docs,#dropdown-and-split-buttons-mixins .docs,#font-face-mixin .docs,#layout .docs,#forms-mixins .docs,#including-magento-ui-library-to-your-theme .docs,#global-forms-elements-customization .docs,#page-layouts .docs,#layout-column .docs,#layout-width .docs,#mobile-off-canvas-navigation .docs,#desktop-navigation .docs{width:100%}article[id$="-variables"] .code{display:none}article[id$="-variables"] .docs pre{background:#fff;border:0;margin-top:0}</style><script type="text/preview">(function(){"use strict";var a=function(a){return Array.prototype.slice.call(a)},b=document.getElementsByTagName("body")[0],c=["link","visited","hover","active","focus","target","enabled","disabled","checked"],d=new RegExp(":(("+c.join(")|(")+"))","gi"),e=a(document.styleSheets).map(function(b){return a(b.cssRules).filter(function(a){return a.selectorText&&a.selectorText.match(d)}).map(function(a){return a.cssText.replace(d,".\\3A $1")}).join("")}).join("");if(e.length){var f=document.createElement("style");f.innerText=e;var g=document.getElementsByTagName("style")[0];g.parentNode.insertBefore(f,g)}var h=function(){var a=window.getComputedStyle(b,null);return function(){if(b.childElementCount===0)return b.offsetHeight;var c=b.getElementsByTagName("*"),d=[];for(var e=0,f=c.length;e<f;e++)d.push(c[e].offsetTop+c[e].offsetHeight+parseInt(window.getComputedStyle(c[e],null).getPropertyValue("margin-bottom")));var g=Math.max.apply(Math,d);return g+=parseInt(a.getPropertyValue("padding-bottom"),10),Math.max(g,b.offsetHeight)}}(),i={getHeight:function(){window.parent.postMessage({height:h()},"*")}};window.addEventListener("message",function(a){if(a.data==null)return;typeof a.data=="string"&&i[a.data]()},!1)})(),function(){var a=["../../jquery/jquery.js","../../mage/terms.js","../../mage/dropdowns.js","../../jquery/jquery.popups.js","../../js/mui.js"];for(var b=0,c=a.length;b<c;b++){var d=document.createElement("script");d.type="text/javascript",d.async=!1,d.src=a[b];var e=document.getElementsByTagName("script")[0];e.parentNode.insertBefore(d,e)}}()</script><style type="text/preview">body{margin:0;padding:0}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section,summary{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none;height:0}nav ul,nav ol{list-style:none;list-style-image:none}img{border:0;-ms-interpolation-mode:bicubic}svg:not(:root){overflow:hidden}figure{margin:0}html{font-size:62.5%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{font-size:14px;font-size:1.4rem;color:#333;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.42857143}p{margin-top:0;margin-top:0rem;margin-bottom:10px;margin-bottom:1rem}abbr[title]{cursor:help;border-bottom:1px dotted #d1d1d1}b,strong{font-weight:700}em,i{font-style:italic}mark{background-color:#f0f0f0;color:#000}small,.small{font-size:12px}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #d1d1d1}sub,sup{font-size:71.42857143000001%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}dfn{font-style:italic}h1{font-size:40px;font-size:4rem;font-weight:300;line-height:1.1;margin-top:20px;margin-top:2rem;margin-bottom:20px;margin-bottom:2rem}h2{font-size:26px;font-size:2.6rem;font-weight:300;line-height:1.1;margin-top:25px;margin-top:2.5rem;margin-bottom:20px;margin-bottom:2rem}h3{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem}h4{font-size:14px;font-size:1.4rem;font-weight:700;line-height:1.1;margin-top:20px;margin-top:2rem;margin-bottom:20px;margin-bottom:2rem}h5{font-size:12px;font-size:1.2rem;font-weight:700;line-height:1.1;margin-top:20px;margin-top:2rem;margin-bottom:20px;margin-bottom:2rem}h6{font-size:10px;font-size:1rem;font-weight:700;line-height:1.1;margin-top:20px;margin-top:2rem;margin-bottom:20px;margin-bottom:2rem}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small{font-size:71.42857143000001%;color:#333;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1}a,.alink{color:#1979c3;text-decoration:none}a:visited,.alink:visited{color:#800080;text-decoration:none}a:hover,.alink:hover{color:#006bb4;text-decoration:underline}a:active,.alink:active{color:#ff5501;text-decoration:underline}a:focus,.alink:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}ul,ol{margin-top:0;margin-top:0rem;margin-bottom:25px;margin-bottom:2.5rem}ul>li,ol>li{margin-top:0;margin-top:0rem;margin-bottom:10px;margin-bottom:1rem}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}dl{margin-top:0;margin-bottom:20px}dt{font-weight:700;margin-top:0;margin-bottom:5px}dd{margin-top:0;margin-bottom:10px}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,'Courier New',monospace}code{padding:2px 4px;font-size:12px;font-size:1.2rem;color:#111;background-color:#f0f0f0;white-space:nowrap}kbd{padding:2px 4px;font-size:12px;font-size:1.2rem;color:#111;background-color:#f0f0f0}pre{background-color:#f0f0f0;border:1px solid #d1d1d1;color:#111;display:block;font-size:12px;font-size:1.2rem;margin:0 0 10px;line-height:1.42857143;padding:10px;word-break:break-all;word-wrap:break-word}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}blockquote{padding:0;margin:0 0 20px 40px;font-size:14px;font-size:1.4rem;color:#333;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:italic;line-height:1.42857143;border-left:0 solid #d1d1d1}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{color:#333;display:block;font-size:10px;font-size:1rem;line-height:1.42857143}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}blockquote cite{font-style:normal}blockquote:before,blockquote:after{content:""}q{quotes:none}q:before,q:after{content:'';content:none}cite{font-style:normal}table{border-collapse:collapse;border-spacing:0;margin-bottom:20px;max-width:100%;width:100%}table th{text-align:left}table>tbody>tr>th,table>tfoot>tr>th,table>tbody>tr>td,table>tfoot>tr>td{vertical-align:top}table>thead>tr>th,table>thead>tr>td{vertical-align:bottom}table>thead>tr>th,table>tbody>tr>th,table>tfoot>tr>th,table>thead>tr>td,table>tbody>tr>td,table>tfoot>tr>td{padding:3px 10px}button,.cart.table.wrapper .cart.items .action{background-image:none;background-color:#f2f2f2;padding:0 15px;color:#333;border:1px solid #cdcdcd;cursor:pointer;display:inline-block;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;line-height:30px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;margin:0;vertical-align:middle}button:focus,button:active,.cart.table.wrapper .cart.items .action:focus,.cart.table.wrapper .cart.items .action:active{background-color:#e2e2e2;border:1px solid #cdcdcd;outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;color:#333}button:hover,.cart.table.wrapper .cart.items .action:hover{background-color:#e2e2e2;border:1px solid #cdcdcd;color:#555}button.disabled,button[disabled],fieldset[disabled] button,.cart.table.wrapper .cart.items .action.disabled,.cart.table.wrapper .cart.items .action[disabled],fieldset[disabled] .cart.table.wrapper .cart.items .action{cursor:default;pointer-events:none;opacity:.5}button::-moz-focus-inner,.cart.table.wrapper .cart.items .action::-moz-focus-inner{border:0;padding:0}input[type="text"],input[type="password"],input[type="url"],input[type="tel"],input[type="search"],input[type="number"],input[type="datetime"],input[type="email"]{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;border:1px solid #c2c2c2;border-radius:1px;height:32px;width:100%;padding:0 10px;font-size:14px;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;line-height:1.42857143;font-style:normal;color:#333;background-clip:padding-box;vertical-align:baseline}input[type="text"]:disabled,input[type="password"]:disabled,input[type="url"]:disabled,input[type="tel"]:disabled,input[type="search"]:disabled,input[type="number"]:disabled,input[type="datetime"]:disabled,input[type="email"]:disabled{opacity:.5}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type="search"]{-webkit-appearance:none}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-results-button,input[type="search"]::-webkit-search-results-decoration{-webkit-appearance:none}select{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;border:1px solid #c2c2c2;border-radius:1px;height:32px;width:100%;padding:5px 10px 4px;font-size:14px;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;line-height:1.42857143;font-style:normal;color:#333;background-clip:padding-box;vertical-align:baseline}select:disabled{opacity:.5}select[multiple="multiple"]{height:auto}textarea{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;border:1px solid #c2c2c2;border-radius:1px;height:auto;width:100%;padding:10px;font-size:14px;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;line-height:1.42857143;font-style:normal;color:#333;background-clip:padding-box;vertical-align:baseline;resize:vertical}textarea:disabled{opacity:.5}input[type="checkbox"]{vertical-align:top;margin:2px 5px 0 0}input[type="checkbox"]:disabled{opacity:.5}input[type="radio"]{vertical-align:top;margin:2px 5px 0 0}input[type="radio"]:disabled{opacity:.5}input.mage-error,select.mage-error,textarea.mage-error{border-color:#ed8380}input+div.mage-error,select+div.mage-error,textarea+div.mage-error{font-size:12px;font-size:1.2rem;color:#e02b27;margin:3px 0 0}input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button;*overflow:visible}input::-moz-focus-inner{border:0;padding:0}address{font-style:normal}@font-face{font-family:'icons-blank-theme';src:url('http://magento2.loc/pub/lib/fonts/Blank-Theme-Icons/Blank-Theme-Icons.eot');src:url('http://magento2.loc/pub/lib/fonts/Blank-Theme-Icons/Blank-Theme-Icons.eot?#iefix') format('embedded-opentype'),url('http://magento2.loc/pub/lib/fonts/Blank-Theme-Icons/Blank-Theme-Icons.woff') format('woff'),url('http://magento2.loc/pub/lib/fonts/Blank-Theme-Icons/Blank-Theme-Icons.ttf') format('truetype'),url('http://magento2.loc/pub/lib/fonts/Blank-Theme-Icons/Blank-Theme-Icons.svg#icons-blank-theme') format('svg');font-weight:400;font-style:normal}.truncated.full.value{display:none}.truncated.full.value.show{display:block}.layout-2-left.account .column.sidebar{width:22.3%}.layout-2-left.account .column.main{width:77.7%}.account .messages{margin-bottom:20px}.account .column.main h2{margin-top:0}.account .column.main .products.toolbar{background:transparent;margin-bottom:20px}.account .column.main .block:not(.widget) .title{margin-bottom:15px}.account .column.main .block:not(.widget) .title>strong{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem}.account .column.main .block:not(.widget) .title>.action{margin-left:15px}.account .column.main .block:not(.widget) .subtitle{display:inline-block;margin:5px 0 10px}.account .column.main .block:not(.widget) .subtitle>span{font-size:14px;font-size:1.4rem;font-weight:700;line-height:1.1;margin-top:20px;margin-top:2rem;margin-bottom:20px;margin-bottom:2rem}.account .column.main .block:not(.widget) .subtitle>.action{font-weight:400;margin-left:15px}.account .column.main .block:not(.widget) .content:before,.account .column.main .block:not(.widget) .content:after{content:"";display:table}.account .column.main .block:not(.widget) .content:after{clear:both}.account .column.main .block:not(.widget) .content p:last-child{margin-bottom:0}.account .column.main .block:not(.widget) .content .box{margin-bottom:20px}.account .block.account.nav{background:#f5f5f5;padding:15px 0}.account .block.account.nav .title{padding:0 18px;margin-bottom:25px}.account .block.account.nav .title strong{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem}.account .block.account.nav .nav.items{padding:0;margin:0}.account .block.account.nav .nav.items .nav.item{margin:2px 0 0;padding:0 18px 0 15px;line-height:30px;border-left:3px solid transparent}.account .block.account.nav .nav.items .nav.item:first-child{margin-top:0}.account .block.account.nav .nav.items .nav.item.current{border-color:#ff5501}.account .block.account.nav .nav.items .nav.item.current strong{font-weight:400}.account .wrapper.table{margin-bottom:20px}.account .wrapper.table:last-child{margin-bottom:0}.account .wrapper.table .data.table{border:0;margin-bottom:0}.account .wrapper.table .data.table>caption{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.account .wrapper.table .data.table>thead>tr>th,.account .wrapper.table .data.table>tbody>tr>th,.account .wrapper.table .data.table>tfoot>tr>th,.account .wrapper.table .data.table>thead>tr>td,.account .wrapper.table .data.table>tbody>tr>td,.account .wrapper.table .data.table>tfoot>tr>td{border:0}.account .wrapper.table .data.table>thead>tr>th,.account .wrapper.table .data.table>thead>tr>td{border-bottom:1px solid #d1d1d1}.account .wrapper.table .data.table .col.actions .action{margin-right:15px}.account .wrapper.table .data.table .col.actions .action:last-child{margin-left:0}.page.main>.page.title{margin-bottom:40px}.page.main>.page.title .title{display:inline-block}.page.main>.page.title .title+.action{float:right;margin-top:33px}.block:last-child{margin:0}.block .title{margin-bottom:10px}.block .title strong{font-size:14px;font-size:1.4rem;font-weight:700;line-height:1.1;margin-top:20px;margin-top:2rem;margin-bottom:20px;margin-bottom:2rem}.column.main .block .title strong{font-size:18px}.widget ol,.block ol,.widget ul,.block ul{margin:0;padding:0;list-style-type:none;list-style-image:none}.widget ol li,.block ol li,.widget ul li,.block ul li{margin-bottom:6px}.widget ol strong,.block ol strong,.widget ul strong,.block ul strong{font-weight:400}.block.compare .item{position:relative}.block.compare .item .product.name{margin-left:22px}.block.compare .item .action.delete{position:absolute;left:-6px;top:0}.block.reorder .item .checkbox{position:relative;top:2px;vertical-align:baseline}.block.wishlist .item.product{margin-bottom:14px}.block.wishlist .item.product>.product{position:relative}.block.wishlist .item.product>.product .product.photo{position:absolute;left:0;top:0}.block.wishlist .item.product>.product .product.details{margin:0 25px 0 64px}.block.wishlist .price-box{display:block;margin:7px 0}.block.wishlist .actions{margin:7px 0}.block.wishlist .actions .action.delete{position:absolute;right:0;top:0}.block.wishlist .actions a.action.tocart{display:inline-block;text-decoration:none}.block.wishlist .actions a.action.tocart:hover,.block.wishlist .actions a.action.tocart:active,.block.wishlist .actions a.action.tocart:focus{text-decoration:none}.block.wishlist .actions .action.tocart{width:112px;padding:0 7px}.block.wishlist .text,.block.compare .text{margin-right:8px}.block.wishlist .counter.qty,.block.compare .counter.qty{color:#999;font-size:12px;white-space:nowrap}.block.reorder .actions.toolbar,.block.compare .actions.toolbar{margin:17px 0;max-width:178px}.column.sidebar .block.reorder .subtitle,.column.sidebar .block.wishlist .subtitle{display:none}.product-list-item,.bundle.options.container .block.bundle.summary .bundle.items,.block.filter .items,.prices.tier.items,.cart .checkout.methods,.opc.wrapper>.opc,.order.details ul.items,.products.list.items{margin:0;padding:0;list-style-type:none;list-style-image:none}.product-list-item>li,.bundle.options.container .block.bundle.summary .bundle.items>li,.block.filter .items>li,.prices.tier.items>li,.cart .checkout.methods>li,.opc.wrapper>.opc>li,.order.details ul.items>li,.products.list.items>li{margin:0}.block.wishlist .actions .action.tocart,.product-list-item .action.tocart,.actions.toolbar .primary .action,.cart .action.primary,.opc.wrapper .action.continue,.opc.wrapper .action.primary.checkout,.minicart.wrapper .action.checkout,.products.list.items .action.tocart{background-image:none;background-color:#1979c3;padding:0 15px;color:#fff;border:1px solid #1979c3;cursor:pointer;display:inline-block;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;line-height:30px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;vertical-align:middle;border-radius:3px}.action-primary:focus,.action-primary:active,.block.wishlist .actions .action.tocart:focus,.block.wishlist .actions .action.tocart:active,.product-list-item .action.tocart:focus,.product-list-item .action.tocart:active,.actions.toolbar .primary .action:focus,.actions.toolbar .primary .action:active,.cart .action.primary:focus,.cart .action.primary:active,.opc.wrapper .action.continue:focus,.opc.wrapper .action.continue:active,.opc.wrapper .action.primary.checkout:focus,.opc.wrapper .action.primary.checkout:active,.minicart.wrapper .action.checkout:focus,.minicart.wrapper .action.checkout:active,.products.list.items .action.tocart:focus,.products.list.items .action.tocart:active{background-color:#006bb4;border:1px solid #006bb4;outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;color:#fff}.action-primary:hover,.block.wishlist .actions .action.tocart:hover,.product-list-item .action.tocart:hover,.actions.toolbar .primary .action:hover,.cart .action.primary:hover,.opc.wrapper .action.continue:hover,.opc.wrapper .action.primary.checkout:hover,.minicart.wrapper .action.checkout:hover,.products.list.items .action.tocart:hover{background-color:#006bb4;border:1px solid #006bb4;color:#fff}.action-primary.disabled,.action-primary[disabled],fieldset[disabled] .action-primary,.block.wishlist .actions .action.tocart.disabled,.block.wishlist .actions .action.tocart[disabled],fieldset[disabled] .block.wishlist .actions .action.tocart,.product-list-item .action.tocart.disabled,.product-list-item .action.tocart[disabled],fieldset[disabled] .product-list-item .action.tocart,.actions.toolbar .primary .action.disabled,.actions.toolbar .primary .action[disabled],fieldset[disabled] .actions.toolbar .primary .action,.cart .action.primary.disabled,.cart .action.primary[disabled],fieldset[disabled] .cart .action.primary,.opc.wrapper .action.continue.disabled,.opc.wrapper .action.continue[disabled],fieldset[disabled] .opc.wrapper .action.continue,.opc.wrapper .action.primary.checkout.disabled,.opc.wrapper .action.primary.checkout[disabled],fieldset[disabled] .opc.wrapper .action.primary.checkout,.minicart.wrapper .action.checkout.disabled,.minicart.wrapper .action.checkout[disabled],fieldset[disabled] .minicart.wrapper .action.checkout,.products.list.items .action.tocart.disabled,.products.list.items .action.tocart[disabled],fieldset[disabled] .products.list.items .action.tocart{cursor:default;pointer-events:none;opacity:.5}.product.info.main .action.tocompare,.product.info.main .action.towishlist{background-image:none;background-color:#f2f2f2;padding:0 15px;color:#333;border:1px solid #cdcdcd;cursor:pointer;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;line-height:30px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;margin:0;vertical-align:middle;display:inline-block;text-decoration:none;border-radius:3px}.action-link-button:focus,.action-link-button:active,.product.info.main .action.tocompare:focus,.product.info.main .action.tocompare:active,.product.info.main .action.towishlist:focus,.product.info.main .action.towishlist:active{background-color:#e2e2e2;border:1px solid #cdcdcd;outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;color:#333}.action-link-button:hover,.product.info.main .action.tocompare:hover,.product.info.main .action.towishlist:hover{background-color:#e2e2e2;border:1px solid #cdcdcd;color:#555}.action-link-button.disabled,.action-link-button[disabled],fieldset[disabled] .action-link-button,.product.info.main .action.tocompare.disabled,.product.info.main .action.tocompare[disabled],fieldset[disabled] .product.info.main .action.tocompare,.product.info.main .action.towishlist.disabled,.product.info.main .action.towishlist[disabled],fieldset[disabled] .product.info.main .action.towishlist{cursor:default;pointer-events:none;opacity:.5}.action-link-button:hover,.action-link-button:active,.action-link-button:focus,.product.info.main .action.tocompare:hover,.product.info.main .action.tocompare:active,.product.info.main .action.tocompare:focus,.product.info.main .action.towishlist:hover,.product.info.main .action.towishlist:active,.product.info.main .action.towishlist:focus{text-decoration:none}.products.list.items .product.item{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;display:inline-block;position:relative;vertical-align:top}.products.list.items .img.container{max-width:100%;margin-bottom:20px}.products.list.items .img.container>.image{max-width:100%;height:auto}.products.list.items .name{font-weight:400;display:block}.product-list-item .name>a,.products.list.items .name>a{color:#333;text-decoration:none}.product-list-item .name>a:visited,.products.list.items .name>a:visited{color:#333;text-decoration:none}.product-list-item .name>a:hover,.products.list.items .name>a:hover{color:#333;text-decoration:underline}.product-list-item .name>a:active,.products.list.items .name>a:active{color:#333;text-decoration:underline}.product-list-item .name>a:focus,.products.list.items .name>a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.products.list.items .price-box{margin-top:10px}.products.list.items .price-box .price{font-weight:700}.products.list.items .actions{text-align:left}.product-list-item .actions:before,.product-list-item .actions:after,.products.list.items .actions:before,.products.list.items .actions:after{content:"";display:table}.product-list-item .actions:after,.products.list.items .actions:after{clear:both}.product-list-item .actions .primary,.products.list.items .actions .primary{float:left}.product-list-item .actions .primary,.product-list-item .actions .secondary,.products.list.items .actions .primary,.products.list.items .actions .secondary{display:inline-block}.product-list-item .actions .primary .action,.product-list-item .actions .secondary .action,.products.list.items .actions .primary .action,.products.list.items .actions .secondary .action{margin:10px 0 0}.product-list-item .actions .primary a.action,.product-list-item .actions .secondary a.action,.products.list.items .actions .primary a.action,.products.list.items .actions .secondary a.action{display:inline-block}.product-list-item .actions .primary .action,.products.list.items .actions .primary .action{margin:10px 5px 0 0}.product-list-item .actions .secondary a.action,.products.list.items .actions .secondary a.action{margin-top:10px}.products.list.items .action.towishlist{display:inline-block;text-decoration:none}.product-list-item .action.towishlist>span,.products.list.items .action.towishlist>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.product-list-item .action.towishlist:before,.products.list.items .action.towishlist:before{font-family:"icons-blank-theme";content:'\e601';font-size:28px;line-height:inherit;color:#7d7d7d;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:baseline;text-align:center}.product-list-item .action.towishlist>span,.products.list.items .action.towishlist>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.products.list.items .action.tocompare{display:inline-block;text-decoration:none}.product-list-item .action.tocompare>span,.products.list.items .action.tocompare>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.product-list-item .action.tocompare:before,.products.list.items .action.tocompare:before{font-family:"icons-blank-theme";content:'\e61f';font-size:28px;line-height:inherit;color:#7d7d7d;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:baseline;text-align:center}.cart.table.wrapper .item.options dt:after,.opc.wrapper .data.table dt:after{content:':'}.cart.table.wrapper .item.options dt,.opc.wrapper .data.table dt{float:left;clear:left;margin:0 10px 5px 0}.cart.table.wrapper .item.options dd,.opc.wrapper .data.table dd{display:inline-block;margin:0 0 5px}.column.main .block.addbysku .fields .action.remove,.form.giftregistry.validation .fieldset.add-row .action.remove,.form.send.friend .action.delete{display:inline-block;text-decoration:none}.action-remove:before,.column.main .block.addbysku .fields .action.remove:before,.form.giftregistry.validation .fieldset.add-row .action.remove:before,.form.send.friend .action.delete:before{font-family:"icons-blank-theme";content:'\e616';font-size:26px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.account .column.main .block:not(.widget) .content .box,.opc.wrapper .step.login.wrapper .block,.login.container .block,.block.addresses.list ol.items.addresses li.item,.order.details .block{width:48.8%}.account .column.main .block:not(.widget) .content .box:nth-child(odd),.opc.wrapper .step.login.wrapper .block:nth-child(odd),.login.container .block:nth-child(odd),.block.addresses.list ol.items.addresses li.item:nth-child(odd),.order.details .block:nth-child(odd){float:left;clear:left}.account .column.main .block:not(.widget) .content .box:nth-child(even),.opc.wrapper .step.login.wrapper .block:nth-child(even),.login.container .block:nth-child(even),.block.addresses.list ol.items.addresses li.item:nth-child(even),.order.details .block:nth-child(even){float:right}.opc.wrapper .step.login.wrapper .block>.title{padding-bottom:15px;margin-bottom:15px;border-bottom:1px solid #e8e8e8}.opc.wrapper .step.login.wrapper .block>.title strong{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem}.dropdown.giftregisty,.dropdown.wishlist{line-height:normal;display:inline-block;position:relative}.dropdown-simple:before,.dropdown-simple:after,.dropdown.giftregisty:before,.dropdown.giftregisty:after,.dropdown.wishlist:before,.dropdown.wishlist:after{content:"";display:table}.dropdown-simple:after,.dropdown.giftregisty:after,.dropdown.wishlist:after{clear:both}.dropdown-simple .action.toggle,.dropdown.giftregisty .action.toggle,.dropdown.wishlist .action.toggle{cursor:pointer;display:inline-block;text-decoration:none}.dropdown-simple .action.toggle:after,.dropdown.giftregisty .action.toggle:after,.dropdown.wishlist .action.toggle:after{font-family:"icons-blank-theme";content:'\e607';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.dropdown-simple .action.toggle:hover:after,.dropdown.giftregisty .action.toggle:hover:after,.dropdown.wishlist .action.toggle:hover:after{color:inherit}.dropdown-simple .action.toggle:active:after,.dropdown.giftregisty .action.toggle:active:after,.dropdown.wishlist .action.toggle:active:after{color:inherit}.dropdown-simple .action.toggle.active,.dropdown.giftregisty .action.toggle.active,.dropdown.wishlist .action.toggle.active{display:inline-block;text-decoration:none}.dropdown-simple .action.toggle.active:after,.dropdown.giftregisty .action.toggle.active:after,.dropdown.wishlist .action.toggle.active:after{font-family:"icons-blank-theme";content:'\e618';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.dropdown-simple .action.toggle.active:hover:after,.dropdown.giftregisty .action.toggle.active:hover:after,.dropdown.wishlist .action.toggle.active:hover:after{color:inherit}.dropdown-simple .action.toggle.active:active:after,.dropdown.giftregisty .action.toggle.active:active:after,.dropdown.wishlist .action.toggle.active:active:after{color:inherit}.dropdown-simple ul.dropdown,.dropdown.giftregisty ul.dropdown,.dropdown.wishlist ul.dropdown{margin:0;padding:0;list-style-type:none;list-style-image:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;background-color:#fff;border:1px solid #bbb;position:absolute;z-index:100;min-width:100%;display:none;-webkit-box-shadow:0 3px 3px rgba(0,0,0,.15);-moz-box-shadow:0 3px 3px rgba(0,0,0,.15);box-shadow:0 3px 3px rgba(0,0,0,.15);margin-top:4px}.dropdown-simple ul.dropdown li,.dropdown.giftregisty ul.dropdown li,.dropdown.wishlist ul.dropdown li{margin:0;padding:3px 5px}.dropdown-simple ul.dropdown li:hover,.dropdown.giftregisty ul.dropdown li:hover,.dropdown.wishlist ul.dropdown li:hover{background-color:#e8e8e8;cursor:pointer}.dropdown-simple ul.dropdown:before,.dropdown-simple ul.dropdown:after,.dropdown.giftregisty ul.dropdown:before,.dropdown.giftregisty ul.dropdown:after,.dropdown.wishlist ul.dropdown:before,.dropdown.wishlist ul.dropdown:after{content:"";position:absolute;display:block;width:0;height:0;border-bottom-style:solid}.dropdown-simple ul.dropdown:before,.dropdown.giftregisty ul.dropdown:before,.dropdown.wishlist ul.dropdown:before{top:-12px;left:10px;z-index:99;border:solid 6px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #fff rgba(0,0,0,0)}.dropdown-simple ul.dropdown:after,.dropdown.giftregisty ul.dropdown:after,.dropdown.wishlist ul.dropdown:after{top:-14px;left:9px;z-index:98;border:solid 7px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #bbb rgba(0,0,0,0)}.dropdown-simple.active,.dropdown.giftregisty.active,.dropdown.wishlist.active{overflow:visible}.dropdown-simple.active ul.dropdown,.dropdown.giftregisty.active ul.dropdown,.dropdown.wishlist.active ul.dropdown{display:block}.dropdown.giftregisty ul.items.dropdown,.dropdown.wishlist ul.items.dropdown{min-width:155px}.column.main .block.addbysku .fields .field .control .qty,.data.table.giftregistry .field.qty .qty,.table.data.grouped .col.qty .control.qty .qty,.data.table.wishlist .box.tocart .qty{width:50px;text-align:center}.block,.widget.banners,div.widget.product.link,div.widget.category.link,.widget.widget-cms-link,.widget.widget-cms-hierarchy-link{margin-bottom:40px}.column.sidebar .widget.block.addbysku .field,.column.sidebar .widget.block.addbysku .fields .field,.block.widget.giftregistry .field,.block.widget.giftregistry .fields .field,.widget.block.wishlist.find .field,.widget.block.wishlist.find .fields .field,.widget.block.orders.returns .field,.widget.block.orders.returns .fields .field{margin:0 0 10px;border:0}.form-fields-for-widgets .field:not(.choice)>.label,.form-fields-for-widgets .fields .field:not(.choice)>.label,.column.sidebar .widget.block.addbysku .field:not(.choice)>.label,.column.sidebar .widget.block.addbysku .fields .field:not(.choice)>.label,.block.widget.giftregistry .field:not(.choice)>.label,.block.widget.giftregistry .fields .field:not(.choice)>.label,.widget.block.wishlist.find .field:not(.choice)>.label,.widget.block.wishlist.find .fields .field:not(.choice)>.label,.widget.block.orders.returns .field:not(.choice)>.label,.widget.block.orders.returns .fields .field:not(.choice)>.label{display:inline-block;width:auto;float:none;text-align:left;margin:0 0 5px}.form-fields-for-widgets .field.choice:before,.form-fields-for-widgets .fields .field.choice:before,.form-fields-for-widgets .field.no-label:before,.form-fields-for-widgets .fields .field.no-label:before,.column.sidebar .widget.block.addbysku .field.choice:before,.column.sidebar .widget.block.addbysku .fields .field.choice:before,.column.sidebar .widget.block.addbysku .field.no-label:before,.column.sidebar .widget.block.addbysku .fields .field.no-label:before,.block.widget.giftregistry .field.choice:before,.block.widget.giftregistry .fields .field.choice:before,.block.widget.giftregistry .field.no-label:before,.block.widget.giftregistry .fields .field.no-label:before,.widget.block.wishlist.find .field.choice:before,.widget.block.wishlist.find .fields .field.choice:before,.widget.block.wishlist.find .field.no-label:before,.widget.block.wishlist.find .fields .field.no-label:before,.widget.block.orders.returns .field.choice:before,.widget.block.orders.returns .fields .field.choice:before,.widget.block.orders.returns .field.no-label:before,.widget.block.orders.returns .fields .field.no-label:before{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;content:" ";height:auto;float:none;width:auto;padding:0}.form-fields-for-widgets .field>.control,.form-fields-for-widgets .fields .field>.control,.column.sidebar .widget.block.addbysku .field>.control,.column.sidebar .widget.block.addbysku .fields .field>.control,.block.widget.giftregistry .field>.control,.block.widget.giftregistry .fields .field>.control,.widget.block.wishlist.find .field>.control,.widget.block.wishlist.find .fields .field>.control,.widget.block.orders.returns .field>.control,.widget.block.orders.returns .fields .field>.control{float:none;width:auto}.form-fields-for-widgets .field>.label,.form-fields-for-widgets .fields .field>.label,.column.sidebar .widget.block.addbysku .field>.label,.column.sidebar .widget.block.addbysku .fields .field>.label,.block.widget.giftregistry .field>.label,.block.widget.giftregistry .fields .field>.label,.widget.block.wishlist.find .field>.label,.widget.block.wishlist.find .fields .field>.label,.widget.block.orders.returns .field>.label,.widget.block.orders.returns .fields .field>.label{font-size:14px;font-size:1.4rem;font-weight:400}.form-fields-for-widgets .field>.label+br,.form-fields-for-widgets .fields .field>.label+br,.column.sidebar .widget.block.addbysku .field>.label+br,.column.sidebar .widget.block.addbysku .fields .field>.label+br,.block.widget.giftregistry .field>.label+br,.block.widget.giftregistry .fields .field>.label+br,.widget.block.wishlist.find .field>.label+br,.widget.block.wishlist.find .fields .field>.label+br,.widget.block.orders.returns .field>.label+br,.widget.block.orders.returns .fields .field>.label+br{display:none}.form-fields-for-widgets .field.required>.label:after,.form-fields-for-widgets .fields .field.required>.label:after,.column.sidebar .widget.block.addbysku .field.required>.label:after,.column.sidebar .widget.block.addbysku .fields .field.required>.label:after,.block.widget.giftregistry .field.required>.label:after,.block.widget.giftregistry .fields .field.required>.label:after,.widget.block.wishlist.find .field.required>.label:after,.widget.block.wishlist.find .fields .field.required>.label:after,.widget.block.orders.returns .field.required>.label:after,.widget.block.orders.returns .fields .field.required>.label:after{content:'*';font-size:12px;font-size:1.2rem;color:#e02b27;margin:0 0 0 5px}.form-fields-for-widgets .field .nested .field,.form-fields-for-widgets .fields .field .nested .field,.column.sidebar .widget.block.addbysku .field .nested .field,.column.sidebar .widget.block.addbysku .fields .field .nested .field,.block.widget.giftregistry .field .nested .field,.block.widget.giftregistry .fields .field .nested .field,.widget.block.wishlist.find .field .nested .field,.widget.block.wishlist.find .fields .field .nested .field,.widget.block.orders.returns .field .nested .field,.widget.block.orders.returns .fields .field .nested .field{margin:5px 0}.form-fields-for-widgets .field.choice>.label,.form-fields-for-widgets .fields .field.choice>.label,.column.sidebar .widget.block.addbysku .field.choice>.label,.column.sidebar .widget.block.addbysku .fields .field.choice>.label,.block.widget.giftregistry .field.choice>.label,.block.widget.giftregistry .fields .field.choice>.label,.widget.block.wishlist.find .field.choice>.label,.widget.block.wishlist.find .fields .field.choice>.label,.widget.block.orders.returns .field.choice>.label,.widget.block.orders.returns .fields .field.choice>.label{display:inline}.form-fields-for-widgets .field.choice>input,.form-fields-for-widgets .fields .field.choice>input,.column.sidebar .widget.block.addbysku .field.choice>input,.column.sidebar .widget.block.addbysku .fields .field.choice>input,.block.widget.giftregistry .field.choice>input,.block.widget.giftregistry .fields .field.choice>input,.widget.block.wishlist.find .field.choice>input,.widget.block.wishlist.find .fields .field.choice>input,.widget.block.orders.returns .field.choice>input,.widget.block.orders.returns .fields .field.choice>input{vertical-align:top}.form-fields-for-widgets .field .fields.group,.form-fields-for-widgets .fields .field .fields.group,.column.sidebar .widget.block.addbysku .field .fields.group,.column.sidebar .widget.block.addbysku .fields .field .fields.group,.block.widget.giftregistry .field .fields.group,.block.widget.giftregistry .fields .field .fields.group,.widget.block.wishlist.find .field .fields.group,.widget.block.wishlist.find .fields .field .fields.group,.widget.block.orders.returns .field .fields.group,.widget.block.orders.returns .fields .field .fields.group{display:flex;letter-spacing:-.31em;*letter-spacing:normal;word-spacing:-.43em;margin-right:- 20px}.form-fields-for-widgets .field .fields.group>*,.form-fields-for-widgets .fields .field .fields.group>*,.column.sidebar .widget.block.addbysku .field .fields.group>*,.column.sidebar .widget.block.addbysku .fields .field .fields.group>*,.block.widget.giftregistry .field .fields.group>*,.block.widget.giftregistry .fields .field .fields.group>*,.widget.block.wishlist.find .field .fields.group>*,.widget.block.wishlist.find .fields .field .fields.group>*,.widget.block.orders.returns .field .fields.group>*,.widget.block.orders.returns .fields .field .fields.group>*{letter-spacing:normal;word-spacing:normal}.form-fields-for-widgets .field .fields.group .field,.form-fields-for-widgets .fields .field .fields.group .field,.column.sidebar .widget.block.addbysku .field .fields.group .field,.column.sidebar .widget.block.addbysku .fields .field .fields.group .field,.block.widget.giftregistry .field .fields.group .field,.block.widget.giftregistry .fields .field .fields.group .field,.widget.block.wishlist.find .field .fields.group .field,.widget.block.wishlist.find .fields .field .fields.group .field,.widget.block.orders.returns .field .fields.group .field,.widget.block.orders.returns .fields .field .fields.group .field{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;vertical-align:top;margin:0!important}.form-fields-for-widgets .field .fields.group .field .label,.form-fields-for-widgets .fields .field .fields.group .field .label,.column.sidebar .widget.block.addbysku .field .fields.group .field .label,.column.sidebar .widget.block.addbysku .fields .field .fields.group .field .label,.block.widget.giftregistry .field .fields.group .field .label,.block.widget.giftregistry .fields .field .fields.group .field .label,.widget.block.wishlist.find .field .fields.group .field .label,.widget.block.wishlist.find .fields .field .fields.group .field .label,.widget.block.orders.returns .field .fields.group .field .label,.widget.block.orders.returns .fields .field .fields.group .field .label{width:auto;float:none;text-align:left;padding-right:0}.form-fields-for-widgets .field .fields.group .field .control,.form-fields-for-widgets .fields .field .fields.group .field .control,.column.sidebar .widget.block.addbysku .field .fields.group .field .control,.column.sidebar .widget.block.addbysku .fields .field .fields.group .field .control,.block.widget.giftregistry .field .fields.group .field .control,.block.widget.giftregistry .fields .field .fields.group .field .control,.widget.block.wishlist.find .field .fields.group .field .control,.widget.block.wishlist.find .fields .field .fields.group .field .control,.widget.block.orders.returns .field .fields.group .field .control,.widget.block.orders.returns .fields .field .fields.group .field .control{float:none;width:auto}.form-fields-for-widgets .field .fields.group.group-2 .field,.form-fields-for-widgets .fields .field .fields.group.group-2 .field,.column.sidebar .widget.block.addbysku .field .fields.group.group-2 .field,.column.sidebar .widget.block.addbysku .fields .field .fields.group.group-2 .field,.block.widget.giftregistry .field .fields.group.group-2 .field,.block.widget.giftregistry .fields .field .fields.group.group-2 .field,.widget.block.wishlist.find .field .fields.group.group-2 .field,.widget.block.wishlist.find .fields .field .fields.group.group-2 .field,.widget.block.orders.returns .field .fields.group.group-2 .field,.widget.block.orders.returns .fields .field .fields.group.group-2 .field{width:50%!important;display:inline-block}.form-fields-for-widgets .field .fields.group.group-3 .field,.form-fields-for-widgets .fields .field .fields.group.group-3 .field,.column.sidebar .widget.block.addbysku .field .fields.group.group-3 .field,.column.sidebar .widget.block.addbysku .fields .field .fields.group.group-3 .field,.block.widget.giftregistry .field .fields.group.group-3 .field,.block.widget.giftregistry .fields .field .fields.group.group-3 .field,.widget.block.wishlist.find .field .fields.group.group-3 .field,.widget.block.wishlist.find .fields .field .fields.group.group-3 .field,.widget.block.orders.returns .field .fields.group.group-3 .field,.widget.block.orders.returns .fields .field .fields.group.group-3 .field{width:33.3%!important;display:inline-block}.form-fields-for-widgets .field .fields.group.group-4 .field,.form-fields-for-widgets .fields .field .fields.group.group-4 .field,.column.sidebar .widget.block.addbysku .field .fields.group.group-4 .field,.column.sidebar .widget.block.addbysku .fields .field .fields.group.group-4 .field,.block.widget.giftregistry .field .fields.group.group-4 .field,.block.widget.giftregistry .fields .field .fields.group.group-4 .field,.widget.block.wishlist.find .field .fields.group.group-4 .field,.widget.block.wishlist.find .fields .field .fields.group.group-4 .field,.widget.block.orders.returns .field .fields.group.group-4 .field,.widget.block.orders.returns .fields .field .fields.group.group-4 .field{width:25%!important;display:inline-block}.form-fields-for-widgets .field .fields.group.group-5 .field,.form-fields-for-widgets .fields .field .fields.group.group-5 .field,.column.sidebar .widget.block.addbysku .field .fields.group.group-5 .field,.column.sidebar .widget.block.addbysku .fields .field .fields.group.group-5 .field,.block.widget.giftregistry .field .fields.group.group-5 .field,.block.widget.giftregistry .fields .field .fields.group.group-5 .field,.widget.block.wishlist.find .field .fields.group.group-5 .field,.widget.block.wishlist.find .fields .field .fields.group.group-5 .field,.widget.block.orders.returns .field .fields.group.group-5 .field,.widget.block.orders.returns .fields .field .fields.group.group-5 .field{width:20%!important;display:inline-block}.form-fields-for-widgets .field .addon,.form-fields-for-widgets .fields .field .addon,.column.sidebar .widget.block.addbysku .field .addon,.column.sidebar .widget.block.addbysku .fields .field .addon,.block.widget.giftregistry .field .addon,.block.widget.giftregistry .fields .field .addon,.widget.block.wishlist.find .field .addon,.widget.block.wishlist.find .fields .field .addon,.widget.block.orders.returns .field .addon,.widget.block.orders.returns .fields .field .addon{display:inline-flex;flex-wrap:nowrap;padding:0;width:100%}.form-fields-for-widgets .field .addon textarea,.form-fields-for-widgets .fields .field .addon textarea,.form-fields-for-widgets .field .addon select,.form-fields-for-widgets .fields .field .addon select,.form-fields-for-widgets .field .addon input,.form-fields-for-widgets .fields .field .addon input,.column.sidebar .widget.block.addbysku .field .addon textarea,.column.sidebar .widget.block.addbysku .fields .field .addon textarea,.column.sidebar .widget.block.addbysku .field .addon select,.column.sidebar .widget.block.addbysku .fields .field .addon select,.column.sidebar .widget.block.addbysku .field .addon input,.column.sidebar .widget.block.addbysku .fields .field .addon input,.block.widget.giftregistry .field .addon textarea,.block.widget.giftregistry .fields .field .addon textarea,.block.widget.giftregistry .field .addon select,.block.widget.giftregistry .fields .field .addon select,.block.widget.giftregistry .field .addon input,.block.widget.giftregistry .fields .field .addon input,.widget.block.wishlist.find .field .addon textarea,.widget.block.wishlist.find .fields .field .addon textarea,.widget.block.wishlist.find .field .addon select,.widget.block.wishlist.find .fields .field .addon select,.widget.block.wishlist.find .field .addon input,.widget.block.wishlist.find .fields .field .addon input,.widget.block.orders.returns .field .addon textarea,.widget.block.orders.returns .fields .field .addon textarea,.widget.block.orders.returns .field .addon select,.widget.block.orders.returns .fields .field .addon select,.widget.block.orders.returns .field .addon input,.widget.block.orders.returns .fields .field .addon input{order:2;box-shadow:none;display:inline-block;margin:0;width:auto;flex-basis:100%}.form-fields-for-widgets .field .addon .addbefore,.form-fields-for-widgets .fields .field .addon .addbefore,.form-fields-for-widgets .field .addon .addafter,.form-fields-for-widgets .fields .field .addon .addafter,.column.sidebar .widget.block.addbysku .field .addon .addbefore,.column.sidebar .widget.block.addbysku .fields .field .addon .addbefore,.column.sidebar .widget.block.addbysku .field .addon .addafter,.column.sidebar .widget.block.addbysku .fields .field .addon .addafter,.block.widget.giftregistry .field .addon .addbefore,.block.widget.giftregistry .fields .field .addon .addbefore,.block.widget.giftregistry .field .addon .addafter,.block.widget.giftregistry .fields .field .addon .addafter,.widget.block.wishlist.find .field .addon .addbefore,.widget.block.wishlist.find .fields .field .addon .addbefore,.widget.block.wishlist.find .field .addon .addafter,.widget.block.wishlist.find .fields .field .addon .addafter,.widget.block.orders.returns .field .addon .addbefore,.widget.block.orders.returns .fields .field .addon .addbefore,.widget.block.orders.returns .field .addon .addafter,.widget.block.orders.returns .fields .field .addon .addafter{order:3;display:inline-block;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;border:1px solid #c2c2c2;border-radius:1px;height:32px;width:100%;padding:0 10px;font-size:14px;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;line-height:1.42857143;font-style:normal;color:#333;background-clip:padding-box;vertical-align:baseline;width:auto;white-space:nowrap;vertical-align:middle}.form-fields-for-widgets .field .addon .addbefore:disabled,.form-fields-for-widgets .fields .field .addon .addbefore:disabled,.form-fields-for-widgets .field .addon .addafter:disabled,.form-fields-for-widgets .fields .field .addon .addafter:disabled,.column.sidebar .widget.block.addbysku .field .addon .addbefore:disabled,.column.sidebar .widget.block.addbysku .fields .field .addon .addbefore:disabled,.column.sidebar .widget.block.addbysku .field .addon .addafter:disabled,.column.sidebar .widget.block.addbysku .fields .field .addon .addafter:disabled,.block.widget.giftregistry .field .addon .addbefore:disabled,.block.widget.giftregistry .fields .field .addon .addbefore:disabled,.block.widget.giftregistry .field .addon .addafter:disabled,.block.widget.giftregistry .fields .field .addon .addafter:disabled,.widget.block.wishlist.find .field .addon .addbefore:disabled,.widget.block.wishlist.find .fields .field .addon .addbefore:disabled,.widget.block.wishlist.find .field .addon .addafter:disabled,.widget.block.wishlist.find .fields .field .addon .addafter:disabled,.widget.block.orders.returns .field .addon .addbefore:disabled,.widget.block.orders.returns .fields .field .addon .addbefore:disabled,.widget.block.orders.returns .field .addon .addafter:disabled,.widget.block.orders.returns .fields .field .addon .addafter:disabled{opacity:.5}.form-fields-for-widgets .field .addon .addbefore,.form-fields-for-widgets .fields .field .addon .addbefore,.column.sidebar .widget.block.addbysku .field .addon .addbefore,.column.sidebar .widget.block.addbysku .fields .field .addon .addbefore,.block.widget.giftregistry .field .addon .addbefore,.block.widget.giftregistry .fields .field .addon .addbefore,.widget.block.wishlist.find .field .addon .addbefore,.widget.block.wishlist.find .fields .field .addon .addbefore,.widget.block.orders.returns .field .addon .addbefore,.widget.block.orders.returns .fields .field .addon .addbefore{float:left;order:1}.form-fields-for-widgets .field .note,.form-fields-for-widgets .fields .field .note,.column.sidebar .widget.block.addbysku .field .note,.column.sidebar .widget.block.addbysku .fields .field .note,.block.widget.giftregistry .field .note,.block.widget.giftregistry .fields .field .note,.widget.block.wishlist.find .field .note,.widget.block.wishlist.find .fields .field .note,.widget.block.orders.returns .field .note,.widget.block.orders.returns .fields .field .note{font-size:12px;font-size:1.2rem;margin:3px 0 0;padding:0;display:inline-block;text-decoration:none}.form-fields-for-widgets .field .note:before,.form-fields-for-widgets .fields .field .note:before,.column.sidebar .widget.block.addbysku .field .note:before,.column.sidebar .widget.block.addbysku .fields .field .note:before,.block.widget.giftregistry .field .note:before,.block.widget.giftregistry .fields .field .note:before,.widget.block.wishlist.find .field .note:before,.widget.block.wishlist.find .fields .field .note:before,.widget.block.orders.returns .field .note:before,.widget.block.orders.returns .fields .field .note:before{font-family:"icons-blank-theme";content:'\e618';font-size:24px;line-height:12px;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.block.compare .item .action.delete,.block.wishlist .actions .action.delete,.data.comparison .cell.remove .action.delete{display:inline-block;text-decoration:none}.remove-button-for-blocks>span,.block.compare .item .action.delete>span,.block.wishlist .actions .action.delete>span,.data.comparison .cell.remove .action.delete>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.remove-button-for-blocks:before,.block.compare .item .action.delete:before,.block.wishlist .actions .action.delete:before,.data.comparison .cell.remove .action.delete:before{font-family:"icons-blank-theme";content:'\e616';font-size:26px;line-height:15px;color:#303030;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.remove-button-for-blocks:hover:before,.block.compare .item .action.delete:hover:before,.block.wishlist .actions .action.delete:hover:before,.data.comparison .cell.remove .action.delete:hover:before{color:#303030}.remove-button-for-blocks:active:before,.block.compare .item .action.delete:active:before,.block.wishlist .actions .action.delete:active:before,.data.comparison .cell.remove .action.delete:active:before{color:#303030}.block.compare .product.name a,.block.viewed.links .product.name a,.block.reorder .product.name a,.block.compared.links .product.name a,.block.wishlist .product.name a,.data.comparison .product.name a,.widget.product.link a{color:#303030;text-decoration:none}.product-link:visited,.block.compare .product.name a:visited,.block.viewed.links .product.name a:visited,.block.reorder .product.name a:visited,.block.compared.links .product.name a:visited,.block.wishlist .product.name a:visited,.data.comparison .product.name a:visited,.widget.product.link a:visited{color:#303030;text-decoration:none}.product-link:hover,.block.compare .product.name a:hover,.block.viewed.links .product.name a:hover,.block.reorder .product.name a:hover,.block.compared.links .product.name a:hover,.block.wishlist .product.name a:hover,.data.comparison .product.name a:hover,.widget.product.link a:hover{color:#303030;text-decoration:underline}.product-link:active,.block.compare .product.name a:active,.block.viewed.links .product.name a:active,.block.reorder .product.name a:active,.block.compared.links .product.name a:active,.block.wishlist .product.name a:active,.data.comparison .product.name a:active,.widget.product.link a:active{color:#303030;text-decoration:underline}.product-link:focus,.block.compare .product.name a:focus,.block.viewed.links .product.name a:focus,.block.reorder .product.name a:focus,.block.compared.links .product.name a:focus,.block.wishlist .product.name a:focus,.data.comparison .product.name a:focus,.widget.product.link a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.form.new.agreement .actions.toolbar,.opc.wrapper .form.shipping.methods .actions.toolbar,.opc.wrapper .form.payments .actions.toolbar,.form.giftregistry.items .actions.toolbar,.form.wishlist.items .actions.toolbar{margin-left:0}@font-face{font-family:'Open Sans';src:url('http://magento2.loc/pub/lib/fonts/opensans/light/opensans-300.eot');src:url('http://magento2.loc/pub/lib/fonts/opensans/light/opensans-300.eot?#iefix') format('embedded-opentype'),url('http://magento2.loc/pub/lib/fonts/opensans/light/opensans-300.woff') format('woff'),url('http://magento2.loc/pub/lib/fonts/opensans/light/opensans-300.ttf') format('truetype'),url('http://magento2.loc/pub/lib/fonts/opensans/light/opensans-300.svg#Open Sans') format('svg');font-weight:300;font-style:normal}@font-face{font-family:'Open Sans';src:url('http://magento2.loc/pub/lib/fonts/opensans/regular/opensans-400.eot');src:url('http://magento2.loc/pub/lib/fonts/opensans/regular/opensans-400.eot?#iefix') format('embedded-opentype'),url('http://magento2.loc/pub/lib/fonts/opensans/regular/opensans-400.woff') format('woff'),url('http://magento2.loc/pub/lib/fonts/opensans/regular/opensans-400.ttf') format('truetype'),url('http://magento2.loc/pub/lib/fonts/opensans/regular/opensans-400.svg#Open Sans') format('svg');font-weight:400;font-style:normal}@font-face{font-family:'Open Sans';src:url('http://magento2.loc/pub/lib/fonts/opensans/semibold/opensans-600.eot');src:url('http://magento2.loc/pub/lib/fonts/opensans/semibold/opensans-600.eot?#iefix') format('embedded-opentype'),url('http://magento2.loc/pub/lib/fonts/opensans/semibold/opensans-600.woff') format('woff'),url('http://magento2.loc/pub/lib/fonts/opensans/semibold/opensans-600.ttf') format('truetype'),url('http://magento2.loc/pub/lib/fonts/opensans/semibold/opensans-600.svg#Open Sans') format('svg');font-weight:600;font-style:normal}@font-face{font-family:'Open Sans';src:url('http://magento2.loc/pub/lib/fonts/opensans/bold/opensans-700.eot');src:url('http://magento2.loc/pub/lib/fonts/opensans/bold/opensans-700.eot?#iefix') format('embedded-opentype'),url('http://magento2.loc/pub/lib/fonts/opensans/bold/opensans-700.woff') format('woff'),url('http://magento2.loc/pub/lib/fonts/opensans/bold/opensans-700.ttf') format('truetype'),url('http://magento2.loc/pub/lib/fonts/opensans/bold/opensans-700.svg#Open Sans') format('svg');font-weight:700;font-style:normal}.navigation>ul,.breadcrumbs,.page.header .header.panel,.header.content,.footer.content,.page.main,.page.wrapper>.widget,.page.wrapper>.page.bottom,.block.category.event{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;margin:0 auto;padding-left:20px;padding-right:20px;width:auto;min-width:1000px;max-width:1280px}.columns{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;display:flex;flex-direction:row;flex-wrap:wrap}.columns:after{content:" ";display:block;height:0;clear:both;overlow:hidden;visibility:hidden}.columns>.column{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;padding-bottom:40px}.column.main{min-height:300px}.layout-1 .column.main{width:100%;order:2}.layout-3 .column.main{width:66.66666667%;display:inline-block;order:2}.layout-2-left .column.main{width:83.33333333%;float:right;order:2}.layout-2-right .column.main{width:83.33333333%;float:left;order:1}.column.left{padding-right:2%}.layout-3 .column.left{width:16.66666667%;float:left;order:1}.layout-2-left .column.left{width:16.66666667%;float:left;order:1}.layout-2-right .column.left{width:16.66666667%;float:left;order:1}.column.right{padding-left:2%}.layout-3 .column.right{width:16.66666667%;float:right;order:3}.layout-2-left .column.right{width:16.66666667%;float:right;order:2}.layout-2-right .column.right{width:16.66666667%;float:right;order:2}.message.info{display:block;margin:0 0 10px;padding:10px 20px;border-radius:0;font-size:13px;font-size:1.3rem;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.2em;background:#fdf0d5;border-color:none;color:#6f4400;position:relative;padding-left:40px}.message.info a{color:#1979c3}.message.info a:hover{color:#006bb4}.message.info a:active{color:#006bb4}.message.info>:first-child:before{font-family:"icons-blank-theme";content:'\e602';font-size:28px;line-height:28px;color:#c07600;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;margin:-14px 0 0;position:absolute;left:0;top:50%;text-align:center;width:40px}.message.error{display:block;margin:0 0 10px;padding:10px 20px;border-radius:0;font-size:13px;font-size:1.3rem;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.2em;background:#fae5e5;border-color:none;color:#e02b27;position:relative;padding-left:40px}.message.error a{color:#1979c3}.message.error a:hover{color:#006bb4}.message.error a:active{color:#006bb4}.message.error>:first-child:before{font-family:"icons-blank-theme";content:'\e602';font-size:28px;line-height:28px;color:#b30000;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;margin:-14px 0 0;position:absolute;left:0;top:50%;text-align:center;width:40px}.message.warning{display:block;margin:0 0 10px;padding:10px 20px;border-radius:0;font-size:13px;font-size:1.3rem;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.2em;background:#fdf0d5;border-color:none;color:#6f4400;position:relative;padding-left:40px}.message.warning a{color:#1979c3}.message.warning a:hover{color:#006bb4}.message.warning a:active{color:#006bb4}.message.warning>:first-child:before{font-family:"icons-blank-theme";content:'\e602';font-size:28px;line-height:28px;color:#c07600;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;margin:-14px 0 0;position:absolute;left:0;top:50%;text-align:center;width:40px}.message.notice{display:block;margin:0 0 10px;padding:10px 20px;border-radius:0;font-size:13px;font-size:1.3rem;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.2em;background:#fdf0d5;border-color:none;color:#6f4400;position:relative;padding-left:40px}.message.notice a{color:#1979c3}.message.notice a:hover{color:#006bb4}.message.notice a:active{color:#006bb4}.message.notice>:first-child:before{font-family:"icons-blank-theme";content:'\e602';font-size:28px;line-height:28px;color:#c07600;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;margin:-14px 0 0;position:absolute;left:0;top:50%;text-align:center;width:40px}.message.success{display:block;margin:0 0 10px;padding:10px 20px;border-radius:0;font-size:13px;font-size:1.3rem;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.2em;background:#e5efe5;border-color:none;color:#006400;position:relative;padding-left:40px}.message.success a{color:#1979c3}.message.success a:hover{color:#006bb4}.message.success a:active{color:#006bb4}.message.success>:first-child:before{font-family:"icons-blank-theme";content:'\e610';font-size:28px;line-height:28px;color:#006400;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;margin:-14px 0 0;position:absolute;left:0;top:50%;text-align:center;width:40px}.navigation{background:#e8e8e8;margin:0;padding:0;list-style-type:none;list-style-image:none;position:relative;z-index:2}.navigation>li{display:inline-block;vertical-align:top}.navigation:empty{display:none}.navigation .level0{display:inline-block;position:relative;vertical-align:top;margin:0 10px 0 0}.navigation .level0:last-child{margin-right:0;padding-right:0}.navigation .level0>.level-top{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;color:#575757;line-height:53px;padding:0 12px;display:inline-block;position:relative}.navigation .level0>.level-top:hover{color:#333}.navigation .level0.active>.level-top{color:#333}.navigation .level0.parent>.submenu:before,.navigation .level0.parent>.submenu:after{content:'';overflow:hidden;display:block;position:absolute;top:-20px}.navigation .level0.parent>.submenu:before{left:20px;color:#fff;z-index:4;width:0;height:0;border:10px solid rgba(0,0,0,0);border-bottom-color:#fff}.navigation .level0.parent>.submenu:after{left:19px;color:#d1d1d1;z-index:3;width:0;height:0;border:11px solid rgba(0,0,0,0);border-bottom-color:#d1d1d1}.navigation .level0.parent:hover>.submenu{overflow:visible!important}.navigation .level0.hover>.submenu,.navigation .level0:hover>.submenu{z-index:2}.navigation .level0.more{position:relative;display:inline-block;text-decoration:none}.navigation .level0.more:after{font-family:"icons-blank-theme";content:'\e607';font-size:26px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.navigation .level0.more:before{display:none}.navigation .level0.more:after{border-radius:4px 4px 0 0;cursor:pointer;padding:8px 12px;position:relative;z-index:1}.navigation .level0>.submenu{display:none;min-width:230px;position:absolute;left:0;top:100%;z-index:1}.navigation .level0>.submenu>ul{background:#fff;border:1px solid #d1d1d1;box-shadow:0 5px 5px rgba(0,0,0,.19);padding:15px 0;position:relative;margin:0}.navigation .level0>.submenu>ul>li{display:block;margin:0;position:relative}.navigation .level0>.submenu>ul>li a{display:block;line-height:normal;padding:8px 20px;color:#575757}.navigation .level0>.submenu>ul>li a:hover{background:#e8e8e8;color:#333;text-decoration:none}.navigation .level0>.submenu .submenu ul{padding-left:0}.navigation .level0>.submenu .submenu ul li{margin:0}.navigation .level0>.submenu .submenu ul a{padding-left:40px}.navigation{margin:0 0 30px}.navigation>ul>.level0{font-weight:700}.navigation>ul>.level0>a,.navigation>ul>.level0 .action.back>a{text-decoration:none;text-transform:uppercase}.load.indicator{position:fixed;left:0;top:0;right:0;bottom:0;background-color:rgba(255,255,255,.5);z-index:9999;position:absolute}.load.indicator:before{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;background-color:rgba(0,0,0,0);background-image:url('http://magento2.loc/pub/lib/images/loader-2.gif');background-position:50% 50%;background-repeat:no-repeat;border-radius:5px;content:'';position:absolute;top:0;right:0;left:0;bottom:0;margin:auto;width:160px;height:160px}.load.indicator:before{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;background-color:rgba(0,0,0,0);background-image:url('http://magento2.loc/pub/lib/images/loader-2.gif');background-position:50% 50%;background-repeat:no-repeat;border-radius:5px;content:'';position:absolute;top:0;right:0;left:0;bottom:0;margin:auto;width:160px;height:160px}.load.indicator>span{display:none}.fieldset{border:0;margin:0 0 40px;padding:0;letter-spacing:-.31em;word-spacing:-.43em}.fieldset .legend+.fieldset,.fieldset .legend+div{clear:both}.fieldset>*{letter-spacing:normal;word-spacing:normal}.fieldset>.legend{margin:0 0 25px 25.8%;padding:0;font-size:20px;font-size:2rem;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.2;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;float:left;width:74.2%}.fieldset>.legend+br{display:block;visibility:hidden;height:0;overflow:hidden;clear:both}.fieldset:last-child{margin-bottom:0}.fieldset>.field,.fieldset .fields>.field{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;margin:0 0 29px;border:0}.fieldset>.field:last-child,.fieldset .fields>.field:last-child{margin-bottom:0}.fieldset>.field.no-label>.label,.fieldset .fields>.field.no-label>.label{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.fieldset>.field .label,.fieldset .fields>.field .label{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.fieldset>.field:before,.fieldset .fields>.field:before,.fieldset>.field:after,.fieldset .fields>.field:after{content:"";display:table}.fieldset>.field:after,.fieldset .fields>.field:after{clear:both}.fieldset>.field:not(.choice)>.label,.fieldset .fields>.field:not(.choice)>.label{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;float:left;width:25.8%;text-align:right;padding:6px 15px 0 0}.fieldset>.field>.description,.fieldset .fields>.field>.description{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;float:left;width:25.8%;text-align:right;padding:6px 15px 0 0}.fieldset>.field.choice:before,.fieldset .fields>.field.choice:before,.fieldset>.field.no-label:before,.fieldset .fields>.field.no-label:before{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;content:" ";height:1px;float:left;width:25.8%;padding:6px 15px 0 0}.fieldset>.field>.control,.fieldset .fields>.field>.control{float:left;width:74.2%}.fieldset>.field>.label,.fieldset .fields>.field>.label{font-size:14px;font-size:1.4rem;font-weight:700}.fieldset>.field>.label+br,.fieldset .fields>.field>.label+br{display:none}.fieldset>.field.required>.label:after,.fieldset .fields>.field.required>.label:after{content:'*';font-size:12px;font-size:1.2rem;color:#e02b27;margin:0 0 0 5px}.fieldset>.field .nested .field,.fieldset .fields>.field .nested .field{margin:5px 0}.fieldset>.field.choice>.label,.fieldset .fields>.field.choice>.label{display:inline}.fieldset>.field.choice>input,.fieldset .fields>.field.choice>input{vertical-align:top}.fieldset>.field .fields.group,.fieldset .fields>.field .fields.group{display:flex;letter-spacing:-.31em;*letter-spacing:normal;word-spacing:-.43em;margin-right:- 20px}.fieldset>.field .fields.group>*,.fieldset .fields>.field .fields.group>*{letter-spacing:normal;word-spacing:normal}.fieldset>.field .fields.group .field,.fieldset .fields>.field .fields.group .field{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;vertical-align:top;margin:0!important}.fieldset>.field .fields.group .field .label,.fieldset .fields>.field .fields.group .field .label{width:auto;float:none;text-align:left;padding-right:0}.fieldset>.field .fields.group .field .control,.fieldset .fields>.field .fields.group .field .control{float:none;width:auto}.fieldset>.field .fields.group.group-2 .field,.fieldset .fields>.field .fields.group.group-2 .field{width:50%!important;display:inline-block}.fieldset>.field .fields.group.group-3 .field,.fieldset .fields>.field .fields.group.group-3 .field{width:33.3%!important;display:inline-block}.fieldset>.field .fields.group.group-4 .field,.fieldset .fields>.field .fields.group.group-4 .field{width:25%!important;display:inline-block}.fieldset>.field .fields.group.group-5 .field,.fieldset .fields>.field .fields.group.group-5 .field{width:20%!important;display:inline-block}.fieldset>.field .addon,.fieldset .fields>.field .addon{display:inline-flex;flex-wrap:nowrap;padding:0;width:100%}.fieldset>.field .addon textarea,.fieldset .fields>.field .addon textarea,.fieldset>.field .addon select,.fieldset .fields>.field .addon select,.fieldset>.field .addon input,.fieldset .fields>.field .addon input{order:2;box-shadow:none;display:inline-block;margin:0;width:auto;flex-basis:100%}.fieldset>.field .addon .addbefore,.fieldset .fields>.field .addon .addbefore,.fieldset>.field .addon .addafter,.fieldset .fields>.field .addon .addafter{order:3;display:inline-block;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;border:1px solid #c2c2c2;border-radius:1px;height:32px;width:100%;padding:0 10px;font-size:14px;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;line-height:1.42857143;font-style:normal;color:#333;background-clip:padding-box;vertical-align:baseline;width:auto;white-space:nowrap;vertical-align:middle}.fieldset>.field .addon .addbefore:disabled,.fieldset .fields>.field .addon .addbefore:disabled,.fieldset>.field .addon .addafter:disabled,.fieldset .fields>.field .addon .addafter:disabled{opacity:.5}.fieldset>.field .addon .addbefore,.fieldset .fields>.field .addon .addbefore{float:left;order:1}.fieldset>.field .note,.fieldset .fields>.field .note{font-size:12px;font-size:1.2rem;margin:3px 0 0;padding:0;display:inline-block;text-decoration:none}.fieldset>.field .note:before,.fieldset .fields>.field .note:before{font-family:"icons-blank-theme";content:'\e618';font-size:24px;line-height:12px;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.fieldset>.field.choice .label,.fieldset .fields>.field.choice .label{font-weight:400}.field .tooltip{position:relative;display:inline-block}.field .tooltip .tooltip-content{z-index:100;background:#fff;min-width:210px;max-width:360px;padding:12px 16px;display:none;position:absolute;text-align:left;font-size:14px;font-size:1.4rem;color:#333;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.4;border:1px solid #bbb;left:100%;top:0;margin-left:5px}.field .tooltip .tooltip-content:after,.field .tooltip .tooltip-content:before{border:solid transparent;content:'';height:0;width:0;position:absolute}.field .tooltip .tooltip-content:after{border-color:transparent;border-width:5px}.field .tooltip .tooltip-content:before{border-color:transparent;border-width:6px}.field .tooltip .tooltip-content:after,.field .tooltip .tooltip-content:before{right:100%}.field .tooltip .tooltip-content:after{border-right-color:#fff;margin-top:-5px;top:15px}.field .tooltip .tooltip-content:before{border-right-color:#bbb;margin-top:-6px;top:15px}.field .tooltip>:first-child{cursor:help}.field .tooltip>:first-child:hover+.tooltip-content,.field .tooltip>:first-child:focus+.tooltip-content,.field .tooltip:hover>.tooltip-content{display:block}.field .tooltip .tooltip-content{min-width:200px;white-space:normal}input:focus~.tooltip .tooltip-content,select:focus~.tooltip .tooltip-content{display:block}button,.cart.table.wrapper .cart.items .action{border-radius:3px}button:active,button:focus,.cart.table.wrapper .cart.items .action:active,.cart.table.wrapper .cart.items .action:focus{box-shadow:inset 0 2px 1px rgba(0,0,0,.12)}@media only screen and (max-width: 99999px){.product.data.items{ position:relative;z-index:1}.product.data.items:before,.product.data.items:after{content:"";display:table}.product.data.items:after{clear:both}.product.data.items>.item.title{float:left}.product.data.items>.item.title>.switch{display:block;position:relative;z-index:2;height:20px}.product.data.items>.item.content{margin-top:20px;width:100%;float:right;margin-left:-100%;display:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.product.data.items>.item.content:before,.product.data.items>.item.content:after{content:"";display:table}.product.data.items>.item.content:after{clear:both}.product.data.items>.item.content.active{display:block}.product.data.items>.item.title{margin:0 5px 0 0}.product.data.items>.item.title>.switch{font-size:14px;font-size:1.4rem;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:600;font-style:normal;line-height:20px;color:#7d7d7d;text-decoration:none;height:20px;padding:5px 20px 5px 20px;border:1px solid #d1d1d1;background-color:#f0f0f0;border-bottom:0}.product.data.items>.item.title>.switch:visited{color:#7d7d7d;text-decoration:none}.product.data.items>.item.title>.switch:hover{color:#7d7d7d;text-decoration:none}.product.data.items>.item.title>.switch:active{color:#333;text-decoration:none}.product.data.items>.item.title>.switch:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.product.data.items>.item.title:not(.disabled)>.switch:focus,.product.data.items>.item.title:not(.disabled)>.switch:hover{background-color:#fcfcfc}.product.data.items>.item.title:not(.disabled)>.switch:active,.product.data.items>.item.title.active>.switch,.product.data.items>.item.title.active>.switch:focus,.product.data.items>.item.title.active>.switch:hover{background-color:#fff;color:#333}.product.data.items>.item.title.active>.switch{padding-bottom:6px}.product.data.items>.item.content{background-color:#fff;margin-top:31px;padding:20px 20px 20px 20px;border-top:1px solid #d1d1d1}}@media only screen and (max-width: 768px){.product.data.items{ margin:0;padding:0}.product.data.items>.item.title{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;float:none;width:100%}.product.data.items>.item.title>.switch{display:block}.product.data.items>.item.content{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;float:none;margin:0;display:none}.product.data.items>.item.content:before,.product.data.items>.item.content:after{content:"";display:table}.product.data.items>.item.content:after{clear:both}.product.data.items>.item.content.active{display:block}.product.data.items>.item.title{margin:0 0 5px}.product.data.items>.item.title>.switch{border:1px solid #d1d1d1;background-color:#f0f0f0;font-size:18px;font-size:1.8rem;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:600;font-style:normal;line-height:40px;color:#7d7d7d;text-decoration:none;height:40px;padding:5px 20px 5px 20px}.product.data.items>.item.title>.switch:visited{color:#7d7d7d;text-decoration:none}.product.data.items>.item.title>.switch:hover{color:#7d7d7d;text-decoration:#7d7d7d}.product.data.items>.item.title>.switch:active{color:#333;text-decoration:none}.product.data.items>.item.title>.switch:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.product.data.items>.item.title:not(.disabled)>.switch:focus,.product.data.items>.item.title:not(.disabled)>.switch:hover{background-color:#fcfcfc}.product.data.items>.item.title:not(.disabled)>.switch:active,.product.data.items>.item.title.active>.switch,.product.data.items>.item.title.active>.switch:focus,.product.data.items>.item.title.active>.switch:hover{background-color:#fff;padding-bottom:5px}.product.data.items>.item.content{margin:0;padding:20px 20px 20px 20px;background-color:#fff;border:1px solid #d1d1d1}}.pages>.label{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.pages .items{font-size:0;line-height:0;letter-spacing:-1px;white-space:nowrap;margin:0;padding:0;list-style-type:none;list-style-image:none;display:inline-block;font-weight:400}.pages .item{font-size:1.2rem;font-size:12px;line-height:32px;letter-spacing:normal;margin:0 1px;display:inline-block}.pages .item .label{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.pages a.page{padding:0 10px;color:#1979c3;display:inline-block;text-decoration:none}.pages a.page:visited{color:#800080}.pages a.page:hover{color:#006bb4;text-decoration:none}.pages a.page:active{color:#ff5501}.pages strong.page{font-size:1.2rem;font-size:12px;line-height:32px;letter-spacing:normal;padding:0 10px;color:#333;display:inline-block;font-weight:700}.pages .action{border:1px solid #d1d1d1;padding:0;color:#7d7d7d;display:inline-block;text-decoration:none}.pages .action:visited{color:#7d7d7d}.pages .action:hover{color:#7d7d7d;text-decoration:none}.pages .action:active{color:#7d7d7d}.pages .action.next{display:inline-block;text-decoration:none}.pages .action.next:visited:before{color:#7d7d7d}.pages .action.next:active:before{color:#7d7d7d}.pages .action.next>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.pages .action.next:before{font-family:"icons-blank-theme";content:'\e608';font-size:32px;line-height:inherit;color:#7d7d7d;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center}.pages .action.next:hover:before{color:#7d7d7d}.pages .action.next:active:before{color:#7d7d7d}.pages .action.previous{display:inline-block;text-decoration:none}.pages .action.previous:visited:before{color:#7d7d7d}.pages .action.previous:active:before{color:#7d7d7d}.pages .action.previous>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.pages .action.previous:before{font-family:"icons-blank-theme";content:'\e617';font-size:32px;line-height:inherit;color:#7d7d7d;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center}.pages .action.previous:hover:before{color:#7d7d7d}.pages .action.previous:active:before{color:#7d7d7d}.rating.summary{overflow:hidden}.rating.summary .rating.result{width:100px;display:inline-block;vertical-align:middle;position:relative}.rating.summary .rating.result:before{position:absolute;z-index:1;top:0;left:0;width:100%;display:block;font-family:'icons-blank-theme';content:'\e605' '\e605' '\e605' '\e605' '\e605';font-style:normal;font-size:28px;line-height:28px;height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#ccc}.rating.summary .rating.result>span{display:block;overflow:hidden}.rating.summary .rating.result>span:before{position:relative;z-index:2;display:block;font-family:'icons-blank-theme';content:'\e605' '\e605' '\e605' '\e605' '\e605';font-style:normal;font-size:28px;line-height:28px;height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#ff5601}.rating.summary .rating.result>span span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.product.reviews.summary .label,.data.table.reviews .label{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.control.rating.vote{overflow:hidden}.control.rating.vote:before{letter-spacing:-10px;font-family:'icons-blank-theme';font-style:normal;font-size:28px;line-height:28px;height:28px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#ccc;content:'\e605' '\e605' '\e605' '\e605' '\e605';position:absolute;z-index:1;display:block}.control.rating.vote input[type="radio"]{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.control.rating.vote input[type="radio"]:focus+label:before,.control.rating.vote input[type="radio"]:checked+label:before{opacity:1}.control.rating.vote label{position:absolute;display:block;cursor:pointer}.control.rating.vote label span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.control.rating.vote label:before{letter-spacing:-10px;font-family:'icons-blank-theme';font-style:normal;font-size:28px;line-height:28px;height:28px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#ff5601;opacity:0}.control.rating.vote label:hover:before{opacity:1}.control.rating.vote label:hover~label:before{opacity:0}.control.rating.vote .rating-5{z-index:2}.control.rating.vote .rating-5:before{content:'\e605' '\e605' '\e605' '\e605' '\e605'}.control.rating.vote .rating-4{z-index:3}.control.rating.vote .rating-4:before{content:'\e605' '\e605' '\e605' '\e605'}.control.rating.vote .rating-3{z-index:4}.control.rating.vote .rating-3:before{content:'\e605' '\e605' '\e605'}.control.rating.vote .rating-2{z-index:5}.control.rating.vote .rating-2:before{content:'\e605' '\e605'}.control.rating.vote .rating-1{z-index:6}.control.rating.vote .rating-1:before{content:'\e605'}.actions.toolbar:before,.actions.toolbar:after{content:"";display:table}.actions.toolbar:after{clear:both}.actions.toolbar .primary{float:left}.actions.toolbar .secondary{float:right}.actions.toolbar .primary,.actions.toolbar .secondary{display:inline-block}.actions.toolbar .primary a.action,.actions.toolbar .secondary a.action{display:inline-block}.actions.toolbar .primary .action{margin:0 5px 0 0}.actions.toolbar .secondary a.action{margin-top:6px}.actions.toolbar .primary a.action{display:inline-block;text-decoration:none}.actions.toolbar .primary a.action:hover,.actions.toolbar .primary a.action:active,.actions.toolbar .primary a.action:focus{text-decoration:none}.actions.toolbar .secondary a.action:visited{color:#1979c3}.form .actions.toolbar{margin-left:25.8%}.breadcrumbs{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;margin:0 auto;padding-left:20px;padding-right:20px;width:auto;min-width:1000px;max-width:1280px}.breadcrumbs .label{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.breadcrumbs .items{font-size:12px;font-size:1.2rem;color:#a3a3a3;margin:0;padding:0;list-style-type:none;list-style-image:none}.breadcrumbs .items>li{display:inline-block;vertical-align:top}.breadcrumbs a{color:#333;text-decoration:none}.breadcrumbs a:visited{color:#333;text-decoration:none}.breadcrumbs a:hover{color:#333;text-decoration:underline}.breadcrumbs a:active{color:#333;text-decoration:none}.breadcrumbs strong{font-weight:400}.breadcrumbs .item:not(:last-child):after{color:#a3a3a3;content:'>'}.paypal.after:after{content:"- " attr(data-label) " -";display:block;margin:0 5px 10px;text-transform:uppercase}.paypal.before:before{content:"- " attr(data-label) " -";display:block;margin:10px 5px;text-align:center;text-transform:uppercase}.column.main .block.addbysku .title{margin-bottom:30px}.column.main .block.addbysku .fields{position:relative;margin-bottom:45px}.column.main .block.addbysku .fields:last-child{margin-bottom:0}.column.main .block.addbysku .fields .field .control{width:50%}.column.main .block.addbysku .fields .action.remove{background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400;line-height:normal;position:absolute;top:4px;margin-left:75.8%}.column.main .block.addbysku .fields .action.remove:focus,.column.main .block.addbysku .fields .action.remove:active{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;background:0;border:0}.column.main .block.addbysku .fields .action.remove:hover{background:0;border:0}.column.main .block.addbysku .fields .action.remove.disabled,.column.main .block.addbysku .fields .action.remove[disabled],fieldset[disabled] .column.main .block.addbysku .fields .action.remove{cursor:not-allowed;pointer-events:none;opacity:.5}.column.main .block.addbysku .actions.toolbar .secondary{float:left}.column.main .block.addbysku .field .note{display:block}.column.main .block.addbysku .field .note p:first-child{display:inline-block}.actions.bundle{margin:10px 0}.actions.bundle .action.primary.customize{background-image:none;background-color:#1979c3;padding:0 15px;color:#fff;border:1px solid #1979c3;cursor:pointer;display:inline-block;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;line-height:30px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;vertical-align:middle;line-height:50px;padding:0 17px;font-size:18px;font-size:1.8rem}.actions.bundle .action.primary.customize:focus,.actions.bundle .action.primary.customize:active{background-color:#006bb4;border:1px solid #006bb4;outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;color:#fff}.actions.bundle .action.primary.customize:hover{background-color:#006bb4;border:1px solid #006bb4;color:#fff}.actions.bundle .action.primary.customize.disabled,.actions.bundle .action.primary.customize[disabled],fieldset[disabled] .actions.bundle .action.primary.customize{cursor:default;pointer-events:none;opacity:.5}.bundle.options.container{clear:both;margin-bottom:40px}.bundle.options.container .legend.title{font-size:26px;font-size:2.6rem;font-weight:300;line-height:1.1;margin-top:25px;margin-top:2.5rem;margin-bottom:20px;margin-bottom:2rem}.bundle.options.container .product.add.form{display:none}.bundle.options.container .field.option{margin:0 0 20px;border:0}.bundle.options.container .field.option:not(.choice)>.label{display:inline-block;width:auto;float:none;text-align:left;margin:0 0 5px}.bundle.options.container .field.option.choice:before,.bundle.options.container .field.option.no-label:before{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;content:" ";height:auto;float:none;width:auto;padding:0}.bundle.options.container .field.option>.control{float:none;width:auto}.bundle.options.container .field.option>.label{font-size:14px;font-size:1.4rem;font-weight:700}.bundle.options.container .field.option>.label+br{display:none}.bundle.options.container .field.option.required>.label:after{content:'*';font-size:12px;font-size:1.2rem;color:#e02b27;margin:0 0 0 5px}.bundle.options.container .field.option .nested .field{margin:5px 0}.bundle.options.container .field.option.choice>.label{display:inline}.bundle.options.container .field.option.choice>input{vertical-align:top}.bundle.options.container .field.option .fields.group{display:flex;letter-spacing:-.31em;*letter-spacing:normal;word-spacing:-.43em;margin-right:- 20px}.bundle.options.container .field.option .fields.group>*{letter-spacing:normal;word-spacing:normal}.bundle.options.container .field.option .fields.group .field{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;vertical-align:top;margin:0!important}.bundle.options.container .field.option .fields.group .field .label{width:auto;float:none;text-align:left;padding-right:0}.bundle.options.container .field.option .fields.group .field .control{float:none;width:auto}.bundle.options.container .field.option .fields.group.group-2 .field{width:50%!important;display:inline-block}.bundle.options.container .field.option .fields.group.group-3 .field{width:33.3%!important;display:inline-block}.bundle.options.container .field.option .fields.group.group-4 .field{width:25%!important;display:inline-block}.bundle.options.container .field.option .fields.group.group-5 .field{width:20%!important;display:inline-block}.bundle.options.container .field.option .addon{display:inline-flex;flex-wrap:nowrap;padding:0;width:100%}.bundle.options.container .field.option .addon textarea,.bundle.options.container .field.option .addon select,.bundle.options.container .field.option .addon input{order:2;box-shadow:none;display:inline-block;margin:0;width:auto;flex-basis:100%}.bundle.options.container .field.option .addon .addbefore,.bundle.options.container .field.option .addon .addafter{order:3;display:inline-block;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;border:1px solid #c2c2c2;border-radius:1px;height:32px;width:100%;padding:0 10px;font-size:14px;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;line-height:1.42857143;font-style:normal;color:#333;background-clip:padding-box;vertical-align:baseline;width:auto;white-space:nowrap;vertical-align:middle}.bundle.options.container .field.option .addon .addbefore:disabled,.bundle.options.container .field.option .addon .addafter:disabled{opacity:.5}.bundle.options.container .field.option .addon .addbefore{float:left;order:1}.bundle.options.container .field.option .note{font-size:12px;font-size:1.2rem;margin:3px 0 0;padding:0;display:inline-block;text-decoration:none}.bundle.options.container .field.option .note:before{font-family:"icons-blank-theme";content:'\e618';font-size:24px;line-height:12px;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.bundle.options.container .input-text.qty{width:50px}.bundle.options.container .product.options.wrapper{float:left;width:57%;margin-bottom:30px}.layout-2-left .bundle.options.container .product.options.wrapper,.layout-2-right .bundle.options.container .product.options.wrapper{width:48%}.layout-3 .bundle.options.container .product.options.wrapper{width:48%}.bundle.options.container .product.options.bottom{width:57%;clear:both}.layout-2-left .bundle.options.container .product.options.bottom,.layout-2-right .bundle.options.container .product.options.bottom{width:48%}.layout-3 .bundle.options.container .product.options.bottom{width:48%}.bundle.options.container .price-box .price{font-weight:700;font-size:18px}.bundle.options.container .block.bundle.summary{float:right;position:relative;width:40%;padding:10px 20px;background:#e8e8e8;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.layout-2-left .bundle.options.container .block.bundle.summary,.layout-2-right .bundle.options.container .block.bundle.summary{width:48%}.layout-3 .bundle.options.container .block.bundle.summary{width:48%}.bundle.options.container .block.bundle.summary>.title>strong{font-size:26px;font-size:2.6rem;font-weight:300;line-height:1.1;margin-top:25px;margin-top:2.5rem;margin-bottom:20px;margin-bottom:2rem}.bundle.options.container .block.bundle.summary .bundle.summary{margin-top:30px}.bundle.options.container .block.bundle.summary .bundle.summary>.subtitle{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem;display:block}.bundle.options.container .block.bundle.summary .bundle.items>li{margin-bottom:10px}.bundle.options.container .block.bundle.summary .tocart .actions{margin:10px 0}.bundle.options.container .block.bundle.summary .tocart .action.primary{background-image:none;background-color:#1979c3;padding:0 15px;color:#fff;border:1px solid #1979c3;cursor:pointer;display:inline-block;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;line-height:30px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;vertical-align:middle}.bundle.options.container .block.bundle.summary .tocart .action.primary:focus,.bundle.options.container .block.bundle.summary .tocart .action.primary:active{background-color:#006bb4;border:1px solid #006bb4;outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;color:#fff}.bundle.options.container .block.bundle.summary .tocart .action.primary:hover{background-color:#006bb4;border:1px solid #006bb4;color:#fff}.bundle.options.container .block.bundle.summary .tocart .action.primary.disabled,.bundle.options.container .block.bundle.summary .tocart .action.primary[disabled],fieldset[disabled] .bundle.options.container .block.bundle.summary .tocart .action.primary{cursor:default;pointer-events:none;opacity:.5}.bundle.options.container .block.bundle.summary .addto.links .action{background-image:none;background-color:#f2f2f2;padding:0 15px;color:#333;border:1px solid #cdcdcd;cursor:pointer;display:inline-block;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;line-height:30px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;margin:0;vertical-align:middle;margin-bottom:5px}.bundle.options.container .block.bundle.summary .addto.links .action:focus,.bundle.options.container .block.bundle.summary .addto.links .action:active{background-color:#e2e2e2;border:1px solid #cdcdcd;outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;color:#333}.bundle.options.container .block.bundle.summary .addto.links .action:hover{background-color:#e2e2e2;border:1px solid #cdcdcd;color:#555}.bundle.options.container .block.bundle.summary .addto.links .action.disabled,.bundle.options.container .block.bundle.summary .addto.links .action[disabled],fieldset[disabled] .bundle.options.container .block.bundle.summary .addto.links .action{cursor:default;pointer-events:none;opacity:.5}.bundle.options.container p.required{color:#e02b27}.layout-1 .products.grid .item.product{width:20%}.layout-2-left .products.grid .item.product{width:25%}.layout-2-right .products.grid .item.product{width:25%}.layout-3 .products.grid .item.product{width:33.33333333%}.old-price,.old.price{text-decoration:line-through}.actual.price{font-weight:700}.products.wrapper.grid .item.product{padding:0 20px 20px;margin:0 0 30px}.products.wrapper.list .item.product{margin-bottom:80px}.products.wrapper.list .item.product>.product{display:table;width:100%;table-layout:fixed}.products.wrapper.list .item.product .product.photo{display:table-cell;vertical-align:top;width:30%;padding-right:35px}.products.wrapper.list .item.product .product.details{display:table-cell;vertical-align:top}.products.wrapper.list .item.product .product.name{font-size:18px;margin-bottom:20px}.products.wrapper.list .item.product .price-box{width:30%;margin-right:2%;float:left}.products.wrapper.list .item.product .product.description{margin-top:30px;color:#111}.products.toolbar{display:table;width:100%;padding:10px;background:#f0f0f0;margin-bottom:40px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.products.toolbar .settings{display:table-cell;vertical-align:middle;text-align:left}.products.toolbar .pager{display:table-cell;vertical-align:middle;text-align:right}.products.toolbar .pages{display:table-cell;vertical-align:middle}.products.toolbar .modes{display:inline;margin-right:20px}.products.toolbar .modes .label{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.products.toolbar .modes .mode{border:1px solid #d1d1d1;width:37px;text-align:center;color:#7d7d7d}.products.toolbar .modes .mode>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.products.toolbar .modes .mode.active{background:#e5e5e5;color:#c7c7c7}.products.toolbar .modes .mode+.mode{margin-left:-4px;border-left:0}.products.toolbar .modes .mode.grid{display:inline-block;text-decoration:none}.products.toolbar .modes .mode.grid:before{font-family:"icons-blank-theme";content:'\e60d';font-size:26px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.products.toolbar .modes .mode.list{display:inline-block;text-decoration:none}.products.toolbar .modes .mode.list:before{font-family:"icons-blank-theme";content:'\e60b';font-size:26px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.products.toolbar .sorter{display:inline}.products.toolbar .sorter select{width:auto}.products.toolbar .sorter .action.sort.asc{display:inline-block;text-decoration:none}.products.toolbar .sorter .action.sort.asc:before{font-family:"icons-blank-theme";content:'\e614';font-size:27px;line-height:inherit;color:#7d7d7d;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.products.toolbar .sorter .action.sort.asc>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.products.toolbar .sorter .action.sort.desc{display:inline-block;text-decoration:none}.products.toolbar .sorter .action.sort.desc:before{font-family:"icons-blank-theme";content:'\e613';font-size:27px;line-height:inherit;color:#7d7d7d;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.products.toolbar .sorter .action.sort.desc>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.products.toolbar .limiter{display:inline;margin-left:20px}.products.toolbar .limiter select{width:auto}.products.toolbar .amount{display:inline}.block.filter .subtitle{display:block;font-size:12px;font-size:1.2rem;font-weight:700;line-height:1.1;margin-top:20px;margin-top:2rem;margin-bottom:20px;margin-bottom:2rem}.block.filter .options{margin:0}.block.filter .options>dt{font-size:12px;font-size:1.2rem;font-weight:700;line-height:1.1;margin-top:20px;margin-top:2rem;margin-bottom:20px;margin-bottom:2rem}.block.filter .options>dd{margin:0 0 30px}.block.filter .options .count{color:#7d7d7d}.block.filter .options .count:before{content:"("}.block.filter .options .count:after{content:")"}.block.filter .filtered .item{position:relative;padding-left:25px}.block.filter .filtered .item .label{font-weight:700}.block.filter .filtered .item .action.remove{position:absolute;top:-4px;left:0;display:inline-block;text-decoration:none}.block.filter .filtered .item .action.remove:before{font-family:"icons-blank-theme";content:'\e616';font-size:28px;line-height:1;color:#7d7d7d;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.block.filter .filtered .item .action.remove>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.block.filter .filtered+.actions{margin-bottom:30px}.layout-1 .product.info.main{width:40%;float:right}.layout-1 .product.media{float:left;width:57%}.layout-2-left .product.info.main,.layout-2-right .product.info.main{width:48%;float:right}.layout-2-left .product.media,.layout-2-right .product.media{float:left;width:50%}.layout-3 .product.info.main{width:48%;float:right}.layout-3 .product.media{float:left;width:50%}.product.media .photo.image{display:block;max-width:100%;height:auto}.product.media .notice{margin:10px 0;color:#7d7d7d;font-size:12px;font-size:1.2rem}.product.media .product.thumbs{margin:20px 0 30px}.product.media .items.thumbs{margin:0;padding:0;list-style-type:none;list-style-image:none}.product.media .items.thumbs>li{display:inline-block;vertical-align:top}.product.media .items.thumbs .active{display:block;line-height:1;outline:1px solid #ff5501}.product.info.detailed{clear:both}.product.info.detailed .table.additional.attributes{width:auto}.product.info.detailed .table.additional.attributes>caption{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.product.info.detailed .table.additional.attributes>thead>tr>td,.product.info.detailed .table.additional.attributes>tbody>tr>td,.product.info.detailed .table.additional.attributes>tfoot>tr>td{padding:1.5px 5px 10px 5px}.product.info.detailed .table.additional.attributes>thead>tr>th,.product.info.detailed .table.additional.attributes>tbody>tr>th,.product.info.detailed .table.additional.attributes>tfoot>tr>th{padding:1.5px 30px 10px 0}.product.info.main .stock.available,.product.info.main .stock.unavailable{display:inline-block;vertical-align:top;margin-bottom:5px;margin-right:20px}.product.info.main .product.attibute.sku{display:inline-block;vertical-align:top;margin-bottom:10px;color:#7d7d7d}.product.info.main .product.attibute.sku>.value{display:inline-block;vertical-align:top}.product.info.main .product.attibute.overview{margin:20px 0}.product.info.main .product.alert{margin:10px 0}.product.info.main .product.options.wrapper .field{margin:0 0 20px;border:0}.product.info.main .product.options.wrapper .field:not(.choice)>.label{display:inline-block;width:auto;float:none;text-align:left;margin:0 0 5px}.product.info.main .product.options.wrapper .field.choice:before,.product.info.main .product.options.wrapper .field.no-label:before{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;content:" ";height:auto;float:none;width:auto;padding:0}.product.info.main .product.options.wrapper .field>.control{float:none;width:auto}.product.info.main .product.options.wrapper .field>.label{font-size:14px;font-size:1.4rem;font-weight:700}.product.info.main .product.options.wrapper .field>.label+br{display:none}.product.info.main .product.options.wrapper .field.required>.label:after{content:'*';font-size:12px;font-size:1.2rem;color:#e02b27;margin:0 0 0 5px}.product.info.main .product.options.wrapper .field .nested .field{margin:5px 0}.product.info.main .product.options.wrapper .field.choice>.label{display:inline}.product.info.main .product.options.wrapper .field.choice>input{vertical-align:top}.product.info.main .product.options.wrapper .field .fields.group{display:flex;letter-spacing:-.31em;*letter-spacing:normal;word-spacing:-.43em;margin-right:- 20px}.product.info.main .product.options.wrapper .field .fields.group>*{letter-spacing:normal;word-spacing:normal}.product.info.main .product.options.wrapper .field .fields.group .field{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;vertical-align:top;margin:0!important}.product.info.main .product.options.wrapper .field .fields.group .field .label{width:auto;float:none;text-align:left;padding-right:0}.product.info.main .product.options.wrapper .field .fields.group .field .control{float:none;width:auto}.product.info.main .product.options.wrapper .field .fields.group.group-2 .field{width:50%!important;display:inline-block}.product.info.main .product.options.wrapper .field .fields.group.group-3 .field{width:33.3%!important;display:inline-block}.product.info.main .product.options.wrapper .field .fields.group.group-4 .field{width:25%!important;display:inline-block}.product.info.main .product.options.wrapper .field .fields.group.group-5 .field{width:20%!important;display:inline-block}.product.info.main .product.options.wrapper .field .addon{display:inline-flex;flex-wrap:nowrap;padding:0;width:100%}.product.info.main .product.options.wrapper .field .addon textarea,.product.info.main .product.options.wrapper .field .addon select,.product.info.main .product.options.wrapper .field .addon input{order:2;box-shadow:none;display:inline-block;margin:0;width:auto;flex-basis:100%}.product.info.main .product.options.wrapper .field .addon .addbefore,.product.info.main .product.options.wrapper .field .addon .addafter{order:3;display:inline-block;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;border:1px solid #c2c2c2;border-radius:1px;height:32px;width:100%;padding:0 10px;font-size:14px;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;line-height:1.42857143;font-style:normal;color:#333;background-clip:padding-box;vertical-align:baseline;width:auto;white-space:nowrap;vertical-align:middle}.product.info.main .product.options.wrapper .field .addon .addbefore:disabled,.product.info.main .product.options.wrapper .field .addon .addafter:disabled{opacity:.5}.product.info.main .product.options.wrapper .field .addon .addbefore{float:left;order:1}.product.info.main .product.options.wrapper .field .note{font-size:12px;font-size:1.2rem;margin:3px 0 0;padding:0;display:inline-block;text-decoration:none}.product.info.main .product.options.wrapper .field .note:before{font-family:"icons-blank-theme";content:'\e618';font-size:24px;line-height:12px;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.product.info.main .price-box .price{font-weight:700;font-size:18px}.product.info.main .box.tocart{display:table;margin:20px 0}.product.info.main .box.tocart .field.qty{display:table-cell;vertical-align:bottom;padding-right:15px}.product.info.main .box.tocart .input-text.qty{height:52px;width:52px;text-align:center}.product.info.main .box.tocart .actions{display:table-cell;vertical-align:bottom}.product.info.main .box.tocart .action.tocart{background-image:none;background-color:#1979c3;padding:0 15px;color:#fff;border:1px solid #1979c3;cursor:pointer;display:inline-block;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;line-height:30px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;vertical-align:middle;line-height:50px;padding:0 17px;font-size:18px;font-size:1.8rem}.product.info.main .box.tocart .action.tocart:focus,.product.info.main .box.tocart .action.tocart:active{background-color:#006bb4;border:1px solid #006bb4;outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;color:#fff}.product.info.main .box.tocart .action.tocart:hover{background-color:#006bb4;border:1px solid #006bb4;color:#fff}.product.info.main .box.tocart .action.tocart.disabled,.product.info.main .box.tocart .action.tocart[disabled],fieldset[disabled] .product.info.main .box.tocart .action.tocart{cursor:default;pointer-events:none;opacity:.5}.product.info.main .addto{margin:20px 0}.product.info.main .action.tocompare{line-height:22px;padding:0 8px;font-size:11px;font-size:1.1rem}.prices.tier.items{background:#f5f5f5;padding:10px 15px;margin:10px 0}.minimal-price-link,.price-excluding-tax,.price-including-tax{white-space:nowrap;display:inline-block}.map.popup{width:380px;background-color:#fff;padding:22px;border:1px solid #aeaeae;-webkit-box-shadow:0 3px 3px rgba(0,0,0,.15);-moz-box-shadow:0 3px 3px rgba(0,0,0,.15);box-shadow:0 3px 3px rgba(0,0,0,.15);display:none;position:fixed;top:20%;left:50%;margin-top:10px;margin-left:0;z-index:1001;opacity:0;-webkit-transition:opacity .3s linear;-moz-transition:opacity .3s linear;transition:opacity .3s linear;position:absolute}.map.popup .popup.header .title{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem}.map.popup .popup.content{margin:10px 0 0}.map.popup .popup.actions .action.close{position:absolute;display:inline-block;background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400;top:10px;right:10px}.map.popup .popup.actions .action.close>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.map.popup .popup.actions .action.close:before{font-family:"icons-blank-theme";content:'\e616';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.map.popup .popup.actions .action.close:hover:before{color:inherit}.map.popup .popup.actions .action.close:active:before{color:inherit}.map.popup .popup.actions .action.close:focus,.map.popup .popup.actions .action.close:active{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;background:0;border:0}.map.popup .popup.actions .action.close:hover{background:0;border:0}.map.popup .popup.actions .action.close.disabled,.map.popup .popup.actions .action.close[disabled],fieldset[disabled] .map.popup .popup.actions .action.close{cursor:not-allowed;pointer-events:none;opacity:.5}.map.popup.active{opacity:1}.map.popup .form.map.checkout{float:right}.map.popup .action.tocart{background-image:none;background-color:#1979c3;padding:0 15px;color:#fff;border:1px solid #1979c3;cursor:pointer;display:inline-block;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;line-height:30px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;vertical-align:middle}.map.popup .action.tocart:focus,.map.popup .action.tocart:active{background-color:#006bb4;border:1px solid #006bb4;outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;color:#fff}.map.popup .action.tocart:hover{background-color:#006bb4;border:1px solid #006bb4;color:#fff}.map.popup .action.tocart.disabled,.map.popup .action.tocart[disabled],fieldset[disabled] .map.popup .action.tocart{cursor:default;pointer-events:none;opacity:.5}body.catalog-product-compare-index .action.print{float:right;margin:15px 0}.comparison.wrapper{clear:both;position:relative;z-index:1;margin-bottom:50px}.comparison.container{overflow-x:auto}.data.comparison{table-layout:fixed;margin-bottom:0}.data.comparison caption,.data.comparison .cell.label.remove,.data.comparison .cell.label.product{font:0/0 a}.data.comparison .cell.label{font-weight:700;border-right:1px solid #e5e5e5}.data.comparison .cell.label .attribute.label{display:block;width:100%;word-break:break-all}.data.comparison .cell{width:140px;padding:15px;vertical-align:top}.data.comparison .cell .attibute.value{width:100%;overflow:hidden}.data.comparison .cell.product.info,.data.comparison .cell.product.label{border-bottom:1px solid #e5e5e5}.data.comparison .cell.attribute{font-size:13px}.data.comparison .cell.attribute img{max-width:100%;height:auto}.data.comparison td:last-child{border-right:1px solid #e5e5e5}.data.comparison .product.photo{text-align:center;display:block;margin:0 auto 15px}.data.comparison .product.photo .img.photo.container{display:inline-block!important}.data.comparison .actions,.data.comparison .price-box,.data.comparison .product.rating,.data.comparison .product.name{display:block;margin:15px 0}.data.comparison .action.tocart{background-image:none;background-color:#1979c3;padding:0 15px;color:#fff;border:1px solid #1979c3;cursor:pointer;display:inline-block;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;line-height:30px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;vertical-align:middle}.data.comparison .action.tocart:focus,.data.comparison .action.tocart:active{background-color:#006bb4;border:1px solid #006bb4;outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;color:#fff}.data.comparison .action.tocart:hover{background-color:#006bb4;border:1px solid #006bb4;color:#fff}.data.comparison .action.tocart.disabled,.data.comparison .action.tocart[disabled],fieldset[disabled] .data.comparison .action.tocart{cursor:default;pointer-events:none;opacity:.5}.data.comparison .addto.links{margin-top:15px}.data.comparison .addto.links .action.split,.data.comparison .addto.links .action.toggle{line-height:22px;padding:0 8px;font-size:11px;font-size:1.1rem}.data.comparison .addto.links .action.toggle{padding:0}.data.comparison .cell.remove{padding-top:0;padding-bottom:0;text-align:right}.comparison.headings{position:absolute;z-index:2;top:0;left:0;width:auto;background:#fff}.block.event{clear:both}.block.event.category{margin-top:10px;margin-bottom:25px}.block.event.category .content{padding:15px;text-align:center;min-height:67px}.block.event .ticker li{display:none;margin:0 3px}.block.event .ticker .value{font-size:21px}.block.event .ticker .label{display:block;font-size:12px}.block.event .dates .start,.block.event .dates .end{display:inline-block}.block.event .dates .date{font-size:21px}.block.event .dates .start:after{content:"\2013";margin:0 10px;display:inline-block}.block.event .content{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;position:relative}.block.event .content:before,.block.event .content:after{content:"";position:absolute;display:block;width:0;height:0;border-bottom-style:solid;pointer-events:none}.block.event .content:before{bottom:-30px;left:50%;margin-left:-15px;z-index:99;border:solid 15px}.block.event .content:after{bottom:-32px;left:50%;margin-left:-16px;z-index:98;border:solid 16px}.block.event .content .subtitle{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem;display:block;margin-top:0}.block.event.open .content,.block.event .open .content{background:#feebe5;border:1px solid #f99d84;color:#da370a}.block.event.open .content:before,.block.event .open .content:before{border-color:#feebe5 rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0)}.block.event.open .content:after,.block.event .open .content:after{border-color:#f99d84 rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0)}.block.event.upcoming .content,.block.event .upcoming .content{background:#daf2fa;border:1px solid #81d2ed;color:#1b92ba}.block.event.upcoming .content:before,.block.event .upcoming .content:before{border-color:#daf2fa rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0)}.block.event.upcoming .content:after,.block.event .upcoming .content:after{border-color:#81d2ed rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0)}.block.event.closed .content,.block.event .closed .content{background:#f7f7f7;border:1px solid #c3c3c3;color:#777}.block.event.closed .content:before,.block.event .closed .content:before{border-color:#f7f7f7 rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0)}.block.event.closed .content:after,.block.event .closed .content:after{border-color:#c3c3c3 rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0)}.columns .block.event{position:relative;z-index:2}.block.event .panel{position:relative;overflow:hidden;z-index:2}.block.event .panel>.slider{white-space:nowrap}.block.event .panel>.slider .item{display:inline-block;text-align:center;white-space:normal;vertical-align:top;width:16.35%}.sidebar .block.event .panel>.slider .item{width:100%}.block.event .panel>.slider .item img{max-width:100%}.block.event .panel>.slider .item>.event .content{border-left:0;border-right:0;padding:15px 0;min-height:156px}.block.event .panel>.slider .item>.event .subtitle{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem;display:block;margin-top:0}.block.event .panel>.slider .item>.event .dates .start,.block.event .panel>.slider .item>.event .dates .end{display:block}.block.event .panel>.slider .item>.event .dates .start:after{display:block}.block.event .panel>.slider .item>.event .dates .date{font-size:14px;font-weight:600}.block.event .panel>.slider .item>.event .dates .time{font-size:10px}.block.event .panel>.slider .item>.event .action.event{margin-top:15px;display:inline-block}.block.event .panel>.slider .item .action.show{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;display:block;padding:0}.block.event .panel>.slider .item .action.show .category.name{display:inline-block;padding:30px 10px 0}.block.event .action.slider{cursor:pointer;position:absolute;z-index:3;top:50%;margin-top:-15px}.block.event .action.slider.backward,.block.event .action.slider.forward{width:20px;overflow:hidden;opacity:.5;display:inline-block;text-decoration:none}.block.event .action.slider.backward>span,.block.event .action.slider.forward>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.block.event .action.slider.backward:before,.block.event .action.slider.forward:before{font-family:"icons-blank-theme";content:'\e617';font-size:80px;line-height:30px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.block.event .action.slider.backward:before,.block.event .action.slider.forward:before{margin-left:-30px}.block.event .action.slider.backward{left:0}.block.event .action.slider.forward{right:0}.block.event .action.slider.forward:before{content:'\e608'}.block.event .action.slider.inactive{cursor:default;display:none}.block.event .action.slider:hover{opacity:1}.block.search{float:right;padding-left:15px;position:relative;width:250px;z-index:1}.block.search input{padding-right:35px}.block.search .label{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.block.search .title{display:none}.block.search .action.search{position:absolute;right:10px;top:0;z-index:1;background-color:#f2f2f2;padding:0 15px;color:#333;border:1px solid #cdcdcd;cursor:pointer;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;line-height:30px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;margin:3px;vertical-align:middle;display:inline-block;background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400}.block.search .action.search>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.block.search .action.search:before{font-family:"icons-blank-theme";content:'\e615';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.block.search .action.search:hover:before{color:inherit}.block.search .action.search:active:before{color:inherit}.block.search .action.search:focus,.block.search .action.search:active{background-color:#e2e2e2;border:1px solid #cdcdcd;outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;color:#333}.block.search .action.search:hover{background-color:#e2e2e2;border:1px solid #cdcdcd;color:#555}.block.search .action.search.disabled,.block.search .action.search[disabled],fieldset[disabled] .block.search .action.search{cursor:default;pointer-events:none;opacity:.5}.block.search .action.search:focus,.block.search .action.search:active{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;background:0;border:0}.block.search .action.search:hover{background:0;border:0}.block.search .action.search.disabled,.block.search .action.search[disabled],fieldset[disabled] .block.search .action.search{cursor:not-allowed;pointer-events:none;opacity:.5}.block.search .nested{padding-top:5px;position:absolute}.cart.container:before,.cart.container:after{content:"";display:table}.cart.container:after{clear:both}.cart.summary{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;float:right;width:23%;background:#f5f5f5;margin-bottom:25px;padding:1px 15px 25px}.cart.summary>.title{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem;display:block}.cart.summary .block{margin-bottom:0}.cart.summary .block>.title{display:inline-block;text-decoration:none;border-top:1px solid #d1d1d1;cursor:pointer;display:block;font-weight:600;line-height:36px;margin-bottom:0;padding:0 20px 0 5px;position:relative}.cart.summary .block>.title:after{font-family:"icons-blank-theme";content:'\e622';font-size:30px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.cart.summary .block>.title:after{position:absolute;right:0;top:0}.cart.summary .block>.title.active:after{content:'\e617'}.cart.summary .block>.title strong{font-weight:400}.cart.summary .block .content{display:none}.cart.summary .block.active .content{display:block}.cart.summary .block .item.options{margin-left:0}.cart.summary .block.discount .field>.label{display:block;float:none;text-align:left;width:auto}.cart.summary .fieldset{margin:15px 0 25px 5px}.cart.summary .field{margin:0 0 10px;border:0}.cart.summary .field:not(.choice)>.label{display:inline-block;width:auto;float:none;text-align:left;margin:0 0 5px}.cart.summary .field.choice:before,.cart.summary .field.no-label:before{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;content:" ";height:auto;float:none;width:auto;padding:0}.cart.summary .field>.control{float:none;width:auto}.cart.summary .field>.label{font-size:14px;font-size:1.4rem;font-weight:700}.cart.summary .field>.label+br{display:none}.cart.summary .field.required>.label:after{content:'*';font-size:12px;font-size:1.2rem;color:#e02b27;margin:0 0 0 5px}.cart.summary .field .nested .field{margin:5px 0}.cart.summary .field.choice>.label{display:inline}.cart.summary .field.choice>input{vertical-align:top}.cart.summary .field .fields.group{display:flex;letter-spacing:-.31em;*letter-spacing:normal;word-spacing:-.43em;margin-right:- 20px}.cart.summary .field .fields.group>*{letter-spacing:normal;word-spacing:normal}.cart.summary .field .fields.group .field{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;vertical-align:top;margin:0!important}.cart.summary .field .fields.group .field .label{width:auto;float:none;text-align:left;padding-right:0}.cart.summary .field .fields.group .field .control{float:none;width:auto}.cart.summary .field .fields.group.group-2 .field{width:50%!important;display:inline-block}.cart.summary .field .fields.group.group-3 .field{width:33.3%!important;display:inline-block}.cart.summary .field .fields.group.group-4 .field{width:25%!important;display:inline-block}.cart.summary .field .fields.group.group-5 .field{width:20%!important;display:inline-block}.cart.summary .field .addon{display:inline-flex;flex-wrap:nowrap;padding:0;width:100%}.cart.summary .field .addon textarea,.cart.summary .field .addon select,.cart.summary .field .addon input{order:2;box-shadow:none;display:inline-block;margin:0;width:auto;flex-basis:100%}.cart.summary .field .addon .addbefore,.cart.summary .field .addon .addafter{order:3;display:inline-block;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;border:1px solid #c2c2c2;border-radius:1px;height:32px;width:100%;padding:0 10px;font-size:14px;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;line-height:1.42857143;font-style:normal;color:#333;background-clip:padding-box;vertical-align:baseline;width:auto;white-space:nowrap;vertical-align:middle}.cart.summary .field .addon .addbefore:disabled,.cart.summary .field .addon .addafter:disabled{opacity:.5}.cart.summary .field .addon .addbefore{float:left;order:1}.cart.summary .field .note{font-size:12px;font-size:1.2rem;margin:3px 0 0;padding:0;display:inline-block;text-decoration:none}.cart.summary .field .note:before{font-family:"icons-blank-theme";content:'\e618';font-size:24px;line-height:12px;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.cart.summary .field.note{font-size:12px}.cart.summary .field.postcode,.cart.summary .coupon .field{display:table-cell;position:relative;vertical-align:bottom;width:99%;z-index:1}.cart.summary .field.postcode div.mage-error,.cart.summary .coupon .field div.mage-error{position:absolute}.cart.summary .control{float:none;width:auto}.cart.summary .estimate .actions,.cart.summary .coupon .actions{display:table-cell;width:1%;white-space:nowrap;vertical-align:bottom}.cart.summary .action.quote,.cart.summary .action.apply,.cart.summary .action.cancel{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;border-top-left-radius:0;border-bottom-left-radius:0;margin-left:-1px}.cart.totals{border-top:1px solid #d1d1d1;padding-top:10px}.cart.totals .mark{padding-left:4px}.cart.totals .amount{padding-right:4px;text-align:right}.cart.totals .grand .mark,.cart.totals .grand .amount{padding-top:25px}.cart.totals .grand .mark strong{font-weight:400}.cart.totals .msrp{margin-bottom:10px}.cart .checkout.methods{text-align:center}.cart .action.primary{line-height:50px;padding:0 17px;font-size:18px;font-size:1.8rem;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;margin-bottom:20px;width:100%}.cart.table.wrapper{float:left;width:73%}.cart.table.wrapper .cart.items>caption{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.cart.table.wrapper .cart.items .action{display:inline-block;text-decoration:none;margin-left:10px}.cart.table.wrapper .cart.items .action:hover,.cart.table.wrapper .cart.items .action:active,.cart.table.wrapper .cart.items .action:focus{text-decoration:none}.cart.table.wrapper .cart.items .action.help.map{background:0;border:0;display:inline;line-height:1.42857143;margin:0;padding:0;color:#1979c3;text-decoration:none;font-weight:400}.cart.table.wrapper .cart.items .action.help.map:visited{color:#800080;text-decoration:none}.cart.table.wrapper .cart.items .action.help.map:hover{color:#006bb4;text-decoration:underline}.cart.table.wrapper .cart.items .action.help.map:active{color:#ff5501;text-decoration:underline}.cart.table.wrapper .cart.items .action.help.map:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.cart.table.wrapper .cart.items .action.help.map:hover,.cart.table.wrapper .cart.items .action.help.map:active,.cart.table.wrapper .cart.items .action.help.map:focus{background:0;border:0;outline:0}.cart.table.wrapper .cart.items .action.help.map.disabled,.cart.table.wrapper .cart.items .action.help.map[disabled],fieldset[disabled] .cart.table.wrapper .cart.items .action.help.map{color:#1979c3;text-decoration:underline;cursor:default;pointer-events:none;opacity:.5}.cart.table.wrapper .cart.items thead+.cart.item{border-top:1px solid #d1d1d1}.cart.table.wrapper .cart.items>.item.cart{border-bottom:1px solid #d1d1d1}.cart.table.wrapper .item .col{padding-top:27px}.cart.table.wrapper .item .col.qty{padding-top:20px}.cart.table.wrapper .item .col.qty .input-text{width:3.3em}.cart.table.wrapper .item.actions td{padding-bottom:17px;text-align:right}.cart.table.wrapper .col.price,.cart.table.wrapper .col.qty,.cart.table.wrapper .col.qty .qty,.cart.table.wrapper .col.subtotal{white-space:nowrap;text-align:center}.cart.table.wrapper .product.photo{display:table-cell;padding-right:20px;vertical-align:top;width:1%}.cart.table.wrapper .product.details{display:table-cell;vertical-align:top;width:99%}.cart.table.wrapper .item.options{font-size:12px;margin-top:10px}.cart.table.wrapper .action.continue{background-image:none;background-color:#f2f2f2;padding:0 15px 0 5px;color:#333;border:1px solid #cdcdcd;cursor:pointer;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;line-height:30px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;margin:0;vertical-align:middle;display:inline-block;text-decoration:none;border-radius:3px;font-weight:700}.cart.table.wrapper .action.continue:hover,.cart.table.wrapper .action.continue:active,.cart.table.wrapper .action.continue:focus{text-decoration:none}.cart.table.wrapper .action.continue:before{font-family:"icons-blank-theme";content:'\e617';font-size:32px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.cart.table.wrapper .action.continue:hover:before{color:inherit}.cart.table.wrapper .action.continue:active:before{color:inherit}.cart.table.wrapper .action.continue:focus,.cart.table.wrapper .action.continue:active{background-color:#e2e2e2;border:1px solid #cdcdcd;outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;color:#333}.cart.table.wrapper .action.continue:hover{background-color:#e2e2e2;border:1px solid #cdcdcd;color:#555}.cart.table.wrapper .action.continue.disabled,.cart.table.wrapper .action.continue[disabled],fieldset[disabled] .cart.table.wrapper .action.continue{cursor:default;pointer-events:none;opacity:.5}.cart.table.wrapper .action.continue:active{box-shadow:inset 0 3px 1px rgba(0,0,0,.29)}.cart.table.wrapper .action.update{display:inline-block;text-decoration:none;float:right;padding-left:5px}.cart.table.wrapper .action.update:before{font-family:"icons-blank-theme";content:'\e603';font-size:32px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.cart.table.wrapper .action.clear{float:right;margin-right:10px}.block.crosssell{margin-top:70px}.block.crosssell .title{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem}.block.crosssell .title strong{font-weight:400}.block.crosssell .item.product{margin:0 0 30px;padding:0 15px 0 0;width:20%}.block.progress.onepage{background:#f5f5f5;margin-bottom:30px;padding:1px 15px 5px}.block.progress.onepage>.title{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem;margin-bottom:20px}.block.progress.onepage>.title strong{font-weight:400}.block.progress.onepage .content dd.complete{margin:0 0 15px}.block.progress.onepage .content dd.complete .content{margin:0}.block.progress.onepage .content .action,.block.progress.onepage .content .payment.method .title{font-weight:400}.block.progress.onepage .content .data.table{font-size:12px}.opc.wrapper .section.allow>.title{cursor:pointer}.opc.wrapper .step.title{line-height:50px;border-bottom:1px solid #d1d1d1}.opc.wrapper .step.title h2,.opc.wrapper .step.title .number{display:inline-block;font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem}.opc.wrapper .step.title .number:after{content:"."}.opc.wrapper .step.content{padding:20px 25px 40px;position:relative}.opc.wrapper .step.content .addresses .control{margin:20px 0 30px}.opc.wrapper .step.content .fieldset{margin-bottom:0}.opc.wrapper .step.content .form:after{content:attr(data-hasrequired);display:block;font-size:12px;font-size:1.2rem;color:#e02b27;margin:10px 0 0;letter-spacing:normal;word-spacing:normal}.opc.wrapper .step.content .form:after{text-align:right}.opc.wrapper .step.content .form>.choice{margin-left:25.8%;margin-top:29px}.opc.wrapper .step.content .actions{margin-top:40px}.opc.wrapper .items.methods .content{margin-left:20px}.opc.wrapper .items.methods img{vertical-align:middle}.opc.wrapper .items.methods .field.month{padding-right:10px}.opc.wrapper .items.methods.payment .content{margin-bottom:0}.opc.wrapper .items.methods.payment .content .fieldset{padding:15px 0}.opc.wrapper .items.methods.payment .content .label{font-weight:400}.opc.wrapper .fieldset.gift.message>legend{margin-left:0;padding:0}.opc.wrapper .fieldset.gift.message .field.choice{font-weight:400;margin-left:20px}.opc.wrapper .fieldset.gift.message .field.choice:before{display:none}.opc.wrapper .fieldset.gift.message .block.items{background:#f5f5f5;display:block;padding:20px 30px;margin-bottom:0}.opc.wrapper .fieldset.gift.message .block.items>dt{margin-top:10px;margin-bottom:0}.opc.wrapper .fieldset.gift.message .block.items .block.message{margin-bottom:10px}.opc.wrapper .fieldset.gift.message .block.items .options.individual{margin-left:20px}.opc.wrapper .options.individual{margin-top:10px}.opc.wrapper .options.individual ol>.item{border-bottom:1px solid #d1d1d1;padding-bottom:10px;margin-bottom:20px}.opc.wrapper .options.individual ol>.item .product{margin-bottom:10px}.opc.wrapper .options.individual ol>.item .product:before,.opc.wrapper .options.individual ol>.item .product:after{content:"";display:table}.opc.wrapper .options.individual ol>.item .product:after{clear:both}.opc.wrapper .options.individual ol>.item .product .img{float:left;margin-right:20px}.opc.wrapper .options.individual ol>.item:last-child{border-bottom:0;padding-bottom:0}.opc.wrapper .options.individual .number{font-size:12px}.opc.wrapper .activate.message{display:inline-block;margin:10px 0}.opc.wrapper .data.table>caption{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.opc.wrapper .data.table tbody tr:first-child td{border-top:1px solid #d1d1d1}.opc.wrapper .data.table .col.price,.opc.wrapper .data.table .col.qty{text-align:center;white-space:nowrap}.opc.wrapper .data.table .col.subtotal{text-align:right;white-space:nowrap}.opc.wrapper .data.table .amount{text-align:right}.opc.wrapper .data.table td{padding:7px 10px}.opc.wrapper .data.table tbody tr:last-child td{border-bottom:1px solid #d1d1d1}.opc.wrapper .action.primary.checkout{margin:0 0 20px}.opc.wrapper .hidden{display:none}.opc.wrapper .step.login.wrapper:before,.opc.wrapper .step.login.wrapper:after{content:"";display:table}.opc.wrapper .step.login.wrapper:after{clear:both}.opc.wrapper .step.login.wrapper .fieldset.guest{margin-top:20px}.opc.wrapper .step.login.wrapper .field.choice{margin-bottom:10px}.opc.wrapper .step.login.wrapper .field.choice:before{display:none}.block.minicart.empty{text-align:center;font-size:12px}.block.minicart .subtotal{border-top:1px solid #e8e8e8;padding-top:10px}.block.minicart .subtotal .amount{font-size:21px}.block.minicart .subtitle{margin-bottom:15px}.block.minicart>.content>.actions{margin-top:10px}.block.minicart>.content>.actions .secondary,.block.minicart>.content>.actions .primary{padding-right:20px;display:inline}.minicart.wrapper{float:right;order:3;display:inline-block;position:relative}.minicart.wrapper:before,.minicart.wrapper:after{content:"";display:table}.minicart.wrapper:after{clear:both}.minicart.wrapper .action.showcart{cursor:pointer;display:inline-block;text-decoration:none}.minicart.wrapper .action.showcart:before{font-family:"icons-blank-theme";content:'\e611';font-size:35px;line-height:33px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.minicart.wrapper .action.showcart:hover:before{color:inherit}.minicart.wrapper .action.showcart:active:before{color:inherit}.minicart.wrapper .action.showcart.active{display:inline-block;text-decoration:none}.minicart.wrapper .action.showcart.active:before{font-family:"icons-blank-theme";content:'\e611';font-size:35px;line-height:33px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.minicart.wrapper .action.showcart.active:hover:before{color:inherit}.minicart.wrapper .action.showcart.active:active:before{color:inherit}.minicart.wrapper .block.minicart{margin:0;padding:0;list-style-type:none;list-style-image:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;background-color:#fff;border:1px solid #bbb;position:absolute;z-index:100;min-width:100%;display:none;-webkit-box-shadow:0 3px 3px rgba(0,0,0,.15);-moz-box-shadow:0 3px 3px rgba(0,0,0,.15);box-shadow:0 3px 3px rgba(0,0,0,.15);margin-top:4px}.minicart.wrapper .block.minicart li{margin:0}.minicart.wrapper .block.minicart li:hover{cursor:pointer}.minicart.wrapper .block.minicart:before,.minicart.wrapper .block.minicart:after{content:"";position:absolute;display:block;width:0;height:0;border-bottom-style:solid}.minicart.wrapper .block.minicart:before{top:-12px;left:10px;z-index:99;border:solid 6px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #fff rgba(0,0,0,0)}.minicart.wrapper .block.minicart:after{top:-14px;left:9px;z-index:98;border:solid 7px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #bbb rgba(0,0,0,0)}.minicart.wrapper.active{overflow:visible}.minicart.wrapper.active .block.minicart{display:block}.minicart.wrapper .action.showcart{white-space:nowrap}.minicart.wrapper .action.showcart .text{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.minicart.wrapper .action.showcart .counter.qty{overflow:hidden;margin:3px 0 0;padding:0 3px;clip:none;display:inline-block;white-space:normal;min-width:20px;max-width:2em;background:#ff5501;text-align:center;color:#fff;line-height:26px;height:26px;border-radius:2px}.minicart.wrapper .action.showcart .counter.qty.empty:before{content:"0"}.minicart.wrapper .block.minicart{right:-15px;width:380px;padding:15px 15px 15px}.minicart.wrapper .block.minicart>.title{display:none}.minicart.wrapper .block.minicart:before,.minicart.wrapper .block.minicart:after{left:auto;right:25px}.minicart.wrapper .block.minicart:before{right:26px}.minicart.wrapper .product.actions{text-align:right}.minicart.wrapper .product.actions .primary,.minicart.wrapper .product.actions .secondary{display:inline}.minicart.wrapper .pricing.details{display:table}.minicart.wrapper .pricing.details .rate,.minicart.wrapper .pricing.details .details.qty{display:table-row}.minicart.wrapper .pricing.details .value,.minicart.wrapper .pricing.details .label{padding-right:10px;display:table-cell}.minicart.wrapper .pricing.details .label:after{content:":"}.minicart.wrapper .action.edit{display:inline-block;text-decoration:none}.minicart.wrapper .action.edit>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.minicart.wrapper .action.edit:before{font-family:"icons-blank-theme";content:'\e606';font-size:28px;line-height:28px;color:#303030;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.minicart.wrapper .action.edit:hover:before{color:#303030}.minicart.wrapper .action.edit:active:before{color:#303030}.minicart.wrapper .action.close{position:absolute;right:14px;top:6px;display:inline-block;background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400}.minicart.wrapper .action.close:before{font-family:"icons-blank-theme";content:'\e616';font-size:33px;line-height:33px;color:#7d7d7d;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.minicart.wrapper .action.close:focus,.minicart.wrapper .action.close:active{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;background:0;border:0}.minicart.wrapper .action.close:hover{background:0;border:0}.minicart.wrapper .action.close.disabled,.minicart.wrapper .action.close[disabled],fieldset[disabled] .minicart.wrapper .action.close{cursor:not-allowed;pointer-events:none;opacity:.5}.minicart.wrapper .action.close>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.minilist{margin:0;padding:0;list-style-type:none;list-style-image:none}.minilist .item{border-top:1px solid #e8e8e8;padding:15px 0;z-index:1}.minilist .item>.product{display:flex}.minilist .item>.product:before,.minilist .item>.product:after{content:"";display:table}.minilist .item>.product:after{clear:both}.minilist .product.photo{margin-right:10px}.minilist .product.details{flex-grow:1}.minilist .action.delete{display:inline-block;text-decoration:none}.minilist .action.delete>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.minilist .action.delete:before{font-family:"icons-blank-theme";content:'\e604';font-size:28px;line-height:28px;color:#303030;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.minilist .action.delete:hover:before{color:#303030}.minilist .action.delete:active:before{color:#303030}.login.container:before,.login.container:after{content:"";display:table}.login.container:after{clear:both}.login.container .block.login .actions.toolbar .primary{margin-right:30px}.login.container .block.login .actions.toolbar .secondary{float:left}.login.container .block.new .actions.toolbar{margin-top:25px}.login.container .block .title{padding-bottom:15px;margin-bottom:15px;border-bottom:1px solid #e8e8e8}.login.container .block .title strong{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem}.login.container .fieldset:after{content:attr(data-hasrequired);display:block;font-size:12px;font-size:1.2rem;color:#e02b27;margin:10px 0 0;letter-spacing:normal;word-spacing:normal}.login.container .fieldset:after{margin:35px 0 0 25.8%}.login.container .fieldset>.field>.control{width:55%}.form.password.reset,.form.send.confirmation,.form.password.forget,.form.create.account{width:50%}.block.addresses.list ol.items.addresses:before,.block.addresses.list ol.items.addresses:after{content:"";display:table}.block.addresses.list ol.items.addresses:after{clear:both}.block.addresses.list ol.items.addresses li.item{margin-bottom:20px}.block.addresses.list ol.items.addresses li.item:nth-last-child(1),.block.addresses.list ol.items.addresses li.item:nth-last-child(2){margin-bottom:0}.downloadable.samples{margin-bottom:20px}.downloadable.samples dd{margin:0 0 10px}.field.downloads{margin:0 0 20px;border:0}.field.downloads:not(.choice)>.label{display:inline-block;width:auto;float:none;text-align:left;margin:0 0 5px}.field.downloads.choice:before,.field.downloads.no-label:before{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;content:" ";height:auto;float:none;width:auto;padding:0}.field.downloads>.control{float:none;width:auto}.field.downloads>.label{font-size:14px;font-size:1.4rem;font-weight:700}.field.downloads>.label+br{display:none}.field.downloads.required>.label:after{content:'*';font-size:12px;font-size:1.2rem;color:#e02b27;margin:0 0 0 5px}.field.downloads .nested .field{margin:5px 0}.field.downloads.choice>.label{display:inline}.field.downloads.choice>input{vertical-align:top}.field.downloads .fields.group{display:flex;letter-spacing:-.31em;*letter-spacing:normal;word-spacing:-.43em;margin-right:- 20px}.field.downloads .fields.group>*{letter-spacing:normal;word-spacing:normal}.field.downloads .fields.group .field{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;vertical-align:top;margin:0!important}.field.downloads .fields.group .field .label{width:auto;float:none;text-align:left;padding-right:0}.field.downloads .fields.group .field .control{float:none;width:auto}.field.downloads .fields.group.group-2 .field{width:50%!important;display:inline-block}.field.downloads .fields.group.group-3 .field{width:33.3%!important;display:inline-block}.field.downloads .fields.group.group-4 .field{width:25%!important;display:inline-block}.field.downloads .fields.group.group-5 .field{width:20%!important;display:inline-block}.field.downloads .addon{display:inline-flex;flex-wrap:nowrap;padding:0;width:100%}.field.downloads .addon textarea,.field.downloads .addon select,.field.downloads .addon input{order:2;box-shadow:none;display:inline-block;margin:0;width:auto;flex-basis:100%}.field.downloads .addon .addbefore,.field.downloads .addon .addafter{order:3;display:inline-block;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;border:1px solid #c2c2c2;border-radius:1px;height:32px;width:100%;padding:0 10px;font-size:14px;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;line-height:1.42857143;font-style:normal;color:#333;background-clip:padding-box;vertical-align:baseline;width:auto;white-space:nowrap;vertical-align:middle}.field.downloads .addon .addbefore:disabled,.field.downloads .addon .addafter:disabled{opacity:.5}.field.downloads .addon .addbefore{float:left;order:1}.field.downloads .note{font-size:12px;font-size:1.2rem;margin:3px 0 0;padding:0;display:inline-block;text-decoration:none}.field.downloads .note:before{font-family:"icons-blank-theme";content:'\e618';font-size:24px;line-height:12px;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.product.add.form .giftcard.form .field{margin:0 0 20px;border:0}.product.add.form .giftcard.form .field:not(.choice)>.label{display:inline-block;width:auto;float:none;text-align:left;margin:0 0 5px}.product.add.form .giftcard.form .field.choice:before,.product.add.form .giftcard.form .field.no-label:before{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;content:" ";height:auto;float:none;width:auto;padding:0}.product.add.form .giftcard.form .field>.control{float:none;width:auto}.product.add.form .giftcard.form .field>.label{font-size:14px;font-size:1.4rem;font-weight:700}.product.add.form .giftcard.form .field>.label+br{display:none}.product.add.form .giftcard.form .field.required>.label:after{content:'*';font-size:12px;font-size:1.2rem;color:#e02b27;margin:0 0 0 5px}.product.add.form .giftcard.form .field .nested .field{margin:5px 0}.product.add.form .giftcard.form .field.choice>.label{display:inline}.product.add.form .giftcard.form .field.choice>input{vertical-align:top}.product.add.form .giftcard.form .field .fields.group{display:flex;letter-spacing:-.31em;*letter-spacing:normal;word-spacing:-.43em;margin-right:- 20px}.product.add.form .giftcard.form .field .fields.group>*{letter-spacing:normal;word-spacing:normal}.product.add.form .giftcard.form .field .fields.group .field{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;vertical-align:top;margin:0!important}.product.add.form .giftcard.form .field .fields.group .field .label{width:auto;float:none;text-align:left;padding-right:0}.product.add.form .giftcard.form .field .fields.group .field .control{float:none;width:auto}.product.add.form .giftcard.form .field .fields.group.group-2 .field{width:50%!important;display:inline-block}.product.add.form .giftcard.form .field .fields.group.group-3 .field{width:33.3%!important;display:inline-block}.product.add.form .giftcard.form .field .fields.group.group-4 .field{width:25%!important;display:inline-block}.product.add.form .giftcard.form .field .fields.group.group-5 .field{width:20%!important;display:inline-block}.product.add.form .giftcard.form .field .addon{display:inline-flex;flex-wrap:nowrap;padding:0;width:100%}.product.add.form .giftcard.form .field .addon textarea,.product.add.form .giftcard.form .field .addon select,.product.add.form .giftcard.form .field .addon input{order:2;box-shadow:none;display:inline-block;margin:0;width:auto;flex-basis:100%}.product.add.form .giftcard.form .field .addon .addbefore,.product.add.form .giftcard.form .field .addon .addafter{order:3;display:inline-block;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;border:1px solid #c2c2c2;border-radius:1px;height:32px;width:100%;padding:0 10px;font-size:14px;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;line-height:1.42857143;font-style:normal;color:#333;background-clip:padding-box;vertical-align:baseline;width:auto;white-space:nowrap;vertical-align:middle}.product.add.form .giftcard.form .field .addon .addbefore:disabled,.product.add.form .giftcard.form .field .addon .addafter:disabled{opacity:.5}.product.add.form .giftcard.form .field .addon .addbefore{float:left;order:1}.product.add.form .giftcard.form .field .note{font-size:12px;font-size:1.2rem;margin:3px 0 0;padding:0;display:inline-block;text-decoration:none}.product.add.form .giftcard.form .field .note:before{font-family:"icons-blank-theme";content:'\e618';font-size:24px;line-height:12px;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.cart.summary .block.giftcard .fieldset{padding-bottom:52px;position:relative}.cart.summary .block.giftcard .action.check{line-height:22px;padding:0 8px;font-size:11px;font-size:1.1rem;margin-top:12px;bottom:0;left:0;position:absolute}.cart.summary .block.giftcard .field>.label{display:block;float:none;text-align:left;width:auto}.cart.summary .giftcard .field{display:table-cell;position:relative;vertical-align:bottom;width:99%;z-index:1}.cart.summary .giftcard .field div.mage-error{position:absolute}.cart.summary .giftcard .actions{display:table-cell;width:1%;white-space:nowrap;vertical-align:bottom}.cart.summary .action.add{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;border-top-left-radius:0;border-bottom-left-radius:0;margin-left:-1px}.form.giftcard.redeem .giftcard.ballance{margin-bottom:30px}.form.giftregistry.validation .fieldset.recipients .field .control{width:50%}.form.giftregistry.validation .fieldset.add-row{margin-top:45px;position:relative}.form.giftregistry.validation .fieldset.add-row .action.remove{line-height:normal;position:absolute;top:4px;margin-left:75.8%}.form.giftregistry.edit .actions.toolbar:not(:last-child){margin-bottom:40px}.table.data.grouped>thead>tr>th,.table.data.grouped>tbody>tr>th,.table.data.grouped>tfoot>tr>th,.table.data.grouped>thead>tr>td,.table.data.grouped>tbody>tr>td,.table.data.grouped>tfoot>tr>td{border-top:1px solid #d1d1d1}.table.data.grouped>caption+thead>tr:first-child>th,.table.data.grouped>colgroup+thead>tr:first-child>th,.table.data.grouped>thead:first-child>tr:first-child>th,.table.data.grouped>caption+thead>tr:first-child>td,.table.data.grouped>colgroup+thead>tr:first-child>td,.table.data.grouped>thead:first-child>tr:first-child>td{border-top:0}.table.data.grouped>tbody+tbody{border-top:1px solid #919191}.table.data.grouped td{vertical-align:middle}.table.data.grouped .product.name{font-weight:400}.table.data.grouped .price-box .price{font-weight:400;font-size:14px}.table.data.grouped .col.qty .stock.unavailable{margin:0;white-space:nowrap}.wishlist.split.button,.cart.table.wrapper .cart.items .split.button{display:inline-block;position:relative;vertical-align:top}.wishlist.split.button:before,.wishlist.split.button:after,.cart.table.wrapper .cart.items .split.button:before,.cart.table.wrapper .cart.items .split.button:after{content:"";display:table}.wishlist.split.button:after,.cart.table.wrapper .cart.items .split.button:after{clear:both}.wishlist.split.button .action.split,.cart.table.wrapper .cart.items .split.button .action.split{float:left;margin:0}.wishlist.split.button .action.toggle,.cart.table.wrapper .cart.items .split.button .action.toggle{float:right;margin:0}.wishlist.split.button button.action.split,.wishlist.split.button .cart.table.wrapper .cart.items .action.action.split,.cart.table.wrapper .cart.items .split.button button.action.split{-webkit-border-top-right-radius:0;-webkit-border-bottom-right-radius:0;border-top-right-radius:0;border-bottom-right-radius:0}.wishlist.split.button button+.action.toggle,.wishlist.split.button .cart.table.wrapper .cart.items .action+.action.toggle,.cart.table.wrapper .cart.items .split.button button+.action.toggle{border-left:0;-webkit-border-top-left-radius:0;-webkit-border-bottom-left-radius:0;border-top-left-radius:0;border-bottom-left-radius:0}.wishlist.split.button .action.split,.cart.table.wrapper .cart.items .split.button .action.split{padding:0 5px}.wishlist.split.button .action.toggle,.cart.table.wrapper .cart.items .split.button .action.toggle{padding:0 5px;display:inline-block;text-decoration:none}.wishlist.split.button .action.toggle>span,.cart.table.wrapper .cart.items .split.button .action.toggle>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.wishlist.split.button .action.toggle:after,.cart.table.wrapper .cart.items .split.button .action.toggle:after{font-family:"icons-blank-theme";content:'\e607';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.wishlist.split.button .action.toggle:hover:after,.cart.table.wrapper .cart.items .split.button .action.toggle:hover:after{color:inherit}.wishlist.split.button .action.toggle:active:after,.cart.table.wrapper .cart.items .split.button .action.toggle:active:after{color:inherit}.wishlist.split.button .action.toggle.active,.cart.table.wrapper .cart.items .split.button .action.toggle.active{display:inline-block;text-decoration:none}.wishlist.split.button .action.toggle.active>span,.cart.table.wrapper .cart.items .split.button .action.toggle.active>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.wishlist.split.button .action.toggle.active:after,.cart.table.wrapper .cart.items .split.button .action.toggle.active:after{font-family:"icons-blank-theme";content:'\e618';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.wishlist.split.button .action.toggle.active:hover:after,.cart.table.wrapper .cart.items .split.button .action.toggle.active:hover:after{color:inherit}.wishlist.split.button .action.toggle.active:active:after,.cart.table.wrapper .cart.items .split.button .action.toggle.active:active:after{color:inherit}.wishlist.split.button .items,.cart.table.wrapper .cart.items .split.button .items{margin:0;padding:0;list-style-type:none;list-style-image:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;background-color:#fff;border:1px solid #bbb;position:absolute;z-index:100;min-width:100%;display:none;-webkit-box-shadow:0 3px 3px rgba(0,0,0,.15);-moz-box-shadow:0 3px 3px rgba(0,0,0,.15);box-shadow:0 3px 3px rgba(0,0,0,.15);margin-top:4px}.wishlist.split.button .items li,.cart.table.wrapper .cart.items .split.button .items li{margin:0;padding:3px 5px}.wishlist.split.button .items li:hover,.cart.table.wrapper .cart.items .split.button .items li:hover{background-color:#e8e8e8;cursor:pointer}.wishlist.split.button .items:before,.wishlist.split.button .items:after,.cart.table.wrapper .cart.items .split.button .items:before,.cart.table.wrapper .cart.items .split.button .items:after{content:"";position:absolute;display:block;width:0;height:0;border-bottom-style:solid}.wishlist.split.button .items:before,.cart.table.wrapper .cart.items .split.button .items:before{top:-12px;left:10px;z-index:99;border:solid 6px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #fff rgba(0,0,0,0)}.wishlist.split.button .items:after,.cart.table.wrapper .cart.items .split.button .items:after{top:-14px;left:9px;z-index:98;border:solid 7px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #bbb rgba(0,0,0,0)}.wishlist.split.button.active,.cart.table.wrapper .cart.items .split.button.active{overflow:visible}.wishlist.split.button.active .items,.cart.table.wrapper .cart.items .split.button.active .items{display:block}.wishlist.split.button .items,.cart.table.wrapper .cart.items .split.button .items{top:100%;left:100%;margin-left:-36px}.product.info.main .wishlist.split.button .split,.product.info.main .wishlist.split.button .toggle,.product.info.main .cart.table.wrapper .cart.items .split.button .split,.product.info.main .cart.table.wrapper .cart.items .split.button .toggle{line-height:22px;padding:0 8px;font-size:11px;font-size:1.1rem}.wishlist.window.popup{width:380px;background-color:#fff;padding:22px;border:1px solid #aeaeae;-webkit-box-shadow:0 3px 3px rgba(0,0,0,.15);-moz-box-shadow:0 3px 3px rgba(0,0,0,.15);box-shadow:0 3px 3px rgba(0,0,0,.15);display:none;position:fixed;top:20%;left:50%;margin-left:-212px;z-index:1001;opacity:0;-webkit-transition:opacity .3s linear;-moz-transition:opacity .3s linear;transition:opacity .3s linear}.wishlist.window.popup .popup.header .title{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem}.wishlist.window.popup .popup.actions .action.close{position:absolute;display:inline-block;background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400;top:10px;right:10px}.wishlist.window.popup .popup.actions .action.close>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.wishlist.window.popup .popup.actions .action.close:before{font-family:"icons-blank-theme";content:'\e616';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.wishlist.window.popup .popup.actions .action.close:hover:before{color:inherit}.wishlist.window.popup .popup.actions .action.close:active:before{color:inherit}.wishlist.window.popup .popup.actions .action.close:focus,.wishlist.window.popup .popup.actions .action.close:active{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;background:0;border:0}.wishlist.window.popup .popup.actions .action.close:hover{background:0;border:0}.wishlist.window.popup .popup.actions .action.close.disabled,.wishlist.window.popup .popup.actions .action.close[disabled],fieldset[disabled] .wishlist.window.popup .popup.actions .action.close{cursor:not-allowed;pointer-events:none;opacity:.5}.wishlist.window.popup.active{opacity:1}.wishlist.window.popup.active{display:block}.wishlist.window.popup .field{margin:0 0 20px;border:0}.wishlist.window.popup .field:not(.choice)>.label{display:inline-block;width:auto;float:none;text-align:left;margin:0 0 5px}.wishlist.window.popup .field.choice:before,.wishlist.window.popup .field.no-label:before{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;content:" ";height:auto;float:none;width:auto;padding:0}.wishlist.window.popup .field>.control{float:none;width:auto}.wishlist.window.popup .field>.label{font-size:14px;font-size:1.4rem;font-weight:700}.wishlist.window.popup .field>.label+br{display:none}.wishlist.window.popup .field.required>.label:after{content:'*';font-size:12px;font-size:1.2rem;color:#e02b27;margin:0 0 0 5px}.wishlist.window.popup .field .nested .field{margin:5px 0}.wishlist.window.popup .field.choice>.label{display:inline}.wishlist.window.popup .field.choice>input{vertical-align:top}.wishlist.window.popup .field .fields.group{display:flex;letter-spacing:-.31em;*letter-spacing:normal;word-spacing:-.43em;margin-right:- 20px}.wishlist.window.popup .field .fields.group>*{letter-spacing:normal;word-spacing:normal}.wishlist.window.popup .field .fields.group .field{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;vertical-align:top;margin:0!important}.wishlist.window.popup .field .fields.group .field .label{width:auto;float:none;text-align:left;padding-right:0}.wishlist.window.popup .field .fields.group .field .control{float:none;width:auto}.wishlist.window.popup .field .fields.group.group-2 .field{width:50%!important;display:inline-block}.wishlist.window.popup .field .fields.group.group-3 .field{width:33.3%!important;display:inline-block}.wishlist.window.popup .field .fields.group.group-4 .field{width:25%!important;display:inline-block}.wishlist.window.popup .field .fields.group.group-5 .field{width:20%!important;display:inline-block}.wishlist.window.popup .field .addon{display:inline-flex;flex-wrap:nowrap;padding:0;width:100%}.wishlist.window.popup .field .addon textarea,.wishlist.window.popup .field .addon select,.wishlist.window.popup .field .addon input{order:2;box-shadow:none;display:inline-block;margin:0;width:auto;flex-basis:100%}.wishlist.window.popup .field .addon .addbefore,.wishlist.window.popup .field .addon .addafter{order:3;display:inline-block;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;border:1px solid #c2c2c2;border-radius:1px;height:32px;width:100%;padding:0 10px;font-size:14px;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;line-height:1.42857143;font-style:normal;color:#333;background-clip:padding-box;vertical-align:baseline;width:auto;white-space:nowrap;vertical-align:middle}.wishlist.window.popup .field .addon .addbefore:disabled,.wishlist.window.popup .field .addon .addafter:disabled{opacity:.5}.wishlist.window.popup .field .addon .addbefore{float:left;order:1}.wishlist.window.popup .field .note{font-size:12px;font-size:1.2rem;margin:3px 0 0;padding:0;display:inline-block;text-decoration:none}.wishlist.window.popup .field .note:before{font-family:"icons-blank-theme";content:'\e618';font-size:24px;line-height:12px;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.wishlist.overlay{-webkit-transition:opacity .15s linear;-moz-transition:opacity .15s linear;transition:opacity .15s linear;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background-color:#000;opacity:0}.wishlist.overlay.active{opacity:.5;filter:alpha(opacity=50)}.cart.table.wrapper .cart.items .split.button .items{text-align:left}.cart.table.wrapper .cart.items .split.button .action.new{background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400}.cart.table.wrapper .cart.items .split.button .action.new:focus,.cart.table.wrapper .cart.items .split.button .action.new:active{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;background:0;border:0}.cart.table.wrapper .cart.items .split.button .action.new:hover{background:0;border:0}.cart.table.wrapper .cart.items .split.button .action.new.disabled,.cart.table.wrapper .cart.items .split.button .action.new[disabled],fieldset[disabled] .cart.table.wrapper .cart.items .split.button .action.new{cursor:not-allowed;pointer-events:none;opacity:.5}.form.wishlist.items .message.notice.msg-private{margin-bottom:20px}.block.wishlist.management .action.add.wishlist{float:right;margin-top:-8px}.block.wishlist.management .title .counter.qty{font-size:14px;margin-left:15px}.block.wishlist.management .content .subtitle{float:left}.block.wishlist.management .content .toolbar.wishlist{float:right;margin-top:5px}.block.newsletter{position:relative;z-index:1}.block.newsletter .fieldset{margin:0;padding:0;display:inline-block;vertical-align:top}.block.newsletter .control{display:inline-block;text-decoration:none;width:250px}.block.newsletter .control:before{font-family:"icons-blank-theme";content:'\e61d';font-size:35px;line-height:33px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.block.newsletter .control:before{position:absolute}.block.newsletter input{padding-left:35px}.block.newsletter .title{display:none}.block.newsletter .label{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.block.newsletter .actions{display:inline-block;vertical-align:top}.block.add.review>.title{font-size:26px;font-size:2.6rem;font-weight:300;line-height:1.1;margin-top:25px;margin-top:2.5rem;margin-bottom:20px;margin-bottom:2rem}.block.add.review fieldset{border:0;margin:0;padding:0;letter-spacing:-.31em;word-spacing:-.43em}.block.add.review fieldset>*{letter-spacing:normal;word-spacing:normal}.block.add.review fieldset>.legend{margin:0 0 10px;padding:0;font-size:20px;font-size:2rem;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.2;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;float:left;width:74.2%}.block.add.review fieldset>.legend+br{display:block;visibility:hidden;height:0;overflow:hidden;clear:both}.block.add.review .legend{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem}.block.add.review .field.rating{display:table-row}.block.add.review .field.rating .label{display:table-cell;vertical-align:middle;padding:5px 0}.block.add.review .field.rating .control{display:table-cell;vertical-align:top}.block.add.review .form.actions{margin-left:25.8%}.block.reviews.list>.title{font-size:26px;font-size:2.6rem;font-weight:300;line-height:1.1;margin-top:25px;margin-top:2.5rem;margin-bottom:20px;margin-bottom:2rem}.block.reviews.list .review.item{margin-bottom:40px}.block.reviews.list .review.title{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem}.data.table.reviews .rating.summary{margin-top:-4px}.customer.review.view .review.title,.customer.review.view .ratings.summary.items,.customer.review.view .product.details{margin-bottom:20px}.product.reviews.summary{display:table;margin-left:-5px}.product.reviews.summary.empty{margin-left:0}.product.reviews.summary .rating.summary{display:table-cell;vertical-align:middle}.product.reviews.summary .reviews.actions{display:table-cell;vertical-align:middle;line-height:40px;font-size:11px}.product.reviews.summary .reviews.actions a{margin-right:5px}.order.details:before,.order.details:after{content:"";display:table}.order.details:after{clear:both}.order.details ul.items{clear:both;margin-bottom:20px}.order.details ul.items:before,.order.details ul.items:after{content:"";display:table}.order.details ul.items:after{clear:both}.order.details ul.items .item{float:left;margin-left:15px}.order.details ul.items .item:first-child{margin-left:0}.order.details .order.status{display:inline-block;font-size:26px;font-size:2.6rem;font-weight:300;line-height:1.1;margin-top:25px;margin-top:2.5rem;margin-bottom:20px;margin-bottom:2rem;margin-top:0}.order.details .order.date{margin-bottom:20px}.order.details .order.toolbar{float:right}.order.details .order.toolbar .action{margin-left:15px}.order.details .order.toolbar .action:first-child{margin-left:0}.order.details .order.subtitle.caption,.order.details .order.title{margin-bottom:20px}.order.details .order.subtitle.caption strong,.order.details .order.title strong{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem}.order.details .order.subtitle.caption .action,.order.details .order.title .action{margin-left:15px}.form.send.friend .actions.toolbar{margin-top:10px}.form.send.friend .recipients .title{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem;margin-left:25.8%}.form.send.friend .recipients .message{margin-left:25.8%}.action.mailto.friend{display:inline-block;text-decoration:none}.action.mailto.friend:before{font-family:"icons-blank-theme";content:'\e61d';font-size:28px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.page.header{background-color:none}.page.header .panel.wrapper{border-bottom:1px solid #e8e8e8}.page.header .header.panel{display:flex;flex-direction:row;justify-content:flex-start;flex-wrap:wrap;padding-top:10px;padding-bottom:10px}.page.header .header.panel:after{content:"";display:table;clear:both}.header.links{float:right;margin:0;padding:0;list-style-type:none;list-style-image:none;margin-left:auto}.header.links>li{display:inline-block;vertical-align:top}.header.links li{margin:0 0 0 15px}.header.content{padding-top:30px;display:flex;flex-direction:row;justify-content:flex-end;flex-wrap:wrap}.header.content:after{content:"";display:table;clear:both}.logo{float:left;margin:-15px auto 25px 0}.action.skip{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.switcher{float:left;margin-right:15px}.switcher .options{display:inline-block;position:relative}.switcher .options:before,.switcher .options:after{content:"";display:table}.switcher .options:after{clear:both}.switcher .options .action.switch{padding:0;cursor:pointer;display:inline-block;text-decoration:none}.switcher .options .action.switch>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.switcher .options .action.switch:after{font-family:"icons-blank-theme";content:'\e622';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.switcher .options .action.switch:hover:after{color:inherit}.switcher .options .action.switch:active:after{color:inherit}.switcher .options .action.switch.active{display:inline-block;text-decoration:none}.switcher .options .action.switch.active>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.switcher .options .action.switch.active:after{font-family:"icons-blank-theme";content:'\e621';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.switcher .options .action.switch.active:hover:after{color:inherit}.switcher .options .action.switch.active:active:after{color:inherit}.switcher .options ul{margin:0;padding:0;list-style-type:none;list-style-image:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;background-color:#fff;border:1px solid #bbb;position:absolute;z-index:100;min-width:100%;display:none;-webkit-box-shadow:0 3px 3px rgba(0,0,0,.15);-moz-box-shadow:0 3px 3px rgba(0,0,0,.15);box-shadow:0 3px 3px rgba(0,0,0,.15);margin-top:4px}.switcher .options ul li{margin:0;padding:8px}.switcher .options ul li:hover{background-color:#e8e8e8;cursor:pointer}.switcher .options ul:before,.switcher .options ul:after{content:"";position:absolute;display:block;width:0;height:0;border-bottom-style:solid}.switcher .options ul:before{top:-12px;left:10px;z-index:99;border:solid 6px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #fff rgba(0,0,0,0)}.switcher .options ul:after{top:-14px;left:9px;z-index:98;border:solid 7px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #bbb rgba(0,0,0,0)}.switcher .options.active{overflow:visible}.switcher .options.active ul{display:block}.switcher li{margin:0;font-size:12px}.switcher strong{font-weight:400}.switcher .action.switch{background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400}.switcher .action.switch:focus,.switcher .action.switch:active{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;background:0;border:0}.switcher .action.switch:hover{background:0;border:0}.switcher .action.switch.disabled,.switcher .action.switch[disabled],fieldset[disabled] .switcher .action.switch{cursor:not-allowed;pointer-events:none;opacity:.5}.switcher .label{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.message.global>.content{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;margin:0 auto;padding-left:20px;padding-right:20px;width:auto;min-width:1000px;max-width:1280px}.message.global p{margin:0}.message.global.noscript,.message.global.cookie{display:block;margin:0 0 10px;padding:10px 20px;border-radius:0;font-size:13px;font-size:1.3rem;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.2em;background:#ffee9c;border-color:#d6ca8e;color:#333;margin:0}.message.global.noscript a,.message.global.cookie a{color:#1979c3}.message.global.noscript a:hover,.message.global.cookie a:hover{color:#006bb4}.message.global.noscript a:active,.message.global.cookie a:active{color:#ff5501}.message.global.cookie{position:fixed;bottom:0;left:0;right:0;z-index:3}.message.global.cookie .actions{margin-top:10px}.message.global.cookie .action.allow{background-image:none;background-color:#1979c3;padding:0 15px;color:#fff;border:1px solid #1979c3;cursor:pointer;display:inline-block;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;line-height:30px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;vertical-align:middle}.message.global.cookie .action.allow:focus,.message.global.cookie .action.allow:active{background-color:#006bb4;border:1px solid #006bb4;outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;color:#fff}.message.global.cookie .action.allow:hover{background-color:#006bb4;border:1px solid #006bb4;color:#fff}.message.global.cookie .action.allow.disabled,.message.global.cookie .action.allow[disabled],fieldset[disabled] .message.global.cookie .action.allow{cursor:default;pointer-events:none;opacity:.5}.message.global.demo{display:block;margin:0 0 10px;padding:10px 20px;border-radius:0;font-size:13px;font-size:1.3rem;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.2em;background:#ff0101;border-color:none;color:#fff;text-align:center}.message.global.demo a{color:#1979c3}.message.global.demo a:hover{color:#006bb4}.message.global.demo a:active{color:#ff5501}body{background-color:#fff}.footer.page{margin-top:25px;background-color:none}.footer.content{padding-top:25px;padding-bottom:25px;border-top:1px solid #d1d1d1}.footer.content ul{margin:0;padding:0 50px 0 0;list-style-type:none;list-style-image:none}.footer.content .links{display:inline-block;vertical-align:top}.footer.content .block{float:right}.footer .copyright:before{clear:both;margin-bottom:25px;content:"";display:block}.product.info.main .action.towishlist{line-height:22px;padding:0 8px;font-size:11px;font-size:1.1rem}.column.sidebar .widget.block.addbysku .field{display:inline-block;vertical-align:top}.column.sidebar .widget.block.addbysku .fieldset{margin-bottom:0}.column.sidebar .widget.block.addbysku .fields{position:relative;margin-right:30px}.column.sidebar .widget.block.addbysku .field.sku{width:100%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;padding-right:54px;margin-right:-54px}.column.sidebar .widget.block.addbysku .field.qty{width:50px}.column.sidebar .widget.block.addbysku .action.remove{background-image:none;background-color:#f2f2f2;padding:0 15px;color:#333;border:1px solid #cdcdcd;cursor:pointer;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;line-height:30px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;vertical-align:middle;display:inline-block;background:0;border:0;display:inline;line-height:1.42857143;margin:0;padding:0;color:#1979c3;text-decoration:none;position:absolute;right:-27px;top:23px}.column.sidebar .widget.block.addbysku .action.remove>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.column.sidebar .widget.block.addbysku .action.remove:before{font-family:"icons-blank-theme";content:'\e616';font-size:26px;line-height:inherit;color:#303030;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.column.sidebar .widget.block.addbysku .action.remove:hover:before{color:#303030}.column.sidebar .widget.block.addbysku .action.remove:active:before{color:#303030}.column.sidebar .widget.block.addbysku .action.remove:focus,.column.sidebar .widget.block.addbysku .action.remove:active{background-color:#e2e2e2;border:1px solid #cdcdcd;outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;color:#333}.column.sidebar .widget.block.addbysku .action.remove:hover{background-color:#e2e2e2;border:1px solid #cdcdcd;color:#555}.column.sidebar .widget.block.addbysku .action.remove.disabled,.column.sidebar .widget.block.addbysku .action.remove[disabled],fieldset[disabled] .column.sidebar .widget.block.addbysku .action.remove{cursor:default;pointer-events:none;opacity:.5}.column.sidebar .widget.block.addbysku .action.remove:visited{color:#800080;text-decoration:none}.column.sidebar .widget.block.addbysku .action.remove:hover{color:#006bb4;text-decoration:underline}.column.sidebar .widget.block.addbysku .action.remove:active{color:#ff5501;text-decoration:underline}.column.sidebar .widget.block.addbysku .action.remove:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.column.sidebar .widget.block.addbysku .action.remove:hover,.column.sidebar .widget.block.addbysku .action.remove:active,.column.sidebar .widget.block.addbysku .action.remove:focus{background:0;border:0;outline:0}.column.sidebar .widget.block.addbysku .action.remove.disabled,.column.sidebar .widget.block.addbysku .action.remove[disabled],fieldset[disabled] .column.sidebar .widget.block.addbysku .action.remove{color:#1979c3;text-decoration:underline;cursor:default;pointer-events:none;opacity:.5}.column.sidebar .widget.block.addbysku .action.remove:hover,.column.sidebar .widget.block.addbysku .action.remove:active,.column.sidebar .widget.block.addbysku .action.remove:focus{box-shadow:none;text-decoration:none}.column.sidebar .widget.block.addbysku .actions.toolbar{position:relative;padding-top:50px;margin-left:0}.column.sidebar .widget.block.addbysku .actions.toolbar .action.add{background-image:none;background-color:#f2f2f2;padding:0 15px;color:#333;border:1px solid #cdcdcd;cursor:pointer;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;line-height:30px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;margin:0;vertical-align:middle;display:inline-block;text-decoration:none;position:absolute;top:0;left:0;padding:0 3px}.column.sidebar .widget.block.addbysku .actions.toolbar .action.add>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.column.sidebar .widget.block.addbysku .actions.toolbar .action.add:before{font-family:"icons-blank-theme";content:'\e61c';font-size:31px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.column.sidebar .widget.block.addbysku .actions.toolbar .action.add:hover:before{color:inherit}.column.sidebar .widget.block.addbysku .actions.toolbar .action.add:active:before{color:inherit}.column.sidebar .widget.block.addbysku .actions.toolbar .action.add:focus,.column.sidebar .widget.block.addbysku .actions.toolbar .action.add:active{background-color:#e2e2e2;border:1px solid #cdcdcd;outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;color:#333}.column.sidebar .widget.block.addbysku .actions.toolbar .action.add:hover{background-color:#e2e2e2;border:1px solid #cdcdcd;color:#555}.column.sidebar .widget.block.addbysku .actions.toolbar .action.add.disabled,.column.sidebar .widget.block.addbysku .actions.toolbar .action.add[disabled],fieldset[disabled] .column.sidebar .widget.block.addbysku .actions.toolbar .action.add{cursor:default;pointer-events:none;opacity:.5}.block.widget.new .pager{margin:0 0 40px;padding:10px;background:#f0f0f0}.block.widget.new .pager .pages{text-align:center}.block.widget.new .pager .amount{float:right;margin:7px 0 0}.widget.widget-cms-link{display:block}.widget.widget-cms-hierarchy-link{display:block}@media only screen and (max-width: 768px){._rwd_columns,.columns,.columns{ flex-direction:column!important}._rwd_column,.layout-1 .column.main,.layout-3 .column.main,.layout-2-left .column.main,.layout-2-right .column.main,.layout-3 .column.left,.layout-2-left .column.left,.layout-2-right .column.left,.layout-3 .column.right,.layout-2-left .column.right,.layout-2-right .column.right,.layout-1 .column.main,.layout-3 .column.main,.layout-2-left .column.main,.layout-2-right .column.main,.layout-3 .column.left,.layout-2-left .column.left,.layout-2-right .column.left,.layout-3 .column.right,.layout-2-left .column.right,.layout-2-right .column.right,.layout-example-3 .column.main,.layout-example-3 .column.left,.layout-example-3 .column.right,.layout-example-3-1 .column.main,.layout-example-3-1 .column.left,.layout-example-3-1 .column.right{order:0!important;width:100%!important}._rwd_width,.navigation>ul,.breadcrumbs,.page.header .header.panel,.header.content,.footer.content,.page.main,.page.wrapper>.widget,.page.wrapper>.page.bottom,.block.category.event,.breadcrumbs,.message.global>.content,.example-breadcrumbs-1,.example-breadcrumbs-1,header.header,footer.footer,.page.main{min-width:0!important;max-width:auto!important}._rwd_floats{float:none!important}._rwd_margins,.actions.toolbar,.actions.toolbar .primary .action,.actions.toolbar .secondary .action,.login.container .fieldset:after{margin-left:0!important;margin-right:0!important}._rwd_width_float,.account .column.main .block .content .box,.fieldset>.field>.label,.fieldset .fields>.field>.label,.fieldset>.field>.control,.fieldset .fields>.field>.control,.fieldset>.field.choice:before,.fieldset .fields>.field.choice:before,.bundle.options.container .product.add.form .product.options.wrapper,.bundle.options.container .product.add.form .product.options.bottom,.bundle.options.container .product.add.form .block.bundle.summary,.column.main .product.info.main,.column.main .product.media,.column.main .box.tocart,.products.wrapper.list .item.product .price-box,.cart.summary,.cart.table.wrapper,.form.password.forget,.form.create.account{width:100%!important;float:none!important}._rwd_width_float_margins,.fieldset>.legend,.actions.toolbar .primary,.actions.toolbar .secondary,.login.container .block.customer{width:100%!important;float:none!important;margin-left:0!important;margin-right:0!important}.page.main>.page.title{margin-bottom:30px}.page.main>.page.title .title+.action{margin-top:0}.account .column.main{margin-bottom:30px}.account .column.main .block .content .box{margin-bottom:20px}.account .column.main .block .content .box:last-child{margin-bottom:0}.account .column.sidebar{margin-right:0}.button-responsive,.page.main>.page.title .title+.action,.actions.toolbar .primary .action,.actions.toolbar .secondary .action,.column.main .action.primary.tocart,.products.wrapper.list .item.product .product.actions .action.tocart{float:none;width:100%}h1{font-size:26px}.wrapper.table{width:100%;margin-bottom:20px;overflow-y:hidden;overflow-x:auto;-ms-overflow-style:-ms-autohiding-scrollbar;-webkit-overflow-scrolling:touch}.wrapper.table>table{margin-bottom:0}.wrapper.table>table>thead>tr>th,.wrapper.table>table>tbody>tr>th,.wrapper.table>table>tfoot>tr>th,.wrapper.table>table>thead>tr>td,.wrapper.table>table>tbody>tr>td,.wrapper.table>table>tfoot>tr>td{white-space:nowrap}.navigation{background:#f5f5f5;display:block;height:100%;left:-86%;overflow:auto;position:absolute;width:86%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;-webkit-transition:left .3s ease-out 0;-moz-transition:left .3s ease-out 0;transition:left .3s ease-out 0}.navigation ul{margin:0;padding:0}.navigation .nav{-webkit-transition:left .3s linear 0;-moz-transition:left .3s linear 0;transition:left .3s linear 0;position:relative;overflow:hidden}.navigation .nav>.level0{font-size:16px;font-size:1.6rem;border-top:1px solid #d1d1d1;display:block;margin:0}.navigation .nav>.level0>a{display:block;line-height:inherit;padding:10px 35px 10px 16px}.navigation .nav>.level0.parent{display:block}.navigation .nav>.level0.parent:before{display:none}.navigation .nav>.level0.parent:after{opacity:1;height:auto}.navigation .nav>.level0.parent>a{display:block}.navigation .nav>.level0.parent>a:after{color:inherit;content:'\e622';display:block;font-family:'icons-blank-theme';font-size:34px;font-weight:400;border:0;top:0;right:5px;left:auto;height:34px;overflow:hidden;opacity:1;position:absolute;width:auto}.navigation .nav>.level0.parent>a.action.back:after{content:'\e617'}.navigation .nav>.level0.parent>a.action.back:after{content:'\e617'}.navigation .nav>.level0.parent .submenu{display:none;position:relative;width:100%;overflow-x:hidden;-webkit-transition:left .3s ease-out 0;-moz-transition:left .3s ease-out 0;transition:left .3s ease-out 0;font-weight:400}.navigation .nav>.level0.parent .submenu.opened{display:block}.navigation .nav>.level0.parent .submenu>ul{display:block;padding-top:0;padding-bottom:0}.navigation .nav>.level0.parent .submenu>ul li{margin:0}.navigation .nav>.level0.parent .submenu>ul a:hover>span{background:0}.navigation .nav>.level0.parent .submenu ul{background:#f5f5f5;box-shadow:none}.navigation .nav>.level0.parent .submenu:before,.navigation .nav>.level0.parent .submenu:after{display:none}.navigation .nav>.level0>a{display:block;line-height:inherit;padding:10px 35px 10px 16px}.navigation .nav .parent:after{display:none}.navigation .nav .parent>a{position:relative}.navigation .nav .parent>a:after{color:inherit;content:'\e622';display:block;font-family:'icons-blank-theme';font-size:34px;font-weight:400;border:0;top:0;right:5px;left:auto;height:34px;overflow:hidden;opacity:1;position:absolute;width:auto}.navigation .nav .parent>a.action.back:after{content:'\e617'}.navigation .nav .parent>a.action.back:after{content:'\e617'}.navigation .nav .parent .submenu{display:none;position:relative;width:100%;overflow-x:hidden;-webkit-transition:left .3s ease-out 0;-moz-transition:left .3s ease-out 0;transition:left .3s ease-out 0}.navigation .nav .parent .submenu.opened{display:block}.navigation .nav .parent .submenu>ul{display:block;padding-top:0;padding-bottom:0}.navigation .nav .parent .submenu>ul li{margin:0}.navigation .nav .parent .submenu>ul a:hover>span{background:0}.navigation .submenu{background:0;display:none;position:relative;width:100%;overflow-x:hidden;-webkit-transition:left .3s ease-out 0;-moz-transition:left .3s ease-out 0;transition:left .3s ease-out 0}.navigation .submenu.opened{display:block}.navigation .submenu>ul{display:block;padding-top:0;padding-bottom:0}.navigation .submenu>ul li{margin:0}.navigation .submenu>ul a:hover>span{background:0}.navigation .settings.panel>.title{font-weight:600;position:relative;padding:10px 20px;cursor:pointer;font-size:18px}.navigation .settings.panel>.title:after{color:inherit;content:'\e622';display:block;font-family:'icons-blank-theme';font-size:34px;font-weight:400;border:0;top:0;right:5px;left:auto;height:34px;overflow:hidden;opacity:1;position:absolute;width:auto}.navigation .settings.panel>.title.action.back:after{content:'\e617'}.navigation .settings.panel>.content{display:none;margin:0;padding:10px 20px}.navigation .settings.panel>.content .switcher{margin:0;padding:0;display:block}.navigation .settings.panel>.content .switcher:first-child{padding-bottom:0}.navigation .settings.panel>.content .switcher .label{display:block;font-weight:400;font-size:16px;font-size:1.6rem;padding:8px 0;position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.navigation .settings.panel>.content .switcher .options{display:block}.navigation .settings.panel>.content .switcher .options strong{display:block;position:relative;padding:8px 20px;cursor:pointer}.navigation .settings.panel>.content .switcher .options strong:after{color:inherit;content:'\e622';display:block;font-family:'icons-blank-theme';font-size:34px;font-weight:400;border:0;top:0;right:5px;left:auto;height:34px;overflow:hidden;opacity:1;position:absolute;width:auto}.navigation .settings.panel>.content .switcher .options strong.action.back:after{content:'\e617'}.navigation .settings.panel>.content .switcher .options button,.navigation .settings.panel>.content .switcher .options .cart.table.wrapper .cart.items .action{display:none}.navigation .settings.panel>.content .switcher .options ul{display:none;position:relative;margin:0;border:0;background:0}.navigation .settings.panel>.content .switcher .options ul li{font-size:14px;font-size:1.4rem;padding:0}.navigation .settings.panel>.content .switcher .options ul li a{display:block;color:#333;padding:8px 20px;text-decoration:none}.navigation .settings.panel>.content .switcher .options ul li a:hover{color:#333;text-decoration:none}.navigation .settings.panel>.content .switcher .options ul li:hover{background:0}.navigation .settings.panel>.content .switcher .options ul:before,.navigation .settings.panel>.content .switcher .options ul:after{display:none}.navigation .settings.panel>.content .switcher .options.active ul{box-shadow:none;display:block;margin:0}.navigation .settings.panel>.content .header.links li{display:block;margin:0}.navigation .settings.panel>.content .header.links li>a{display:block;font-size:16px;font-size:1.6rem;padding:8px 0}.navigation .settings.panel.active>.content{display:block}.nav>.parent>.submenu>.level0>li>a{font-weight:700}.header.links{padding:10px 20px}.header.links li{display:block;margin:0}.header.links li a{display:block;line-height:35px;color:#575757}.header.links li a:hover{color:#333;text-decoration:none}.header.links li.welcome{line-height:35px}.actions.toolbar .primary,.actions.toolbar .secondary{text-align:center;margin-bottom:10px}.actions.toolbar .primary .action,.actions.toolbar .secondary .action{margin-bottom:10px}.actions.toolbar .primary .action:last-child,.actions.toolbar .secondary .action:last-child{margin-bottom:0}.actions.toolbar .primary:last-child,.actions.toolbar .secondary:last-child{margin-bottom:0}.column.main .widget.block.addbysku .fields{margin-top:25px}.column.main .widget.block.addbysku .fields .action.remove{margin-left:0;right:0;top:-25px}.column.main .widget.block.addbysku .fields .action.remove+.field{clear:both}.bundle.options.container .product.add.form .block.bundle.summary{position:static}.column.main .wrapper.grid .products.list .item.product{width:50%}.products.list.items .actions>.secondary{display:none}.products.list.items .actions>.primary{display:block;float:none}.products.toolbar{display:block}.products.toolbar .settings,.products.toolbar .pages,.products.toolbar .pager{display:block;text-align:center;margin:0 0 10px}.products.toolbar .modes,.products.toolbar .sorter{display:inline-block;margin-bottom:10px}.products.toolbar .limiter .text{display:none}.products.wrapper.list .item.product{display:block;margin-bottom:30px}.products.wrapper.list .item.product .product{display:block}.products.wrapper.list .item.product .product.photo{display:block;width:auto}.products.wrapper.list .item.product .product.details{display:block;width:auto;text-align:center}.block.search{float:none;margin:0;padding:0;position:relative;width:100%;z-index:4}.block.search .action.search{display:none}.block.search .control{border-top:1px solid #d1d1d1;clear:both;margin:0 -90px -1px -20px;padding:0 20px}.block.search .label{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto;text-decoration:none;display:inline-block;float:right}.block.search .label>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.block.search .label:before{font-family:"icons-blank-theme";content:'\e615';font-size:35px;line-height:33px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.block.search .label:active,.block.search .label:focus{outline:0!important}.block.search .nested{left:-300%}.block.search input:focus{position:static;margin:15px 0}.block.search input{left:-300%;position:absolute}.minicart.wrapper{position:absolute;right:10px}.cart.summary,.cart.table.wrapper{position:relative}.cart.summary thead .col.price,.cart.table.wrapper thead .col.price,.cart.summary thead .col.subtotal,.cart.table.wrapper thead .col.subtotal{display:none}.cart.summary .col.price,.cart.table.wrapper .col.price,.cart.summary .col.subtotal,.cart.table.wrapper .col.subtotal{display:block;padding-top:3px;padding-bottom:1px;text-align:left}.cart.summary .col.price:before,.cart.table.wrapper .col.price:before,.cart.summary .col.subtotal:before,.cart.table.wrapper .col.subtotal:before{content:attr(data-th) ":";color:#7d7d7d;display:inline-block;font-size:12px;padding-left:5px}.cart.summary .col.qty,.cart.table.wrapper .col.qty{right:0;position:absolute;width:45px}.cart.summary .cart.items>.item.cart,.cart.table.wrapper .cart.items>.item.cart{display:block;position:relative}.cart.summary .item .col.item,.cart.table.wrapper .item .col.item{display:block;padding:25px 70px 10px 75px;position:relative;min-height:75px}.cart.summary .item .col.qty,.cart.table.wrapper .item .col.qty{top:0}.cart.summary .item.actions td,.cart.table.wrapper .item.actions td{padding-top:20px}.cart.summary .product.photo,.cart.table.wrapper .product.photo{display:block;max-width:60px;left:0;padding:0;position:absolute;top:15px;width:100%}.cart.summary .product.photo .container,.cart.table.wrapper .product.photo .container,.cart.summary .product.photo .container .image,.cart.table.wrapper .product.photo .container .image{max-width:100%;bottom:inherit!important}.cart.summary .actions.main,.cart.table.wrapper .actions.main{text-align:center}.cart.summary .action.update,.cart.table.wrapper .action.update,.cart.summary .action.continue,.cart.table.wrapper .action.continue,.cart.summary .action.clear,.cart.table.wrapper .action.clear{float:none;margin:0 auto 10px}.cart.summary .action.update,.cart.table.wrapper .action.update{display:block}.login.container .fieldset:after{text-align:center}.form.giftregistry.validation .fieldset.add-row .action.remove{float:right;position:static;margin-left:0}.form.giftregistry.validation .fieldset.add-row .action.remove+.field{clear:both}.footer.content .block.newsletter{float:none}.footer.content .block.newsletter .subscribe.form{display:flex}.footer.content .block.newsletter .fieldset,.footer.content .block.newsletter .control{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;width:90%}.footer.content .block.newsletter .actions{padding-left:10px;display:block;vertical-align:top}html.opened{overflow:hidden}body{width:100%;height:100%}body.opened{-webkit-tap-highlight-color:rgba(0,0,0,0);position:relative;height:100%;width:100%;overflow:hidden}body.opened .navigation{left:0;-webkit-box-shadow:1px 1px 3px rgba(0,0,0,.5);box-shadow:1px 1px 3px rgba(0,0,0,.5);-webkit-transition:left .3s ease-out 0;-moz-transition:left .3s ease-out 0;transition:left .3s ease-out 0}body.opened .page.wrapper{margin-right:-86%;cursor:pointer}.page.wrapper{position:relative;width:100%;float:right;margin:0;-webkit-transition:margin .3s ease-out 0;-moz-transition:margin .3s ease-out 0;transition:margin .3s ease-out 0}.logo{position:relative;z-index:5;float:left;max-width:50%;margin:0 0 10px 44px}.logo img{max-height:50px}.header.page{margin-bottom:20px;border-bottom:1px solid #d1d1d1}.header.content{padding-top:10px;position:relative;display:block;padding-right:90px}.header.content:after{content:"";display:table;clear:both}.header .switcher,.header .links,.header .panel{display:none}.action.toggle.nav{display:inline-block;text-decoration:none;display:block;position:absolute;top:12px;left:20px;font-size:0;z-index:14;cursor:pointer}.action.toggle.nav:before{font-family:"icons-blank-theme";content:'\e609';font-size:28px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.action.toggle.nav>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.copyright,.bugs{display:block;margin:20px 0}.block.widget.new .pager .amount{float:none;margin:0 0 7px;text-align:center}}.actions.toolbar:before,.actions.toolbar:after{content:"";display:table}.actions.toolbar:after{clear:both}.actions.toolbar .primary{float:left}.actions.toolbar .secondary{float:right}.actions.toolbar .primary,.actions.toolbar .secondary{display:inline-block}.actions.toolbar .primary a.action,.actions.toolbar .secondary a.action{display:inline-block}.actions.toolbar .primary .action{margin:0 5px 0 0}.actions.toolbar .secondary a.action{margin-top:6px}.example-actions-toolbar-1:before,.example-actions-toolbar-1:after{content:"";display:table}.example-actions-toolbar-1:after{clear:both}.example-actions-toolbar-1 .primary{float:left}.example-actions-toolbar-1 .secondary{float:right}.example-actions-toolbar-1 .primary,.example-actions-toolbar-1 .secondary{display:inline-block}.example-actions-toolbar-1 .primary a.action,.example-actions-toolbar-1 .secondary a.action{display:inline-block}.example-actions-toolbar-1 .primary .action{margin:0 5px 0 0}.example-actions-toolbar-1 .secondary a.action{margin-top:6px}.example-actions-toolbar-2:before,.example-actions-toolbar-2:after{content:"";display:table}.example-actions-toolbar-2:after{clear:both}.example-actions-toolbar-2 .primary{float:left}.example-actions-toolbar-2 .secondary{float:right}.example-actions-toolbar-2 .primary,.example-actions-toolbar-2 .secondary{display:inline-block}.example-actions-toolbar-2 .primary a.action,.example-actions-toolbar-2 .secondary a.action{display:inline-block}.example-actions-toolbar-2 .primary .action{margin:0 5px 0 0}.example-actions-toolbar-2 .secondary a.action{margin-top:6px}.example-actions-toolbar-3{text-align:left}.example-actions-toolbar-3:before,.example-actions-toolbar-3:after{content:"";display:table}.example-actions-toolbar-3:after{clear:both}.example-actions-toolbar-3 .primary{float:left}.example-actions-toolbar-3 .primary,.example-actions-toolbar-3 .secondary{display:inline-block}.example-actions-toolbar-3 .primary a.action,.example-actions-toolbar-3 .secondary a.action{display:inline-block}.example-actions-toolbar-3 .primary .action{margin:0 5px 0 0}.example-actions-toolbar-3 .secondary a.action{margin-top:6px}.example-actions-toolbar-4{text-align:right}.example-actions-toolbar-4:before,.example-actions-toolbar-4:after{content:"";display:table}.example-actions-toolbar-4:after{clear:both}.example-actions-toolbar-4 .secondary{float:right}.example-actions-toolbar-4 .primary,.example-actions-toolbar-4 .secondary{display:inline-block}.example-actions-toolbar-4 .primary a.action,.example-actions-toolbar-4 .secondary a.action{display:inline-block}.example-actions-toolbar-4 .primary .action{margin:0 5px 0 0}.example-actions-toolbar-4 .secondary a.action{margin-top:6px}.example-actions-toolbar-5{text-align:center}.example-actions-toolbar-5:before,.example-actions-toolbar-5:after{content:"";display:table}.example-actions-toolbar-5:after{clear:both}.example-actions-toolbar-5 .primary,.example-actions-toolbar-5 .secondary{vertical-align:top}.example-actions-toolbar-5 .primary,.example-actions-toolbar-5 .secondary{display:inline-block}.example-actions-toolbar-5 .primary a.action,.example-actions-toolbar-5 .secondary a.action{display:inline-block}.example-actions-toolbar-5 .primary .action{margin:0 5px 0 0}.example-actions-toolbar-5 .secondary a.action{margin-top:6px}.example-actions-toolbar-6:before,.example-actions-toolbar-6:after{content:"";display:table}.example-actions-toolbar-6:after{clear:both}.example-actions-toolbar-6 .primary{float:right}.example-actions-toolbar-6 .secondary{float:left}.example-actions-toolbar-6 .primary,.example-actions-toolbar-6 .secondary{display:inline-block}.example-actions-toolbar-6 .primary a.action,.example-actions-toolbar-6 .secondary a.action{display:inline-block}.example-actions-toolbar-6 .primary .action{margin:0 5px 0 0}.example-actions-toolbar-6 .secondary a.action{margin-top:6px}.example-actions-toolbar-7{text-align:left}.example-actions-toolbar-7:before,.example-actions-toolbar-7:after{content:"";display:table}.example-actions-toolbar-7:after{clear:both}.example-actions-toolbar-7 .secondary{float:left}.example-actions-toolbar-7 .primary,.example-actions-toolbar-7 .secondary{display:inline-block}.example-actions-toolbar-7 .primary a.action,.example-actions-toolbar-7 .secondary a.action{display:inline-block}.example-actions-toolbar-7 .primary .action{margin:0 5px 0 0}.example-actions-toolbar-7 .secondary a.action{margin-top:6px}.example-actions-toolbar-8{text-align:right}.example-actions-toolbar-8:before,.example-actions-toolbar-8:after{content:"";display:table}.example-actions-toolbar-8:after{clear:both}.example-actions-toolbar-8 .primary{float:right}.example-actions-toolbar-8 .primary,.example-actions-toolbar-8 .secondary{display:inline-block}.example-actions-toolbar-8 .primary a.action,.example-actions-toolbar-8 .secondary a.action{display:inline-block}.example-actions-toolbar-8 .primary .action{margin:0 5px 0 0}.example-actions-toolbar-8 .secondary a.action{margin-top:6px}.example-actions-toolbar-9{margin:10px;padding:10px}.example-actions-toolbar-9:before,.example-actions-toolbar-9:after{content:"";display:table}.example-actions-toolbar-9:after{clear:both}.example-actions-toolbar-9 .primary{float:left}.example-actions-toolbar-9 .secondary{float:right}.example-actions-toolbar-9 .primary,.example-actions-toolbar-9 .secondary{display:inline-block}.example-actions-toolbar-9 .primary a.action,.example-actions-toolbar-9 .secondary a.action{display:inline-block}.example-actions-toolbar-9 .primary .action{margin:0 5px 0 0}.example-actions-toolbar-9 .secondary a.action{margin-top:6px}.example-actions-toolbar-10{text-align:left}.example-actions-toolbar-10:before,.example-actions-toolbar-10:after{content:"";display:table}.example-actions-toolbar-10:after{clear:both}.example-actions-toolbar-10 .primary{float:left}.example-actions-toolbar-10 .primary,.example-actions-toolbar-10 .secondary{display:inline-block}.example-actions-toolbar-10 .primary a.action,.example-actions-toolbar-10 .secondary a.action{display:inline-block}.example-actions-toolbar-10 .primary .action{margin:0 50px 0 0}.example-actions-toolbar-10 .secondary a.action{margin-top:6px}.example-actions-toolbar-11{text-align:left}.example-actions-toolbar-11:before,.example-actions-toolbar-11:after{content:"";display:table}.example-actions-toolbar-11:after{clear:both}.example-actions-toolbar-11 .primary{float:left}.example-actions-toolbar-11 .primary,.example-actions-toolbar-11 .secondary{display:inline-block}.example-actions-toolbar-11 .primary a.action,.example-actions-toolbar-11 .secondary a.action{display:inline-block}.example-actions-toolbar-11 .primary .action{margin:0 5px 0 0}.example-actions-toolbar-11 .secondary .action{margin:0 50px 0 0}.example-actions-toolbar-11 .secondary a.action{margin-top:6px}.example-actions-toolbar-12:before,.example-actions-toolbar-12:after{content:"";display:table}.example-actions-toolbar-12:after{clear:both}.example-actions-toolbar-12 .primary{float:left}.example-actions-toolbar-12 .secondary{float:right}.example-actions-toolbar-12 .primary,.example-actions-toolbar-12 .secondary{display:inline-block}.example-actions-toolbar-12 .primary a.action,.example-actions-toolbar-12 .secondary a.action{display:inline-block}.example-actions-toolbar-12 .primary .action{margin:0 5px 0 0}.example-actions-toolbar-12 .secondary a.action{margin-top:6px}@media only screen and (max-width: 768px){.example-actions-toolbar-12 .primary,.example-actions-toolbar-12 .secondary{ display:block;float:none}}.example-breadcrumbs-1{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;margin:0 auto;padding-left:20px;padding-right:20px;width:auto;min-width:1000px;max-width:1280px}.example-breadcrumbs-1 .label{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-breadcrumbs-1 .items{font-size:12px;font-size:1.2rem;color:#a3a3a3;margin:0;padding:0;list-style-type:none;list-style-image:none}.example-breadcrumbs-1 .items>li{display:inline-block;vertical-align:top}.example-breadcrumbs-1 a{color:#333;text-decoration:none}.example-breadcrumbs-1 a:visited{color:#333;text-decoration:none}.example-breadcrumbs-1 a:hover{color:#333;text-decoration:underline}.example-breadcrumbs-1 a:active{color:#333;text-decoration:none}.example-breadcrumbs-1 strong{font-weight:400}.example-breadcrumbs-1 .item:not(:last-child):after{color:#a3a3a3;content:'>'}.example-breadcrumbs-1 .label{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-breadcrumbs-1 .items{font-size:12px;font-size:1.2rem;color:#a3a3a3;margin:0;padding:0;list-style-type:none;list-style-image:none}.example-breadcrumbs-1 .items>li{display:inline-block;vertical-align:top}.example-breadcrumbs-1 a{color:#333;text-decoration:none}.example-breadcrumbs-1 a:visited{color:#333;text-decoration:none}.example-breadcrumbs-1 a:hover{color:#333;text-decoration:underline}.example-breadcrumbs-1 a:active{color:#333;text-decoration:none}.example-breadcrumbs-1 strong{font-weight:400}.example-breadcrumbs-1 .item:not(:last-child):after{color:#a3a3a3;content:'>'}.example-breadcrumbs-2 .label{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-breadcrumbs-2 .items{font-size:12px;font-size:1.2rem;color:#1979c3;margin:0;padding:0;list-style-type:none;list-style-image:none}.example-breadcrumbs-2 .items>li{display:inline-block;vertical-align:top}.example-breadcrumbs-2 a{padding:3px 5px;display:inline-block;background-color:#ccc;background-repeat:repeat-x;background-image:-webkit-linear-gradient(top, #f4f4f4 0, #ccc 100%);background-image:linear-gradient(to bottom, #f4f4f4 0, #ccc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f4f4f4', endColorstr='#cccccc', GradientType=0);border:1px solid #ccc;color:#333;text-decoration:none}.example-breadcrumbs-2 a:visited{background-color:'';background-repeat:repeat-x;background-image:-webkit-linear-gradient(top,'' 0,'' 100%);background-image:linear-gradient(to bottom,'' 0,'' 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='''', endColorstr='''', GradientType=0);color:#333;text-decoration:none}.example-breadcrumbs-2 a:hover{background-color:#f4f4f4;background-repeat:repeat-x;background-image:-webkit-linear-gradient(top, #ccc 0, #f4f4f4 100%);background-image:linear-gradient(to bottom, #ccc 0, #f4f4f4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#cccccc', endColorstr='#f4f4f4', GradientType=0);color:#333;text-decoration:none}.example-breadcrumbs-2 a:active{background-color:'';background-repeat:repeat-x;background-image:-webkit-linear-gradient(top,'' 0,'' 100%);background-image:linear-gradient(to bottom,'' 0,'' 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='''', endColorstr='''', GradientType=0);color:#333;text-decoration:none}.example-breadcrumbs-2 strong{background-color:#ff5501;background-repeat:repeat-x;background-image:-webkit-linear-gradient(top, #f7b32e 0, #ff5501 100%);background-image:linear-gradient(to bottom, #f7b32e 0, #ff5501 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f7b32e', endColorstr='#ff5501', GradientType=0);border:1px solid #d04b0a;padding:3px 5px;display:inline-block;font-weight:400}.example-breadcrumbs-2 .item:not(:last-child):after{color:#a3a3a3;content:''}.example-breadcrumbs-3 .label{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-breadcrumbs-3 .items{font-size:12px;font-size:1.2rem;color:#333;margin:0;padding:0;list-style-type:none;list-style-image:none}.example-breadcrumbs-3 .items>li{display:inline-block;vertical-align:top}.example-breadcrumbs-3 a{padding:3px 5px;display:inline-block;background-color:#f4f4f4;color:#333;text-decoration:none}.example-breadcrumbs-3 a:visited{color:#333;text-decoration:none}.example-breadcrumbs-3 a:hover{background-color:#ccc;color:#333;text-decoration:none}.example-breadcrumbs-3 a:active{color:#333;text-decoration:none}.example-breadcrumbs-3 strong{background-color:#e7e7e7;padding:3px 5px;display:inline-block;font-weight:400}.example-breadcrumbs-3 .item:not(:last-child):after{color:#a3a3a3;content:''}.example-breadcrumbs-3 .item a{position:relative;margin:0 11px 0 0}.example-breadcrumbs-3 .item a:after{width:0;height:0;border:12px solid rgba(0,0,0,0);border-left-color:#f4f4f4;content:"";position:absolute;display:block;top:0;right:-23px}.example-breadcrumbs-3 .item a:hover:after{border-color:transparent transparent transparent #ccc}button,.cart.table.wrapper .cart.items .action{background-image:none;background-color:#f2f2f2;padding:0 15px;color:#333;border:1px solid #cdcdcd;cursor:pointer;display:inline-block;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;line-height:30px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;margin:3px;vertical-align:middle;border-radius:3px}button:focus,button:active,.cart.table.wrapper .cart.items .action:focus,.cart.table.wrapper .cart.items .action:active{background-color:#e2e2e2;border:1px solid #cdcdcd;outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;color:#333}button:hover,.cart.table.wrapper .cart.items .action:hover{background-color:#e2e2e2;border:1px solid #cdcdcd;color:#555}button.disabled,button[disabled],fieldset[disabled] button,.cart.table.wrapper .cart.items .action.disabled,.cart.table.wrapper .cart.items .action[disabled],fieldset[disabled] .cart.table.wrapper .cart.items .action{cursor:default;pointer-events:none;opacity:.5}button:active,button:focus,.cart.table.wrapper .cart.items .action:active,.cart.table.wrapper .cart.items .action:focus{box-shadow:inset 0 2px 1px rgba(0,0,0,.12)}.example-button-1.example-button-2{line-height:50px;padding:0 17px;font-size:18px;font-size:1.8rem}.example-button-1.example-button-3{line-height:22px;padding:0 8px;font-size:11px;font-size:1.1rem;border-radius:0;color:#000}.example-button-1.example-button-3:hover,.example-button-1.example-button-3.active{color:#000}.example-button-10{background-color:#f2f2f2;padding:0 15px;color:#333;border:1px solid #cdcdcd;cursor:pointer;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;line-height:30px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;margin:3px;vertical-align:middle;display:inline-block;background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400}.example-button-10>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-button-10:before{font-family:"icons-blank-theme";content:'\e611';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-button-10:hover:before{color:inherit}.example-button-10:active:before{color:inherit}.example-button-10:focus,.example-button-10:active{background-color:#e2e2e2;border:1px solid #cdcdcd;outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;color:#333}.example-button-10:hover{background-color:#e2e2e2;border:1px solid #cdcdcd;color:#555}.example-button-10.disabled,.example-button-10[disabled],fieldset[disabled] .example-button-10{cursor:default;pointer-events:none;opacity:.5}.example-button-10:focus,.example-button-10:active{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;background:0;border:0}.example-button-10:hover{background:0;border:0}.example-button-10.disabled,.example-button-10[disabled],fieldset[disabled] .example-button-10{cursor:not-allowed;pointer-events:none;opacity:.5}.example-button-11{background-image:none;background-color:#f2f2f2;padding:0 15px;color:#333;border:1px solid #cdcdcd;cursor:pointer;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;line-height:30px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;margin:3px;vertical-align:middle;display:inline-block;text-decoration:none}.example-button-11:before{font-family:"icons-blank-theme";content:'\e611';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-button-11:hover:before{color:inherit}.example-button-11:active:before{color:inherit}.example-button-11:focus,.example-button-11:active{background-color:#e2e2e2;border:1px solid #cdcdcd;outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;color:#333}.example-button-11:hover{background-color:#e2e2e2;border:1px solid #cdcdcd;color:#555}.example-button-11.disabled,.example-button-11[disabled],fieldset[disabled] .example-button-11{cursor:default;pointer-events:none;opacity:.5}.example-button-12{background-image:none;background-color:#f2f2f2;padding:0 15px;color:#333;border:1px solid #cdcdcd;cursor:pointer;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;line-height:30px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;margin:3px;vertical-align:middle;display:inline-block;text-decoration:none}.example-button-12:after{font-family:"icons-blank-theme";content:'\e611';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-button-12:hover:after{color:inherit}.example-button-12:active:after{color:inherit}.example-button-12:focus,.example-button-12:active{background-color:#e2e2e2;border:1px solid #cdcdcd;outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;color:#333}.example-button-12:hover{background-color:#e2e2e2;border:1px solid #cdcdcd;color:#555}.example-button-12.disabled,.example-button-12[disabled],fieldset[disabled] .example-button-12{cursor:default;pointer-events:none;opacity:.5}.example-button-13{background-image:none;background-color:#f2f2f2;padding:0 15px;width:100px;color:#333;border:1px solid #cdcdcd;cursor:pointer;display:inline-block;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;line-height:30px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;margin:3px;vertical-align:middle}.example-button-13:focus,.example-button-13:active{background-color:#e2e2e2;border:1px solid #cdcdcd;outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;color:#333}.example-button-13:hover{background-color:#e2e2e2;border:1px solid #cdcdcd;color:#555}.example-button-13.disabled,.example-button-13[disabled],fieldset[disabled] .example-button-13{cursor:default;pointer-events:none;opacity:.5}.example-button-4{background-image:none;background-color:#1979c3;padding:0 15px;color:#fff;border:1px solid #1979c3;cursor:pointer;display:inline-block;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;line-height:30px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;margin:3px;vertical-align:middle}.example-button-4:focus,.example-button-4:active{background-color:#006bb4;border:1px solid #006bb4;outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;color:#fff}.example-button-4:hover{background-color:#006bb4;border:1px solid #006bb4;color:#fff}.example-button-4.disabled,.example-button-4[disabled],fieldset[disabled] .example-button-4{cursor:default;pointer-events:none;opacity:.5}.example-button-4:active{box-shadow:inset 0 3px 1px rgba(0,0,0,.29)}.example-button-4.example-button-5{line-height:50px;padding:0 35px;font-size:18px;font-size:1.8rem}.example-button-4.example-button-6{line-height:22px;padding:0 14px;font-size:11px;font-size:1.1rem;color:#fff}.example-button-4.example-button-6:hover,.example-button-4.example-button-6.active{color:#fff}.example-button-7{background-image:none;background-color:#f2f2f2;background-color:#006bb4;background-repeat:repeat-x;background-image:-webkit-linear-gradient(top, #1979c3 0, #006bb4 100%);background-image:linear-gradient(to bottom, #1979c3 0, #006bb4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1979c3', endColorstr='#006bb4', GradientType=0);padding:0 15px;color:#fff;border:1px solid #1979c3;cursor:pointer;display:inline-block;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;line-height:30px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;margin:3px;vertical-align:middle;border-radius:3px}.example-button-7:focus,.example-button-7:active{background-color:#e2e2e2;background-color:#006bb4;background-repeat:repeat-x;background-image:-webkit-linear-gradient(top, #006bb4 0, #006bb4 100%);background-image:linear-gradient(to bottom, #006bb4 0, #006bb4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#006bb4', endColorstr='#006bb4', GradientType=0);border:1px solid #006bb4;outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;color:#fff}.example-button-7:hover{background-color:#e2e2e2;background-color:#1979c3;background-repeat:repeat-x;background-image:-webkit-linear-gradient(top, #006bb4 0, #1979c3 100%);background-image:linear-gradient(to bottom, #006bb4 0, #1979c3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#006bb4', endColorstr='#1979c3', GradientType=0);border:1px solid #006bb4;color:#fff}.example-button-7.disabled,.example-button-7[disabled],fieldset[disabled] .example-button-7{cursor:default;pointer-events:none;opacity:.5}.example-button-7:active{box-shadow:inset 0 3px 1px rgba(0,0,0,.29)}.example-button-8{background:0;border:0;display:inline;line-height:1.42857143;margin:0;padding:0;color:#1979c3;text-decoration:none;font-weight:400}.example-button-8:visited{color:#800080;text-decoration:none}.example-button-8:hover{color:#006bb4;text-decoration:underline}.example-button-8:active{color:#ff5501;text-decoration:underline}.example-button-8:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.example-button-8:hover,.example-button-8:active,.example-button-8:focus{background:0;border:0;outline:0}.example-button-8.disabled,.example-button-8[disabled],fieldset[disabled] .example-button-8{color:#1979c3;text-decoration:underline;cursor:default;pointer-events:none;opacity:.5}.example-button-8:active{box-shadow:none}.example-button-9{text-decoration:none;background-image:none;background-color:#f2f2f2;padding:0 15px;color:#333;border:1px solid #cdcdcd;cursor:pointer;display:inline-block;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;line-height:30px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;margin:0;vertical-align:middle;margin:3px;border-radius:3px;font-weight:700}.example-button-9:hover,.example-button-9:active,.example-button-9:focus{text-decoration:none}.example-button-9:focus,.example-button-9:active{background-color:#e2e2e2;border:1px solid #cdcdcd;outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;color:#333}.example-button-9:hover{background-color:#e2e2e2;border:1px solid #cdcdcd;color:#555}.example-button-9.disabled,.example-button-9[disabled],fieldset[disabled] .example-button-9{cursor:default;pointer-events:none;opacity:.5}.example-button-9:active{box-shadow:inset 0 3px 1px rgba(0,0,0,.29)}.example-dropdown-1{display:inline-block;position:relative}.example-dropdown-1:before,.example-dropdown-1:after{content:"";display:table}.example-dropdown-1:after{clear:both}.example-dropdown-1 .action.toggle{cursor:pointer;display:inline-block;text-decoration:none}.example-dropdown-1 .action.toggle:after{font-family:"icons-blank-theme";content:'\e607';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-1 .action.toggle:hover:after{color:inherit}.example-dropdown-1 .action.toggle:active:after{color:inherit}.example-dropdown-1 .action.toggle.active{display:inline-block;text-decoration:none}.example-dropdown-1 .action.toggle.active:after{font-family:"icons-blank-theme";content:'\e618';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-1 .action.toggle.active:hover:after{color:inherit}.example-dropdown-1 .action.toggle.active:active:after{color:inherit}.example-dropdown-1 ul.dropdown{margin:0;padding:0;list-style-type:none;list-style-image:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;background-color:#fff;border:1px solid #bbb;position:absolute;z-index:100;min-width:100%;display:none;-webkit-box-shadow:0 3px 3px rgba(0,0,0,.15);-moz-box-shadow:0 3px 3px rgba(0,0,0,.15);box-shadow:0 3px 3px rgba(0,0,0,.15);margin-top:4px}.example-dropdown-1 ul.dropdown li{margin:0;padding:3px 5px}.example-dropdown-1 ul.dropdown li:hover{background-color:#e8e8e8;cursor:pointer}.example-dropdown-1 ul.dropdown:before,.example-dropdown-1 ul.dropdown:after{content:"";position:absolute;display:block;width:0;height:0;border-bottom-style:solid}.example-dropdown-1 ul.dropdown:before{top:-12px;left:10px;z-index:99;border:solid 6px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #fff rgba(0,0,0,0)}.example-dropdown-1 ul.dropdown:after{top:-14px;left:9px;z-index:98;border:solid 7px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #bbb rgba(0,0,0,0)}.example-dropdown-1.active{overflow:visible}.example-dropdown-1.active ul.dropdown{display:block}.example-dropdown-2{display:inline-block;position:relative}.example-dropdown-2:before,.example-dropdown-2:after{content:"";display:table}.example-dropdown-2:after{clear:both}.example-dropdown-2 .action.toggle{cursor:pointer;display:inline-block;text-decoration:none}.example-dropdown-2 .action.toggle:after{font-family:"icons-blank-theme";content:'\e607';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-2 .action.toggle:hover:after{color:inherit}.example-dropdown-2 .action.toggle:active:after{color:inherit}.example-dropdown-2 .action.toggle.active{display:inline-block;text-decoration:none}.example-dropdown-2 .action.toggle.active:after{font-family:"icons-blank-theme";content:'\e618';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-2 .action.toggle.active:hover:after{color:inherit}.example-dropdown-2 .action.toggle.active:active:after{color:inherit}.example-dropdown-2 ul.dropdown{margin:0;padding:0;list-style-type:none;list-style-image:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;background-color:#fff;border:1px solid #bbb;position:absolute;z-index:100;min-width:100%;display:none;-webkit-box-shadow:0 3px 3px rgba(0,0,0,.15);-moz-box-shadow:0 3px 3px rgba(0,0,0,.15);box-shadow:0 3px 3px rgba(0,0,0,.15);margin-top:4px}.example-dropdown-2 ul.dropdown li{margin:0;padding:3px 5px}.example-dropdown-2 ul.dropdown li:hover{background-color:#e8e8e8;cursor:pointer}.example-dropdown-2 ul.dropdown:before,.example-dropdown-2 ul.dropdown:after{content:"";position:absolute;display:block;width:0;height:0;border-bottom-style:solid}.example-dropdown-2 ul.dropdown:before{top:-12px;left:10px;z-index:99;border:solid 6px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #fff rgba(0,0,0,0)}.example-dropdown-2 ul.dropdown:after{top:-14px;left:9px;z-index:98;border:solid 7px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #bbb rgba(0,0,0,0)}.example-dropdown-2.active{overflow:visible}.example-dropdown-2.active ul.dropdown{display:block}.example-dropdown-3{display:inline-block;position:relative}.example-dropdown-3:before,.example-dropdown-3:after{content:"";display:table}.example-dropdown-3:after{clear:both}.example-dropdown-3 .action.toggle{cursor:pointer;display:inline-block;text-decoration:none}.example-dropdown-3 .action.toggle:before{font-family:"icons-blank-theme";content:'\e61c';font-size:22px;line-height:1;color:red;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-3 .action.toggle:hover:before{color:red}.example-dropdown-3 .action.toggle:active:before{color:inherit}.example-dropdown-3 .action.toggle.active{display:inline-block;text-decoration:none}.example-dropdown-3 .action.toggle.active:before{font-family:"icons-blank-theme";content:'\e60f';font-size:22px;line-height:1;color:red;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-3 .action.toggle.active:hover:before{color:red}.example-dropdown-3 .action.toggle.active:active:before{color:inherit}.example-dropdown-3 ul.dropdown{margin:0;padding:0;list-style-type:none;list-style-image:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;background-color:#fff;border:1px solid #bbb;position:absolute;z-index:100;min-width:100%;display:none;-webkit-box-shadow:0 3px 3px rgba(0,0,0,.15);-moz-box-shadow:0 3px 3px rgba(0,0,0,.15);box-shadow:0 3px 3px rgba(0,0,0,.15);margin-top:4px}.example-dropdown-3 ul.dropdown li{margin:0;padding:3px 5px}.example-dropdown-3 ul.dropdown li:hover{background-color:#e8e8e8;cursor:pointer}.example-dropdown-3 ul.dropdown:before,.example-dropdown-3 ul.dropdown:after{content:"";position:absolute;display:block;width:0;height:0;border-bottom-style:solid}.example-dropdown-3 ul.dropdown:before{top:-12px;left:10px;z-index:99;border:solid 6px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #fff rgba(0,0,0,0)}.example-dropdown-3 ul.dropdown:after{top:-14px;left:9px;z-index:98;border:solid 7px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #bbb rgba(0,0,0,0)}.example-dropdown-3.active{overflow:visible}.example-dropdown-3.active ul.dropdown{display:block}.example-dropdown-5{display:inline-block;position:relative}.example-dropdown-5:before,.example-dropdown-5:after{content:"";display:table}.example-dropdown-5:after{clear:both}.example-dropdown-5 .action.toggle{cursor:pointer;display:inline-block;text-decoration:none}.example-dropdown-5 .action.toggle:after{font-family:"icons-blank-theme";content:'\e607';font-size:22px;line-height:1;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-5 .action.toggle:hover:after{color:inherit}.example-dropdown-5 .action.toggle:active:after{color:inherit}.example-dropdown-5 .action.toggle.active{display:inline-block;text-decoration:none}.example-dropdown-5 .action.toggle.active:after{font-family:"icons-blank-theme";content:'\e618';font-size:22px;line-height:1;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-5 .action.toggle.active:hover:after{color:inherit}.example-dropdown-5 .action.toggle.active:active:after{color:inherit}.example-dropdown-5 ul.dropdown{margin:0;padding:0;list-style-type:none;list-style-image:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;background-color:#eef1f3;border:2px solid #ced1d4;position:absolute;z-index:100;min-width:100%;display:none}.example-dropdown-5 ul.dropdown li{margin:0;padding:10px;border-top:2px solid #e8eaed}.example-dropdown-5 ul.dropdown li:first-child{border:0}.example-dropdown-5 ul.dropdown li:hover{background-color:#d8e3e3;cursor:pointer}.example-dropdown-5.active{overflow:visible}.example-dropdown-5.active ul.dropdown{display:block}.example-dropdown-6{display:inline-block;position:relative}.example-dropdown-6:before,.example-dropdown-6:after{content:"";display:table}.example-dropdown-6:after{clear:both}.example-dropdown-6 .action.split{float:left;margin:0}.example-dropdown-6 .action.toggle{float:right;margin:0}.example-dropdown-6 button.action.split,.example-dropdown-6 .cart.table.wrapper .cart.items .action.action.split{-webkit-border-top-right-radius:0;-webkit-border-bottom-right-radius:0;border-top-right-radius:0;border-bottom-right-radius:0}.example-dropdown-6 button+.action.toggle,.example-dropdown-6 .cart.table.wrapper .cart.items .action+.action.toggle{border-left:0;-webkit-border-top-left-radius:0;-webkit-border-bottom-left-radius:0;border-top-left-radius:0;border-bottom-left-radius:0}.example-dropdown-6 .action.split{padding:0 5px}.example-dropdown-6 .action.toggle{padding:0 5px;display:inline-block;text-decoration:none}.example-dropdown-6 .action.toggle>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-dropdown-6 .action.toggle:after{font-family:"icons-blank-theme";content:'\e607';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-6 .action.toggle:hover:after{color:inherit}.example-dropdown-6 .action.toggle:active:after{color:inherit}.example-dropdown-6 .action.toggle.active{display:inline-block;text-decoration:none}.example-dropdown-6 .action.toggle.active>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-dropdown-6 .action.toggle.active:after{font-family:"icons-blank-theme";content:'\e618';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-6 .action.toggle.active:hover:after{color:inherit}.example-dropdown-6 .action.toggle.active:active:after{color:inherit}.example-dropdown-6 ul.dropdown{margin:0;padding:0;list-style-type:none;list-style-image:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;background-color:#fff;border:1px solid #bbb;position:absolute;z-index:100;min-width:100%;display:none;-webkit-box-shadow:0 3px 3px rgba(0,0,0,.15);-moz-box-shadow:0 3px 3px rgba(0,0,0,.15);box-shadow:0 3px 3px rgba(0,0,0,.15);margin-top:4px}.example-dropdown-6 ul.dropdown li{margin:0;padding:3px 5px}.example-dropdown-6 ul.dropdown li:hover{background-color:#e8e8e8;cursor:pointer}.example-dropdown-6 ul.dropdown:before,.example-dropdown-6 ul.dropdown:after{content:"";position:absolute;display:block;width:0;height:0;border-bottom-style:solid}.example-dropdown-6 ul.dropdown:before{top:-12px;left:10px;z-index:99;border:solid 6px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #fff rgba(0,0,0,0)}.example-dropdown-6 ul.dropdown:after{top:-14px;left:9px;z-index:98;border:solid 7px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #bbb rgba(0,0,0,0)}.example-dropdown-6.active{overflow:visible}.example-dropdown-6.active ul.dropdown{display:block}.example-dropdown-6 ul.dropdown{top:100%;left:100%;margin-left:-36px}.split.example-dropdown-7{display:inline-block;position:relative}.split.example-dropdown-7:before,.split.example-dropdown-7:after{content:"";display:table}.split.example-dropdown-7:after{clear:both}.split.example-dropdown-7 .action.split{float:left;margin:0}.split.example-dropdown-7 .action.toggle{float:right;margin:0}.split.example-dropdown-7 .action.split{padding:0 5px}.split.example-dropdown-7 .action.toggle{padding:0 5px;display:inline-block;text-decoration:none}.split.example-dropdown-7 .action.toggle>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.split.example-dropdown-7 .action.toggle:after{font-family:"icons-blank-theme";content:'\e607';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.split.example-dropdown-7 .action.toggle:hover:after{color:inherit}.split.example-dropdown-7 .action.toggle:active:after{color:inherit}.split.example-dropdown-7 .action.toggle.active{display:inline-block;text-decoration:none}.split.example-dropdown-7 .action.toggle.active>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.split.example-dropdown-7 .action.toggle.active:after{font-family:"icons-blank-theme";content:'\e618';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.split.example-dropdown-7 .action.toggle.active:hover:after{color:inherit}.split.example-dropdown-7 .action.toggle.active:active:after{color:inherit}.split.example-dropdown-7 ul.dropdown{margin:0;padding:0;list-style-type:none;list-style-image:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;background-color:#fff;border:1px solid #bbb;position:absolute;z-index:100;min-width:100%;display:none;-webkit-box-shadow:0 3px 3px rgba(0,0,0,.15);-moz-box-shadow:0 3px 3px rgba(0,0,0,.15);box-shadow:0 3px 3px rgba(0,0,0,.15);margin-top:4px}.split.example-dropdown-7 ul.dropdown li{margin:0;padding:3px 5px}.split.example-dropdown-7 ul.dropdown li:hover{background-color:#e8e8e8;cursor:pointer}.split.example-dropdown-7 ul.dropdown:before,.split.example-dropdown-7 ul.dropdown:after{content:"";position:absolute;display:block;width:0;height:0;border-bottom-style:solid}.split.example-dropdown-7 ul.dropdown:before{top:-12px;left:10px;z-index:99;border:solid 6px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #fff rgba(0,0,0,0)}.split.example-dropdown-7 ul.dropdown:after{top:-14px;left:9px;z-index:98;border:solid 7px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #bbb rgba(0,0,0,0)}.split.example-dropdown-7.active{overflow:visible}.split.example-dropdown-7.active ul.dropdown{display:block}.split.example-dropdown-7 ul.dropdown{top:100%;left:100%;margin-left:-36px}.example-dropdown-8{display:inline-block;position:relative}.example-dropdown-8:before,.example-dropdown-8:after{content:"";display:table}.example-dropdown-8:after{clear:both}.example-dropdown-8 .action.split{float:left;margin:0}.example-dropdown-8 .action.toggle{float:right;margin:0}.example-dropdown-8 button.action.split,.example-dropdown-8 .cart.table.wrapper .cart.items .action.action.split{-webkit-border-top-right-radius:0;-webkit-border-bottom-right-radius:0;border-top-right-radius:0;border-bottom-right-radius:0}.example-dropdown-8 button+.action.toggle,.example-dropdown-8 .cart.table.wrapper .cart.items .action+.action.toggle{border-left:0;-webkit-border-top-left-radius:0;-webkit-border-bottom-left-radius:0;border-top-left-radius:0;border-bottom-left-radius:0}.example-dropdown-8 .action.split{padding:0 5px}.example-dropdown-8 .action.toggle{padding:0 5px;display:inline-block;text-decoration:none}.example-dropdown-8 .action.toggle>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-dropdown-8 .action.toggle:after{font-family:"icons-blank-theme";content:'\e607';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-8 .action.toggle:hover:after{color:inherit}.example-dropdown-8 .action.toggle:active:after{color:inherit}.example-dropdown-8 .action.toggle.active{display:inline-block;text-decoration:none}.example-dropdown-8 .action.toggle.active>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-dropdown-8 .action.toggle.active:after{font-family:"icons-blank-theme";content:'\e618';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-8 .action.toggle.active:hover:after{color:inherit}.example-dropdown-8 .action.toggle.active:active:after{color:inherit}.example-dropdown-8 ul.dropdown{margin:0;padding:0;list-style-type:none;list-style-image:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;background-color:#fff;border:1px solid #bbb;position:absolute;z-index:100;min-width:100%;display:none;-webkit-box-shadow:0 3px 3px rgba(0,0,0,.15);-moz-box-shadow:0 3px 3px rgba(0,0,0,.15);box-shadow:0 3px 3px rgba(0,0,0,.15);margin-top:4px}.example-dropdown-8 ul.dropdown li{margin:0;padding:3px 5px}.example-dropdown-8 ul.dropdown li:hover{background-color:#e8e8e8;cursor:pointer}.example-dropdown-8 ul.dropdown:before,.example-dropdown-8 ul.dropdown:after{content:"";position:absolute;display:block;width:0;height:0;border-bottom-style:solid}.example-dropdown-8 ul.dropdown:before{top:-12px;left:10px;z-index:99;border:solid 6px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #fff rgba(0,0,0,0)}.example-dropdown-8 ul.dropdown:after{top:-14px;left:9px;z-index:98;border:solid 7px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #bbb rgba(0,0,0,0)}.example-dropdown-8.active{overflow:visible}.example-dropdown-8.active ul.dropdown{display:block}.example-dropdown-8 ul.dropdown{top:100%;left:100%;margin-left:-36px}.example-dropdown-9{display:inline-block;position:relative}.example-dropdown-9 .action.split,.example-dropdown-9 .action.toggle{line-height:50px;padding:0 17px;font-size:18px;font-size:1.8rem}.example-dropdown-9:before,.example-dropdown-9:after{content:"";display:table}.example-dropdown-9:after{clear:both}.example-dropdown-9 .action.split{float:left;margin:0}.example-dropdown-9 .action.toggle{float:right;margin:0}.example-dropdown-9 button.action.split,.example-dropdown-9 .cart.table.wrapper .cart.items .action.action.split{-webkit-border-top-right-radius:0;-webkit-border-bottom-right-radius:0;border-top-right-radius:0;border-bottom-right-radius:0}.example-dropdown-9 button+.action.toggle,.example-dropdown-9 .cart.table.wrapper .cart.items .action+.action.toggle{border-left:0;-webkit-border-top-left-radius:0;-webkit-border-bottom-left-radius:0;border-top-left-radius:0;border-bottom-left-radius:0}.example-dropdown-9 .action.split{padding:0 5px}.example-dropdown-9 .action.toggle{padding:0 5px;display:inline-block;text-decoration:none}.example-dropdown-9 .action.toggle>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-dropdown-9 .action.toggle:after{font-family:"icons-blank-theme";content:'\e607';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-9 .action.toggle:hover:after{color:inherit}.example-dropdown-9 .action.toggle:active:after{color:inherit}.example-dropdown-9 .action.toggle.active{display:inline-block;text-decoration:none}.example-dropdown-9 .action.toggle.active>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-dropdown-9 .action.toggle.active:after{font-family:"icons-blank-theme";content:'\e618';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-9 .action.toggle.active:hover:after{color:inherit}.example-dropdown-9 .action.toggle.active:active:after{color:inherit}.example-dropdown-9 ul.dropdown{margin:0;padding:0;list-style-type:none;list-style-image:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;background-color:#fff;border:1px solid #bbb;position:absolute;z-index:100;min-width:100%;display:none;-webkit-box-shadow:0 3px 3px rgba(0,0,0,.15);-moz-box-shadow:0 3px 3px rgba(0,0,0,.15);box-shadow:0 3px 3px rgba(0,0,0,.15);margin-top:4px}.example-dropdown-9 ul.dropdown li{margin:0;padding:3px 5px}.example-dropdown-9 ul.dropdown li:hover{background-color:#e8e8e8;cursor:pointer}.example-dropdown-9 ul.dropdown:before,.example-dropdown-9 ul.dropdown:after{content:"";position:absolute;display:block;width:0;height:0;border-bottom-style:solid}.example-dropdown-9 ul.dropdown:before{top:-12px;left:10px;z-index:99;border:solid 6px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #fff rgba(0,0,0,0)}.example-dropdown-9 ul.dropdown:after{top:-14px;left:9px;z-index:98;border:solid 7px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #bbb rgba(0,0,0,0)}.example-dropdown-9.active{overflow:visible}.example-dropdown-9.active ul.dropdown{display:block}.example-dropdown-9 ul.dropdown{top:100%;left:100%;margin-left:-36px}.example-dropdown-10{display:inline-block;position:relative}.example-dropdown-10 .action.split,.example-dropdown-10 .action.toggle{line-height:22px;padding:0 8px;font-size:11px;font-size:1.1rem}.example-dropdown-10:before,.example-dropdown-10:after{content:"";display:table}.example-dropdown-10:after{clear:both}.example-dropdown-10 .action.split{float:left;margin:0}.example-dropdown-10 .action.toggle{float:right;margin:0}.example-dropdown-10 button.action.split,.example-dropdown-10 .cart.table.wrapper .cart.items .action.action.split{-webkit-border-top-right-radius:0;-webkit-border-bottom-right-radius:0;border-top-right-radius:0;border-bottom-right-radius:0}.example-dropdown-10 button+.action.toggle,.example-dropdown-10 .cart.table.wrapper .cart.items .action+.action.toggle{border-left:0;-webkit-border-top-left-radius:0;-webkit-border-bottom-left-radius:0;border-top-left-radius:0;border-bottom-left-radius:0}.example-dropdown-10 .action.split{padding:0 5px}.example-dropdown-10 .action.toggle{padding:0 5px;display:inline-block;text-decoration:none}.example-dropdown-10 .action.toggle>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-dropdown-10 .action.toggle:after{font-family:"icons-blank-theme";content:'\e607';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-10 .action.toggle:hover:after{color:inherit}.example-dropdown-10 .action.toggle:active:after{color:inherit}.example-dropdown-10 .action.toggle.active{display:inline-block;text-decoration:none}.example-dropdown-10 .action.toggle.active>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-dropdown-10 .action.toggle.active:after{font-family:"icons-blank-theme";content:'\e618';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-10 .action.toggle.active:hover:after{color:inherit}.example-dropdown-10 .action.toggle.active:active:after{color:inherit}.example-dropdown-10 ul.dropdown{margin:0;padding:0;list-style-type:none;list-style-image:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;background-color:#fff;border:1px solid #bbb;position:absolute;z-index:100;min-width:100%;display:none;-webkit-box-shadow:0 3px 3px rgba(0,0,0,.15);-moz-box-shadow:0 3px 3px rgba(0,0,0,.15);box-shadow:0 3px 3px rgba(0,0,0,.15);margin-top:4px}.example-dropdown-10 ul.dropdown li{margin:0;padding:3px 5px}.example-dropdown-10 ul.dropdown li:hover{background-color:#e8e8e8;cursor:pointer}.example-dropdown-10 ul.dropdown:before,.example-dropdown-10 ul.dropdown:after{content:"";position:absolute;display:block;width:0;height:0;border-bottom-style:solid}.example-dropdown-10 ul.dropdown:before{top:-12px;left:10px;z-index:99;border:solid 6px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #fff rgba(0,0,0,0)}.example-dropdown-10 ul.dropdown:after{top:-14px;left:9px;z-index:98;border:solid 7px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #bbb rgba(0,0,0,0)}.example-dropdown-10.active{overflow:visible}.example-dropdown-10.active ul.dropdown{display:block}.example-dropdown-10 ul.dropdown{top:100%;left:100%;margin-left:-36px}.example-dropdown-11{display:inline-block;position:relative}.example-dropdown-11:before,.example-dropdown-11:after{content:"";display:table}.example-dropdown-11:after{clear:both}.example-dropdown-11 .action.split{float:right;margin:0}.example-dropdown-11 .action.toggle{float:left;margin:0}.example-dropdown-11 button.action.split,.example-dropdown-11 .cart.table.wrapper .cart.items .action.action.split{-webkit-border-top-left-radius:0;-webkit-border-bottom-left-radius:0;border-top-left-radius:0;border-bottom-left-radius:0}.example-dropdown-11 button+.action.toggle,.example-dropdown-11 .cart.table.wrapper .cart.items .action+.action.toggle{border-right:0;-webkit-border-top-right-radius:0;-webkit-border-bottom-right-radius:0;border-top-right-radius:0;border-bottom-right-radius:0}.example-dropdown-11 .action.split{padding:0 5px}.example-dropdown-11 .action.toggle{padding:0 5px;display:inline-block;text-decoration:none}.example-dropdown-11 .action.toggle>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-dropdown-11 .action.toggle:before{font-family:"icons-blank-theme";content:'\e61c';font-size:22px;line-height:inherit;color:red;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-11 .action.toggle:hover:before{color:red}.example-dropdown-11 .action.toggle:active:before{color:inherit}.example-dropdown-11 .action.toggle.active{display:inline-block;text-decoration:none}.example-dropdown-11 .action.toggle.active>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-dropdown-11 .action.toggle.active:before{font-family:"icons-blank-theme";content:'\e60f';font-size:22px;line-height:inherit;color:red;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-11 .action.toggle.active:hover:before{color:red}.example-dropdown-11 .action.toggle.active:active:before{color:inherit}.example-dropdown-11 ul.dropdown{margin:0;padding:0;list-style-type:none;list-style-image:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;background-color:#fff;border:1px solid #bbb;position:absolute;z-index:100;min-width:100%;display:none;-webkit-box-shadow:0 3px 3px rgba(0,0,0,.15);-moz-box-shadow:0 3px 3px rgba(0,0,0,.15);box-shadow:0 3px 3px rgba(0,0,0,.15);margin-top:4px}.example-dropdown-11 ul.dropdown li{margin:0;padding:3px 5px}.example-dropdown-11 ul.dropdown li:hover{background-color:#e8e8e8;cursor:pointer}.example-dropdown-11 ul.dropdown:before,.example-dropdown-11 ul.dropdown:after{content:"";position:absolute;display:block;width:0;height:0;border-bottom-style:solid}.example-dropdown-11 ul.dropdown:before{top:-12px;left:10px;z-index:99;border:solid 6px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #fff rgba(0,0,0,0)}.example-dropdown-11 ul.dropdown:after{top:-14px;left:9px;z-index:98;border:solid 7px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #bbb rgba(0,0,0,0)}.example-dropdown-11.active{overflow:visible}.example-dropdown-11.active ul.dropdown{display:block}.example-dropdown-11 ul.dropdown{top:100%;left:0}.example-dropdown-12{display:inline-block;position:relative}.example-dropdown-12:before,.example-dropdown-12:after{content:"";display:table}.example-dropdown-12:after{clear:both}.example-dropdown-12 .action.split{float:left;margin:0}.example-dropdown-12 .action.toggle{float:right;margin:0}.example-dropdown-12 button.action.split,.example-dropdown-12 .cart.table.wrapper .cart.items .action.action.split{-webkit-border-top-right-radius:0;-webkit-border-bottom-right-radius:0;border-top-right-radius:0;border-bottom-right-radius:0}.example-dropdown-12 button+.action.toggle,.example-dropdown-12 .cart.table.wrapper .cart.items .action+.action.toggle{border-left:0;-webkit-border-top-left-radius:0;-webkit-border-bottom-left-radius:0;border-top-left-radius:0;border-bottom-left-radius:0}.example-dropdown-12 .action.split{padding:0 5px}.example-dropdown-12 .action.toggle{padding:0 5px;display:inline-block;text-decoration:none}.example-dropdown-12 .action.toggle>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-dropdown-12 .action.toggle:after{font-family:"icons-blank-theme";content:'\e607';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-12 .action.toggle:hover:after{color:inherit}.example-dropdown-12 .action.toggle:active:after{color:inherit}.example-dropdown-12 .action.toggle.active{display:inline-block;text-decoration:none}.example-dropdown-12 .action.toggle.active>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-dropdown-12 .action.toggle.active:after{font-family:"icons-blank-theme";content:'\e618';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-12 .action.toggle.active:hover:after{color:inherit}.example-dropdown-12 .action.toggle.active:active:after{color:inherit}.example-dropdown-12 ul.dropdown{margin:0;padding:0;list-style-type:none;list-style-image:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;background-color:#eef1f3;border:2px solid #ced1d4;position:absolute;z-index:100;min-width:100%;display:none}.example-dropdown-12 ul.dropdown li{margin:0;padding:10px;border-top:2px solid #e8eaed}.example-dropdown-12 ul.dropdown li:first-child{border:0}.example-dropdown-12 ul.dropdown li:hover{background-color:#d8e3e3;cursor:pointer}.example-dropdown-12.active{overflow:visible}.example-dropdown-12.active ul.dropdown{display:block}.example-dropdown-12 ul.dropdown{top:100%;left:100%;margin-left:-36px}.example-form-1 .example-form-1-fieldset{border:0;margin:0 0 40px;padding:0;letter-spacing:-.31em;word-spacing:-.43em}.example-form-1 .example-form-1-fieldset>*{letter-spacing:normal;word-spacing:normal}.example-form-1 .example-form-1-fieldset>.legend{margin:0 0 25px 25.8%;padding:0;font-size:20px;font-size:2rem;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.2;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;float:left;width:74.2%}.example-form-1 .example-form-1-fieldset>.legend+br{display:block;visibility:hidden;height:0;overflow:hidden;clear:both}.example-form-1 .example-form-1-fieldset:after{content:attr(data-hasrequired);display:block;font-size:12px;font-size:1.2rem;color:#e02b27;margin:10px 0 0;letter-spacing:normal;word-spacing:normal}.example-form-1 .example-form-1-fieldset>.field{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;margin:0 0 29px;border:0}.example-form-1 .example-form-1-fieldset>.field:before,.example-form-1 .example-form-1-fieldset>.field:after{content:"";display:table}.example-form-1 .example-form-1-fieldset>.field:after{clear:both}.example-form-1 .example-form-1-fieldset>.field:not(.choice)>.label{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;float:left;width:25.8%;text-align:right;padding:6px 15px 0 0}.example-form-1 .example-form-1-fieldset>.field>.description{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;float:left;width:25.8%;text-align:right;padding:6px 15px 0 0}.example-form-1 .example-form-1-fieldset>.field.choice:before,.example-form-1 .example-form-1-fieldset>.field.no-label:before{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;content:" ";height:1px;float:left;width:25.8%;padding:6px 15px 0 0}.example-form-1 .example-form-1-fieldset>.field>.control{float:left;width:74.2%}.example-form-1 .example-form-1-fieldset>.field>.label{font-size:14px;font-size:1.4rem;font-weight:700}.example-form-1 .example-form-1-fieldset>.field>.label+br{display:none}.example-form-1 .example-form-1-fieldset>.field.required>.label:after{content:'*';font-size:12px;font-size:1.2rem;color:#e02b27;margin:0 0 0 5px}.example-form-1 .example-form-1-fieldset>.field .nested .field{margin:5px 0}.example-form-1 .example-form-1-fieldset>.field.choice>.label{display:inline}.example-form-1 .example-form-1-fieldset>.field.choice>input{vertical-align:top}.example-form-1 .example-form-1-fieldset>.field .fields.group{display:flex;letter-spacing:-.31em;*letter-spacing:normal;word-spacing:-.43em;margin-right:- 20px}.example-form-1 .example-form-1-fieldset>.field .fields.group>*{letter-spacing:normal;word-spacing:normal}.example-form-1 .example-form-1-fieldset>.field .fields.group .field{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;vertical-align:top;margin:0!important}.example-form-1 .example-form-1-fieldset>.field .fields.group .field .label{width:auto;float:none;text-align:left;padding-right:0}.example-form-1 .example-form-1-fieldset>.field .fields.group .field .control{float:none;width:auto}.example-form-1 .example-form-1-fieldset>.field .fields.group.group-2 .field{width:50%!important;display:inline-block}.example-form-1 .example-form-1-fieldset>.field .fields.group.group-3 .field{width:33.3%!important;display:inline-block}.example-form-1 .example-form-1-fieldset>.field .fields.group.group-4 .field{width:25%!important;display:inline-block}.example-form-1 .example-form-1-fieldset>.field .fields.group.group-5 .field{width:20%!important;display:inline-block}.example-form-1 .example-form-1-fieldset>.field .addon{display:inline-flex;flex-wrap:nowrap;padding:0;width:100%}.example-form-1 .example-form-1-fieldset>.field .addon textarea,.example-form-1 .example-form-1-fieldset>.field .addon select,.example-form-1 .example-form-1-fieldset>.field .addon input{order:2;box-shadow:none;display:inline-block;margin:0;width:auto;flex-basis:100%}.example-form-1 .example-form-1-fieldset>.field .addon .addbefore,.example-form-1 .example-form-1-fieldset>.field .addon .addafter{order:3;display:inline-block;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;border:1px solid #c2c2c2;border-radius:1px;height:32px;width:100%;padding:0 10px;font-size:14px;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;line-height:1.42857143;font-style:normal;color:#333;background-clip:padding-box;vertical-align:baseline;width:auto;white-space:nowrap;vertical-align:middle}.example-form-1 .example-form-1-fieldset>.field .addon .addbefore:disabled,.example-form-1 .example-form-1-fieldset>.field .addon .addafter:disabled{opacity:.5}.example-form-1 .example-form-1-fieldset>.field .addon .addbefore{float:left;order:1}.example-form-1 .example-form-1-fieldset>.field .note{font-size:12px;font-size:1.2rem;margin:3px 0 0;padding:0;display:inline-block;text-decoration:none}.example-form-1 .example-form-1-fieldset>.field .note:before{font-family:"icons-blank-theme";content:'\e618';font-size:24px;line-height:12px;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.example-form-2 .example-form-2-fieldset{border:0;margin:0 0 40px;padding:0;letter-spacing:-.31em;word-spacing:-.43em}.example-form-2 .example-form-2-fieldset>*{letter-spacing:normal;word-spacing:normal}.example-form-2 .example-form-2-fieldset>.legend{margin:0 0 25px 25.8%;padding:0;font-size:20px;font-size:2rem;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.2;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;float:left;width:74.2%}.example-form-2 .example-form-2-fieldset>.legend+br{display:block;visibility:hidden;height:0;overflow:hidden;clear:both}.example-form-2 .example-form-2-fieldset>.field{margin:0 0 20px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;display:inline-block;padding:0 20px 0 0;width:50%;vertical-align:top;border:0}.example-form-2 .example-form-2-fieldset>.field:not(.choice)>.label{display:inline-block;width:auto;float:none;text-align:left;margin:0 0 5px}.example-form-2 .example-form-2-fieldset>.field.choice:before,.example-form-2 .example-form-2-fieldset>.field.no-label:before{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;content:" ";height:auto;float:none;width:auto;padding:0}.example-form-2 .example-form-2-fieldset>.field>.control{float:none;width:auto}.example-form-2 .example-form-2-fieldset>.field .nested .field{width:100%}.example-form-2 .example-form-2-fieldset>.field>.label{font-size:14px;font-size:1.4rem;font-weight:700}.example-form-2 .example-form-2-fieldset>.field>.label+br{display:none}.example-form-2 .example-form-2-fieldset>.field.required>.label:after{content:'*';font-size:12px;font-size:1.2rem;color:#e02b27;margin:0 0 0 5px}.example-form-2 .example-form-2-fieldset>.field .nested .field{margin:5px 0}.example-form-2 .example-form-2-fieldset>.field.choice>.label{display:inline}.example-form-2 .example-form-2-fieldset>.field.choice>input{vertical-align:top}.example-form-2 .example-form-2-fieldset>.field .fields.group{display:flex;letter-spacing:-.31em;*letter-spacing:normal;word-spacing:-.43em;margin-right:- 20px}.example-form-2 .example-form-2-fieldset>.field .fields.group>*{letter-spacing:normal;word-spacing:normal}.example-form-2 .example-form-2-fieldset>.field .fields.group .field{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;vertical-align:top;margin:0!important}.example-form-2 .example-form-2-fieldset>.field .fields.group .field .label{width:auto;float:none;text-align:left;padding-right:0}.example-form-2 .example-form-2-fieldset>.field .fields.group .field .control{float:none;width:auto}.example-form-2 .example-form-2-fieldset>.field .fields.group.group-2 .field{width:50%!important;display:inline-block}.example-form-2 .example-form-2-fieldset>.field .fields.group.group-3 .field{width:33.3%!important;display:inline-block}.example-form-2 .example-form-2-fieldset>.field .fields.group.group-4 .field{width:25%!important;display:inline-block}.example-form-2 .example-form-2-fieldset>.field .fields.group.group-5 .field{width:20%!important;display:inline-block}.example-form-2 .example-form-2-fieldset>.field .addon{display:inline-flex;flex-wrap:nowrap;padding:0;width:100%}.example-form-2 .example-form-2-fieldset>.field .addon textarea,.example-form-2 .example-form-2-fieldset>.field .addon select,.example-form-2 .example-form-2-fieldset>.field .addon input{order:2;box-shadow:none;display:inline-block;margin:0;width:auto;flex-basis:100%}.example-form-2 .example-form-2-fieldset>.field .addon .addbefore,.example-form-2 .example-form-2-fieldset>.field .addon .addafter{order:3;display:inline-block;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;border:1px solid #c2c2c2;border-radius:1px;height:32px;width:100%;padding:0 10px;font-size:14px;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;line-height:1.42857143;font-style:normal;color:#333;background-clip:padding-box;vertical-align:baseline;width:auto;white-space:nowrap;vertical-align:middle}.example-form-2 .example-form-2-fieldset>.field .addon .addbefore:disabled,.example-form-2 .example-form-2-fieldset>.field .addon .addafter:disabled{opacity:.5}.example-form-2 .example-form-2-fieldset>.field .addon .addbefore{float:left;order:1}.example-form-2 .example-form-2-fieldset>.field .note{font-size:12px;font-size:1.2rem;margin:3px 0 0;padding:0;display:inline-block;text-decoration:none}.example-form-2 .example-form-2-fieldset>.field .note:before{font-family:"icons-blank-theme";content:'\e618';font-size:24px;line-height:12px;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}input[type="text"],input[type="password"],input[type="url"],input[type="tel"],input[type="search"],input[type="number"],input[type="datetime"],input[type="email"]{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;border:1px solid #c2c2c2;border-radius:1px;height:32px;width:100%;padding:0 10px;font-size:14px;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;line-height:1.42857143;font-style:normal;color:#333;background-clip:padding-box;vertical-align:baseline;margin-bottom:20px}input[type="text"]:disabled,input[type="password"]:disabled,input[type="url"]:disabled,input[type="tel"]:disabled,input[type="search"]:disabled,input[type="number"]:disabled,input[type="datetime"]:disabled,input[type="email"]:disabled{opacity:.5}select{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;border:1px solid #c2c2c2;border-radius:1px;height:32px;width:100%;padding:5px 10px 4px;font-size:14px;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;line-height:1.42857143;font-style:normal;color:#333;background-clip:padding-box;vertical-align:baseline;margin-bottom:20px}select:disabled{opacity:.5}select[multiple="multiple"]{height:auto;margin-bottom:20px}textarea{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;border:1px solid #c2c2c2;border-radius:1px;height:auto;width:100%;padding:10px;font-size:14px;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;line-height:1.42857143;font-style:normal;color:#333;background-clip:padding-box;vertical-align:baseline;resize:vertical}textarea:disabled{opacity:.5}input[type="checkbox"]{vertical-align:top;margin:2px 5px 0 0}input[type="checkbox"]:disabled{opacity:.5}input[type="radio"]{vertical-align:top;margin:2px 5px 0 0}input[type="radio"]:disabled{opacity:.5}input.text-example-2,select.select-example-2{height:42px}input.text-example-2,select.select-example-2,textarea.textarea-example-2{margin:0 0 50px 0;padding:5px 25px}input.text-example-1,select.select-example-1,textarea.textarea-example-1{border-color:#24adb2;background-color:#fffced}input.text-example-1:focus,select.select-example-1:focus,textarea.textarea-example-1:focus{border-color:#00f;color:#008000}input.text-example-1:disabled,select.select-example-1:disabled,textarea.textarea-example-1:disabled{color:red}input.text-example-1::-moz-placeholder,textarea.textarea-example-1::-moz-placeholder{color:#a9a9a9}input.text-example-1::-webkit-input-placeholder,textarea.textarea-example-1::-webkit-input-placeholder{color:#a9a9a9}input.text-example-1:-ms-input-placeholder,textarea.textarea-example-1:-ms-input-placeholder{color:#a9a9a9}input.checkbox-example-1,input.radio-example-1{margin:15px}input.text-example-3,select.select-example-3{height:42px;width:50%}textarea.textarea-example-3{width:50%}.number-example::-webkit-inner-spin-button,.number-example::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.search-example{-webkit-appearance:none}.search-example::-webkit-search-cancel-button,.search-example::-webkit-search-decoration,.search-example::-webkit-search-results-button,.search-example::-webkit-search-results-decoration{-webkit-appearance:none}input.mage-error,textarea.mage-error,select.mage-error{border-color:#ed8380}input+div.mage-error,textarea+div.mage-error,select+div.mage-error{font-size:12px;font-size:1.2rem;color:#e02b27;margin:3px 0 0}input.text-example-6.mage-error,input.text-example-7.mage-error{border-color:#ed8380}input.text-example-6+div.mage-error,input.text-example-7+div.mage-error{font-size:12px;font-size:1.2rem;color:#e02b27;margin:3px 0 0;display:inline-block;text-decoration:none}input.text-example-6+div.mage-error:before,input.text-example-7+div.mage-error:before{font-family:"icons-blank-theme";content:'\e618';font-size:24px;line-height:12px;color:#e02b27;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}input.text-example-8.mage-error,input.text-example-9.mage-error{border-color:#f47a1f;background-color:#ffead8;color:#71360d}input.text-example-8.valid,input.text-example-9.valid{border-color:#17ad67;background-color:#c9f5e3;color:#0a864d}input.text-example-8+div.mage-error,input.text-example-9+div.mage-error{color:#831fe0}.example-icon-1{display:inline-block}.example-icon-1:before{content:'';display:inline-block;width:26px;height:26px;line-height:26px;vertical-align:middle;background-image:url('http://magento2.loc/pub/lib/images/blank-theme-icons.png');background-position:0 0;background-repeat:no-repeat;margin:''}.example-icon-2{display:inline-block}.example-icon-2:after{content:'';display:inline-block;width:26px;height:26px;line-height:26px;vertical-align:middle;background-image:url('http://magento2.loc/pub/lib/images/blank-theme-icons.png');background-position:-26px 0;background-repeat:no-repeat;margin:''}.example-icon-3{display:inline-block}.example-icon-3>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-icon-3:before{content:'';display:inline-block;width:26px;height:26px;line-height:26px;vertical-align:middle;background-image:url('http://magento2.loc/pub/lib/images/blank-theme-icons.png');background-position:-156px -52px;background-repeat:no-repeat;margin:''}.example-icon-4{display:inline-block;text-decoration:none}.example-icon-4:before{font-family:"icons-blank-theme";content:'\e606';font-size:24px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.example-icon-5{display:inline-block;text-decoration:none}.example-icon-5:after{font-family:"icons-blank-theme";content:'\e605';font-size:24px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.example-icon-6{display:inline-block;text-decoration:none}.example-icon-6>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-icon-6:before{font-family:"icons-blank-theme";content:'\e61b';font-size:24px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.example-icon-7{display:inline-block}.example-icon-7:before{content:'';display:inline-block;width:26px;height:26px;line-height:26px;vertical-align:middle;background-image:url('http://magento2.loc/pub/lib/images/blank-theme-icons.png');background-position:0 0;background-repeat:no-repeat;margin:''}.example-icon-8{display:inline-block}.example-icon-8:before{content:'';display:inline-block;width:26px;height:26px;line-height:26px;vertical-align:middle;background-image:url('http://magento2.loc/pub/lib/images/blank-theme-icons.png');background-position:0 0;background-repeat:no-repeat;margin:''}.example-icon-8:before{background-position:-182px 0}.example-icon-9{display:inline-block}.example-icon-9:after{content:'';display:inline-block;width:26px;height:26px;line-height:26px;vertical-align:middle;background-image:url('http://magento2.loc/pub/lib/images/blank-theme-icons.png');background-position:0 0;background-repeat:no-repeat;margin:''}.example-icon-9:after{background-position:-52px -26px}.example-icon-10{display:inline-block}.example-icon-10:before{content:'';display:inline-block;width:26px;height:26px;line-height:26px;vertical-align:middle;background-image:url('http://magento2.loc/pub/lib/images/blank-theme-icons.png');background-position:0 0;background-repeat:no-repeat;margin:''}.example-icon-10:before{background-position:-104px 0}.example-icon-11{display:inline-block}.example-icon-11:before{content:'';display:inline-block;width:26px;height:26px;line-height:26px;vertical-align:middle;background-image:url('http://magento2.loc/pub/lib/images/blank-theme-icons.png');background-position:0 0;background-repeat:no-repeat;margin:''}.example-icon-11:before{width:30px;height:30px}.example-icon-11:after{width:30px;height:30px}.example-icon-11:before{background-color:#f1f1f1}.example-icon-12{display:inline-block;text-decoration:none}.example-icon-12:before{font-family:"icons-blank-theme";content:'\e612';font-size:28px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.example-icon-13{display:inline-block;text-decoration:none}.example-icon-13:before{font-family:"icons-blank-theme";content:'\e612';font-size:inherit;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.example-icon-13:before{font-size:26px;line-height:inherit}.example-icon-14{display:inline-block;text-decoration:none}.example-icon-14:before{font-family:"icons-blank-theme";content:'\e61d';font-size:26px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.example-icon-14>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.icons-image-list{list-style:none;padding:0}.icons-image-list li{float:left;width:33%}.icons-image-list li>span{display:inline-block}.icons-image-list li>span:before{content:'';display:inline-block;width:26px;height:26px;line-height:26px;vertical-align:middle;background-image:url('http://magento2.loc/pub/lib/images/blank-theme-icons.png');background-position:0 0;background-repeat:no-repeat;margin:''}.icons-image-list li .icon-search:before{background-position:0 0}.icons-image-list li .icon-cart:before{background-position:-26px 0}.icons-image-list li .icon-arrow-down:before{background-position:-52px 0}.icons-image-list li .icon-arrow-up:before{background-position:-78px 0}.icons-image-list li .icon-grid:before{background-position:-104px 0}.icons-image-list li .icon-list:before{background-position:-130px 0}.icons-image-list li .icon-remove:before{background-position:-156px 0}.icons-image-list li .icon-star:before{background-position:-182px 0}.icons-image-list li .icon-pointer-down:before{background-position:-208px 0}.icons-image-list li .icon-pointer-up:before{background-position:-234px 0}.icons-image-list li .icon-pointer-left:before{background-position:-260px 0}.icons-image-list li .icon-pointer-right:before{background-position:-286px 0}.icons-image-list li .icon-compare-empty:before{background-position:0 -26px}.icons-image-list li .icon-compare-full:before{background-position:-26px -26px}.icons-image-list li .icon-wishlist-empty:before{background-position:-52px -26px}.icons-image-list li .icon-wishlist-full:before{background-position:-78px -26px}.icons-image-list li .icon-update:before{background-position:-104px -26px}.icons-image-list li .icon-collapse:before{background-position:-130px -26px}.icons-image-list li .icon-expand:before{background-position:-156px -26px}.icons-image-list li .icon-menu:before{background-position:-182px -26px}.icons-image-list li .icon-prev:before{background-position:-208px -26px}.icons-image-list li .icon-next:before{background-position:-234px -26px}.icons-image-list li .icon-settings:before{background-position:-260px -26px}.icons-image-list li .icon-info:before{background-position:-286px -26px}.icons-image-list li .icon-checkmark:before{background-position:0 -52px}.icons-image-list li .icon-calendar:before{background-position:-26px -52px}.icons-image-list li .icon-comment:before{background-position:-52px -52px}.icons-image-list li .icon-comment-reflected:before{background-position:-78px -52px}.icons-image-list li .icon-envelope:before{background-position:-104px -52px}.icons-image-list li .icon-warning:before{background-position:-130px -52px}.icons-image-list li .icon-trash:before{background-position:-156px -52px}.icons-image-list li .icon-flag:before{background-position:-182px -52px}.icons-image-list li .icon-location:before{background-position:-208px -52px}.icons-image-list li .icon-up:before{background-position:-234px -52px}.icons-image-list li .icon-down:before{background-position:-260px -52px}.icons-font-list{list-style:none;padding:0}.icons-font-list li{float:left;width:25%;margin-bottom:35px;text-align:center}.icons-font-list li>span{display:inline-block;text-decoration:none}.icons-font-list li>span:before{font-family:"icons-blank-theme";content:'';font-size:34px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.icons-font-list li>span:before{content:attr(data-icon);margin:0 auto;display:block}.loader{position:fixed;left:0;top:0;right:0;bottom:0;background-color:rgba(255,255,255,.5);z-index:9999}.loader:before{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;background-color:rgba(0,0,0,0);background-image:url('http://magento2.loc/pub/lib/images/loader-2.gif');background-position:50% 50%;background-repeat:no-repeat;border-radius:5px;content:'';position:absolute;top:0;right:0;left:0;bottom:0;margin:auto;width:160px;height:160px}.loading{position:relative}.loading:before{content:'';position:absolute;left:0;top:0;right:0;bottom:0;background-color:rgba(255,255,255,.5);background-image:url('http://magento2.loc/pub/lib/images/loader-2.gif');background-position:50% 50%;background-repeat:no-repeat}.example-message-info{display:block;margin:0 0 10px;padding:10px 20px;border-radius:0;font-size:13px;font-size:1.3rem;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.2em;background:#fdf0d5;border-color:none;color:#6f4400}.example-message-info a{color:#1979c3}.example-message-info a:hover{color:#006bb4}.example-message-info a:active{color:#006bb4}.example-message-warning{display:block;margin:0 0 10px;padding:10px 20px;border-radius:0;font-size:13px;font-size:1.3rem;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.2em;background:#fdf0d5;border-color:none;color:#6f4400}.example-message-warning a{color:#1979c3}.example-message-warning a:hover{color:#006bb4}.example-message-warning a:active{color:#006bb4}.example-message-error{display:block;margin:0 0 10px;padding:10px 20px;border-radius:0;font-size:13px;font-size:1.3rem;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.2em;background:#fae5e5;border-color:none;color:#e02b27}.example-message-error a{color:#1979c3}.example-message-error a:hover{color:#006bb4}.example-message-error a:active{color:#006bb4}.example-message-success{display:block;margin:0 0 10px;padding:10px 20px;border-radius:0;font-size:13px;font-size:1.3rem;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.2em;background:#e5efe5;border-color:none;color:#006400}.example-message-success a{color:#1979c3}.example-message-success a:hover{color:#006bb4}.example-message-success a:active{color:#006bb4}.example-message-notice{display:block;margin:0 0 10px;padding:10px 20px;border-radius:0;font-size:13px;font-size:1.3rem;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.2em;background:#fdf0d5;border-color:none;color:#6f4400}.example-message-notice a{color:#1979c3}.example-message-notice a:hover{color:#006bb4}.example-message-notice a:active{color:#006bb4}.example-message-1{display:block;margin:0 0 10px;padding:10px 20px;border-radius:0;font-size:13px;font-size:1.3rem;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.2em;background:#fdf0d5;border-color:none;color:#6f4400;position:relative;padding-left:40px}.example-message-1 a{color:#1979c3}.example-message-1 a:hover{color:#006bb4}.example-message-1 a:active{color:#006bb4}.example-message-1>:first-child:before{font-family:"icons-blank-theme";content:'\e602';font-size:28px;line-height:28px;color:#c07600;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;margin:-14px 0 0;position:absolute;left:0;top:50%;text-align:center;width:40px}.example-message-2{display:block;margin:0 0 10px;padding:10px 20px;border-radius:0;font-size:13px;font-size:1.3rem;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.2em;background:#fae5e5;border-color:none;color:#e02b27;position:relative;padding-right:40px}.example-message-2 a{color:#1979c3}.example-message-2 a:hover{color:#006bb4}.example-message-2 a:active{color:#006bb4}.example-message-2:before{content:'';position:absolute;width:30px;text-align:center;top:0;height:100%;display:block;padding:0;background:#b30000}.example-message-2>:first-child:before{content:'';position:absolute;overflow:hidden;top:50%;margin-top:-5px}.example-message-2>:first-child:after{font-family:"icons-blank-theme";content:'\e602';font-size:28px;line-height:28px;color:#fff;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;margin:-14px 0 0;position:absolute;top:50%;text-align:center;width:30px}.example-message-2:before{right:0;border-radius:0}.example-message-2>:first-child:before{width:0;height:0;border:5px solid rgba(0,0,0,0);border-right-color:#b30000;right:30px}.example-message-2>:first-child:after{right:0}.example-message-3{display:block;margin:0 0 10px;padding:10px 20px;border-radius:0;font-size:13px;font-size:1.3rem;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.2em;background:#e5efe5;border-color:none;color:#006400;position:relative;padding-left:40px}.example-message-3 a{color:#1979c3}.example-message-3 a:hover{color:#006bb4}.example-message-3 a:active{color:#006bb4}.example-message-3:before{content:'';position:absolute;width:30px;text-align:center;top:0;height:100%;display:block;padding:0;background:#006400}.example-message-3>:first-child:before{content:'';position:absolute;overflow:hidden;top:50%;margin-top:-5px}.example-message-3>:first-child:after{font-family:"icons-blank-theme";content:'\e610';font-size:28px;line-height:28px;color:#fff;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;margin:-14px 0 0;position:absolute;top:50%;text-align:center;width:30px}.example-message-3:before{left:0;border-radius:0}.example-message-3>:first-child:before{width:0;height:0;border:5px solid rgba(0,0,0,0);border-left-color:#006400;left:30px}.example-message-3>:first-child:after{left:0}.example-message-4{display:block;margin:0 0 10px;padding:10px 20px;border-radius:0;font-size:13px;font-size:1.3rem;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.2em;background:#fc0;border-color:#ffa500;color:#000;position:relative;padding-left:40px;border-width:4px;border-radius:10px}.example-message-4 a{color:#00f}.example-message-4 a:hover{color:#009}.example-message-4 a:active{color:#006}.example-message-4:before{content:'';position:absolute;width:30px;text-align:center;top:0;height:100%;display:block;padding:0;background:#green}.example-message-4>:first-child:before{content:'';position:absolute;overflow:hidden;top:50%;margin-top:-5px}.example-message-4>:first-child:after{font-family:"icons-blank-theme";content:'\e606';font-size:28px;line-height:28px;color:#000;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;margin:-14px 0 0;position:absolute;top:50%;text-align:center;width:30px}.example-message-4:before{left:0;border-radius:0}.example-message-4>:first-child:before{width:0;height:0;border:5px solid rgba(0,0,0,0);border-left-color:#green;left:30px}.example-message-4>:first-child:after{left:0}header.header{background-color:rgba(255,0,0,.2)}.column.main{background-color:rgba(255,255,0,.2)}.column.left{background-color:rgba(0,255,255,.2)}.column.right{background-color:rgba(0,0,255,.2)}footer.footer{background-color:rgba(0,0,0,.2)}.columns{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;display:flex;flex-direction:row;flex-wrap:wrap}.columns:after{content:" ";display:block;height:0;clear:both;overlow:hidden;visibility:hidden}.columns>.column{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;min-height:10px}.layout-1 .column.main{width:100%;order:2}.layout-3 .column.main{width:66.66666667%;display:inline-block;order:2}.layout-2-left .column.main{width:83.33333333%;float:right;order:2}.layout-2-right .column.main{width:83.33333333%;float:left;order:1}.layout-3 .column.left{width:16.66666667%;float:left;order:1}.layout-2-left .column.left{width:16.66666667%;float:left;order:1}.layout-2-right .column.left{width:16.66666667%;float:left;order:1}.layout-3 .column.right{width:16.66666667%;float:right;order:3}.layout-2-left .column.right{width:16.66666667%;float:right;order:2}.layout-2-right .column.right{width:16.66666667%;float:right;order:2}.layout-example-3 .column.main{width:60%;display:inline-block;order:2}.layout-example-3 .column.left{width:20%;float:left;order:1}.layout-example-3 .column.right{width:20%;float:right;order:3}.layout-example-3-1 .column.main{width:60%;float:left;order:1}.layout-example-3-1 .column.left{width:20%;display:inline-block;order:2}.layout-example-3-1 .column.right{width:20%;float:right;order:3}header.header,footer.footer,.page.main{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;margin:0 auto;padding-left:20px;padding-right:20px;width:auto;min-width:1000px;max-width:1280px}.pages>.label{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.pages .items{font-size:0;line-height:0;letter-spacing:-1px;white-space:nowrap;margin:0;padding:0;list-style-type:none;list-style-image:none;display:inline-block;font-weight:400}.pages .item{font-size:1.2rem;font-size:12px;line-height:32px;letter-spacing:normal;margin:0 1px;display:inline-block}.pages .item .label{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.pages a.page{padding:0 10px;color:#1979c3;display:inline-block;text-decoration:none}.pages a.page:visited{color:#800080}.pages a.page:hover{color:#006bb4;text-decoration:none}.pages a.page:active{color:#ff5501}.pages strong.page{font-size:1.2rem;font-size:12px;line-height:32px;letter-spacing:normal;padding:0 10px;color:#333;display:inline-block;font-weight:700}.pages .action{border:1px solid #d1d1d1;padding:0;color:#7d7d7d;display:inline-block;text-decoration:none}.pages .action:visited{color:#7d7d7d}.pages .action:hover{color:#7d7d7d;text-decoration:none}.pages .action:active{color:#7d7d7d}.pages .action.next{display:inline-block;text-decoration:none}.pages .action.next:visited:before{color:#7d7d7d}.pages .action.next:active:before{color:#7d7d7d}.pages .action.next>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.pages .action.next:before{font-family:"icons-blank-theme";content:'\e608';font-size:32px;line-height:inherit;color:#7d7d7d;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center}.pages .action.next:hover:before{color:#7d7d7d}.pages .action.next:active:before{color:#7d7d7d}.pages .action.previous{display:inline-block;text-decoration:none}.pages .action.previous:visited:before{color:#7d7d7d}.pages .action.previous:active:before{color:#7d7d7d}.pages .action.previous>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.pages .action.previous:before{font-family:"icons-blank-theme";content:'\e617';font-size:32px;line-height:inherit;color:#7d7d7d;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center}.pages .action.previous:hover:before{color:#7d7d7d}.pages .action.previous:active:before{color:#7d7d7d}.example-pages-1>.label{display:inline-block;font-weight:400;font-size:1.2rem;font-size:12px;line-height:32px;letter-spacing:normal}.example-pages-1>.label:after{content:':'}.example-pages-1 .items{font-size:0;line-height:0;letter-spacing:-1px;white-space:nowrap;margin:0;padding:0;list-style-type:none;list-style-image:none;display:inline-block;font-weight:400}.example-pages-1 .item{font-size:1.2rem;font-size:12px;line-height:32px;letter-spacing:normal;margin:0 3px;display:inline-block}.example-pages-1 .item .label{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-pages-1 a.page{background-color:#ccc;background-repeat:repeat-x;background-image:-webkit-linear-gradient(top, #f4f4f4 0, #ccc 100%);background-image:linear-gradient(to bottom, #f4f4f4 0, #ccc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f4f4f4', endColorstr='#cccccc', GradientType=0);border:1px solid #b3b3b3;padding:0 10px;color:#333;display:inline-block;text-decoration:none}.example-pages-1 a.page:visited{background-color:'';background-repeat:repeat-x;background-image:-webkit-linear-gradient(top,'' 0,'' 100%);background-image:linear-gradient(to bottom,'' 0,'' 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='''', endColorstr='''', GradientType=0);color:#800080}.example-pages-1 a.page:hover{background-color:#f4f4f4;background-repeat:repeat-x;background-image:-webkit-linear-gradient(top, #ccc 0, #f4f4f4 100%);background-image:linear-gradient(to bottom, #ccc 0, #f4f4f4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#cccccc', endColorstr='#f4f4f4', GradientType=0);border:1px solid #999;color:#333;text-decoration:none}.example-pages-1 a.page:active{background-color:'';background-repeat:repeat-x;background-image:-webkit-linear-gradient(top,'' 0,'' 100%);background-image:linear-gradient(to bottom,'' 0,'' 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='''', endColorstr='''', GradientType=0);color:#ff5501}.example-pages-1 strong.page{background-color:#1979c3;border:1px solid #135d96;font-size:1.2rem;font-size:12px;line-height:32px;letter-spacing:normal;padding:0 10px;color:#f7b32e;display:inline-block;font-weight:700}.example-pages-1 .action{border:1px solid #d1d1d1;padding:0;color:#7d7d7d;display:inline-block;text-decoration:none}.example-pages-1 .action:visited{color:#7d7d7d}.example-pages-1 .action:hover{color:#ff5501;text-decoration:none}.example-pages-1 .action:active{color:#7d7d7d}.example-pages-1 .action.next{display:inline-block;text-decoration:none}.example-pages-1 .action.next:visited:before{color:#7d7d7d}.example-pages-1 .action.next:active:before{color:#7d7d7d}.example-pages-1 .action.next>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-pages-1 .action.next:before{font-family:"icons-blank-theme";content:'\e608';font-size:30px;line-height:inherit;color:#7d7d7d;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center}.example-pages-1 .action.next:hover:before{color:#ff5501}.example-pages-1 .action.next:active:before{color:#7d7d7d}.example-pages-1 .action.previous{display:inline-block;text-decoration:none}.example-pages-1 .action.previous:visited:before{color:#7d7d7d}.example-pages-1 .action.previous:active:before{color:#7d7d7d}.example-pages-1 .action.previous>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-pages-1 .action.previous:before{font-family:"icons-blank-theme";content:'\e617';font-size:30px;line-height:inherit;color:#7d7d7d;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center}.example-pages-1 .action.previous:hover:before{color:#ff5501}.example-pages-1 .action.previous:active:before{color:#7d7d7d}.example-pages-2>.label{display:inline-block;font-weight:400;font-size:1.2rem;font-size:12px;line-height:32px;letter-spacing:normal}.example-pages-2>.label:after{content:':'}.example-pages-2 .items{font-size:0;line-height:0;letter-spacing:-1px;white-space:nowrap;margin:0;padding:0;list-style-type:none;list-style-image:none;display:inline-block;font-weight:400}.example-pages-2 .item{font-size:1.2rem;font-size:12px;line-height:32px;letter-spacing:normal;margin:0 1px;display:inline-block}.example-pages-2 .item .label{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-pages-2 a.page{padding:0 10px;color:#1979c3;display:inline-block;text-decoration:none}.example-pages-2 a.page:visited{color:#800080}.example-pages-2 a.page:hover{color:#006bb4;text-decoration:none}.example-pages-2 a.page:active{color:#ff5501}.example-pages-2 strong.page{font-size:1.2rem;font-size:12px;line-height:32px;letter-spacing:normal;padding:0 10px;color:#333;display:inline-block;font-weight:700}.example-pages-2 .action{border:1px solid #d1d1d1;padding:0;color:#7d7d7d;display:inline-block;text-decoration:none}.example-pages-2 .action:visited{color:#7d7d7d}.example-pages-2 .action:hover{color:#7d7d7d;text-decoration:none}.example-pages-2 .action:active{color:#7d7d7d}.example-pages-3>.label{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-pages-3 .items{font-size:0;line-height:0;letter-spacing:-1px;white-space:nowrap;margin:0;padding:0;list-style-type:none;list-style-image:none;display:inline-block;font-weight:400}.example-pages-3 .item{font-size:1.2rem;font-size:12px;line-height:32px;letter-spacing:normal;margin:0 1px;display:inline-block}.example-pages-3 .item .label{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-pages-3 a.page{background-color:#1979c3;padding:0 10px;color:#fff;display:inline-block;text-decoration:none}.example-pages-3 a.page:visited{background-color:#800080;color:#fff}.example-pages-3 a.page:hover{background-color:#006bb4;color:#fff;text-decoration:none}.example-pages-3 a.page:active{background-color:#ff5501;color:#fff}.example-pages-3 strong.page{background-color:#800080;font-size:1.2rem;font-size:12px;line-height:32px;letter-spacing:normal;padding:0 10px;color:#fff;display:inline-block;font-weight:700}.example-pages-3 .action{background-color:#1979c3;border:1px solid #d1d1d1;padding:0;color:#fff;display:inline-block;text-decoration:none}.example-pages-3 .action:visited{background-color:#800080;color:#7d7d7d}.example-pages-3 .action:hover{background-color:#006bb4;color:#fff;text-decoration:none}.example-pages-3 .action:active{background-color:#ff5501;color:#fff}.example-pages-3 .action.next{display:inline-block;text-decoration:none}.example-pages-3 .action.next:visited:before{color:#7d7d7d}.example-pages-3 .action.next:active:before{color:#fff}.example-pages-3 .action.next>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-pages-3 .action.next:before{font-family:"icons-blank-theme";content:'\e608';font-size:32px;line-height:inherit;color:#fff;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center}.example-pages-3 .action.next:hover:before{color:#fff}.example-pages-3 .action.next:active:before{color:#fff}.example-pages-3 .action.previous{display:inline-block;text-decoration:none}.example-pages-3 .action.previous:visited:before{color:#7d7d7d}.example-pages-3 .action.previous:active:before{color:#fff}.example-pages-3 .action.previous>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-pages-3 .action.previous:before{font-family:"icons-blank-theme";content:'\e617';font-size:32px;line-height:inherit;color:#fff;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center}.example-pages-3 .action.previous:hover:before{color:#fff}.example-pages-3 .action.previous:active:before{color:#fff}.window.popup.popup-example{width:380px;background-color:#fff;padding:22px;border:1px solid #aeaeae;-webkit-box-shadow:0 3px 3px rgba(0,0,0,.15);-moz-box-shadow:0 3px 3px rgba(0,0,0,.15);box-shadow:0 3px 3px rgba(0,0,0,.15);display:none;position:fixed;top:20%;left:50%;margin-left:-212px;z-index:1001;opacity:0;-webkit-transition:opacity .3s linear;-moz-transition:opacity .3s linear;transition:opacity .3s linear}.window.popup.popup-example .popup.header .title{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem}.window.popup.popup-example .popup.actions .action.close{position:absolute;display:inline-block;background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400;top:10px;right:10px}.window.popup.popup-example .popup.actions .action.close>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.window.popup.popup-example .popup.actions .action.close:before{font-family:"icons-blank-theme";content:'\e616';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.window.popup.popup-example .popup.actions .action.close:hover:before{color:inherit}.window.popup.popup-example .popup.actions .action.close:active:before{color:inherit}.window.popup.popup-example .popup.actions .action.close:focus,.window.popup.popup-example .popup.actions .action.close:active{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;background:0;border:0}.window.popup.popup-example .popup.actions .action.close:hover{background:0;border:0}.window.popup.popup-example .popup.actions .action.close.disabled,.window.popup.popup-example .popup.actions .action.close[disabled],fieldset[disabled] .window.popup.popup-example .popup.actions .action.close{cursor:not-allowed;pointer-events:none;opacity:.5}.window.popup.popup-example.active{opacity:1}.window.popup.popup-example-1{width:380px;background-color:#fff;padding:22px;border:1px solid #aeaeae;-webkit-box-shadow:0 3px 3px rgba(0,0,0,.15);-moz-box-shadow:0 3px 3px rgba(0,0,0,.15);box-shadow:0 3px 3px rgba(0,0,0,.15);display:none;position:fixed;top:20%;left:50%;margin-left:-212px;z-index:1001;opacity:0;-webkit-transition:opacity .3s linear;-moz-transition:opacity .3s linear;transition:opacity .3s linear}.window.popup.popup-example-1 .popup.header .title{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem}.window.popup.popup-example-1 .popup.actions .action.close{position:absolute;display:inline-block;background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400;top:10px;right:10px}.window.popup.popup-example-1 .popup.actions .action.close>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.window.popup.popup-example-1 .popup.actions .action.close:before{font-family:"icons-blank-theme";content:'\e616';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.window.popup.popup-example-1 .popup.actions .action.close:hover:before{color:inherit}.window.popup.popup-example-1 .popup.actions .action.close:active:before{color:inherit}.window.popup.popup-example-1 .popup.actions .action.close:focus,.window.popup.popup-example-1 .popup.actions .action.close:active{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;background:0;border:0}.window.popup.popup-example-1 .popup.actions .action.close:hover{background:0;border:0}.window.popup.popup-example-1 .popup.actions .action.close.disabled,.window.popup.popup-example-1 .popup.actions .action.close[disabled],fieldset[disabled] .window.popup.popup-example-1 .popup.actions .action.close{cursor:not-allowed;pointer-events:none;opacity:.5}.window.popup.popup-example-1.active{opacity:1}.window.overlay{-webkit-transition:opacity .15s linear;-moz-transition:opacity .15s linear;transition:opacity .15s linear;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background-color:#000;opacity:0}.window.overlay.active{opacity:.5;filter:alpha(opacity=50)}.window.popup.popup-example-2{width:380px;background-color:#fff;padding:22px;border:1px solid #aeaeae;overflow-y:auto;max-height:200px;-webkit-box-shadow:0 3px 3px rgba(0,0,0,.15);-moz-box-shadow:0 3px 3px rgba(0,0,0,.15);box-shadow:0 3px 3px rgba(0,0,0,.15);display:none;position:fixed;top:20%;left:50%;margin-left:-212px;z-index:1001;opacity:0;-webkit-transition:opacity .3s linear;-moz-transition:opacity .3s linear;transition:opacity .3s linear}.window.popup.popup-example-2 .popup.header .title{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem}.window.popup.popup-example-2 .popup.actions .action.close{position:absolute;display:inline-block;background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400;top:10px;right:10px}.window.popup.popup-example-2 .popup.actions .action.close>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.window.popup.popup-example-2 .popup.actions .action.close:before{font-family:"icons-blank-theme";content:'\e616';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.window.popup.popup-example-2 .popup.actions .action.close:hover:before{color:inherit}.window.popup.popup-example-2 .popup.actions .action.close:active:before{color:inherit}.window.popup.popup-example-2 .popup.actions .action.close:focus,.window.popup.popup-example-2 .popup.actions .action.close:active{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;background:0;border:0}.window.popup.popup-example-2 .popup.actions .action.close:hover{background:0;border:0}.window.popup.popup-example-2 .popup.actions .action.close.disabled,.window.popup.popup-example-2 .popup.actions .action.close[disabled],fieldset[disabled] .window.popup.popup-example-2 .popup.actions .action.close{cursor:not-allowed;pointer-events:none;opacity:.5}.window.popup.popup-example-2.active{opacity:1}.window.popup.popup-example-3{width:380px;background-color:#fff;padding:22px;border:1px solid #aeaeae;-webkit-box-shadow:0 3px 3px rgba(0,0,0,.15);-moz-box-shadow:0 3px 3px rgba(0,0,0,.15);box-shadow:0 3px 3px rgba(0,0,0,.15);display:none;position:fixed;top:20%;left:50%;margin-left:-212px;z-index:1001;opacity:0;-webkit-transition:opacity .3s linear;-moz-transition:opacity .3s linear;transition:opacity .3s linear}.window.popup.popup-example-3 .popup.header .title{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem}.window.popup.popup-example-3 .popup.content{overflow-y:auto;max-height:200px}.window.popup.popup-example-3 .popup.actions .action.close{position:absolute;display:inline-block;background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400;top:10px;right:10px}.window.popup.popup-example-3 .popup.actions .action.close>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.window.popup.popup-example-3 .popup.actions .action.close:before{font-family:"icons-blank-theme";content:'\e616';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.window.popup.popup-example-3 .popup.actions .action.close:hover:before{color:inherit}.window.popup.popup-example-3 .popup.actions .action.close:active:before{color:inherit}.window.popup.popup-example-3 .popup.actions .action.close:focus,.window.popup.popup-example-3 .popup.actions .action.close:active{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;background:0;border:0}.window.popup.popup-example-3 .popup.actions .action.close:hover{background:0;border:0}.window.popup.popup-example-3 .popup.actions .action.close.disabled,.window.popup.popup-example-3 .popup.actions .action.close[disabled],fieldset[disabled] .window.popup.popup-example-3 .popup.actions .action.close{cursor:not-allowed;pointer-events:none;opacity:.5}.window.popup.popup-example-3.active{opacity:1}.window.popup.popup-example-4{width:380px;background-color:#fff;padding:22px;border:1px solid #aeaeae;-webkit-box-shadow:0 3px 3px rgba(0,0,0,.15);-moz-box-shadow:0 3px 3px rgba(0,0,0,.15);box-shadow:0 3px 3px rgba(0,0,0,.15);display:none;position:fixed;top:20%;left:50%;margin-left:-212px;z-index:1001;opacity:0;-webkit-transition:opacity .3s linear;-moz-transition:opacity .3s linear;transition:opacity .3s linear}.window.popup.popup-example-4 .popup.header{margin:0 0 25px}.window.popup.popup-example-4 .popup.header .title{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem}.window.popup.popup-example-4 .popup.content{margin:0 0 20px}.window.popup.popup-example-4 .popup.footer{margin:0 20px}.window.popup.popup-example-4 .popup.actions .action.close{position:absolute;display:inline-block;background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400;top:10px;right:10px}.window.popup.popup-example-4 .popup.actions .action.close>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.window.popup.popup-example-4 .popup.actions .action.close:before{font-family:"icons-blank-theme";content:'\e616';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.window.popup.popup-example-4 .popup.actions .action.close:hover:before{color:inherit}.window.popup.popup-example-4 .popup.actions .action.close:active:before{color:inherit}.window.popup.popup-example-4 .popup.actions .action.close:focus,.window.popup.popup-example-4 .popup.actions .action.close:active{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;background:0;border:0}.window.popup.popup-example-4 .popup.actions .action.close:hover{background:0;border:0}.window.popup.popup-example-4 .popup.actions .action.close.disabled,.window.popup.popup-example-4 .popup.actions .action.close[disabled],fieldset[disabled] .window.popup.popup-example-4 .popup.actions .action.close{cursor:not-allowed;pointer-events:none;opacity:.5}.window.popup.popup-example-4.active{opacity:1}.window.popup.popup-example-5{width:380px;background-color:#fff;padding:22px;border:1px solid #aeaeae;-webkit-box-shadow:0 3px 3px rgba(0,0,0,.15);-moz-box-shadow:0 3px 3px rgba(0,0,0,.15);box-shadow:0 3px 3px rgba(0,0,0,.15);display:none;position:fixed;top:20%;left:50%;margin-left:-212px;z-index:1001;opacity:0;-webkit-transition:opacity .3s linear;-moz-transition:opacity .3s linear;transition:opacity .3s linear}.window.popup.popup-example-5 .popup.header .title{font-size:40px;font-size:4rem;font-weight:300;line-height:1.1;margin-top:20px;margin-top:2rem;margin-bottom:20px;margin-bottom:2rem}.window.popup.popup-example-5 .popup.actions .action.close{position:absolute;display:inline-block;background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400;top:10px;right:10px}.window.popup.popup-example-5 .popup.actions .action.close>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.window.popup.popup-example-5 .popup.actions .action.close:before{font-family:"icons-blank-theme";content:'\e616';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.window.popup.popup-example-5 .popup.actions .action.close:hover:before{color:inherit}.window.popup.popup-example-5 .popup.actions .action.close:active:before{color:inherit}.window.popup.popup-example-5 .popup.actions .action.close:focus,.window.popup.popup-example-5 .popup.actions .action.close:active{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;background:0;border:0}.window.popup.popup-example-5 .popup.actions .action.close:hover{background:0;border:0}.window.popup.popup-example-5 .popup.actions .action.close.disabled,.window.popup.popup-example-5 .popup.actions .action.close[disabled],fieldset[disabled] .window.popup.popup-example-5 .popup.actions .action.close{cursor:not-allowed;pointer-events:none;opacity:.5}.window.popup.popup-example-5.active{opacity:1}.window.popup.popup-example-6{width:380px;background-color:#fff;padding:22px;border:1px solid #aeaeae;-webkit-box-shadow:0 3px 3px rgba(0,0,0,.15);-moz-box-shadow:0 3px 3px rgba(0,0,0,.15);box-shadow:0 3px 3px rgba(0,0,0,.15);display:none;position:fixed;top:20%;left:50%;margin-left:-212px;z-index:1001;opacity:0;-webkit-transition:opacity .3s linear;-moz-transition:opacity .3s linear;transition:opacity .3s linear}.window.popup.popup-example-6 .popup.footer .actions.toolbar{text-align:left}.window.popup.popup-example-6 .popup.footer .actions.toolbar:before,.window.popup.popup-example-6 .popup.footer .actions.toolbar:after{content:"";display:table}.window.popup.popup-example-6 .popup.footer .actions.toolbar:after{clear:both}.window.popup.popup-example-6 .popup.footer .actions.toolbar .secondary{float:left}.window.popup.popup-example-6 .popup.footer .actions.toolbar .primary,.window.popup.popup-example-6 .popup.footer .actions.toolbar .secondary{display:inline-block}.window.popup.popup-example-6 .popup.footer .actions.toolbar .primary a.action,.window.popup.popup-example-6 .popup.footer .actions.toolbar .secondary a.action{display:inline-block}.window.popup.popup-example-6 .popup.footer .actions.toolbar .primary .action{margin:0 5px 0 0}.window.popup.popup-example-6 .popup.footer .actions.toolbar .secondary a.action{margin-top:6px}.window.popup.popup-example-6 .popup.header .title{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem}.window.popup.popup-example-6 .popup.actions .action.close{position:absolute;display:inline-block;background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400;top:10px;right:10px}.window.popup.popup-example-6 .popup.actions .action.close>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.window.popup.popup-example-6 .popup.actions .action.close:before{font-family:"icons-blank-theme";content:'\e616';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.window.popup.popup-example-6 .popup.actions .action.close:hover:before{color:inherit}.window.popup.popup-example-6 .popup.actions .action.close:active:before{color:inherit}.window.popup.popup-example-6 .popup.actions .action.close:focus,.window.popup.popup-example-6 .popup.actions .action.close:active{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;background:0;border:0}.window.popup.popup-example-6 .popup.actions .action.close:hover{background:0;border:0}.window.popup.popup-example-6 .popup.actions .action.close.disabled,.window.popup.popup-example-6 .popup.actions .action.close[disabled],fieldset[disabled] .window.popup.popup-example-6 .popup.actions .action.close{cursor:not-allowed;pointer-events:none;opacity:.5}.window.popup.popup-example-6.active{opacity:1}.window.popup.popup-example-7{width:380px;background-color:#fff;padding:22px;border:1px solid #aeaeae;-webkit-box-shadow:0 3px 3px rgba(0,0,0,.15);-moz-box-shadow:0 3px 3px rgba(0,0,0,.15);box-shadow:0 3px 3px rgba(0,0,0,.15);display:none;position:fixed;top:20%;left:50%;margin-left:-212px;z-index:1001;opacity:0;-webkit-transition:opacity .3s linear;-moz-transition:opacity .3s linear;transition:opacity .3s linear}.window.popup.popup-example-7 .popup.header .title{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem}.window.popup.popup-example-7 .popup.actions .action.close{position:absolute;top:10px;right:10px}.window.popup.popup-example-7.active{opacity:1}.window.popup.popup-example-8{width:380px;background-color:#fff;padding:22px;border:1px solid #aeaeae;-webkit-box-shadow:0 3px 3px rgba(0,0,0,.15);-moz-box-shadow:0 3px 3px rgba(0,0,0,.15);box-shadow:0 3px 3px rgba(0,0,0,.15);display:none;position:fixed;top:20%;left:50%;margin-left:-212px;z-index:1001;opacity:0;-webkit-transition:opacity .3s linear;-moz-transition:opacity .3s linear;transition:opacity .3s linear}.window.popup.popup-example-8 .popup.header .title{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem}.window.popup.popup-example-8 .popup.actions .action.close{position:absolute;display:inline-block;background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400;top:10px;right:10px}.window.popup.popup-example-8 .popup.actions .action.close:before{font-family:"icons-blank-theme";content:'\e613';font-size:30px;line-height:inherit;color:red;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center;margin:0}.window.popup.popup-example-8 .popup.actions .action.close:hover:before{color:#008000}.window.popup.popup-example-8 .popup.actions .action.close:active:before{color:#00f}.window.popup.popup-example-8 .popup.actions .action.close:focus,.window.popup.popup-example-8 .popup.actions .action.close:active{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;background:0;border:0}.window.popup.popup-example-8 .popup.actions .action.close:hover{background:0;border:0}.window.popup.popup-example-8 .popup.actions .action.close.disabled,.window.popup.popup-example-8 .popup.actions .action.close[disabled],fieldset[disabled] .window.popup.popup-example-8 .popup.actions .action.close{cursor:not-allowed;pointer-events:none;opacity:.5}.window.popup.popup-example-8.active{opacity:1}.window.popup.popup-example-9{width:380px;background-color:#fff;padding:22px;border:1px solid #aeaeae;-webkit-box-shadow:0 3px 3px rgba(0,0,0,.15);-moz-box-shadow:0 3px 3px rgba(0,0,0,.15);box-shadow:0 3px 3px rgba(0,0,0,.15);display:none;position:fixed;top:20%;left:50%;margin-left:-212px;z-index:1001;opacity:0;-webkit-transition:opacity .3s linear;-moz-transition:opacity .3s linear;transition:opacity .3s linear}.window.popup.popup-example-9 .popup.header .title{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem}.window.popup.popup-example-9 .popup.actions .action.close{position:absolute;display:inline-block;background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400;top:10px;right:10px}.window.popup.popup-example-9 .popup.actions .action.close>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.window.popup.popup-example-9 .popup.actions .action.close:before{font-family:"icons-blank-theme";content:'\e616';font-size:22px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.window.popup.popup-example-9 .popup.actions .action.close:hover:before{color:inherit}.window.popup.popup-example-9 .popup.actions .action.close:active:before{color:inherit}.window.popup.popup-example-9 .popup.actions .action.close:focus,.window.popup.popup-example-9 .popup.actions .action.close:active{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;background:0;border:0}.window.popup.popup-example-9 .popup.actions .action.close:hover{background:0;border:0}.window.popup.popup-example-9 .popup.actions .action.close.disabled,.window.popup.popup-example-9 .popup.actions .action.close[disabled],fieldset[disabled] .window.popup.popup-example-9 .popup.actions .action.close{cursor:not-allowed;pointer-events:none;opacity:.5}.window.popup.popup-example-9.active{opacity:1}.window.overlay.example-overlay-1.active{-webkit-transition:opacity .15s linear;-moz-transition:opacity .15s linear;transition:opacity .15s linear;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background-color:#0f5293;opacity:0}.window.overlay.example-overlay-1.active.active{opacity:.8;filter:alpha(opacity=50)}.example-ratings-1{overflow:hidden}.example-ratings-1:before{letter-spacing:-10px;font-family:'icons-blank-theme';font-style:normal;font-size:28px;line-height:28px;height:28px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#ccc;content:'\e605' '\e605' '\e605' '\e605' '\e605';position:absolute;z-index:1;display:block}.example-ratings-1 input[type="radio"]{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-ratings-1 input[type="radio"]:focus+label:before,.example-ratings-1 input[type="radio"]:checked+label:before{opacity:1}.example-ratings-1 label{position:absolute;display:block;cursor:pointer}.example-ratings-1 label span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-ratings-1 label:before{letter-spacing:-10px;font-family:'icons-blank-theme';font-style:normal;font-size:28px;line-height:28px;height:28px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#ff5601;opacity:0}.example-ratings-1 label:hover:before{opacity:1}.example-ratings-1 label:hover~label:before{opacity:0}.example-ratings-1 .rating-5{z-index:2}.example-ratings-1 .rating-5:before{content:'\e605' '\e605' '\e605' '\e605' '\e605'}.example-ratings-1 .rating-4{z-index:3}.example-ratings-1 .rating-4:before{content:'\e605' '\e605' '\e605' '\e605'}.example-ratings-1 .rating-3{z-index:4}.example-ratings-1 .rating-3:before{content:'\e605' '\e605' '\e605'}.example-ratings-1 .rating-2{z-index:5}.example-ratings-1 .rating-2:before{content:'\e605' '\e605'}.example-ratings-1 .rating-1{z-index:6}.example-ratings-1 .rating-1:before{content:'\e605'}.example-ratings-2{overflow:hidden}.example-ratings-2:before{letter-spacing:-10px;font-family:'icons-blank-theme';font-style:normal;font-size:28px;line-height:28px;height:28px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#ccc;content:'\e605' '\e605' '\e605' '\e605' '\e605' '\e605' '\e605' '\e605';position:absolute;z-index:1;display:block}.example-ratings-2 input[type="radio"]{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-ratings-2 input[type="radio"]:focus+label:before,.example-ratings-2 input[type="radio"]:checked+label:before{opacity:1}.example-ratings-2 label{position:absolute;display:block;cursor:pointer}.example-ratings-2 label span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-ratings-2 label:before{letter-spacing:-10px;font-family:'icons-blank-theme';font-style:normal;font-size:28px;line-height:28px;height:28px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#ff5601;opacity:0}.example-ratings-2 label:hover:before{opacity:1}.example-ratings-2 label:hover~label:before{opacity:0}.example-ratings-2 .rating-8{z-index:2}.example-ratings-2 .rating-8:before{content:'\e605' '\e605' '\e605' '\e605' '\e605' '\e605' '\e605' '\e605'}.example-ratings-2 .rating-7{z-index:3}.example-ratings-2 .rating-7:before{content:'\e605' '\e605' '\e605' '\e605' '\e605' '\e605' '\e605'}.example-ratings-2 .rating-6{z-index:4}.example-ratings-2 .rating-6:before{content:'\e605' '\e605' '\e605' '\e605' '\e605' '\e605'}.example-ratings-2 .rating-5{z-index:5}.example-ratings-2 .rating-5:before{content:'\e605' '\e605' '\e605' '\e605' '\e605'}.example-ratings-2 .rating-4{z-index:6}.example-ratings-2 .rating-4:before{content:'\e605' '\e605' '\e605' '\e605'}.example-ratings-2 .rating-3{z-index:7}.example-ratings-2 .rating-3:before{content:'\e605' '\e605' '\e605'}.example-ratings-2 .rating-2{z-index:8}.example-ratings-2 .rating-2:before{content:'\e605' '\e605'}.example-ratings-2 .rating-1{z-index:9}.example-ratings-2 .rating-1:before{content:'\e605'}.example-ratings-3{overflow:hidden}.example-ratings-3:before{letter-spacing:-10px;font-family:'icons-blank-theme';font-style:normal;font-size:28px;line-height:28px;height:28px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#aff5e3;content:'\e605' '\e605' '\e605' '\e605' '\e605';position:absolute;z-index:1;display:block}.example-ratings-3 input[type="radio"]{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-ratings-3 input[type="radio"]:focus+label:before,.example-ratings-3 input[type="radio"]:checked+label:before{opacity:1}.example-ratings-3 label{position:absolute;display:block;cursor:pointer}.example-ratings-3 label span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-ratings-3 label:before{letter-spacing:-10px;font-family:'icons-blank-theme';font-style:normal;font-size:28px;line-height:28px;height:28px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#0a6767;opacity:0}.example-ratings-3 label:hover:before{opacity:1}.example-ratings-3 label:hover~label:before{opacity:0}.example-ratings-3 .rating-5{z-index:2}.example-ratings-3 .rating-5:before{content:'\e605' '\e605' '\e605' '\e605' '\e605'}.example-ratings-3 .rating-4{z-index:3}.example-ratings-3 .rating-4:before{content:'\e605' '\e605' '\e605' '\e605'}.example-ratings-3 .rating-3{z-index:4}.example-ratings-3 .rating-3:before{content:'\e605' '\e605' '\e605'}.example-ratings-3 .rating-2{z-index:5}.example-ratings-3 .rating-2:before{content:'\e605' '\e605'}.example-ratings-3 .rating-1{z-index:6}.example-ratings-3 .rating-1:before{content:'\e605'}.example-ratings-4{overflow:hidden}.example-ratings-4:before{letter-spacing:-10px;font-family:'icons-blank-theme';font-style:normal;font-size:28px;line-height:28px;height:28px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#ccc;content:'\e600' '\e600' '\e600' '\e600' '\e600';position:absolute;z-index:1;display:block}.example-ratings-4 input[type="radio"]{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-ratings-4 input[type="radio"]:focus+label:before,.example-ratings-4 input[type="radio"]:checked+label:before{opacity:1}.example-ratings-4 label{position:absolute;display:block;cursor:pointer}.example-ratings-4 label span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-ratings-4 label:before{letter-spacing:-10px;font-family:'icons-blank-theme';font-style:normal;font-size:28px;line-height:28px;height:28px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#ff5601;opacity:0}.example-ratings-4 label:hover:before{opacity:1}.example-ratings-4 label:hover~label:before{opacity:0}.example-ratings-4 .rating-5{z-index:2}.example-ratings-4 .rating-5:before{content:'\e600' '\e600' '\e600' '\e600' '\e600'}.example-ratings-4 .rating-4{z-index:3}.example-ratings-4 .rating-4:before{content:'\e600' '\e600' '\e600' '\e600'}.example-ratings-4 .rating-3{z-index:4}.example-ratings-4 .rating-3:before{content:'\e600' '\e600' '\e600'}.example-ratings-4 .rating-2{z-index:5}.example-ratings-4 .rating-2:before{content:'\e600' '\e600'}.example-ratings-4 .rating-1{z-index:6}.example-ratings-4 .rating-1:before{content:'\e600'}.exapmle-ratings-5 .control.rating.vote{overflow:hidden}.exapmle-ratings-5 .control.rating.vote:before{letter-spacing:-10px;font-family:'icons-blank-theme';font-style:normal;font-size:28px;line-height:28px;height:28px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#ccc;content:'\e605' '\e605' '\e605' '\e605' '\e605';position:absolute;z-index:1;display:block}.exapmle-ratings-5 .control.rating.vote input[type="radio"]{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.exapmle-ratings-5 .control.rating.vote input[type="radio"]:focus+label:before,.exapmle-ratings-5 .control.rating.vote input[type="radio"]:checked+label:before{opacity:1}.exapmle-ratings-5 .control.rating.vote label{position:absolute;display:block;cursor:pointer}.exapmle-ratings-5 .control.rating.vote label span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.exapmle-ratings-5 .control.rating.vote label:before{letter-spacing:-10px;font-family:'icons-blank-theme';font-style:normal;font-size:28px;line-height:28px;height:28px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#ff5601;opacity:0}.exapmle-ratings-5 .control.rating.vote label:hover:before{opacity:1}.exapmle-ratings-5 .control.rating.vote label:hover~label:before{opacity:0}.exapmle-ratings-5 .control.rating.vote .rating-5{z-index:2}.exapmle-ratings-5 .control.rating.vote .rating-5:before{content:'\e605' '\e605' '\e605' '\e605' '\e605'}.exapmle-ratings-5 .control.rating.vote .rating-4{z-index:3}.exapmle-ratings-5 .control.rating.vote .rating-4:before{content:'\e605' '\e605' '\e605' '\e605'}.exapmle-ratings-5 .control.rating.vote .rating-3{z-index:4}.exapmle-ratings-5 .control.rating.vote .rating-3:before{content:'\e605' '\e605' '\e605'}.exapmle-ratings-5 .control.rating.vote .rating-2{z-index:5}.exapmle-ratings-5 .control.rating.vote .rating-2:before{content:'\e605' '\e605'}.exapmle-ratings-5 .control.rating.vote .rating-1{z-index:6}.exapmle-ratings-5 .control.rating.vote .rating-1:before{content:'\e605'}.example-rating-summary-1{overflow:hidden}.example-rating-summary-1 .rating.result{width:100px;display:inline-block;vertical-align:middle;position:relative}.example-rating-summary-1 .rating.result:before{position:absolute;z-index:1;top:0;left:0;width:100%;display:block;font-family:'icons-blank-theme';content:'\e605' '\e605' '\e605' '\e605' '\e605';font-style:normal;font-size:28px;line-height:28px;height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#ccc}.example-rating-summary-1 .rating.result>span{display:block;overflow:hidden}.example-rating-summary-1 .rating.result>span:before{position:relative;z-index:2;display:block;font-family:'icons-blank-theme';content:'\e605' '\e605' '\e605' '\e605' '\e605';font-style:normal;font-size:28px;line-height:28px;height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#ff5601}.example-rating-summary-1 .rating.result>span span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-rating-summary-2{overflow:hidden}.example-rating-summary-2 .rating.result{width:154px;display:inline-block;vertical-align:middle;position:relative}.example-rating-summary-2 .rating.result:before{position:absolute;z-index:1;top:0;left:0;width:100%;display:block;font-family:'icons-blank-theme';content:'\e605' '\e605' '\e605' '\e605' '\e605' '\e605' '\e605' '\e605';font-style:normal;font-size:28px;line-height:28px;height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#ccc}.example-rating-summary-2 .rating.result>span{display:block;overflow:hidden}.example-rating-summary-2 .rating.result>span:before{position:relative;z-index:2;display:block;font-family:'icons-blank-theme';content:'\e605' '\e605' '\e605' '\e605' '\e605' '\e605' '\e605' '\e605';font-style:normal;font-size:28px;line-height:28px;height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#ff5601}.example-rating-summary-2 .rating.result>span span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-rating-summary-3{overflow:hidden}.example-rating-summary-3 .rating.result{width:100px;display:inline-block;vertical-align:middle;position:relative}.example-rating-summary-3 .rating.result:before{position:absolute;z-index:1;top:0;left:0;width:100%;display:block;font-family:'icons-blank-theme';content:'\e605' '\e605' '\e605' '\e605' '\e605';font-style:normal;font-size:28px;line-height:28px;height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#aff5e3}.example-rating-summary-3 .rating.result>span{display:block;overflow:hidden}.example-rating-summary-3 .rating.result>span:before{position:relative;z-index:2;display:block;font-family:'icons-blank-theme';content:'\e605' '\e605' '\e605' '\e605' '\e605';font-style:normal;font-size:28px;line-height:28px;height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#0a6767}.example-rating-summary-3 .rating.result>span span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-rating-summary-4{overflow:hidden}.example-rating-summary-4 .rating.result{width:100px;display:inline-block;vertical-align:middle;position:relative}.example-rating-summary-4 .rating.result:before{position:absolute;z-index:1;top:0;left:0;width:100%;display:block;font-family:'icons-blank-theme';content:'\e600' '\e600' '\e600' '\e600' '\e600';font-style:normal;font-size:28px;line-height:28px;height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#ccc}.example-rating-summary-4 .rating.result>span{display:block;overflow:hidden}.example-rating-summary-4 .rating.result>span:before{position:relative;z-index:2;display:block;font-family:'icons-blank-theme';content:'\e600' '\e600' '\e600' '\e600' '\e600';font-style:normal;font-size:28px;line-height:28px;height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#ff5601}.example-rating-summary-4 .rating.result>span span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-rating-summary-5{overflow:hidden}.example-rating-summary-5 .label{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-rating-summary-5 .rating.result{width:100px;display:inline-block;vertical-align:middle;position:relative}.example-rating-summary-5 .rating.result:before{position:absolute;z-index:1;top:0;left:0;width:100%;display:block;font-family:'icons-blank-theme';content:'\e605' '\e605' '\e605' '\e605' '\e605';font-style:normal;font-size:28px;line-height:28px;height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#ccc}.example-rating-summary-5 .rating.result>span{display:block;overflow:hidden}.example-rating-summary-5 .rating.result>span:before{position:relative;z-index:2;display:block;font-family:'icons-blank-theme';content:'\e605' '\e605' '\e605' '\e605' '\e605';font-style:normal;font-size:28px;line-height:28px;height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#ff5601}.example-rating-summary-5 .rating.result>span span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-rating-summary-6 .rating.summary{overflow:hidden}.example-rating-summary-6 .rating.summary .rating.result{width:100px;display:inline-block;vertical-align:middle;position:relative}.example-rating-summary-6 .rating.summary .rating.result:before{position:absolute;z-index:1;top:0;left:0;width:100%;display:block;font-family:'icons-blank-theme';content:'\e605' '\e605' '\e605' '\e605' '\e605';font-style:normal;font-size:28px;line-height:28px;height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#ccc}.example-rating-summary-6 .rating.summary .rating.result>span{display:block;overflow:hidden}.example-rating-summary-6 .rating.summary .rating.result>span:before{position:relative;z-index:2;display:block;font-family:'icons-blank-theme';content:'\e605' '\e605' '\e605' '\e605' '\e605';font-style:normal;font-size:28px;line-height:28px;height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#ff5601}.example-rating-summary-6 .rating.summary .rating.result>span span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-rating-summary-7{overflow:hidden}.example-rating-summary-7 .rating.result{width:100px;display:inline-block;vertical-align:middle;position:relative}.example-rating-summary-7 .rating.result:before{position:absolute;z-index:1;top:0;left:0;width:100%;display:block;font-family:'icons-blank-theme';content:'\e605' '\e605' '\e605' '\e605' '\e605';font-style:normal;font-size:28px;line-height:28px;height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#ccc}.example-rating-summary-7 .rating.result>span{display:block;overflow:hidden}.example-rating-summary-7 .rating.result>span:before{position:relative;z-index:2;display:block;font-family:'icons-blank-theme';content:'\e605' '\e605' '\e605' '\e605' '\e605';font-style:normal;font-size:28px;line-height:28px;height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;color:#ff5601}.example-rating-summary-7 .rating.result>span span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-rating-summary-7 .label{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.example-sections-1{position:relative;z-index:1}.example-sections-1:before,.example-sections-1:after{content:"";display:table}.example-sections-1:after{clear:both}.example-sections-1>.item.title{float:left}.example-sections-1>.item.title>.switch{display:block;position:relative;z-index:2;height:20px}.example-sections-1>.item.content{margin-top:20px;width:100%;float:right;margin-left:-100%;display:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.example-sections-1>.item.content:before,.example-sections-1>.item.content:after{content:"";display:table}.example-sections-1>.item.content:after{clear:both}.example-sections-1>.item.content.active{display:block}.example-sections-1>.item.title{margin:0 5px 0 0}.example-sections-1>.item.title>.switch{font-size:14px;font-size:1.4rem;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:600;font-style:normal;line-height:20px;color:#7d7d7d;text-decoration:none;height:20px;padding:5px 20px 5px 20px;border:1px solid #d1d1d1;background-color:#f0f0f0;border-bottom:0}.example-sections-1>.item.title>.switch:visited{color:#7d7d7d;text-decoration:none}.example-sections-1>.item.title>.switch:hover{color:#7d7d7d;text-decoration:none}.example-sections-1>.item.title>.switch:active{color:#333;text-decoration:none}.example-sections-1>.item.title>.switch:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.example-sections-1>.item.title:not(.disabled)>.switch:focus,.example-sections-1>.item.title:not(.disabled)>.switch:hover{background-color:#fcfcfc}.example-sections-1>.item.title:not(.disabled)>.switch:active,.example-sections-1>.item.title.active>.switch,.example-sections-1>.item.title.active>.switch:focus,.example-sections-1>.item.title.active>.switch:hover{background-color:#fff;color:#333}.example-sections-1>.item.title.active>.switch{padding-bottom:6px}.example-sections-1>.item.content{background-color:#fff;margin-top:31px;padding:20px 20px 20px 20px;border:1px solid #d1d1d1}.example-sections-2{position:relative;z-index:1}.example-sections-2:before,.example-sections-2:after{content:"";display:table}.example-sections-2:after{clear:both}.example-sections-2>.item.title{float:left}.example-sections-2>.item.title>.switch{display:block;position:relative;z-index:2;height:20px}.example-sections-2>.item.content{margin-top:20px;width:100%;float:right;margin-left:-100%;display:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.example-sections-2>.item.content:before,.example-sections-2>.item.content:after{content:"";display:table}.example-sections-2>.item.content:after{clear:both}.example-sections-2>.item.content.active{display:block}.example-sections-2>.item.title{margin:0 5px 0 0}.example-sections-2>.item.title>.switch{font-size:14px;font-size:1.4rem;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:600;font-style:normal;line-height:20px;color:#7d7d7d;text-decoration:none;height:20px;padding:5px 20px 5px 20px;border:1px solid #d1d1d1;background-color:#f0f0f0;border-bottom:0}.example-sections-2>.item.title>.switch:visited{color:#7d7d7d;text-decoration:none}.example-sections-2>.item.title>.switch:hover{color:#7d7d7d;text-decoration:none}.example-sections-2>.item.title>.switch:active{color:#333;text-decoration:none}.example-sections-2>.item.title>.switch:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.example-sections-2>.item.title:not(.disabled)>.switch:focus,.example-sections-2>.item.title:not(.disabled)>.switch:hover{background-color:#fcfcfc}.example-sections-2>.item.title:not(.disabled)>.switch:active,.example-sections-2>.item.title.active>.switch,.example-sections-2>.item.title.active>.switch:focus,.example-sections-2>.item.title.active>.switch:hover{background-color:#fff;color:#333}.example-sections-2>.item.title.active>.switch{padding-bottom:6px}.example-sections-2>.item.content{background-color:#fff;margin-top:31px;padding:20px 20px 20px 20px;border-top:1px solid #d1d1d1}.example-sections-3{margin:0;padding:0}.example-sections-3>.item.title{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;float:none;width:100%}.example-sections-3>.item.title>.switch{display:block}.example-sections-3>.item.content{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;float:none;margin:0;display:none}.example-sections-3>.item.content:before,.example-sections-3>.item.content:after{content:"";display:table}.example-sections-3>.item.content:after{clear:both}.example-sections-3>.item.content.active{display:block}.example-sections-3>.item.title{margin:0 0 5px}.example-sections-3>.item.title>.switch{border:1px solid #d1d1d1;background-color:#f0f0f0;font-size:18px;font-size:1.8rem;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:600;font-style:normal;line-height:40px;color:#7d7d7d;text-decoration:none;height:40px;padding:5px 20px 5px 20px}.example-sections-3>.item.title>.switch:visited{color:#7d7d7d;text-decoration:none}.example-sections-3>.item.title>.switch:hover{color:#7d7d7d;text-decoration:#7d7d7d}.example-sections-3>.item.title>.switch:active{color:#333;text-decoration:none}.example-sections-3>.item.title>.switch:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.example-sections-3>.item.title:not(.disabled)>.switch:focus,.example-sections-3>.item.title:not(.disabled)>.switch:hover{background-color:#fcfcfc}.example-sections-3>.item.title:not(.disabled)>.switch:active,.example-sections-3>.item.title.active>.switch,.example-sections-3>.item.title.active>.switch:focus,.example-sections-3>.item.title.active>.switch:hover{background-color:#fff;padding-bottom:5px}.example-sections-3>.item.content{margin:0;padding:20px 20px 20px 20px;background-color:#fff;border:1px solid #d1d1d1}@media only screen and (max-width: 99999px){.example-sections-4{ position:relative;z-index:1}.example-sections-4:before,.example-sections-4:after{content:"";display:table}.example-sections-4:after{clear:both}.example-sections-4>.item.title{float:left}.example-sections-4>.item.title>.switch{display:block;position:relative;z-index:2;height:20px}.example-sections-4>.item.content{margin-top:20px;width:100%;float:right;margin-left:-100%;display:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.example-sections-4>.item.content:before,.example-sections-4>.item.content:after{content:"";display:table}.example-sections-4>.item.content:after{clear:both}.example-sections-4>.item.content.active{display:block}.example-sections-4>.item.title{margin:0 5px 0 0}.example-sections-4>.item.title>.switch{font-size:14px;font-size:1.4rem;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:600;font-style:normal;line-height:20px;color:#7d7d7d;text-decoration:none;height:20px;padding:5px 20px 5px 20px;border:1px solid #d1d1d1;background-color:#f0f0f0;border-bottom:0}.example-sections-4>.item.title>.switch:visited{color:#7d7d7d;text-decoration:none}.example-sections-4>.item.title>.switch:hover{color:#7d7d7d;text-decoration:none}.example-sections-4>.item.title>.switch:active{color:#333;text-decoration:none}.example-sections-4>.item.title>.switch:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.example-sections-4>.item.title:not(.disabled)>.switch:focus,.example-sections-4>.item.title:not(.disabled)>.switch:hover{background-color:#fcfcfc}.example-sections-4>.item.title:not(.disabled)>.switch:active,.example-sections-4>.item.title.active>.switch,.example-sections-4>.item.title.active>.switch:focus,.example-sections-4>.item.title.active>.switch:hover{background-color:#fff;color:#333}.example-sections-4>.item.title.active>.switch{padding-bottom:6px}.example-sections-4>.item.content{background-color:#fff;margin-top:31px;padding:20px 20px 20px 20px;border:1px solid #d1d1d1}}@media only screen and (max-width: 768px){.example-sections-4{ margin:0;padding:0}.example-sections-4>.item.title{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;float:none;width:100%}.example-sections-4>.item.title>.switch{display:block}.example-sections-4>.item.content{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;float:none;margin:0;display:none}.example-sections-4>.item.content:before,.example-sections-4>.item.content:after{content:"";display:table}.example-sections-4>.item.content:after{clear:both}.example-sections-4>.item.content.active{display:block}.example-sections-4>.item.title{margin:0 0 5px}.example-sections-4>.item.title>.switch{border:1px solid #d1d1d1;background-color:#f0f0f0;font-size:18px;font-size:1.8rem;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:600;font-style:normal;line-height:40px;color:#7d7d7d;text-decoration:none;height:40px;padding:5px 20px 5px 20px}.example-sections-4>.item.title>.switch:visited{color:#7d7d7d;text-decoration:none}.example-sections-4>.item.title>.switch:hover{color:#7d7d7d;text-decoration:#7d7d7d}.example-sections-4>.item.title>.switch:active{color:#333;text-decoration:none}.example-sections-4>.item.title>.switch:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.example-sections-4>.item.title:not(.disabled)>.switch:focus,.example-sections-4>.item.title:not(.disabled)>.switch:hover{background-color:#fcfcfc}.example-sections-4>.item.title:not(.disabled)>.switch:active,.example-sections-4>.item.title.active>.switch,.example-sections-4>.item.title.active>.switch:focus,.example-sections-4>.item.title.active>.switch:hover{background-color:#fff;padding-bottom:5px}.example-sections-4>.item.content{margin:0;padding:20px 20px 20px 20px;background-color:#fff;border:1px solid #d1d1d1}}.example-sections-5{position:relative;z-index:1}.example-sections-5:before,.example-sections-5:after{content:"";display:table}.example-sections-5:after{clear:both}.example-sections-5>.item.title{float:left}.example-sections-5>.item.title>.switch{display:block;position:relative;z-index:2;height:20px}.example-sections-5>.item.content{margin-top:20px;width:100%;float:right;margin-left:-100%;display:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.example-sections-5>.item.content:before,.example-sections-5>.item.content:after{content:"";display:table}.example-sections-5>.item.content:after{clear:both}.example-sections-5>.item.content.active{display:block}.example-sections-6{margin:0;padding:0}.example-sections-6>.item.title{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;float:none;width:100%}.example-sections-6>.item.title>.switch{display:block}.example-sections-6>.item.content{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;float:none;margin:0;display:none}.example-sections-6>.item.content:before,.example-sections-6>.item.content:after{content:"";display:table}.example-sections-6>.item.content:after{clear:both}.example-sections-6>.item.content.active{display:block}.example-table-1{border-collapse:collapse;border-spacing:0;margin-bottom:20px;max-width:100%;width:100%}.example-table-1 th{text-align:left}.example-table-1>tbody>tr>th,.example-table-1>tfoot>tr>th,.example-table-1>tbody>tr>td,.example-table-1>tfoot>tr>td{vertical-align:top}.example-table-1>thead>tr>th,.example-table-1>thead>tr>td{vertical-align:bottom}.example-table-1>thead>tr>th,.example-table-1>tbody>tr>th,.example-table-1>tfoot>tr>th,.example-table-1>thead>tr>td,.example-table-1>tbody>tr>td,.example-table-1>tfoot>tr>td{padding:3px 10px}.example-table-2>thead>tr>td,.example-table-2>tbody>tr>td,.example-table-2>tfoot>tr>td{font-size:14px;font-size:1.4rem;color:#333;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.42857143}.example-table-2>thead>tr>th,.example-table-2>tbody>tr>th,.example-table-2>tfoot>tr>th{font-size:14px;font-size:1.4rem;color:#111;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:700;font-style:normal;line-height:1.42857143}.example-table-3{border-collapse:collapse;border-spacing:0;margin-bottom:20px;max-width:100%;width:100%}.example-table-3 th{text-align:left}.example-table-3>tbody>tr>th,.example-table-3>tfoot>tr>th,.example-table-3>tbody>tr>td,.example-table-3>tfoot>tr>td{vertical-align:top}.example-table-3>thead>tr>th,.example-table-3>thead>tr>td{vertical-align:bottom}.example-table-3>thead>tr>th,.example-table-3>tbody>tr>th,.example-table-3>tfoot>tr>th,.example-table-3>thead>tr>td,.example-table-3>tbody>tr>td,.example-table-3>tfoot>tr>td{padding:3px 10px}.example-table-3>caption{font-size:18px;font-size:1.8rem;color:red;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.42857143;text-align:left;margin-top:20px;margin-bottom:10px}.example-table-4{border-collapse:collapse;border-spacing:0;margin-bottom:20px;max-width:100%;width:100%}.example-table-4 th{text-align:left}.example-table-4>tbody>tr>th,.example-table-4>tfoot>tr>th,.example-table-4>tbody>tr>td,.example-table-4>tfoot>tr>td{vertical-align:top}.example-table-4>thead>tr>th,.example-table-4>thead>tr>td{vertical-align:bottom}.example-table-4>thead>tr>th,.example-table-4>tbody>tr>th,.example-table-4>tfoot>tr>th,.example-table-4>thead>tr>td,.example-table-4>tbody>tr>td,.example-table-4>tfoot>tr>td{padding:3px 10px}.example-table-4>thead>tr>td,.example-table-4>tbody>tr>td,.example-table-4>tfoot>tr>td{padding:15px 25px 5px 0}.example-table-4>thead>tr>th,.example-table-4>tbody>tr>th,.example-table-4>tfoot>tr>th{padding:15px 25px 10px 0}.example-table-5{border-collapse:collapse;border-spacing:0;margin-bottom:20px;max-width:100%;width:100%;background-color:#fff}.example-table-5 th{text-align:left}.example-table-5>tbody>tr>th,.example-table-5>tfoot>tr>th,.example-table-5>tbody>tr>td,.example-table-5>tfoot>tr>td{vertical-align:top}.example-table-5>thead>tr>th,.example-table-5>thead>tr>td{vertical-align:bottom}.example-table-5>thead>tr>th,.example-table-5>tbody>tr>th,.example-table-5>tfoot>tr>th,.example-table-5>thead>tr>td,.example-table-5>tbody>tr>td,.example-table-5>tfoot>tr>td{padding:3px 10px}.example-table-5>thead{background-color:#ff0}.example-table-5>tfoot{background-color:#008000}.example-table-5>tbody>tr>td{background-color:#ffc0cb}.example-table-5>tbody>tr>th{background-color:#ffa500}.example-table-6{border-collapse:collapse;border-spacing:0;margin-bottom:20px;max-width:100%;width:100%;border:1px solid #d1d1d1}.example-table-6 th{text-align:left}.example-table-6>tbody>tr>th,.example-table-6>tfoot>tr>th,.example-table-6>tbody>tr>td,.example-table-6>tfoot>tr>td{vertical-align:top}.example-table-6>thead>tr>th,.example-table-6>thead>tr>td{vertical-align:bottom}.example-table-6>thead>tr>th,.example-table-6>tbody>tr>th,.example-table-6>tfoot>tr>th,.example-table-6>thead>tr>td,.example-table-6>tbody>tr>td,.example-table-6>tfoot>tr>td{padding:3px 10px}.example-table-6>thead>tr>th,.example-table-6>tbody>tr>th,.example-table-6>tfoot>tr>th,.example-table-6>thead>tr>td,.example-table-6>tbody>tr>td,.example-table-6>tfoot>tr>td{border:1px solid #d1d1d1}.example-table-7{border-collapse:collapse;border-spacing:0;margin-bottom:20px;max-width:100%;width:100%}.example-table-7 th{text-align:left}.example-table-7>tbody>tr>th,.example-table-7>tfoot>tr>th,.example-table-7>tbody>tr>td,.example-table-7>tfoot>tr>td{vertical-align:top}.example-table-7>thead>tr>th,.example-table-7>thead>tr>td{vertical-align:bottom}.example-table-7>thead>tr>th,.example-table-7>tbody>tr>th,.example-table-7>tfoot>tr>th,.example-table-7>thead>tr>td,.example-table-7>tbody>tr>td,.example-table-7>tfoot>tr>td{padding:3px 10px}.example-table-7>thead>tr>th,.example-table-7>tbody>tr>th,.example-table-7>tfoot>tr>th,.example-table-7>thead>tr>td,.example-table-7>tbody>tr>td,.example-table-7>tfoot>tr>td{border-top:1px solid #d1d1d1}.example-table-7>caption+thead>tr:first-child>th,.example-table-7>colgroup+thead>tr:first-child>th,.example-table-7>thead:first-child>tr:first-child>th,.example-table-7>caption+thead>tr:first-child>td,.example-table-7>colgroup+thead>tr:first-child>td,.example-table-7>thead:first-child>tr:first-child>td{border-top:0}.example-table-7>tbody+tbody{border-top:1px solid #919191}.example-table-8{border-collapse:collapse;border-spacing:0;margin-bottom:20px;max-width:100%;width:100%}.example-table-8 th{text-align:left}.example-table-8>tbody>tr>th,.example-table-8>tfoot>tr>th,.example-table-8>tbody>tr>td,.example-table-8>tfoot>tr>td{vertical-align:top}.example-table-8>thead>tr>th,.example-table-8>thead>tr>td{vertical-align:bottom}.example-table-8>thead>tr>th,.example-table-8>tbody>tr>th,.example-table-8>tfoot>tr>th,.example-table-8>thead>tr>td,.example-table-8>tbody>tr>td,.example-table-8>tfoot>tr>td{padding:3px 10px}.example-table-8>thead>tr>th,.example-table-8>tbody>tr>th,.example-table-8>tfoot>tr>th,.example-table-8>thead>tr>td,.example-table-8>tbody>tr>td,.example-table-8>tfoot>tr>td{border-left:1px solid #d1d1d1}.example-table-8>thead>tr>th:first-child,.example-table-8>tbody>tr>th:first-child,.example-table-8>tfoot>tr>th:first-child,.example-table-8>thead>tr>td:first-child,.example-table-8>tbody>tr>td:first-child,.example-table-8>tfoot>tr>td:first-child{border-left:0}.example-table-9{border-collapse:collapse;border-spacing:0;margin-bottom:20px;max-width:100%;width:100%;border:0}.example-table-9 th{text-align:left}.example-table-9>tbody>tr>th,.example-table-9>tfoot>tr>th,.example-table-9>tbody>tr>td,.example-table-9>tfoot>tr>td{vertical-align:top}.example-table-9>thead>tr>th,.example-table-9>thead>tr>td{vertical-align:bottom}.example-table-9>thead>tr>th,.example-table-9>tbody>tr>th,.example-table-9>tfoot>tr>th,.example-table-9>thead>tr>td,.example-table-9>tbody>tr>td,.example-table-9>tfoot>tr>td{padding:3px 10px}.example-table-9>thead>tr>th,.example-table-9>tbody>tr>th,.example-table-9>tfoot>tr>th,.example-table-9>thead>tr>td,.example-table-9>tbody>tr>td,.example-table-9>tfoot>tr>td{border:0}.example-table-9>thead>tr>th,.example-table-9>thead>tr>td{border-bottom:1px solid #d1d1d1}.example-table-10{border-collapse:collapse;border-spacing:0;margin-bottom:20px;max-width:100%;width:100%;border:0}.example-table-10 th{text-align:left}.example-table-10>tbody>tr>th,.example-table-10>tfoot>tr>th,.example-table-10>tbody>tr>td,.example-table-10>tfoot>tr>td{vertical-align:top}.example-table-10>thead>tr>th,.example-table-10>thead>tr>td{vertical-align:bottom}.example-table-10>thead>tr>th,.example-table-10>tbody>tr>th,.example-table-10>tfoot>tr>th,.example-table-10>thead>tr>td,.example-table-10>tbody>tr>td,.example-table-10>tfoot>tr>td{padding:3px 10px}.example-table-10>thead>tr>th,.example-table-10>tbody>tr>th,.example-table-10>tfoot>tr>th,.example-table-10>thead>tr>td,.example-table-10>tbody>tr>td,.example-table-10>tfoot>tr>td{border:0}.example-table-11{border-collapse:collapse;border-spacing:0;margin-bottom:20px;max-width:100%;width:100%}.example-table-11 th{text-align:left}.example-table-11>tbody>tr>th,.example-table-11>tfoot>tr>th,.example-table-11>tbody>tr>td,.example-table-11>tfoot>tr>td{vertical-align:top}.example-table-11>thead>tr>th,.example-table-11>thead>tr>td{vertical-align:bottom}.example-table-11>thead>tr>th,.example-table-11>tbody>tr>th,.example-table-11>tfoot>tr>th,.example-table-11>thead>tr>td,.example-table-11>tbody>tr>td,.example-table-11>tfoot>tr>td{padding:3px 10px}.example-table-11>tbody>tr:nth-child(even)>td,.example-table-11>tbody>tr:nth-child(even)>th{background-color:#fc0;color:#000}.example-table-12{border-collapse:collapse;border-spacing:0;margin-bottom:20px;max-width:100%;width:100%}.example-table-12 th{text-align:left}.example-table-12>tbody>tr>th,.example-table-12>tfoot>tr>th,.example-table-12>tbody>tr>td,.example-table-12>tfoot>tr>td{vertical-align:top}.example-table-12>thead>tr>th,.example-table-12>thead>tr>td{vertical-align:bottom}.example-table-12>thead>tr>th,.example-table-12>tbody>tr>th,.example-table-12>tfoot>tr>th,.example-table-12>thead>tr>td,.example-table-12>tbody>tr>td,.example-table-12>tfoot>tr>td{padding:3px 10px}.example-table-12>tbody>tr:nth-child(even):hover>td,.example-table-12>tbody>tr:nth-child(even):hover>th{background-color:#f0f0f0}.example-table-12>tbody>tr:nth-child(odd):hover>td,.example-table-12>tbody>tr:nth-child(odd):hover>th{background-color:#f0f0f0}.example-table-13{border-collapse:collapse;border-spacing:0;margin-bottom:20px;max-width:100%;width:100%;border:1px solid #d1d1d1}.example-table-13 th{text-align:left}.example-table-13>tbody>tr>th,.example-table-13>tfoot>tr>th,.example-table-13>tbody>tr>td,.example-table-13>tfoot>tr>td{vertical-align:top}.example-table-13>thead>tr>th,.example-table-13>thead>tr>td{vertical-align:bottom}.example-table-13>thead>tr>th,.example-table-13>tbody>tr>th,.example-table-13>tfoot>tr>th,.example-table-13>thead>tr>td,.example-table-13>tbody>tr>td,.example-table-13>tfoot>tr>td{padding:3px 10px}.example-table-13>thead>tr>th,.example-table-13>tbody>tr>th,.example-table-13>tfoot>tr>th,.example-table-13>thead>tr>td,.example-table-13>tbody>tr>td,.example-table-13>tfoot>tr>td{border:1px solid #d1d1d1}.example-table-13>tbody>tr:nth-child(odd)>td,.example-table-13>tbody>tr:nth-child(odd)>th{background-color:#fff;color:#333}.example-table-13>tbody>tr:nth-child(even):hover>td,.example-table-13>tbody>tr:nth-child(even):hover>th{background-color:#f0f0f0}.example-table-13>tbody>tr:nth-child(odd):hover>td,.example-table-13>tbody>tr:nth-child(odd):hover>th{background-color:#f0f0f0}@media only screen and (max-width: 768px){.example-table-14{ width:100%;margin-bottom:20px;overflow-y:hidden;overflow-x:auto;-ms-overflow-style:-ms-autohiding-scrollbar;-webkit-overflow-scrolling:touch}.example-table-14>table{margin-bottom:0}.example-table-14>table>thead>tr>th,.example-table-14>table>tbody>tr>th,.example-table-14>table>tfoot>tr>th,.example-table-14>table>thead>tr>td,.example-table-14>table>tbody>tr>td,.example-table-14>table>tfoot>tr>td{white-space:nowrap}}.example-table-15{border-collapse:collapse;border-spacing:0;margin-bottom:20px;max-width:100%;width:100%;border:1px solid #d1d1d1}.example-table-15 th{text-align:left}.example-table-15>tbody>tr>th,.example-table-15>tfoot>tr>th,.example-table-15>tbody>tr>td,.example-table-15>tfoot>tr>td{vertical-align:top}.example-table-15>thead>tr>th,.example-table-15>thead>tr>td{vertical-align:bottom}.example-table-15>thead>tr>th,.example-table-15>tbody>tr>th,.example-table-15>tfoot>tr>th,.example-table-15>thead>tr>td,.example-table-15>tbody>tr>td,.example-table-15>tfoot>tr>td{padding:3px 10px}.example-table-15>thead>tr>th,.example-table-15>tbody>tr>th,.example-table-15>tfoot>tr>th,.example-table-15>thead>tr>td,.example-table-15>tbody>tr>td,.example-table-15>tfoot>tr>td{border:1px solid #d1d1d1}.example-table-15>tbody>tr:nth-child(odd)>td,.example-table-15>tbody>tr:nth-child(odd)>th{background-color:#fff;color:#333}.example-table-15>tbody>tr:nth-child(even):hover>td,.example-table-15>tbody>tr:nth-child(even):hover>th{background-color:#f0f0f0}.example-table-15>tbody>tr:nth-child(odd):hover>td,.example-table-15>tbody>tr:nth-child(odd):hover>th{background-color:#f0f0f0}@media only screen and (max-width: 768px){.example-table-15{ border:0;background-color:#fc0}.example-table-15>tbody>tr:nth-child(odd)>td,.example-table-15>tbody>tr:nth-child(odd)>th{background-color:#fc0;color:#333}.example-table-15>tbody>tr:nth-child(even):hover>td,.example-table-15>tbody>tr:nth-child(even):hover>th{background-color:#fc0}.example-table-15>tbody>tr:nth-child(odd):hover>td,.example-table-15>tbody>tr:nth-child(odd):hover>th{background-color:#fc0}.example-table-15>thead>tr>th{display:none}.example-table-15>tbody>tr td,.example-table-15>tbody>tr th{display:block;padding:1.5px 10px;border-bottom:0}.example-table-15>tbody>tr td:before,.example-table-15>tbody>tr th:before{content:attr(data-th) ":";display:inline-block;padding-right:10px;font-size:14px;font-size:1.4rem;color:#111;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:700;font-style:normal;line-height:1.42857143}.example-table-15>tbody>tr>td{background-color:#fc0}.example-table-15>tfoot>tr td,.example-table-15>tfoot>tr th{display:block}.example-table-15>tbody>tr>th{background-color:#ffa500!important}}.example-tooltip-bottom{position:relative;display:inline-block}.example-tooltip-bottom .tooltip-content{z-index:100;background:#fff;min-width:210px;max-width:360px;padding:12px 16px;display:none;position:absolute;text-align:left;font-size:14px;font-size:1.4rem;color:#333;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.4;border:1px solid #bbb;top:100%;left:0;margin-top:5px}.example-tooltip-bottom .tooltip-content:after,.example-tooltip-bottom .tooltip-content:before{border:solid transparent;content:'';height:0;width:0;position:absolute}.example-tooltip-bottom .tooltip-content:after{border-color:transparent;border-width:5px}.example-tooltip-bottom .tooltip-content:before{border-color:transparent;border-width:6px}.example-tooltip-bottom .tooltip-content:after,.example-tooltip-bottom .tooltip-content:before{bottom:100%}.example-tooltip-bottom .tooltip-content:after{border-bottom-color:#fff;margin-left:-5px;left:15px}.example-tooltip-bottom .tooltip-content:before{border-bottom-color:#bbb;margin-left:-6px;left:15px}.example-tooltip-bottom>:first-child{cursor:help}.example-tooltip-bottom>:first-child:hover+.tooltip-content,.example-tooltip-bottom>:first-child:focus+.tooltip-content,.example-tooltip-bottom:hover>.tooltip-content{display:block}.example-tooltip-left{position:relative;display:inline-block}.example-tooltip-left .tooltip-content{z-index:100;background:#fff;min-width:210px;max-width:360px;padding:12px 16px;display:none;position:absolute;text-align:left;font-size:14px;font-size:1.4rem;color:#333;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.4;border:1px solid #bbb;right:100%;top:0;margin-right:5px}.example-tooltip-left .tooltip-content:after,.example-tooltip-left .tooltip-content:before{border:solid transparent;content:'';height:0;width:0;position:absolute}.example-tooltip-left .tooltip-content:after{border-color:transparent;border-width:5px}.example-tooltip-left .tooltip-content:before{border-color:transparent;border-width:6px}.example-tooltip-left .tooltip-content:after,.example-tooltip-left .tooltip-content:before{left:100%}.example-tooltip-left .tooltip-content:after{border-left-color:#fff;margin-top:-5px;top:15px}.example-tooltip-left .tooltip-content:before{border-left-color:#bbb;margin-top:-6px;top:15px}.example-tooltip-left>:first-child{cursor:help}.example-tooltip-left>:first-child:hover+.tooltip-content,.example-tooltip-left>:first-child:focus+.tooltip-content,.example-tooltip-left:hover>.tooltip-content{display:block}.example-tooltip-right{position:relative;display:inline-block}.example-tooltip-right .tooltip-content{z-index:100;background:#fff;min-width:210px;max-width:360px;padding:12px 16px;display:none;position:absolute;text-align:left;font-size:14px;font-size:1.4rem;color:#333;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.4;border:1px solid #bbb;left:100%;top:0;margin-left:5px}.example-tooltip-right .tooltip-content:after,.example-tooltip-right .tooltip-content:before{border:solid transparent;content:'';height:0;width:0;position:absolute}.example-tooltip-right .tooltip-content:after{border-color:transparent;border-width:5px}.example-tooltip-right .tooltip-content:before{border-color:transparent;border-width:6px}.example-tooltip-right .tooltip-content:after,.example-tooltip-right .tooltip-content:before{right:100%}.example-tooltip-right .tooltip-content:after{border-right-color:#fff;margin-top:-5px;top:15px}.example-tooltip-right .tooltip-content:before{border-right-color:#bbb;margin-top:-6px;top:15px}.example-tooltip-right>:first-child{cursor:help}.example-tooltip-right>:first-child:hover+.tooltip-content,.example-tooltip-right>:first-child:focus+.tooltip-content,.example-tooltip-right:hover>.tooltip-content{display:block}.example-tooltip-top{position:relative;display:inline-block}.example-tooltip-top .tooltip-content{z-index:100;background:#fff;min-width:210px;max-width:360px;padding:12px 16px;display:none;position:absolute;text-align:left;font-size:14px;font-size:1.4rem;color:#333;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.4;border:1px solid #bbb;bottom:100%;left:0;margin-bottom:5px}.example-tooltip-top .tooltip-content:after,.example-tooltip-top .tooltip-content:before{border:solid transparent;content:'';height:0;width:0;position:absolute}.example-tooltip-top .tooltip-content:after{border-color:transparent;border-width:5px}.example-tooltip-top .tooltip-content:before{border-color:transparent;border-width:6px}.example-tooltip-top .tooltip-content:after,.example-tooltip-top .tooltip-content:before{top:100%}.example-tooltip-top .tooltip-content:after{border-top-color:#fff;margin-left:-5px;left:15px}.example-tooltip-top .tooltip-content:before{border-top-color:#bbb;margin-left:-6px;left:15px}.example-tooltip-top>:first-child{cursor:help}.example-tooltip-top>:first-child:hover+.tooltip-content,.example-tooltip-top>:first-child:focus+.tooltip-content,.example-tooltip-top:hover>.tooltip-content{display:block}html{font-size:62.5%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{font-size:14px;font-size:1.4rem;color:#333;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.42857143}p{margin-top:0;margin-top:0rem;margin-bottom:10px;margin-bottom:1rem}abbr[title]{cursor:help;border-bottom:1px dotted #d1d1d1}b,strong{font-weight:700}em,i{font-style:italic}mark{background-color:#f0f0f0;color:#000}small,.small{font-size:12px}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #d1d1d1}sub,sup{font-size:71.42857143000001%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}dfn{font-style:italic}h1{font-size:40px;font-size:4rem;font-weight:300;line-height:1.1;margin-top:20px;margin-top:2rem;margin-bottom:20px;margin-bottom:2rem}h2{font-size:26px;font-size:2.6rem;font-weight:300;line-height:1.1;margin-top:25px;margin-top:2.5rem;margin-bottom:20px;margin-bottom:2rem}h3{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem}h4{font-size:14px;font-size:1.4rem;font-weight:700;line-height:1.1;margin-top:20px;margin-top:2rem;margin-bottom:20px;margin-bottom:2rem}h5{font-size:12px;font-size:1.2rem;font-weight:700;line-height:1.1;margin-top:20px;margin-top:2rem;margin-bottom:20px;margin-bottom:2rem}h6{font-size:10px;font-size:1rem;font-weight:700;line-height:1.1;margin-top:20px;margin-top:2rem;margin-bottom:20px;margin-bottom:2rem}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small{font-size:71.42857143000001%;color:#333;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1}a,.alink{color:#1979c3;text-decoration:none}a:visited,.alink:visited{color:#800080;text-decoration:none}a:hover,.alink:hover{color:#006bb4;text-decoration:underline}a:active,.alink:active{color:#ff5501;text-decoration:underline}a:focus,.alink:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}ul,ol{margin-top:0;margin-top:0rem;margin-bottom:25px;margin-bottom:2.5rem}ul>li,ol>li{margin-top:0;margin-top:0rem;margin-bottom:10px;margin-bottom:1rem}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}dl{margin-top:0;margin-bottom:20px}dt{font-weight:700;margin-top:0;margin-bottom:5px}dd{margin-top:0;margin-bottom:10px}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,'Courier New',monospace}code{padding:2px 4px;font-size:12px;font-size:1.2rem;color:#111;background-color:#f0f0f0;white-space:nowrap}kbd{padding:2px 4px;font-size:12px;font-size:1.2rem;color:#111;background-color:#f0f0f0}pre{background-color:#f0f0f0;border:1px solid #d1d1d1;color:#111;display:block;font-size:12px;font-size:1.2rem;margin:0 0 10px;line-height:1.42857143;padding:10px;word-break:break-all;word-wrap:break-word}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}blockquote{padding:0;margin:0 0 20px 40px;font-size:14px;font-size:1.4rem;color:#333;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:italic;line-height:1.42857143;border-left:0 solid #d1d1d1}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{color:#333;display:block;font-size:10px;font-size:1rem;line-height:1.42857143}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}blockquote cite{font-style:normal}blockquote:before,blockquote:after{content:""}q{quotes:none}q:before,q:after{content:'';content:none}cite{font-style:normal}.example{font-size:25px;font-size:2.5rem}.example-word-wrap{-ms-word-break:break-all;word-break:break-all;word-break:break-word;word-wrap:break-word;-webkit-hyphens:auto;-moz-hyphens:auto;-ms-hyphens:auto;-o-hyphens:auto;hyphens:auto;background:#ccc;width:120px}.example-text-overflow{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:#ccc;width:120px}.example-text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.example-hyphens{word-wrap:break-word;-webkit-hyphens:auto;-moz-hyphens:auto;-ms-hyphens:auto;-o-hyphens:auto;hyphens:auto}.example-hyphens-none{word-wrap:break-word;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;-o-hyphens:none;hyphens:none}.example-typography{font-size:30px;font-size:3rem;color:#fc0;font-family:Menlo,Monaco,Consolas,'Courier New',monospace;font-weight:500;font-style:italic;line-height:1.2}.example-list-reset-styles{margin:0;padding:0;list-style-type:none;list-style-image:none}.example-list-inline{margin:0;padding:0;list-style-type:none;list-style-image:none}.example-list-inline>li{display:inline-block;vertical-align:top}.example-link-default{color:#1979c3;text-decoration:none}.example-link-default:visited{color:#800080;text-decoration:none}.example-link-default:hover{color:#006bb4;text-decoration:underline}.example-link-default:active{color:#ff5501;text-decoration:underline}.example-link-default:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.example-link{color:#008000;text-decoration:none}.example-link:visited{color:#800080;text-decoration:none}.example-link:hover{color:#ffa500;text-decoration:none}.example-link:active{color:#ff5501;text-decoration:underline}.example-link:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.example-heading{font-size:40px;font-size:4rem;font-weight:300;line-height:1.1;margin-top:20px;margin-top:2rem;margin-bottom:20px;margin-bottom:2rem}.example-heading-2{font-size:26px;font-size:2.6rem;font-weight:300;line-height:1.1;margin-top:25px;margin-top:2.5rem;margin-bottom:20px;margin-bottom:2rem}html{font-size:62.5%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{font-size:14px;font-size:1.4rem;color:#333;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.42857143}p{margin-top:0;margin-top:0rem;margin-bottom:10px;margin-bottom:1rem}abbr[title]{cursor:help;border-bottom:1px dotted #d1d1d1}b,strong{font-weight:700}em,i{font-style:italic}mark{background-color:#f0f0f0;color:#000}small,.small{font-size:12px}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #d1d1d1}sub,sup{font-size:71.42857143000001%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}dfn{font-style:italic}h1{font-size:40px;font-size:4rem;font-weight:300;line-height:1.1;margin-top:20px;margin-top:2rem;margin-bottom:20px;margin-bottom:2rem}h2{font-size:26px;font-size:2.6rem;font-weight:300;line-height:1.1;margin-top:25px;margin-top:2.5rem;margin-bottom:20px;margin-bottom:2rem}h3{font-size:18px;font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:15px;margin-top:1.5rem;margin-bottom:10px;margin-bottom:1rem}h4{font-size:14px;font-size:1.4rem;font-weight:700;line-height:1.1;margin-top:20px;margin-top:2rem;margin-bottom:20px;margin-bottom:2rem}h5{font-size:12px;font-size:1.2rem;font-weight:700;line-height:1.1;margin-top:20px;margin-top:2rem;margin-bottom:20px;margin-bottom:2rem}h6{font-size:10px;font-size:1rem;font-weight:700;line-height:1.1;margin-top:20px;margin-top:2rem;margin-bottom:20px;margin-bottom:2rem}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small{font-size:71.42857143000001%;color:#333;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1}a,.alink{color:#1979c3;text-decoration:none}a:visited,.alink:visited{color:#800080;text-decoration:none}a:hover,.alink:hover{color:#006bb4;text-decoration:underline}a:active,.alink:active{color:#ff5501;text-decoration:underline}a:focus,.alink:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}ul,ol{margin-top:0;margin-top:0rem;margin-bottom:25px;margin-bottom:2.5rem}ul>li,ol>li{margin-top:0;margin-top:0rem;margin-bottom:10px;margin-bottom:1rem}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}dl{margin-top:0;margin-bottom:20px}dt{font-weight:700;margin-top:0;margin-bottom:5px}dd{margin-top:0;margin-bottom:10px}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,'Courier New',monospace}code{padding:2px 4px;font-size:12px;font-size:1.2rem;color:#111;background-color:#f0f0f0;white-space:nowrap}kbd{padding:2px 4px;font-size:12px;font-size:1.2rem;color:#111;background-color:#f0f0f0}pre{background-color:#f0f0f0;border:1px solid #d1d1d1;color:#111;display:block;font-size:12px;font-size:1.2rem;margin:0 0 10px;line-height:1.42857143;padding:10px;word-break:break-all;word-wrap:break-word}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}blockquote{padding:0;margin:0 0 20px 40px;font-size:14px;font-size:1.4rem;color:#333;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:italic;line-height:1.42857143;border-left:0 solid #d1d1d1}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{color:#333;display:block;font-size:10px;font-size:1rem;line-height:1.42857143}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}blockquote cite{font-style:normal}blockquote:before,blockquote:after{content:""}q{quotes:none}q:before,q:after{content:'';content:none}cite{font-style:normal}body{padding:15px;background-image:none}</style></head><body><nav class="bar top cf"><div class="container"><a href="index.html" class="brand">Magento UI library</a><ul class="menu"><li><a href="#" data-toggle="dropdown-1" unselectable="on" class="dropdown-toggle">files</a><ul id="dropdown-1" hidden class="dropdown"><li><a href="actions-toolbar.html">actions-toolbar</a></li><li><a href="breadcrumbs.html">breadcrumbs</a></li><li><a href="buttons.html">buttons</a></li><li><a href="docs.html">docs</a></li><li><a href="dropdowns.html">dropdowns</a></li><li><a href="forms.html">forms</a></li><li><a href="icons.html">icons</a></li><li><a href="layout.html">layout</a></li><li><a href="lib.html">lib</a></li><li><a href="loaders.html">loaders</a></li><li><a href="messages.html">messages</a></li><li><a href="navigation.html">navigation</a></li><li><a href="pages.html">pages</a></li><li><a href="popups.html">popups</a></li><li><a href="rating.html">rating</a></li><li><a href="resets.html">resets</a></li><li><a href="sections.html">sections</a></li><li><a href="tables.html">tables</a></li><li><a href="tooltips.html">tooltips</a></li><li><a href="typography.html">typography</a></li><li><a href="variables.html">variables</a></li></ul></li></ul><div class="nav"><button title="Table of Contents" data-toggle="nav-toc"><svg viewBox="0 0 512 512" height="22" width="22" class="icon"><path d="M108.9,403.1V462H50v-58.9H108.9z M108.9,285.4H50v58.9h58.9V285.4zM108.9,50H50v58.9h58.9V50z M108.9,167.7H50v58.9h58.9V167.7z M167.7,344.3H462v-58.9H167.7V344.3zM167.7,50v58.9H462V50H167.7z M167.7,462H462v-58.9H167.7V462z M167.7,226.6H462v-58.9H167.7V226.6z"></path></svg></button><input type="search" placeholder="Search" class="search"></div></div></nav><section class="container"><article id="forms-mixins" class="section"><div class="docs"><a href="#forms-mixins" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="forms-mixins">Forms mixins</h1>
+<p>  Magento UI library provides a set of mixins for forms elements customization. You can customize your forms globally by configuring global variables, or you can customize every form separately using appropriate mixin.</p>
+</div></article><article id="global-forms-elements-customization" class="section"><div class="docs"><a href="#global-forms-elements-customization" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="global-forms-elements-customization">Global forms elements customization</h1>
+<p>  The <code>.form-element-all()</code> mixin is used to set default styles for all form elements in the theme. To configure these elements global variables are used.</p>
+</div></article><article id="fieldsets-fields-customization" class="section"><div class="docs"><a href="#fieldsets-fields-customization" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="fieldsets-fields-customization">Fieldsets &amp; fields customization</h1>
+<p>  The <code>.form-fieldset()</code> mixin is used to customize form fieldset borders and legend.</p>
+<p>  The <code>.form-field()</code> mixin is used to customize form elements.</p>
+<p>  The <code>.form-hasrequired()</code> mixin is used to show and customize &quot;required fields&quot; message if the form or fieldset has required fields and a <code>data-hasrequired</code> attribute.</p>
+<p>  Using these mixins you can customize your forms. By default these mixins use global variables.</p>
+<h2 id="simple-form-with-required-fields-message">Simple form with &quot;required fields&quot; message</h2>
+<textarea class="preview-code" spellcheck="false">    &lt;form class="example-form-1"&gt;
+        &lt;fieldset class="example-form-1-fieldset" data-hasrequired="* Required Fields"&gt;
+            &lt;legend class="legend"&gt;&lt;span&gt;Login Information&lt;/span&gt;&lt;/legend&gt;&lt;br&gt;
+
+            &lt;div class="field password required"&gt;
+                &lt;label for="password" class="label"&gt;&lt;span&gt;Password&lt;/span&gt;&lt;/label&gt;
+
+                &lt;div class="control"&gt;
+                    &lt;input type="password" name="password" id="password" title="Password"&gt;
+                &lt;/div&gt;
+            &lt;/div&gt;
+
+            &lt;div class="field confirmation required"&gt;
+                &lt;label for="confirmation" class="label"&gt;&lt;span&gt;Confirm Password&lt;/span&gt;&lt;/label&gt;
+
+                &lt;div class="control"&gt;
+                    &lt;input type="password" name="confirmation" title="Confirm Password" id="confirmation"&gt;
+                &lt;/div&gt;
+            &lt;/div&gt;
+
+            &lt;div class="field password required"&gt;
+                &lt;label for="password2" class="label"&gt;&lt;span&gt;Password&lt;/span&gt;&lt;/label&gt;
+
+                &lt;div class="control"&gt;
+                    &lt;input type="password" name="password2" id="password2" title="Password"&gt;
+                &lt;/div&gt;
+            &lt;/div&gt;
+
+            &lt;div class="field textarea"&gt;
+                &lt;label for="textarea2" class="label"&gt;&lt;span&gt;Textarea&lt;/span&gt;&lt;/label&gt;
+
+                &lt;div class="control"&gt;
+                    &lt;textarea rows="3" cols="5" id="textarea2" name="textarea2"&gt;&lt;/textarea&gt;
+                    &lt;div class="note"&gt;Please enter your message here&lt;/div&gt;
+                &lt;/div&gt;
+            &lt;/div&gt;
+
+            &lt;div class="field file"&gt;
+                &lt;label for="file2" class="label"&gt;&lt;span&gt;File field&lt;/span&gt;&lt;/label&gt;
+
+                &lt;div class="control"&gt;
+                    &lt;input type="file" id="file2" value="" name="file2"&gt;
+                    &lt;div class="note"&gt;Please choose your picture here&lt;/div&gt;
+                &lt;/div&gt;
+            &lt;/div&gt;
+
+            &lt;div class="field choice"&gt;
+                &lt;input type="radio" id="radio2" checked="" value="1" name="radio2"&gt;
+
+                &lt;label for="radio2" class="label"&gt;&lt;span&gt;Radiobutton choice&lt;/span&gt;&lt;/label&gt;
+            &lt;/div&gt;
+
+            &lt;div class="field choice"&gt;
+                &lt;input type="checkbox" id="checkbox2" value="1" name="checkbox2"&gt;
+
+                &lt;label for="checkbox2" class="label"&gt;&lt;span&gt;Checkbox choice&lt;/span&gt;&lt;/label&gt;
+            &lt;/div&gt;
+
+            &lt;div class="field region"&gt;
+                &lt;label for="select2" class="label"&gt;&lt;span&gt;Select&lt;/span&gt;&lt;/label&gt;
+
+                &lt;div class="control"&gt;
+                    &lt;select name="select2" id="select2"&gt;
+                        &lt;option value=""&gt;Please select&lt;/option&gt;
+                        &lt;option value="5"&gt;5&lt;/option&gt;
+                        &lt;option value="10"&gt;10&lt;/option&gt;
+                        &lt;option value="15"&gt;15&lt;/option&gt;
+                        &lt;option value="20"&gt;20&lt;/option&gt;
+                    &lt;/select&gt;
+                &lt;/div&gt;
+            &lt;/div&gt;
+
+            &lt;div class="field multiselect"&gt;
+                &lt;label for="multiselect2" class="label"&gt;&lt;span&gt;Multiple select&lt;/span&gt;&lt;/label&gt;
+
+                &lt;div class="control"&gt;
+                    &lt;select name="multiselect2" id="multiselect2" multiple="multiple"&gt;
+                        &lt;option value="Option 1"&gt;Option 1&lt;/option&gt;
+                        &lt;option value="Option 2"&gt;Option 2&lt;/option&gt;
+                        &lt;option value="Option 3"&gt;Option 3&lt;/option&gt;
+                        &lt;option value="Option 4"&gt;Option 4&lt;/option&gt;
+                        &lt;option value="Option 5"&gt;Option 5&lt;/option&gt;
+                        &lt;option value="Option 6"&gt;Option 6&lt;/option&gt;
+                        &lt;option value="Option 7"&gt;Option 7&lt;/option&gt;
+                    &lt;/select&gt;
+                &lt;/div&gt;
+            &lt;/div&gt;
+        &lt;/fieldset&gt;
+    &lt;/form&gt;</textarea><h2 id="form-with-fields-in-2-columns">Form with fields in 2 columns</h2>
+<textarea class="preview-code" spellcheck="false">    &lt;form class="example-form-2" action="#" method="post"&gt;
+        &lt;fieldset class="example-form-2-fieldset"&gt;
+            &lt;legend class="legend"&gt;&lt;span&gt;Personal Information&lt;/span&gt;&lt;/legend&gt;&lt;br&gt;
+
+            &lt;div class="field name firstname required"&gt;
+                &lt;label class="label" for="firstname"&gt;&lt;span&gt;First Name&lt;/span&gt;&lt;/label&gt;
+
+                &lt;div class="control"&gt;
+                    &lt;input type="text" id="firstname" name="firstname" value="" title="First Name"&gt;
+                &lt;/div&gt;
+            &lt;/div&gt;
+
+            &lt;div class="field name lastname required"&gt;
+                &lt;label class="label" for="lastname"&gt;&lt;span&gt;Last Name&lt;/span&gt;&lt;/label&gt;
+
+                &lt;div class="control"&gt;
+                    &lt;input type="text" id="lastname" name="lastname" value="" title="Last Name"&gt;
+                &lt;/div&gt;
+            &lt;/div&gt;
+
+            &lt;div class="field required"&gt;
+                &lt;label for="email_address" class="label"&gt;&lt;span&gt;Email Address&lt;/span&gt;&lt;/label&gt;
+
+                &lt;div class="control"&gt;
+                    &lt;input type="email" name="email" id="email_address" value="" title="Email Address"&gt;
+                &lt;/div&gt;
+            &lt;/div&gt;
+
+            &lt;div class="field textarea"&gt;
+                &lt;label for="textarea" class="label"&gt;&lt;span&gt;Textarea&lt;/span&gt;&lt;/label&gt;
+
+                &lt;div class="control"&gt;
+                    &lt;textarea rows="3" cols="5" id="textarea" name="textarea"&gt;&lt;/textarea&gt;
+                    &lt;div class="note"&gt;Please enter your message here&lt;/div&gt;
+                &lt;/div&gt;
+            &lt;/div&gt;
+
+            &lt;div class="field file"&gt;
+                &lt;label for="file" class="label"&gt;&lt;span&gt;File field&lt;/span&gt;&lt;/label&gt;
+
+                &lt;div class="control"&gt;
+                    &lt;input type="file" id="file" value="" name="file"&gt;
+                    &lt;div class="note"&gt;Please choose your picture here&lt;/div&gt;
+                &lt;/div&gt;
+            &lt;/div&gt;
+
+            &lt;div class="field choice"&gt;
+                &lt;input type="radio" id="radio" checked="" value="1" name="radio"&gt;
+
+                &lt;label for="radio" class="label"&gt;&lt;span&gt;Radiobutton choice&lt;/span&gt;&lt;/label&gt;
+            &lt;/div&gt;
+
+            &lt;div class="field choice"&gt;
+                &lt;input type="checkbox" id="checkbox" value="1" name="checkbox"&gt;
+
+                &lt;label for="checkbox" class="label"&gt;&lt;span&gt;Checkbox choice&lt;/span&gt;&lt;/label&gt;
+            &lt;/div&gt;
+
+            &lt;div class="field region"&gt;
+                &lt;label for="select" class="label"&gt;&lt;span&gt;Select&lt;/span&gt;&lt;/label&gt;
+
+                &lt;div class="control"&gt;
+                    &lt;select name="select" id="select"&gt;
+                        &lt;option value=""&gt;Please select&lt;/option&gt;
+                        &lt;option value="5"&gt;5&lt;/option&gt;
+                        &lt;option value="10"&gt;10&lt;/option&gt;
+                        &lt;option value="15"&gt;15&lt;/option&gt;
+                        &lt;option value="20"&gt;20&lt;/option&gt;
+                    &lt;/select&gt;
+                &lt;/div&gt;
+            &lt;/div&gt;
+
+            &lt;div class="field multiselect"&gt;
+                &lt;label for="multiselect" class="label"&gt;&lt;span&gt;Multiple select&lt;/span&gt;&lt;/label&gt;
+
+                &lt;div class="control"&gt;
+                    &lt;select name="multiselect" id="multiselect" multiple="multiple"&gt;
+                        &lt;option value="Option 1"&gt;Option 1&lt;/option&gt;
+                        &lt;option value="Option 2"&gt;Option 2&lt;/option&gt;
+                        &lt;option value="Option 3"&gt;Option 3&lt;/option&gt;
+                        &lt;option value="Option 4"&gt;Option 4&lt;/option&gt;
+                        &lt;option value="Option 5"&gt;Option 5&lt;/option&gt;
+                        &lt;option value="Option 6"&gt;Option 6&lt;/option&gt;
+                        &lt;option value="Option 7"&gt;Option 7&lt;/option&gt;
+                    &lt;/select&gt;
+                &lt;/div&gt;
+            &lt;/div&gt;
+        &lt;/fieldset&gt;
+    &lt;/form&gt;</textarea>
 </div><div class="code"><pre><code>
 .example-form-1 {
     .example-form-1-fieldset {
@@ -209,460 +209,462 @@
         }
     }
 }
-
</code></pre></div></article><article id="fieldset-and-legend-customization-variables" class="section"><div class="docs"><a href="#fieldset-and-legend-customization-variables" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="fieldset-and-legend-customization-variables">Fieldset and legend customization variables</h1>
-<p>  The <code>.form-fieldset()</code> mixin variables
-  <pre>
-    <table>
-        <tr>
-            <th class="vars_head">Mixin variable</th>
-            <th class="vars_head">Global variable</th>
-            <th class="vars_head">Default value</th>
-            <th class="vars_head">Comment</th>
-        </tr>
-        <tr>
-            <th>@_border</th>
-            <td class="vars_value">@form-fieldset-border</td>
-            <td class="vars_value">0</td>
-            <td>Fieldset border</td>
-        </tr>
-        <tr>
-            <th>@_margin</th>
-            <td class="vars_value">@form-fieldset-margin</td>
-            <td class="vars_value">0 0 40px</td>
-            <td>Fieldset margin</td>
-        </tr>
-        <tr>
-            <th>@_padding</th>
-            <td class="vars_value">@form-fieldset-padding</td>
-            <td class="vars_value">0</td>
-            <td>Fieldset padding</td>
-        </tr>
-        <tr>
-            <th>@_legend-color</th>
-            <td class="vars_value">@form-fieldset-legend-color</td>
-            <td class="vars_value">inherit</td>
-            <td>Legend color</td>
-        </tr>
-        <tr>
-            <th>@_legend-font-size</th>
-            <td class="vars_value">@form-fieldset-legend-font-size</td>
-            <td class="vars_value">20px</td>
-            <td>Legend font size</td>
-        </tr>
-        <tr>
-            <th>@_legend-font-family</th>
-            <td class="vars_value">@form-fieldset-legend-font-family</td>
-            <td class="vars_value">@font-family-base</td>
-            <td>Legend font family</td>
-        </tr>
-        <tr>
-            <th>@_legend-font-weight</th>
-            <td class="vars_value">@form-fieldset-legend-font-weight</td>
-            <td class="vars_value">@font-weight-base</td>
-            <td>Legend font weight</td>
-        </tr>
-        <tr>
-            <th>@_legend-font-style</th>
-            <td class="vars_value">@form-fieldset-legend-font-style</td>
-            <td class="vars_value">normal</td>
-            <td>Legend font style</td>
-        </tr>
-        <tr>
-            <th>@_legend-line-height</th>
-            <td class="vars_value">@form-fieldset-legend-line-height</td>
-            <td class="vars_value">1.2</td>
-            <td>Legend line height</td>
-        </tr>
-        <tr>
-            <th>@_legend-margin</th>
-            <td class="vars_value">@form-fieldset-legend-margin</td>
-            <td class="vars_value">0 0 25px @form-field-type-inline-label-width</td>
-            <td>Legend margin</td>
-        </tr>
-        <tr>
-            <th>@_legend-padding</th>
-            <td class="vars_value">@form-fieldset-legend-padding</td>
-            <td class="vars_value">0</td>
-            <td>Legend padding</td>
-        </tr>
-        <tr>
-            <th>@_legend-width</th>
-            <td class="vars_value">@form-fieldset-legend-width</td>
-            <td class="vars_value">0 0 25px @form-field-type-inline-label-width</td>
-            <td>Legend width</td>
-        </tr>
-    </table>
- </pre></p>
-</div></article><article id="fields-customization-variables" class="section"><div class="docs"><a href="#fields-customization-variables" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="fields-customization-variables">Fields customization variables</h1>
-<p>  The <code>.form-field()</code> mixin variables</p>
-  <pre>
-    <table>
-        <tr>
-            <th class="vars_head">Mixin variable</th>
-            <th class="vars_head">Global variable</th>
-            <th class="vars_head">Default values [Allowed values]</th>
-            <th class="vars_head">Comment</th>
-        </tr>
-        <tr>
-            <th>@_type</th>
-            <td class="vars_value">@form-field-type</td>
-            <td class="vars_value">inline [inline | block]</td>
-            <td>How to display from field element and its label. When set to 'inline' they are displayed side-by-side. When set to 'block' the label is displayed above the control</td>
-        </tr>
-        <tr>
-            <th>@_border</th>
-            <td class="vars_value">@form-field-border</td>
-            <td class="vars_value">none</td>
-            <td>Border of the &lt;div class=&quot;field&quot;&gt; element</td>
-        </tr>
-        <tr>
-            <th>@_column</th>
-            <td class="vars_value">@form-field-column</td>
-            <td class="vars_value">false [true | false]</td>
-            <td>Form fields are displayed in columns</td>
-        </tr>
-        <tr>
-            <th>@_column-padding</th>
-            <td class="vars_value">@form-field-column-padding</td>
-            <td class="vars_value">0 20px 0 0</td>
-            <td>Form fields column padding</td>
-        </tr>
-        <tr>
-            <th>@_column-width</th>
-            <td class="vars_value">@form-field-column-width</td>
-            <td class="vars_value">50%</td>
-            <td>Form fields column width</td>
-        </tr>
-        <tr>
-            <th>@_type-block-margin</th>
-            <td class="vars_value">@form-field-type-block-margin</td>
-            <td class="vars_value">0 0 20px</td>
-            <td>Form fields margin if @form-field-type set to is 'block'</td>
-        </tr>
-        <tr>
-            <th>@_type-inline-margin</th>
-            <td class="vars_value">@form-field-type-inline-margin</td>
-            <td class="vars_value">0 0 @form-field-type-inline-vertical-margin</td>
-            <td>Form fields margin if @form-field-type is set to 'inline'</td>
-        </tr>
-        <tr>
-            <th colspan="4" class="vars_section">Form field label</th>
-        </tr>
-        <tr>
-            <th>@_label-color</th>
-            <td class="vars_value">@form-field-label-color</td>
-            <td class="vars_value">''</td>
-            <td>Field label text color</td>
-        </tr>
-        <tr>
-            <th>@_label-font-size</th>
-            <td class="vars_value">@form-field-label-font-size</td>
-            <td class="vars_value">@font-size-base</td>
-            <td>Field label font size</td>
-        </tr>
-        <tr>
-            <th>@_label-font-family</th>
-            <td class="vars_value">@form-field-label-font-family</td>
-            <td class="vars_value">''</td>
-            <td>Field label font family</td>
-        </tr>
-        <tr>
-            <th>@_label-font-weight</th>
-            <td class="vars_value">@form-field-label-font-weight</td>
-            <td class="vars_value">@font-weight-bold</td>
-            <td>Field label font weight</td>
-        </tr>
-        <tr>
-            <th> @_label-font-style</th>
-            <td class="vars_value">@form-field-label-font-style</td>
-            <td class="vars_value">''</td>
-            <td>Field label font style</td>
-        </tr>
-        <tr>
-            <th>@_label-line-height</th>
-            <td class="vars_value">@form-field-label-line-height</td>
-            <td class="vars_value">''</td>
-            <td>Field label line height</td>
-        </tr>
-        <tr>
-            <th>@_type-block-label-margin</th>
-            <td class="vars_value">@form-field-type-block-label-margin</td>
-            <td class="vars_value">0 0 5px</td>
-            <td>Field label margin if @form-field-type is set to 'block'</td>
-        </tr>
-        <tr>
-            <th>@_type-inline-label-padding</th>
-            <td class="vars_value">@form-field-type-inline-label-padding</td>
-            <td class="vars_value">6px 15px 0 0</td>
-            <td>Field label padding if @form-field-type is set to 'inline'</td>
-        </tr>
-        <tr>
-            <th>@_type-inline-label-width</th>
-            <td class="vars_value">@form-field-type-inline-label-width</td>
-            <td class="vars_value">25.8%</td>
-            <td>Field label width if @form-field-type is set to 'inline'</td>
-        </tr>
-        <tr>
-            <th>@_type-inline-control-width</th>
-            <td class="vars_value">@form-field-type-inline-control-width</td>
-            <td class="vars_value">74.2%</td>
-            <td>Field control width if @form-field-type is set to 'inline'</td>
-        </tr>
-        <tr>
-            <th colspan="4" class="vars_section">Label &quot;required&quot; asterisk</th>
-        </tr>
-        <tr>
-            <th>@_label-asterisk-color</th>
-            <td class="vars_value">@form-field-label-asterisk-color</td>
-            <td class="vars_value">#da370a</td>
-            <td>Label asterisk color</td>
-        </tr>
-        <tr>
-            <th>@_label-asterisk-font-size</th>
-            <td class="vars_value">@form-field-label-asterisk-font-size</td>
-            <td class="vars_value">@font-size-s</td>
-            <td>Label asterisk font size</td>
-        </tr>
-        <tr>
-            <th>@_label-asterisk-font-family</th>
-            <td class="vars_value">@form-field-label-asterisk-font-family</td>
-            <td class="vars_value">''</td>
-            <td>Label asterisk font family</td>
-        </tr>
-        <tr>
-            <th>@_label-asterisk-font-weight</th>
-            <td class="vars_value" >@form-field-label-asterisk-font-weight</td>
-            <td class="vars_value">''</td>
-            <td>Label asterisk font weight</td>
-        </tr>
-        <tr>
-            <th>@_label-asterisk-font-style</th>
-            <td class="vars_value">@form-field-label-asterisk-font-style</td>
-            <td class="vars_value">''</td>
-            <td>Label asterisk font style</td>
-        </tr>
-        <tr>
-            <th>@_label-asterisk-line-height</th>
-            <td class="vars_value">@form-field-label-asterisk-line-height</td>
-            <td class="vars_value">''</td>
-            <td>Label asterisk line height</td>
-        </tr>
-        <tr>
-            <th>@_label-asterisk-margin</th>
-            <td class="vars_value">@form-field-label-asterisk-margin</td>
-            <td class="vars_value">0 0 0 5px</td>
-            <td>Label asterisk margin</td>
-        </tr>
-        <tr>
-            <th colspan="4" class="vars_section">Field note</th>
-        </tr>
-        <tr>
-            <th>@_note-color</th>
-            <td class="vars_value">@form-field-note-color</td>
-            <td class="vars_value">''</td>
-            <td>Field note text color</td>
-        </tr>
-        <tr>
-            <th>@_note-font-size</th>
-            <td class="vars_value">@form-field-note-font-size</td>
-            <td class="vars_value">@font-size-s</td>
-            <td>Field note font size</td>
-        </tr>
-        <tr>
-            <th>@_note-font-family</th>
-            <td class="vars_value">@form-field-note-font-family</td>
-            <td class="vars_value">''</td>
-            <td>Field note font family</td>
-        </tr>
-        <tr>
-            <th>@_note-font-weight</th>
-            <td class="vars_value">@form-field-note-font-weight</td>
-            <td class="vars_value">''</td>
-            <td>Field note font weight</td>
-        </tr>
-        <tr>
-            <th>@_note-font-style</th>
-            <td class="vars_value">@form-field-note-font-style</td>
-            <td class="vars_value">''</td>
-            <td>Field note font style</td>
-        </tr>
-        <tr>
-            <th>@_note-line-height</th>
-            <td class="vars_value">@form-field-note-line-height</td>
-            <td class="vars_value">''</td>
-            <td>Field note line height</td>
-        </tr>
-        <tr>
-            <th>@_note-margin</th>
-            <td class="vars_value">@form-field-note-margin</td>
-            <td class="vars_value">3px 0 0</td>
-            <td>Field note margin</td>
-        </tr>
-        <tr>
-            <th>@_note-padding</th>
-            <td class="vars_value">@form-field-note-padding</td>
-            <td class="vars_value">0</td>
-            <td>Field note padding</td>
-        </tr>
-        <tr>
-            <th>@_note-icon-font-content</th>
-            <td class="vars_value">@form-field-note-icon-font-content</td>
-            <td class="vars_value">@icon-pointer-up</td>
-            <td>Field note icon code</td>
-        </tr>
-        <tr>
-            <th>@_note-icon-font</th>
-            <td class="vars_value">@form-field-note-icon-font</td>
-            <td class="vars_value">@icon-font</td>
-            <td>Field note icon font</td>
-        </tr>
-        <tr>
-            <th>@_note-icon-font-size</th>
-            <td class="vars_value">@form-field-note-icon-font-size</td>
-            <td class="vars_value">@form-field-note-font-size*2</td>
-            <td>Field note icon font size</td>
-        </tr>
-        <tr>
-            <th>@_note-icon-font-line-height</th>
-            <td class="vars_value">@form-field-note-icon-font-line-height</td>
-            <td class="vars_value">@form-field-note-font-size</td>
-            <td>Field note icon line height</td>
-        </tr>
-        <tr>
-            <th>@_note-icon-font-color</th>
-            <td class="vars_value">@form-field-note-icon-font-color</td>
-            <td class="vars_value">@form-field-note-color</td>
-            <td>Field note icon color</td>
-        </tr>
-        <tr>
-            <th>@_note-icon-font-color-hover</th>
-            <td class="vars_value">@form-field-note-icon-font-color-hover</td>
-            <td class="vars_value">''</td>
-            <td>Field note icon hovered color</td>
-        </tr>
-        <tr>
-            <th>@_note-icon-font-color-active</th>
-            <td class="vars_value">@form-field-note-icon-font-color-active</td>
-            <td class="vars_value">''</td>
-            <td>Field note icon active color</td>
-        </tr>
-        <tr>
-            <th>@_note-icon-font-margin</th>
-            <td class="vars_value">@form-field-note-icon-font-margin</td>
-            <td class="vars_value">''</td>
-            <td>Field note icon margin</td>
-        </tr>
-        <tr>
-            <th nowrap="nowrap">@_note-icon-font-vertical-align</th>
-            <td class="vars_value" nowrap="nowrap">@form-field-note-icon-font-vertical-align</td>
-            <td class="vars_value">@icon-font-vertical-align</td>
-            <td>Field note icon vertical align</td>
-        </tr>
-        <tr>
-            <th>@_note-icon-font-position</th>
-            <td class="vars_value">@form-field-note-icon-font-position</td>
-            <td class="vars_value">@icon-font-position [before | after]</td>
-            <td>Field note icon position</td>
-        </tr>
-        <tr>
-            <th>@_note-icon-font-text-hide</th>
-            <td class="vars_value">@form-field-note-icon-font-text-hide</td>
-            <td class="vars_value">@icon-font-text-hide [true | false]</td>
-            <td>Field note icon text hide</td>
-        </tr>
-    </table>
-  </pre>
-</div></article><article id="required-fields-message-customization-variables" class="section"><div class="docs"><a href="#required-fields-message-customization-variables" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="required-fields-message-customization-variables">Required fields message customization variables</h1>
-<p>  The <code>.form-hasrequired()</code> mixin variables</p>
-  <pre>
-    <table>
-        <tr>
-            <th class="vars_head">Mixin variable</th>
-            <th class="vars_head">Global variable</th>
-            <th class="vars_head">Default values [Allowed values]</th>
-            <th class="vars_head">Comment</th>
-        </tr>
-        <tr>
-            <th>@_position</th>
-            <td class="vars_value">@form-hasrequired-position</td>
-            <td class="vars_value">top [top | bottom]</td>
-            <td>Position of &quot;required fields&quot; notice</td>
-        </tr>
-        <tr>
-            <th>@_color</th>
-            <td class="vars_value">@form-hasrequired-color</td>
-            <td class="vars_value">#da370a</td>
-            <td>Text color of &quot;required fields&quot; notice</td>
-        </tr>
-        <tr>
-            <th>@_font-size</th>
-            <td class="vars_value">@form-hasrequired-font-size</td>
-            <td class="vars_value">@font-size-base</td>
-            <td>Font size of &quot;required fields&quot; notice</td>
-        </tr>
-        <tr>
-            <th>@_font-family</th>
-            <td class="vars_value">@form-hasrequired-font-family</td>
-            <td class="vars_value">''</td>
-            <td>Font family of &quot;required fields&quot; notice</td>
-        </tr>
-        <tr>
-            <th>@_font-weight</th>
-            <td class="vars_value">@form-hasrequired-font-weight</td>
-            <td class="vars_value">''</td>
-            <td>Font weight of &quot;required fields&quot; notice</td>
-        </tr>
-        <tr>
-            <th>@_font-style</th>
-            <td class="vars_value">@form-hasrequired-font-style</td>
-            <td class="vars_value">''</td>
-            <td>Font style of &quot;required fields&quot; notice</td>
-        </tr>
-        <tr>
-            <th>@_line-height</th>
-            <td class="vars_value">@form-hasrequired-line-height</td>
-            <td class="vars_value">''</td>
-            <td>Line height of &quot;required fields&quot; notice</td>
-        </tr>
-        <tr>
-            <th>@_border</th>
-            <td class="vars_value">@form-hasrequired-border</td>
-            <td class="vars_value">''</td>
-            <td>Border of &quot;required fields&quot; notice</td>
-        </tr>
-        <tr>
-            <th>@_margin</th>
-            <td class="vars_value">@form-hasrequired-margin</td>
-            <td class="vars_value">10px 0 0</td>
-            <td>Margin of &quot;required fields&quot; notice</td>
-        </tr>
-        <tr>
-            <th>@_padding</th>
-            <td class="vars_value">@form-hasrequired-padding</td>
-            <td class="vars_value">''</td>
-            <td>Padding of &quot;required fields&quot; notice</td>
-        </tr>
-    </table>
- </pre>
-</div><div class="code"><pre><code>
</code></pre></div></article><article id="form-element-inputs-customization" class="section"><div class="docs"><a href="#form-element-inputs-customization" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="form-element-inputs-customization">Form element inputs customization</h1>
-<p>  The <code>.form-element-input(@_type: <em>type</em>)</code> mixin is used to style form controls. This mixin accepts 1 mandatory parameter - the control type. This can be:</p>
-<ul>
-<li>input-text - for all input-text-like inputs</li>
-<li>input-radio - for radiobutton</li>
-<li>input-checkbox - for checkbox</li>
-<li>select - for select</li>
-<li>textarea - for textarea</li>
-</ul>
-<textarea class="preview-code" spellcheck="false">     &lt;input type="password" placeholder="placeholder, type = password" /&gt;
-     &lt;input type="text" placeholder="placeholder, type = text" /&gt;
-     &lt;input type="url" placeholder="placeholder, type = url" /&gt;
-     &lt;input type="tel" placeholder="placeholder, type = tel" /&gt;
-     &lt;input type="search" placeholder="placeholder, type = search" /&gt;
-     &lt;input type="number" placeholder="placeholder, type = number" /&gt;
-     &lt;input type="email" placeholder="placeholder, type = email" /&gt;
-     &lt;select&gt;&lt;option&gt;type = select&lt;/option&gt;&lt;option&gt;option&lt;/option&gt;&lt;/select&gt;
-     &lt;select multiple="multiple"&gt;&lt;option&gt;type = select multiple&lt;/option&gt;&lt;option&gt;option&lt;/option&gt;&lt;/select&gt;
-     &lt;textarea placeholder="placeholder, type = textarea" &gt;&lt;/textarea&gt;</textarea>
+
+</code></pre></div></article><article id="fieldset-and-legend-customization-variables" class="section"><div class="docs"><a href="#fieldset-and-legend-customization-variables" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="fieldset-and-legend-customization-variables">Fieldset and legend customization variables</h1>
+<p>  The <code>.form-fieldset()</code> mixin variables
+  <pre>
+    <table>
+        <tr>
+            <th class="vars_head">Mixin variable</th>
+            <th class="vars_head">Global variable</th>
+            <th class="vars_head">Default value</th>
+            <th class="vars_head">Comment</th>
+        </tr>
+        <tr>
+            <th>@_border</th>
+            <td class="vars_value">@form-fieldset-border</td>
+            <td class="vars_value">0</td>
+            <td>Fieldset border</td>
+        </tr>
+        <tr>
+            <th>@_margin</th>
+            <td class="vars_value">@form-fieldset-margin</td>
+            <td class="vars_value">0 0 40px</td>
+            <td>Fieldset margin</td>
+        </tr>
+        <tr>
+            <th>@_padding</th>
+            <td class="vars_value">@form-fieldset-padding</td>
+            <td class="vars_value">0</td>
+            <td>Fieldset padding</td>
+        </tr>
+        <tr>
+            <th>@_legend-color</th>
+            <td class="vars_value">@form-fieldset-legend-color</td>
+            <td class="vars_value">inherit</td>
+            <td>Legend color</td>
+        </tr>
+        <tr>
+            <th>@_legend-font-size</th>
+            <td class="vars_value">@form-fieldset-legend-font-size</td>
+            <td class="vars_value">20px</td>
+            <td>Legend font size</td>
+        </tr>
+        <tr>
+            <th>@_legend-font-family</th>
+            <td class="vars_value">@form-fieldset-legend-font-family</td>
+            <td class="vars_value">@font-family-base</td>
+            <td>Legend font family</td>
+        </tr>
+        <tr>
+            <th>@_legend-font-weight</th>
+            <td class="vars_value">@form-fieldset-legend-font-weight</td>
+            <td class="vars_value">@font-weight-base</td>
+            <td>Legend font weight</td>
+        </tr>
+        <tr>
+            <th>@_legend-font-style</th>
+            <td class="vars_value">@form-fieldset-legend-font-style</td>
+            <td class="vars_value">normal</td>
+            <td>Legend font style</td>
+        </tr>
+        <tr>
+            <th>@_legend-line-height</th>
+            <td class="vars_value">@form-fieldset-legend-line-height</td>
+            <td class="vars_value">1.2</td>
+            <td>Legend line height</td>
+        </tr>
+        <tr>
+            <th>@_legend-margin</th>
+            <td class="vars_value">@form-fieldset-legend-margin</td>
+            <td class="vars_value">0 0 25px @form-field-type-inline-label-width</td>
+            <td>Legend margin</td>
+        </tr>
+        <tr>
+            <th>@_legend-padding</th>
+            <td class="vars_value">@form-fieldset-legend-padding</td>
+            <td class="vars_value">0</td>
+            <td>Legend padding</td>
+        </tr>
+        <tr>
+            <th>@_legend-width</th>
+            <td class="vars_value">@form-fieldset-legend-width</td>
+            <td class="vars_value">0 0 25px @form-field-type-inline-label-width</td>
+            <td>Legend width</td>
+        </tr>
+    </table>
+ </pre></p>
+</div></article><article id="fields-customization-variables" class="section"><div class="docs"><a href="#fields-customization-variables" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="fields-customization-variables">Fields customization variables</h1>
+<p>  The <code>.form-field()</code> mixin variables</p>
+  <pre>
+    <table>
+        <tr>
+            <th class="vars_head">Mixin variable</th>
+            <th class="vars_head">Global variable</th>
+            <th class="vars_head">Default values [Allowed values]</th>
+            <th class="vars_head">Comment</th>
+        </tr>
+        <tr>
+            <th>@_type</th>
+            <td class="vars_value">@form-field-type</td>
+            <td class="vars_value">inline [inline | block]</td>
+            <td>How to display from field element and its label. When set to 'inline' they are displayed side-by-side. When set to 'block' the label is displayed above the control</td>
+        </tr>
+        <tr>
+            <th>@_border</th>
+            <td class="vars_value">@form-field-border</td>
+            <td class="vars_value">none</td>
+            <td>Border of the &lt;div class=&quot;field&quot;&gt; element</td>
+        </tr>
+        <tr>
+            <th>@_column</th>
+            <td class="vars_value">@form-field-column</td>
+            <td class="vars_value">false [true | false]</td>
+            <td>Form fields are displayed in columns</td>
+        </tr>
+        <tr>
+            <th>@_column-padding</th>
+            <td class="vars_value">@form-field-column-padding</td>
+            <td class="vars_value">0 20px 0 0</td>
+            <td>Form fields column padding</td>
+        </tr>
+        <tr>
+            <th>@_column-width</th>
+            <td class="vars_value">@form-field-column-width</td>
+            <td class="vars_value">50%</td>
+            <td>Form fields column width</td>
+        </tr>
+        <tr>
+            <th>@_type-block-margin</th>
+            <td class="vars_value">@form-field-type-block-margin</td>
+            <td class="vars_value">0 0 20px</td>
+            <td>Form fields margin if @form-field-type set to is 'block'</td>
+        </tr>
+        <tr>
+            <th>@_type-inline-margin</th>
+            <td class="vars_value">@form-field-type-inline-margin</td>
+            <td class="vars_value">0 0 @form-field-type-inline-vertical-margin</td>
+            <td>Form fields margin if @form-field-type is set to 'inline'</td>
+        </tr>
+        <tr>
+            <th colspan="4" class="vars_section">Form field label</th>
+        </tr>
+        <tr>
+            <th>@_label-color</th>
+            <td class="vars_value">@form-field-label-color</td>
+            <td class="vars_value">''</td>
+            <td>Field label text color</td>
+        </tr>
+        <tr>
+            <th>@_label-font-size</th>
+            <td class="vars_value">@form-field-label-font-size</td>
+            <td class="vars_value">@font-size-base</td>
+            <td>Field label font size</td>
+        </tr>
+        <tr>
+            <th>@_label-font-family</th>
+            <td class="vars_value">@form-field-label-font-family</td>
+            <td class="vars_value">''</td>
+            <td>Field label font family</td>
+        </tr>
+        <tr>
+            <th>@_label-font-weight</th>
+            <td class="vars_value">@form-field-label-font-weight</td>
+            <td class="vars_value">@font-weight-bold</td>
+            <td>Field label font weight</td>
+        </tr>
+        <tr>
+            <th> @_label-font-style</th>
+            <td class="vars_value">@form-field-label-font-style</td>
+            <td class="vars_value">''</td>
+            <td>Field label font style</td>
+        </tr>
+        <tr>
+            <th>@_label-line-height</th>
+            <td class="vars_value">@form-field-label-line-height</td>
+            <td class="vars_value">''</td>
+            <td>Field label line height</td>
+        </tr>
+        <tr>
+            <th>@_type-block-label-margin</th>
+            <td class="vars_value">@form-field-type-block-label-margin</td>
+            <td class="vars_value">0 0 5px</td>
+            <td>Field label margin if @form-field-type is set to 'block'</td>
+        </tr>
+        <tr>
+            <th>@_type-inline-label-padding</th>
+            <td class="vars_value">@form-field-type-inline-label-padding</td>
+            <td class="vars_value">6px 15px 0 0</td>
+            <td>Field label padding if @form-field-type is set to 'inline'</td>
+        </tr>
+        <tr>
+            <th>@_type-inline-label-width</th>
+            <td class="vars_value">@form-field-type-inline-label-width</td>
+            <td class="vars_value">25.8%</td>
+            <td>Field label width if @form-field-type is set to 'inline'</td>
+        </tr>
+        <tr>
+            <th>@_type-inline-control-width</th>
+            <td class="vars_value">@form-field-type-inline-control-width</td>
+            <td class="vars_value">74.2%</td>
+            <td>Field control width if @form-field-type is set to 'inline'</td>
+        </tr>
+        <tr>
+            <th colspan="4" class="vars_section">Label &quot;required&quot; asterisk</th>
+        </tr>
+        <tr>
+            <th>@_label-asterisk-color</th>
+            <td class="vars_value">@form-field-label-asterisk-color</td>
+            <td class="vars_value">#da370a</td>
+            <td>Label asterisk color</td>
+        </tr>
+        <tr>
+            <th>@_label-asterisk-font-size</th>
+            <td class="vars_value">@form-field-label-asterisk-font-size</td>
+            <td class="vars_value">@font-size-s</td>
+            <td>Label asterisk font size</td>
+        </tr>
+        <tr>
+            <th>@_label-asterisk-font-family</th>
+            <td class="vars_value">@form-field-label-asterisk-font-family</td>
+            <td class="vars_value">''</td>
+            <td>Label asterisk font family</td>
+        </tr>
+        <tr>
+            <th>@_label-asterisk-font-weight</th>
+            <td class="vars_value" >@form-field-label-asterisk-font-weight</td>
+            <td class="vars_value">''</td>
+            <td>Label asterisk font weight</td>
+        </tr>
+        <tr>
+            <th>@_label-asterisk-font-style</th>
+            <td class="vars_value">@form-field-label-asterisk-font-style</td>
+            <td class="vars_value">''</td>
+            <td>Label asterisk font style</td>
+        </tr>
+        <tr>
+            <th>@_label-asterisk-line-height</th>
+            <td class="vars_value">@form-field-label-asterisk-line-height</td>
+            <td class="vars_value">''</td>
+            <td>Label asterisk line height</td>
+        </tr>
+        <tr>
+            <th>@_label-asterisk-margin</th>
+            <td class="vars_value">@form-field-label-asterisk-margin</td>
+            <td class="vars_value">0 0 0 5px</td>
+            <td>Label asterisk margin</td>
+        </tr>
+        <tr>
+            <th colspan="4" class="vars_section">Field note</th>
+        </tr>
+        <tr>
+            <th>@_note-color</th>
+            <td class="vars_value">@form-field-note-color</td>
+            <td class="vars_value">''</td>
+            <td>Field note text color</td>
+        </tr>
+        <tr>
+            <th>@_note-font-size</th>
+            <td class="vars_value">@form-field-note-font-size</td>
+            <td class="vars_value">@font-size-s</td>
+            <td>Field note font size</td>
+        </tr>
+        <tr>
+            <th>@_note-font-family</th>
+            <td class="vars_value">@form-field-note-font-family</td>
+            <td class="vars_value">''</td>
+            <td>Field note font family</td>
+        </tr>
+        <tr>
+            <th>@_note-font-weight</th>
+            <td class="vars_value">@form-field-note-font-weight</td>
+            <td class="vars_value">''</td>
+            <td>Field note font weight</td>
+        </tr>
+        <tr>
+            <th>@_note-font-style</th>
+            <td class="vars_value">@form-field-note-font-style</td>
+            <td class="vars_value">''</td>
+            <td>Field note font style</td>
+        </tr>
+        <tr>
+            <th>@_note-line-height</th>
+            <td class="vars_value">@form-field-note-line-height</td>
+            <td class="vars_value">''</td>
+            <td>Field note line height</td>
+        </tr>
+        <tr>
+            <th>@_note-margin</th>
+            <td class="vars_value">@form-field-note-margin</td>
+            <td class="vars_value">3px 0 0</td>
+            <td>Field note margin</td>
+        </tr>
+        <tr>
+            <th>@_note-padding</th>
+            <td class="vars_value">@form-field-note-padding</td>
+            <td class="vars_value">0</td>
+            <td>Field note padding</td>
+        </tr>
+        <tr>
+            <th>@_note-icon-font-content</th>
+            <td class="vars_value">@form-field-note-icon-font-content</td>
+            <td class="vars_value">@icon-pointer-up</td>
+            <td>Field note icon code</td>
+        </tr>
+        <tr>
+            <th>@_note-icon-font</th>
+            <td class="vars_value">@form-field-note-icon-font</td>
+            <td class="vars_value">@icon-font</td>
+            <td>Field note icon font</td>
+        </tr>
+        <tr>
+            <th>@_note-icon-font-size</th>
+            <td class="vars_value">@form-field-note-icon-font-size</td>
+            <td class="vars_value">@form-field-note-font-size*2</td>
+            <td>Field note icon font size</td>
+        </tr>
+        <tr>
+            <th>@_note-icon-font-line-height</th>
+            <td class="vars_value">@form-field-note-icon-font-line-height</td>
+            <td class="vars_value">@form-field-note-font-size</td>
+            <td>Field note icon line height</td>
+        </tr>
+        <tr>
+            <th>@_note-icon-font-color</th>
+            <td class="vars_value">@form-field-note-icon-font-color</td>
+            <td class="vars_value">@form-field-note-color</td>
+            <td>Field note icon color</td>
+        </tr>
+        <tr>
+            <th>@_note-icon-font-color-hover</th>
+            <td class="vars_value">@form-field-note-icon-font-color-hover</td>
+            <td class="vars_value">''</td>
+            <td>Field note icon hovered color</td>
+        </tr>
+        <tr>
+            <th>@_note-icon-font-color-active</th>
+            <td class="vars_value">@form-field-note-icon-font-color-active</td>
+            <td class="vars_value">''</td>
+            <td>Field note icon active color</td>
+        </tr>
+        <tr>
+            <th>@_note-icon-font-margin</th>
+            <td class="vars_value">@form-field-note-icon-font-margin</td>
+            <td class="vars_value">''</td>
+            <td>Field note icon margin</td>
+        </tr>
+        <tr>
+            <th nowrap="nowrap">@_note-icon-font-vertical-align</th>
+            <td class="vars_value" nowrap="nowrap">@form-field-note-icon-font-vertical-align</td>
+            <td class="vars_value">@icon-font-vertical-align</td>
+            <td>Field note icon vertical align</td>
+        </tr>
+        <tr>
+            <th>@_note-icon-font-position</th>
+            <td class="vars_value">@form-field-note-icon-font-position</td>
+            <td class="vars_value">@icon-font-position [before | after]</td>
+            <td>Field note icon position</td>
+        </tr>
+        <tr>
+            <th>@_note-icon-font-text-hide</th>
+            <td class="vars_value">@form-field-note-icon-font-text-hide</td>
+            <td class="vars_value">@icon-font-text-hide [true | false]</td>
+            <td>Field note icon text hide</td>
+        </tr>
+    </table>
+  </pre>
+</div></article><article id="required-fields-message-customization-variables" class="section"><div class="docs"><a href="#required-fields-message-customization-variables" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="required-fields-message-customization-variables">Required fields message customization variables</h1>
+<p>  The <code>.form-hasrequired()</code> mixin variables</p>
+  <pre>
+    <table>
+        <tr>
+            <th class="vars_head">Mixin variable</th>
+            <th class="vars_head">Global variable</th>
+            <th class="vars_head">Default values [Allowed values]</th>
+            <th class="vars_head">Comment</th>
+        </tr>
+        <tr>
+            <th>@_position</th>
+            <td class="vars_value">@form-hasrequired-position</td>
+            <td class="vars_value">top [top | bottom]</td>
+            <td>Position of &quot;required fields&quot; notice</td>
+        </tr>
+        <tr>
+            <th>@_color</th>
+            <td class="vars_value">@form-hasrequired-color</td>
+            <td class="vars_value">#da370a</td>
+            <td>Text color of &quot;required fields&quot; notice</td>
+        </tr>
+        <tr>
+            <th>@_font-size</th>
+            <td class="vars_value">@form-hasrequired-font-size</td>
+            <td class="vars_value">@font-size-base</td>
+            <td>Font size of &quot;required fields&quot; notice</td>
+        </tr>
+        <tr>
+            <th>@_font-family</th>
+            <td class="vars_value">@form-hasrequired-font-family</td>
+            <td class="vars_value">''</td>
+            <td>Font family of &quot;required fields&quot; notice</td>
+        </tr>
+        <tr>
+            <th>@_font-weight</th>
+            <td class="vars_value">@form-hasrequired-font-weight</td>
+            <td class="vars_value">''</td>
+            <td>Font weight of &quot;required fields&quot; notice</td>
+        </tr>
+        <tr>
+            <th>@_font-style</th>
+            <td class="vars_value">@form-hasrequired-font-style</td>
+            <td class="vars_value">''</td>
+            <td>Font style of &quot;required fields&quot; notice</td>
+        </tr>
+        <tr>
+            <th>@_line-height</th>
+            <td class="vars_value">@form-hasrequired-line-height</td>
+            <td class="vars_value">''</td>
+            <td>Line height of &quot;required fields&quot; notice</td>
+        </tr>
+        <tr>
+            <th>@_border</th>
+            <td class="vars_value">@form-hasrequired-border</td>
+            <td class="vars_value">''</td>
+            <td>Border of &quot;required fields&quot; notice</td>
+        </tr>
+        <tr>
+            <th>@_margin</th>
+            <td class="vars_value">@form-hasrequired-margin</td>
+            <td class="vars_value">10px 0 0</td>
+            <td>Margin of &quot;required fields&quot; notice</td>
+        </tr>
+        <tr>
+            <th>@_padding</th>
+            <td class="vars_value">@form-hasrequired-padding</td>
+            <td class="vars_value">''</td>
+            <td>Padding of &quot;required fields&quot; notice</td>
+        </tr>
+    </table>
+ </pre>
+</div><div class="code"><pre><code>
+</code></pre></div></article><article id="form-element-inputs-customization" class="section"><div class="docs"><a href="#form-element-inputs-customization" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="form-element-inputs-customization">Form element inputs customization</h1>
+<p>  The <code>.form-element-input(@_type: <em>type</em>)</code> mixin is used to style form controls. This mixin accepts 1 mandatory parameter - the control type. This can be:</p>
+<ul>
+<li>input-text - for all input-text-like inputs</li>
+<li>input-radio - for radiobutton</li>
+<li>input-checkbox - for checkbox</li>
+<li>select - for select</li>
+<li>textarea - for textarea</li>
+</ul>
+<textarea class="preview-code" spellcheck="false">     &lt;input type="password" placeholder="placeholder, type = password" /&gt;
+     &lt;input type="text" placeholder="placeholder, type = text" /&gt;
+     &lt;input type="url" placeholder="placeholder, type = url" /&gt;
+     &lt;input type="tel" placeholder="placeholder, type = tel" /&gt;
+     &lt;input type="search" placeholder="placeholder, type = search" /&gt;
+     &lt;input type="number" placeholder="placeholder, type = number" /&gt;
+     &lt;input type="email" placeholder="placeholder, type = email" /&gt;
+     &lt;select&gt;&lt;option&gt;type = select&lt;/option&gt;&lt;option&gt;option&lt;/option&gt;&lt;/select&gt;
+     &lt;select multiple="multiple"&gt;&lt;option&gt;type = select multiple&lt;/option&gt;&lt;option&gt;option&lt;/option&gt;&lt;/select&gt;
+     &lt;textarea placeholder="placeholder, type = textarea" &gt;&lt;/textarea&gt;</textarea>
 </div><div class="code"><pre><code>
 
 input[type="text"],
@@ -691,201 +693,197 @@ textarea {
     .form-element-input(@_type: textarea);
     .form-element-textarea-resize();
 }
-
</code></pre></div></article><article id="form-element-inputs-customization-variables" class="section"><div class="docs"><a href="#form-element-inputs-customization-variables" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="form-element-inputs-customization-variables">Form element inputs customization variables</h1>
-  <pre>
-    <table>
-        <tr>
-            <th class="vars_head">Mixin variable</th>
-            <th class="vars_head">Global variable</th>
-            <th class="vars_head">Default value [Allowed value]</th>
-            <th class="vars_head">Comment</th>
-        </tr>
-        <tr>
-            <th>@_type</th>
-            <td class="vars_value">@form-element-input-type<br/></td>
-            <td class="vars_value">'' [input-text | select | textarea | input-radio | input-checkbox]</td>
-            <td>Form control type.<br/>@form-element-input-[] global variables are used to set up all form elements style. Control-specific global variables use these @form-element-input-[] variables by default. Control-specific global variables can be set up separately.<br/>@input-text-[] is used to set up input-text controls style<br/>@select-[] is used to set up selects style<br/>@textarea-[] is used to set up textarea style</td>
-        </tr>
-        <tr>
-            <th>@_background</th>
-            <td class="vars_value">@form-element-input-background<br/>@input-text-background<br/>@selectbackground<br/>@textarea-background</td>
-            <td class="vars_value">#fff</td>
-            <td>Form control background</td>
-        </tr>
-        <tr>
-            <th>@_border</th>
-            <td class="vars_value">@form-element-input-border<br/>@input-text-border<br/>@select-borderbr>@textarea-border</td>
-            <td class="vars_value" nowrap="nowrap">1px solid @form-element-input-border-color</td>
-            <td>Form control border</td>
-        </tr>
-        <tr>
-            <th>@_border-radius</th>
-            <td class="vars_value" nowrap="nowrap">@form-element-input-border-radius<br/>@input-textborder-radius<br/>@select-border-radius<br/>@textarea-border-radius</td>
-            <td class="vars_value">1px</td>
-            <td>Form control border radius</td>
-        </tr>
-        <tr>
-            <th>@_height</th>
-            <td class="vars_value">@form-element-input-height<br/>@input-text-height<br/>@select-height<br/>@textarea-height</td>
-            <td class="vars_value">32px<br/>@form-element-input-height<br/>@form-element-input-height<br/>auto</td>
-            <td>Form control height</td>
-        </tr>
-        <tr>
-            <th>@_width</th>
-            <td class="vars_value">@form-element-input-width<br/>@input-text-width<br/>@select-width<br/>@textarea-width</td>
-            <td class="vars_value">100%</td>
-            <td>Form control width</td>
-        </tr>
-        <tr>
-            <th>@_padding</th>
-            <td class="vars_value">@form-element-input-padding<br/>@input-text-padding <br/>@select-padding<br/>@textarea-padding</td>
-            <td class="vars_value">0 10px<br/>@form-element-input-padding<br/>5px 10px 4px<br/>10px</td>
-            <td>Form control padding</td>
-        </tr>
-        <tr>
-            <th>@_margin</th>
-            <td class="vars_value">@form-element-input-margin<br/>@input-text-margin<br/>@select-margin<br/>@textarea-margin</td>
-            <td class="vars_value">false [true | false]</td>
-            <td>Form control margin</td>
-        </tr>
-        <tr>
-            <th>@_vertical-align</th>
-            <td class="vars_value">@form-element-input-vertical-align<br/>@input-text-vertical-align<br/>@select-vertical-align<br/>@textarea-vertical-align</td>
-            <td class="vars_value">baseline</td>
-            <td>Form control vertical align</td>
-        </tr>
-        <tr>
-            <th>@_background-clip</th>
-            <td class="vars_value">@form-element-input-background-clip<br/>@input-text-background-clip<br/>@select-background-clip<br/>@textarea-background-clip</td>
-            <td class="vars_value">padding-box [padding-box | border-box | content-box]</td>
-            <td>Form control background clip</td>
-        </tr>
-        <tr>
-            <th>@_outline</th>
-            <td class="vars_value">@form-element-input-outline<br/>@input-text-outline<br/>@select-outline<br/>@textarea-outline</td>
-            <td class="vars_value">true [true | false]</td>
-            <td>Form control outline</td>
-        </tr>
-        <tr>
-            <th colspan="4" class="vars_section">Text settings</th>
-        </tr>
-        <tr>
-            <th>@_color</th>
-            <td class="vars_value">@form-element-input-color<br/>@input-text-color<br/>@select-color<br/>@textarea-color</td>
-            <td class="vars_value">@text-color</td>
-            <td>Form control text color</td>
-        </tr>
-        <tr>
-            <th>@_font-size</th>
-            <td class="vars_value">@form-element-input-font-size<br/>@input-text-font-size<br/>@select-font-size<br/>@textarea-font-size</td>
-            <td class="vars_value">@font-size-base</td>
-            <td>Form control font size</td>
-        </tr>
-        <tr>
-            <th>@_font-family</th>
-            <td class="vars_value">@form-element-input-font-family<br/>@input-text-font-family<br/>@select-font-family<br/>@textarea-font-family</td>
-            <td class="vars_value">@font-family-base</td>
-            <td>Form control font family</td>
-        </tr>
-        <tr>
-            <th>@_font-weight</th>
-            <td class="vars_value">@form-element-input-font-weight<br/>@input-text-font-weight<br/>@select-font-weight<br/>@textarea-font-weight</td>
-            <td class="vars_value">@font-weight-base</td>
-            <td>Form control font weight</td>
-        </tr>
-        <tr>
-            <th>@_font-style</th>
-            <td class="vars_value">@form-element-input-font-style<br/>@input-text-font-style<br/>@selectfont-style<br/>@textarea-font-style</td>
-            <td class="vars_value">@font-style-base</td>
-            <td>Form control font style</td>
-        </tr>
-        <tr>
-            <th>@_line-height</th>
-            <td class="vars_value">@form-element-input-line-height<br/>@input-text-line-height<br/>@select-line-height<br/>@textarea-line-height <br/></td>
-            <td class="vars_value">@line-height-base</td>
-            <td>Form control line height</td>
-        </tr>
-        <tr>
-            <th colspan="4" class="vars_section">Placeholder</th>
-        </tr>
-        <tr>
-            <th>@_placeholder-color</th>
-            <td class="vars_value">@form-element-input-placeholder-color<br/>@input-text-placeholder-color<br/>@select-placeholder-color<br/>@textarea-placeholder-color</td>
-            <td class="vars_value">false [false | '' | color code]</td>
-            <td>Form control placeholder color</td>
-        </tr>
-        <tr>
-            <th>@_placeholder-font-style</th>
-            <td class="vars_value" nowrap="nowrap">@form-element-input-placeholder-font-style<br/>@inputtext-placeholder-font-style<br/>@select-placeholder-font-style<br/>@textarea-placeholder-font-style</td>
-            <td class="vars_value">@form-element-input-font-style</td>
-            <td>Form control placeholder font style</td>
-        </tr>
-        <tr>
-            <th colspan="4" class="vars_section">Disabled element</th>
-        </tr>
-        <tr>
-            <th>@_disabled-background</th>
-            <td class="vars_value" nowrap="nowrap">@form-element-input-disabled-background<br/>@inputtextdisabled-background<br/>@select-disabled-background<br/>@textarea-disabled-background</td>
-            <td class="vars_value"> @form-element-input-background</td>
-            <td>Disabled form element background</td>
-        </tr>
-        <tr>
-            <th>@_disabled-border</th>
-            <td class="vars_value">@form-element-input-disabled-border<br/>@input-text-disabled-border<br/>@select-disabled-border<br/>@textarea-disabled-border</td>
-            <td class="vars_value">@form-element-input-border</td>
-            <td>Disabled form element border</td>
-        </tr>
-        <tr>
-            <th>@_disabled-opacity</th>
-            <td class="vars_value">@form-element-input-disabled-opacity<br/>@input-text-disabled-opacity<br/>@select-disabled-opacity<br/>@textarea-disabled-opacity</td>
-            <td class="vars_value">0.5</td>
-            <td>Disabled form element opacity</td>
-        </tr>
-        <tr>
-            <th>@_disabled-color</th>
-            <td class="vars_value">@form-element-input-disabled-color<br/>@input-text-disabled-color<br/>@select-disabled-color<br/>@textarea-disabled-color</td>
-            <td class="vars_value">@form-element-input-color</td>
-            <td>Disabled form element text color</td>
-        </tr>
-        <tr>
-            <th nowrap="nowrap">@_disabled-font-style</th>
-            <td class="vars_value">@form-element-input-disabled-font-style<br/>@input-text-disabled-font-style<br/>@select-disabled-font-style<br/>@textarea-disabled-font-style</td>
-            <td class="vars_value">@form-element-input-font-style</td>
-            <td>Disabled form element font style</td>
-        </tr>
-        <tr>
-            <th colspan="4" class="vars_section">Focused elements</th>
-        </tr>
-        <tr>
-            <th>@_focus-background</th>
-            <td class="vars_value">@form-element-input-focus-background<br/>@input-text-focus-background<br/>@select-focus-background<br/>@textarea-focus-background</td>
-            <td class="vars_value">@form-element-input-background</td>
-            <td>Focused form element background</td>
-        </tr>
-        <tr>
-            <th>@_focus-border</th>
-            <td class="vars_value">@form-element-input-focus-border<br/>@input-text-focus-border<br/>@select-focus-border<br/>@textarea-focus-border</td>
-            <td class="vars_value">@form-element-input-border</td>
-            <td>Focused form element border</td>
-        </tr>
-        <tr>
-            <th>@_focus-color</th>
-            <td class="vars_value">@form-element-input-focus-color<br/>@input-text-focus-color<br/>@select-focus-color<br/>@textarea-focus-color</td>
-            <td class="vars_value">@form-element-input-color</td>
-            <td>Focused form element color</td>
-        </tr>
-        <tr>
-            <th>@_focus-font-style</th>
-            <td class="vars_value">@form-element-input-focus-font-style<br/>@input-text-focus-font-style<br/>@select-focus-font-style<br/>@textarea-focus-font-style</td>
-            <td class="vars_value">@form-element-input-font-style</td>
-            <td>Focused form element font style</td>
-        </tr>
-    </table>
-  </pre>
-</div><div class="code"><pre><code>
</code></pre></div></article><article id="form-element-choice" class="section"><div class="docs"><a href="#form-element-choice" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="form-element-choice">Form element choice</h1>
-<p>  The <code>.form-element-choise()</code> mixin is used to customize checkboxes and radio buttons.</p>
-<textarea class="preview-code" spellcheck="false">    &lt;input type="checkbox" name="checkbox-example" /&gt;&lt;br /&gt;
-    &lt;input type="radio" name="radio-example"  /&gt;</textarea>
+
+</code></pre></div></article><article id="form-element-inputs-customization-variables" class="section"><div class="docs"><a href="#form-element-inputs-customization-variables" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="form-element-inputs-customization-variables">Form element inputs customization variables</h1>
+  <pre>
+    <table>
+        <tr>
+            <th class="vars_head">Mixin variable</th>
+            <th class="vars_head">Global variable</th>
+            <th class="vars_head">Default value [Allowed value]</th>
+            <th class="vars_head">Comment</th>
+        </tr>
+        <tr>
+            <th>@_type</th>
+            <td class="vars_value">@form-element-input-type<br/></td>
+            <td class="vars_value">'' [input-text | select | textarea | input-radio | input-checkbox]</td>
+            <td>Form control type.<br/>@form-element-input-[] global variables are used to set up all form elements style. Control-specific global variables use these @form-element-input-[] variables by default. Control-specific global variables can be set up separately.<br/>@input-text-[] is used to set up input-text controls style<br/>@select-[] is used to set up selects style<br/>@textarea-[] is used to set up textarea style</td>
+        </tr>
+        <tr>
+            <th>@_background</th>
+            <td class="vars_value">@form-element-input-background<br/>@input-text-background<br/>@selectbackground<br/>@textarea-background</td>
+            <td class="vars_value">#fff</td>
+            <td>Form control background</td>
+        </tr>
+        <tr>
+            <th>@_border</th>
+            <td class="vars_value">@form-element-input-border<br/>@input-text-border<br/>@select-borderbr>@textarea-border</td>
+            <td class="vars_value" nowrap="nowrap">1px solid @form-element-input-border-color</td>
+            <td>Form control border</td>
+        </tr>
+        <tr>
+            <th>@_border-radius</th>
+            <td class="vars_value" nowrap="nowrap">@form-element-input-border-radius<br/>@input-textborder-radius<br/>@select-border-radius<br/>@textarea-border-radius</td>
+            <td class="vars_value">1px</td>
+            <td>Form control border radius</td>
+        </tr>
+        <tr>
+            <th>@_height</th>
+            <td class="vars_value">@form-element-input-height<br/>@input-text-height<br/>@select-height<br/>@textarea-height</td>
+            <td class="vars_value">32px<br/>@form-element-input-height<br/>@form-element-input-height<br/>auto</td>
+            <td>Form control height</td>
+        </tr>
+        <tr>
+            <th>@_width</th>
+            <td class="vars_value">@form-element-input-width<br/>@input-text-width<br/>@select-width<br/>@textarea-width</td>
+            <td class="vars_value">100%</td>
+            <td>Form control width</td>
+        </tr>
+        <tr>
+            <th>@_padding</th>
+            <td class="vars_value">@form-element-input-padding<br/>@input-text-padding <br/>@select-padding<br/>@textarea-padding</td>
+            <td class="vars_value">0 10px<br/>@form-element-input-padding<br/>5px 10px 4px<br/>10px</td>
+            <td>Form control padding</td>
+        </tr>
+        <tr>
+            <th>@_margin</th>
+            <td class="vars_value">@form-element-input-margin<br/>@input-text-margin<br/>@select-margin<br/>@textarea-margin</td>
+            <td class="vars_value">false [true | false]</td>
+            <td>Form control margin</td>
+        </tr>
+        <tr>
+            <th>@_vertical-align</th>
+            <td class="vars_value">@form-element-input-vertical-align<br/>@input-text-vertical-align<br/>@select-vertical-align<br/>@textarea-vertical-align</td>
+            <td class="vars_value">baseline</td>
+            <td>Form control vertical align</td>
+        </tr>
+        <tr>
+            <th>@_background-clip</th>
+            <td class="vars_value">@form-element-input-background-clip<br/>@input-text-background-clip<br/>@select-background-clip<br/>@textarea-background-clip</td>
+            <td class="vars_value">padding-box [padding-box | border-box | content-box]</td>
+            <td>Form control background clip</td>
+        </tr>
+        <tr>
+            <th colspan="4" class="vars_section">Text settings</th>
+        </tr>
+        <tr>
+            <th>@_color</th>
+            <td class="vars_value">@form-element-input-color<br/>@input-text-color<br/>@select-color<br/>@textarea-color</td>
+            <td class="vars_value">@text-color</td>
+            <td>Form control text color</td>
+        </tr>
+        <tr>
+            <th>@_font-size</th>
+            <td class="vars_value">@form-element-input-font-size<br/>@input-text-font-size<br/>@select-font-size<br/>@textarea-font-size</td>
+            <td class="vars_value">@font-size-base</td>
+            <td>Form control font size</td>
+        </tr>
+        <tr>
+            <th>@_font-family</th>
+            <td class="vars_value">@form-element-input-font-family<br/>@input-text-font-family<br/>@select-font-family<br/>@textarea-font-family</td>
+            <td class="vars_value">@font-family-base</td>
+            <td>Form control font family</td>
+        </tr>
+        <tr>
+            <th>@_font-weight</th>
+            <td class="vars_value">@form-element-input-font-weight<br/>@input-text-font-weight<br/>@select-font-weight<br/>@textarea-font-weight</td>
+            <td class="vars_value">@font-weight-base</td>
+            <td>Form control font weight</td>
+        </tr>
+        <tr>
+            <th>@_font-style</th>
+            <td class="vars_value">@form-element-input-font-style<br/>@input-text-font-style<br/>@selectfont-style<br/>@textarea-font-style</td>
+            <td class="vars_value">@font-style-base</td>
+            <td>Form control font style</td>
+        </tr>
+        <tr>
+            <th>@_line-height</th>
+            <td class="vars_value">@form-element-input-line-height<br/>@input-text-line-height<br/>@select-line-height<br/>@textarea-line-height <br/></td>
+            <td class="vars_value">@line-height-base</td>
+            <td>Form control line height</td>
+        </tr>
+        <tr>
+            <th colspan="4" class="vars_section">Placeholder</th>
+        </tr>
+        <tr>
+            <th>@_placeholder-color</th>
+            <td class="vars_value">@form-element-input-placeholder-color<br/>@input-text-placeholder-color<br/>@select-placeholder-color<br/>@textarea-placeholder-color</td>
+            <td class="vars_value">false [false | '' | color code]</td>
+            <td>Form control placeholder color</td>
+        </tr>
+        <tr>
+            <th>@_placeholder-font-style</th>
+            <td class="vars_value" nowrap="nowrap">@form-element-input-placeholder-font-style<br/>@inputtext-placeholder-font-style<br/>@select-placeholder-font-style<br/>@textarea-placeholder-font-style</td>
+            <td class="vars_value">@form-element-input-font-style</td>
+            <td>Form control placeholder font style</td>
+        </tr>
+        <tr>
+            <th colspan="4" class="vars_section">Disabled element</th>
+        </tr>
+        <tr>
+            <th>@_disabled-background</th>
+            <td class="vars_value" nowrap="nowrap">@form-element-input-disabled-background<br/>@inputtextdisabled-background<br/>@select-disabled-background<br/>@textarea-disabled-background</td>
+            <td class="vars_value"> @form-element-input-background</td>
+            <td>Disabled form element background</td>
+        </tr>
+        <tr>
+            <th>@_disabled-border</th>
+            <td class="vars_value">@form-element-input-disabled-border<br/>@input-text-disabled-border<br/>@select-disabled-border<br/>@textarea-disabled-border</td>
+            <td class="vars_value">@form-element-input-border</td>
+            <td>Disabled form element border</td>
+        </tr>
+        <tr>
+            <th>@_disabled-opacity</th>
+            <td class="vars_value">@form-element-input-disabled-opacity<br/>@input-text-disabled-opacity<br/>@select-disabled-opacity<br/>@textarea-disabled-opacity</td>
+            <td class="vars_value">0.5</td>
+            <td>Disabled form element opacity</td>
+        </tr>
+        <tr>
+            <th>@_disabled-color</th>
+            <td class="vars_value">@form-element-input-disabled-color<br/>@input-text-disabled-color<br/>@select-disabled-color<br/>@textarea-disabled-color</td>
+            <td class="vars_value">@form-element-input-color</td>
+            <td>Disabled form element text color</td>
+        </tr>
+        <tr>
+            <th nowrap="nowrap">@_disabled-font-style</th>
+            <td class="vars_value">@form-element-input-disabled-font-style<br/>@input-text-disabled-font-style<br/>@select-disabled-font-style<br/>@textarea-disabled-font-style</td>
+            <td class="vars_value">@form-element-input-font-style</td>
+            <td>Disabled form element font style</td>
+        </tr>
+        <tr>
+            <th colspan="4" class="vars_section">Focused elements</th>
+        </tr>
+        <tr>
+            <th>@_focus-background</th>
+            <td class="vars_value">@form-element-input-focus-background<br/>@input-text-focus-background<br/>@select-focus-background<br/>@textarea-focus-background</td>
+            <td class="vars_value">@form-element-input-background</td>
+            <td>Focused form element background</td>
+        </tr>
+        <tr>
+            <th>@_focus-border</th>
+            <td class="vars_value">@form-element-input-focus-border<br/>@input-text-focus-border<br/>@select-focus-border<br/>@textarea-focus-border</td>
+            <td class="vars_value">@form-element-input-border</td>
+            <td>Focused form element border</td>
+        </tr>
+        <tr>
+            <th>@_focus-color</th>
+            <td class="vars_value">@form-element-input-focus-color<br/>@input-text-focus-color<br/>@select-focus-color<br/>@textarea-focus-color</td>
+            <td class="vars_value">@form-element-input-color</td>
+            <td>Focused form element color</td>
+        </tr>
+        <tr>
+            <th>@_focus-font-style</th>
+            <td class="vars_value">@form-element-input-focus-font-style<br/>@input-text-focus-font-style<br/>@select-focus-font-style<br/>@textarea-focus-font-style</td>
+            <td class="vars_value">@form-element-input-font-style</td>
+            <td>Focused form element font style</td>
+        </tr>
+    </table>
+  </pre>
+</div><div class="code"><pre><code>
+</code></pre></div></article><article id="form-element-choice" class="section"><div class="docs"><a href="#form-element-choice" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="form-element-choice">Form element choice</h1>
+<p>  The <code>.form-element-choise()</code> mixin is used to customize checkboxes and radio buttons.</p>
+<textarea class="preview-code" spellcheck="false">    &lt;input type="checkbox" name="checkbox-example" /&gt;&lt;br /&gt;
+    &lt;input type="radio" name="radio-example"  /&gt;</textarea>
 </div><div class="code"><pre><code>input[type="checkbox"] {
     .form-element-choice(@_type: input-checkbox);
 }
@@ -893,48 +891,50 @@ textarea {
 input[type="radio"] {
     .form-element-choice(@_type: input-radio);
 }
-
</code></pre></div></article><article id="form-element-choice-variables" class="section"><div class="docs"><a href="#form-element-choice-variables" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="form-element-choice-variables">Form element choice variables</h1>
-  <pre>
-    <table>
-        <tr>
-            <th class="vars_head">Mixin variable</th>
-            <th class="vars_head">Global variable</th>
-            <th class="vars_head">Default values [Allowed values]</th>
-            <th class="vars_head">Comment</th>
-        </tr>
-        <tr>
-            <th>@_type</th>
-            <td class="vars_value">@form-element-choice-type</td>
-            <td class="vars_value">'' ['' | radio | checkbox]</td>
-            <td>Choice element type</td>
-        </tr>
-        <tr>
-            <th>@_vertical-align</th>
-            <td class="vars_value">@form-element-choice-vertical-align<br>@input-radio-vertical-align<br>@input-checkbox-vertical-align</td>
-            <td class="vars_value">top</td>
-            <td>Choice element vertical align</td>
-        </tr>
-        <tr>
-            <th>@_margin</th>
-            <td class="vars_value">@form-element-choice-margin<br>@input-radio-margin<br>@input-checkbox-margin</td>
-            <td class="vars_value"> 2px 5px 0 0</td>
-            <td>Choice element margin</td>
-        </tr>
-        <tr>
-            <th>@_disabled-opacity</th>
-            <td class="vars_value">@form-element-choice-disabled-opacity<br>@input-radio-disabled-opacity<br>@input-checkbox-disabled-opacity</td>
-            <td class="vars_value">@form-element-input-disabled-opacity</td>
-            <td>Disabled choice element opacity</td>
-        </tr>
-    </table>
-  </pre>
-</div><div class="code"><pre><code>
</code></pre></div></article><article id="custom-indents-for-element-inputs" class="section"><div class="docs"><a href="#custom-indents-for-element-inputs" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="custom-indents-for-element-inputs">Custom indents for element inputs</h1>
-<p>  The <code>.form-element-indent()</code> mixin is used to set form elements background and color.</p>
-<pre><code class="lang-css">  @_margin: &#39;&#39;
-  @_padding: &#39;&#39;</code></pre>
-<textarea class="preview-code" spellcheck="false">  &lt;input type="text" class="text text-example-2" placeholder="placeholder, type = text" /&gt;&lt;br /&gt;&lt;br /&gt;
-  &lt;select class="select-example-2"&gt;&lt;option&gt;type = select&lt;/option&gt;&lt;option&gt;option&lt;/option&gt;&lt;/select&gt;&lt;br /&gt;&lt;br /&gt;
-  &lt;textarea class="textarea-example-2" placeholder="placeholder, type = textarea"&gt;&lt;/textarea&gt;</textarea>
+
+</code></pre></div></article><article id="form-element-choice-variables" class="section"><div class="docs"><a href="#form-element-choice-variables" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="form-element-choice-variables">Form element choice variables</h1>
+  <pre>
+    <table>
+        <tr>
+            <th class="vars_head">Mixin variable</th>
+            <th class="vars_head">Global variable</th>
+            <th class="vars_head">Default values [Allowed values]</th>
+            <th class="vars_head">Comment</th>
+        </tr>
+        <tr>
+            <th>@_type</th>
+            <td class="vars_value">@form-element-choice-type</td>
+            <td class="vars_value">'' ['' | radio | checkbox]</td>
+            <td>Choice element type</td>
+        </tr>
+        <tr>
+            <th>@_vertical-align</th>
+            <td class="vars_value">@form-element-choice-vertical-align<br>@input-radio-vertical-align<br>@input-checkbox-vertical-align</td>
+            <td class="vars_value">top</td>
+            <td>Choice element vertical align</td>
+        </tr>
+        <tr>
+            <th>@_margin</th>
+            <td class="vars_value">@form-element-choice-margin<br>@input-radio-margin<br>@input-checkbox-margin</td>
+            <td class="vars_value"> 2px 5px 0 0</td>
+            <td>Choice element margin</td>
+        </tr>
+        <tr>
+            <th>@_disabled-opacity</th>
+            <td class="vars_value">@form-element-choice-disabled-opacity<br>@input-radio-disabled-opacity<br>@input-checkbox-disabled-opacity</td>
+            <td class="vars_value">@form-element-input-disabled-opacity</td>
+            <td>Disabled choice element opacity</td>
+        </tr>
+    </table>
+  </pre>
+</div><div class="code"><pre><code>
+</code></pre></div></article><article id="custom-indents-for-element-inputs" class="section"><div class="docs"><a href="#custom-indents-for-element-inputs" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="custom-indents-for-element-inputs">Custom indents for element inputs</h1>
+<p>  The <code>.form-element-indent()</code> mixin is used to set form elements background and color.</p>
+<pre><code class="lang-css">  @_margin: &#39;&#39;
+  @_padding: &#39;&#39;</code></pre>
+<textarea class="preview-code" spellcheck="false">  &lt;input type="text" class="text text-example-2" placeholder="placeholder, type = text" /&gt;&lt;br /&gt;&lt;br /&gt;
+  &lt;select class="select-example-2"&gt;&lt;option&gt;type = select&lt;/option&gt;&lt;option&gt;option&lt;/option&gt;&lt;/select&gt;&lt;br /&gt;&lt;br /&gt;
+  &lt;textarea class="textarea-example-2" placeholder="placeholder, type = textarea"&gt;&lt;/textarea&gt;</textarea>
 </div><div class="code"><pre><code>input.text-example-2,
 select.select-example-2 {
     .form-element-size(
@@ -949,22 +949,23 @@ textarea.textarea-example-2 {
         @_padding: 5px 25px
     );
 }
-
</code></pre></div></article><article id="custom-color" class="section"><div class="docs"><a href="#custom-color" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="custom-color">Custom color</h1>
-<p>  The <code>.form-element-color()</code> mixin is used to set form elements background and color.</p>
-<pre><code class="lang-css">  @_border-color: &#39;&#39;
-  @_background: &#39;&#39;
-  @_color: &#39;&#39;
-  @_focus-border-color: &#39;&#39;
-  @_focus-background: &#39;&#39;
-  @_focus-color: &#39;&#39;
-  @_disabled-border-color: &#39;&#39;
-  @_disabled-background: &#39;&#39;
-  @_disabled-color: &#39;&#39;
-  @_placeholder-color: &#39;&#39;</code></pre>
-<textarea class="preview-code" spellcheck="false">  &lt;input type="text" class="text text-example-1" placeholder="placeholder, type = text" /&gt;&lt;br /&gt;&lt;br /&gt;
-  &lt;input type="text" class="text text-example-1" placeholder="placeholder, type = text, disabled" disabled="disabled" /&gt;&lt;br /&gt;&lt;br /&gt;
-  &lt;select class="select-example-1"&gt;&lt;option&gt;type = select&lt;/option&gt;&lt;option&gt;option&lt;/option&gt;&lt;/select&gt;&lt;br /&gt;&lt;br /&gt;
-  &lt;textarea class="textarea-example-1" placeholder="placeholder, type = textarea"&gt;&lt;/textarea&gt;</textarea>
+
+</code></pre></div></article><article id="custom-color" class="section"><div class="docs"><a href="#custom-color" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="custom-color">Custom color</h1>
+<p>  The <code>.form-element-color()</code> mixin is used to set form elements background and color.</p>
+<pre><code class="lang-css">  @_border-color: &#39;&#39;
+  @_background: &#39;&#39;
+  @_color: &#39;&#39;
+  @_focus-border-color: &#39;&#39;
+  @_focus-background: &#39;&#39;
+  @_focus-color: &#39;&#39;
+  @_disabled-border-color: &#39;&#39;
+  @_disabled-background: &#39;&#39;
+  @_disabled-color: &#39;&#39;
+  @_placeholder-color: &#39;&#39;</code></pre>
+<textarea class="preview-code" spellcheck="false">  &lt;input type="text" class="text text-example-1" placeholder="placeholder, type = text" /&gt;&lt;br /&gt;&lt;br /&gt;
+  &lt;input type="text" class="text text-example-1" placeholder="placeholder, type = text, disabled" disabled="disabled" /&gt;&lt;br /&gt;&lt;br /&gt;
+  &lt;select class="select-example-1"&gt;&lt;option&gt;type = select&lt;/option&gt;&lt;option&gt;option&lt;/option&gt;&lt;/select&gt;&lt;br /&gt;&lt;br /&gt;
+  &lt;textarea class="textarea-example-1" placeholder="placeholder, type = textarea"&gt;&lt;/textarea&gt;</textarea>
 </div><div class="code"><pre><code>input.text-example-1,
 select.select-example-1,
 textarea.textarea-example-1 {
@@ -983,18 +984,20 @@ textarea.textarea-example-1 {
         @_placeholder-color: darkgray
     );
 }
-
</code></pre></div></article><article id="custom-indents-for-choice-inputs" class="section"><div class="docs"><a href="#custom-indents-for-choice-inputs" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="custom-indents-for-choice-inputs">Custom indents for choice inputs</h1>
-<textarea class="preview-code" spellcheck="false">  &lt;input type="checkbox" name="checkbox-example-1"class="checkbox-example-1"  /&gt;&lt;br /&gt;
-  &lt;input type="radio" name="radio-example-1" class="radio-example-1"  /&gt;</textarea>
+
+</code></pre></div></article><article id="custom-indents-for-choice-inputs" class="section"><div class="docs"><a href="#custom-indents-for-choice-inputs" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="custom-indents-for-choice-inputs">Custom indents for choice inputs</h1>
+<textarea class="preview-code" spellcheck="false">  &lt;input type="checkbox" name="checkbox-example-1"class="checkbox-example-1"  /&gt;&lt;br /&gt;
+  &lt;input type="radio" name="radio-example-1" class="radio-example-1"  /&gt;</textarea>
 </div><div class="code"><pre><code>input.checkbox-example-1,
 input.radio-example-1 {
     .add-margin(@_add-margin: 15px);
 }
-
</code></pre></div></article><article id="form-elements-custom-size" class="section"><div class="docs"><a href="#form-elements-custom-size" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="form-elements-custom-size">Form elements custom size</h1>
-<p>  The <code>.form-element-size()</code> mixin is used to set form elements custom size.</p>
-<textarea class="preview-code" spellcheck="false">  &lt;input type="text" class="text text-example-3" placeholder="placeholder, type = text" /&gt;&lt;br /&gt;&lt;br /&gt;
-  &lt;select class="select-example-3"&gt;&lt;option&gt;type = select&lt;/option&gt;&lt;option&gt;option&lt;/option&gt;&lt;/select&gt;&lt;br /&gt;&lt;br /&gt;
-  &lt;textarea class="textarea-example-3" placeholder="placeholder, type = textarea"&gt;&lt;/textarea&gt;</textarea>
+
+</code></pre></div></article><article id="form-elements-custom-size" class="section"><div class="docs"><a href="#form-elements-custom-size" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="form-elements-custom-size">Form elements custom size</h1>
+<p>  The <code>.form-element-size()</code> mixin is used to set form elements custom size.</p>
+<textarea class="preview-code" spellcheck="false">  &lt;input type="text" class="text text-example-3" placeholder="placeholder, type = text" /&gt;&lt;br /&gt;&lt;br /&gt;
+  &lt;select class="select-example-3"&gt;&lt;option&gt;type = select&lt;/option&gt;&lt;option&gt;option&lt;/option&gt;&lt;/select&gt;&lt;br /&gt;&lt;br /&gt;
+  &lt;textarea class="textarea-example-3" placeholder="placeholder, type = textarea"&gt;&lt;/textarea&gt;</textarea>
 </div><div class="code"><pre><code>input.text-example-3,
 select.select-example-3 {
     .form-element-size(
@@ -1008,176 +1011,180 @@ textarea.textarea-example-3 {
         @_width: 50%
     );
 }
-
</code></pre></div></article><article id="input-number-inputtext-view" class="section"><div class="docs"><a href="#input-number-inputtext-view" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="input-number-inputtext-view">Input number - input-text view</h1>
-<textarea class="preview-code" spellcheck="false"> &lt;input  type="number" class="number number-example" placeholder="placeholder, type = number " /&gt;</textarea>
+
+</code></pre></div></article><article id="input-number-inputtext-view" class="section"><div class="docs"><a href="#input-number-inputtext-view" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="input-number-inputtext-view">Input number - input-text view</h1>
+<textarea class="preview-code" spellcheck="false"> &lt;input  type="number" class="number number-example" placeholder="placeholder, type = number " /&gt;</textarea>
 </div><div class="code"><pre><code>.number-example {
     .form-element-number-reset();
 }
-
</code></pre></div></article><article id="input-search-inputtext-view" class="section"><div class="docs"><a href="#input-search-inputtext-view" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="input-search-inputtext-view">Input search - input-text view</h1>
-<textarea class="preview-code" spellcheck="false"> &lt;input  type="search" class="search search-example" placeholder="placeholder, type = search " /&gt;</textarea>
+
+</code></pre></div></article><article id="input-search-inputtext-view" class="section"><div class="docs"><a href="#input-search-inputtext-view" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="input-search-inputtext-view">Input search - input-text view</h1>
+<textarea class="preview-code" spellcheck="false"> &lt;input  type="search" class="search search-example" placeholder="placeholder, type = search " /&gt;</textarea>
 </div><div class="code"><pre><code>.search-example {
     .form-element-search-reset();
 }
-
</code></pre></div></article><article id="form-validation" class="section"><div class="docs"><a href="#form-validation" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="form-validation">Form validation</h1>
-<p> The <code>.form-validation-note()</code> mixin is used to customize form validation error messages.</p>
-<textarea class="preview-code" spellcheck="false"> &lt;input type="text" class="textarea-example-4 mage-error" placeholder="placeholder, type = text" /&gt;
- &lt;div class="mage-error"&gt;This is a required field.&lt;/div&gt;
- &lt;br /&gt;
- &lt;input type="text" class="textarea-example-5 valid" placeholder="placeholder, type = text" /&gt;
-
- &lt;br /&gt;&lt;br /&gt;
- &lt;select class="select-example-4 mage-error"&gt;&lt;option&gt;type = select&lt;/option&gt;&lt;option&gt;option&lt;/option&gt;&lt;/select&gt;
- &lt;div class="mage-error"&gt;This is a required field.&lt;/div&gt;
- &lt;br /&gt;
- &lt;select class="select-example-5 valid"&gt;&lt;option&gt;type = select&lt;/option&gt;&lt;option&gt;option&lt;/option&gt;&lt;/select&gt;
-
- &lt;br /&gt;&lt;br /&gt;
- &lt;textarea class="textarea-example-4 mage-error" placeholder="placeholder, type = textarea"&gt;&lt;/textarea&gt;
- &lt;div class="mage-error"&gt;This is a required field.&lt;/div&gt;
- &lt;br /&gt;
- &lt;textarea class="textarea-example-5 valid" placeholder="placeholder, type = textarea"&gt;&lt;/textarea&gt;
-
- &lt;br /&gt;&lt;br /&gt;
- &lt;input type="checkbox" name="checkbox-example-1" class="checkbox-example-2 mage-error" /&gt;
- &lt;div class="mage-error"&gt;This is a required field.&lt;/div&gt;
-
- &lt;br /&gt;&lt;br /&gt;
- &lt;input type="radio" name="radio-example-1" class="radio-example-2 mage-error" /&gt;
- &lt;div class="mage-error"&gt;This is a required field.&lt;/div&gt;</textarea>
+
+</code></pre></div></article><article id="form-validation" class="section"><div class="docs"><a href="#form-validation" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="form-validation">Form validation</h1>
+<p> The <code>.form-validation-note()</code> mixin is used to customize form validation error messages.</p>
+<textarea class="preview-code" spellcheck="false"> &lt;input type="text" class="textarea-example-4 mage-error" placeholder="placeholder, type = text" /&gt;
+ &lt;div class="mage-error"&gt;This is a required field.&lt;/div&gt;
+ &lt;br /&gt;
+ &lt;input type="text" class="textarea-example-5 valid" placeholder="placeholder, type = text" /&gt;
+
+ &lt;br /&gt;&lt;br /&gt;
+ &lt;select class="select-example-4 mage-error"&gt;&lt;option&gt;type = select&lt;/option&gt;&lt;option&gt;option&lt;/option&gt;&lt;/select&gt;
+ &lt;div class="mage-error"&gt;This is a required field.&lt;/div&gt;
+ &lt;br /&gt;
+ &lt;select class="select-example-5 valid"&gt;&lt;option&gt;type = select&lt;/option&gt;&lt;option&gt;option&lt;/option&gt;&lt;/select&gt;
+
+ &lt;br /&gt;&lt;br /&gt;
+ &lt;textarea class="textarea-example-4 mage-error" placeholder="placeholder, type = textarea"&gt;&lt;/textarea&gt;
+ &lt;div class="mage-error"&gt;This is a required field.&lt;/div&gt;
+ &lt;br /&gt;
+ &lt;textarea class="textarea-example-5 valid" placeholder="placeholder, type = textarea"&gt;&lt;/textarea&gt;
+
+ &lt;br /&gt;&lt;br /&gt;
+ &lt;input type="checkbox" name="checkbox-example-1" class="checkbox-example-2 mage-error" /&gt;
+ &lt;div class="mage-error"&gt;This is a required field.&lt;/div&gt;
+
+ &lt;br /&gt;&lt;br /&gt;
+ &lt;input type="radio" name="radio-example-1" class="radio-example-2 mage-error" /&gt;
+ &lt;div class="mage-error"&gt;This is a required field.&lt;/div&gt;</textarea>
 </div><div class="code"><pre><code>input,
 textarea,
 select {
     .form-validation-note();
 }
-
</code></pre></div></article><article id="form-validation-variables" class="section"><div class="docs"><a href="#form-validation-variables" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="form-validation-variables">Form validation variables</h1>
-  <pre>
-    <table>
-        <tr>
-            <th class="vars_head">Mixin variable</th>
-            <th class="vars_head">Global variable</th>
-            <th class="vars_head">Default values [Allowed values]</th>
-            <th class="vars_head">Comment</th>
-        </tr>
-        <tr>
-            <th>@_note-color</th>
-            <td class="vars_value">@form-validation-note-color-error</td>
-            <td class="vars_value">@color-error</td>
-            <td>Validation note text color</td>
-        </tr>
-        <tr>
-            <th>@_note-font-size</th>
-            <td class="vars_value">@form-validation-note-font-size</td>
-            <td class="vars_value">@font-size-s</td>
-            <td>Validation note font size</td>
-        </tr>
-        <tr>
-            <th>@_note-font-family</th>
-            <td class="vars_value">@form-validation-note-font-family</td>
-            <td class="vars_value">false</td>
-            <td>Validation note font family</td>
-        </tr>
-        <tr>
-            <th>@_note-font-style</th>
-            <td class="vars_value">@form-validation-note-font-style</td>
-            <td class="vars_value">false</td>
-            <td>Validation note font style</td>
-        </tr>
-        <tr>
-            <th>@_note-font-weight</th>
-            <td class="vars_value">@form-validation-note-font-weight</td>
-            <td class="vars_value">false</td>
-            <td>Validation note font weight</td>
-        </tr>
-        <tr>
-            <th>@_note-line-height</th>
-            <td class="vars_value">@form-validation-note-line-height</td>
-            <td class="vars_value">false</td>
-            <td>Validation note line height</td>
-        </tr>
-        <tr>
-            <th>@_note-margin</th>
-            <td class="vars_value">@form-validation-note-margin</td>
-            <td class="vars_value">3px 0 0</td>
-            <td>Validation note margin</td>
-        </tr>
-        <tr>
-            <th>@_note-padding</th>
-            <td class="vars_value">@form-validation-note-padding</td>
-            <td class="vars_value">false</td>
-            <td>Validation note padding</td>
-        </tr>
-        <tr>
-            <th>@_note-icon-use</th>
-            <td class="vars_value">@form-validation-note-icon-use</td>
-            <td class="vars_value">false [true | false]</td>
-            <td>Show validation note icon</td>
-        </tr>
-        <tr>
-            <th>@_note-icon-font-content</th>
-            <td class="vars_value">@form-validation-note-icon-font-content</td>
-            <td class="vars_value">@icon-pointer-up</td>
-            <td>Validation note icon code</td>
-        </tr>
-        <tr>
-            <th>@_note-icon-font</th>
-            <td class="vars_value">@form-validation-note-icon-font</td>
-            <td class="vars_value">@icon-font</td>
-            <td>Validation note icon font</td>
-        </tr>
-        <tr>
-            <th>@_note-icon-font-size</th>
-            <td class="vars_value">@form-validation-note-icon-font-size</td>
-            <td class="vars_value">@form-validation-note-font-size * 2</td>
-            <td>Validation note icon font size</td>
-        </tr>
-        <tr>
-            <th>@_note-icon-font-line-height</th>
-            <td class="vars_value">@form-validation-note-icon-font-line-height</td>
-            <td class="vars_value">@form-validation-note-font-size</td>
-            <td>Validation note icon line height</td>
-        </tr>
-        <tr>
-            <th>@_note-icon-font-color</th>
-            <td class="vars_value">@form-validation-note-icon-font-color</td>
-            <td class="vars_value">@form-validation-note-color-error</td>
-            <td>Validation note icon color</td>
-        </tr>
-        <tr>
-            <th>@_note-icon-font-color-hover</th>
-            <td class="vars_value">@form-validation-note-icon-font-color-hover</td>
-            <td class="vars_value">false</td>
-            <td>Hovered validation note icon color</td>
-        </tr>
-        <tr>
-            <th>@_note-icon-font-color-active</th>
-            <td class="vars_value">@form-validation-note-icon-font-color-active</td>
-            <td class="vars_value">false</td>
-            <td>Active validation note icon color</td>
-        </tr>
-        <tr>
-            <th>@_note-icon-font-margin</th>
-            <td class="vars_value">@form-validation-note-icon-font-margin</td>
-            <td class="vars_value">false</td>
-            <td>Validation note icon margin</td>
-        </tr>
-        <tr>
-            <th>@_note-icon-font-vertical-align</th>
-            <td class="vars_value">@form-validation-note-icon-font-vertical-align</td>
-            <td class="vars_value"> @icon-font-vertical-align</td>
-            <td>Validation note icon vertical align</td>
-        </tr>
-        <tr>
-            <th>@_note-icon-font-position</th>
-            <td class="vars_value">@form-validation-note-icon-font-position</td>
-            <td class="vars_value">@icon-font-position</td>
-            <td>Validation note icon position</td>
-        </tr>
-        <tr>
-            <th>@_note-icon-font-text-hide</th>
-            <td class="vars_value">@form-validation-note-icon-font-text-hide</td>
-            <td class="vars_value">@icon-font-text-hide</td>
-            <td>Validation note icon text hide</td>
-        </tr>
-    </table>
-  </pre>
-</div></article></section><div class="bar bottom"><div hidden class="settings container"><!-- Icons from http://iconmonstr.com--><button title="Desktop (1280)" data-width='1280'><svg viewBox="0 0 412 386" height="24" width="26" class="icon"><path d="m147.6,343.9c-4.5,15.9-26.2,37.6-42.1,42.1h201c-15.3,-4-38.1,-26.8-42.1,-42.1H147.6zM387,0.5H25c-13.8,0-25,11.2-25,25V294c0,13.8 11.2,25 25,25h362c13.8,0 25,-11.2 25,-25V25.5C412,11.7 400.8,0.5 387,0.5zM369.9,238.2H42.1L42.1,42.6 369.9,42.6V238.2z"></path></svg></button><button title="Laptop (1024)" data-width='1024'><svg viewBox="0 0 384 312" height="23" width="28" class="icon"><path d="m349.2,20.5c0,-11-9,-20-20,-20H53.6c-11,0-20,9-20,20v194H349.2v-194zm-27,167H60.6V27.5H322.2v160zm28,42H32.6L2.6,282.1c-3.5,6.2-3.5,13.8 0.1,19.9 3.6,6.2 10.2,9.9 17.3,9.9H363.1c7.1,0 13.7,-3.8 17.3,-10 3.6,-6.2 3.6,-13.8 0,-20l-30.2,-52.5zm-196.9,54 8,-23.5h60.5l8,23.5h-76.5z"></path></svg></button><button title="Tablet (768)" data-width='768'><svg viewBox="0 0 317 412" height="24" width="18" class="icon"><path d="M 316.5,380 V 32 c 0,-17.7 -14.3,-32 -32,-32 H 32 C 14.3,0 0,14.3 0,32 v 348 c 0,17.7 14.3,32 32,32 h 252.5 c 17.7,0 32,-14.3 32,-32 z M 40,367 V 45 H 276.5 V 367 H 40 z m 109.8,22.7 c 0,-4.7 3.8,-8.5 8.5,-8.5 4.7,0 8.5,3.8 8.5,8.5 0,4.7 -3.8,8.5 -8.5,8.5 -4.7,0 -8.5,-3.8 -8.5,-8.5 z"></path></svg></button><button title="Smart phone (320)" data-width='320'><svg viewBox="0 0 224 412" height="24" width="13" class="icon"><path d="M 190.7,0 H 33 C 14.8,0 0,14.8 0,33 v 346 c 0,18.2 14.8,33 33,33 h 157.7 c 18.2,0 33,-14.8 33,-33 V 33 c 0,-18.2 -14.8,-33 -33,-33 z M 94.3,30.2 h 37 c 2.2,0 4,1.8 4,4 0,2.2 -1.8,4 -4,4 h -37 c -2.2,0 -4,-1.8 -4,-4 0,-2.2 1.8,-4 4,-4 z m 18.5,362.8 c -8.8,0 -16,-7.2 -16,-16 0,-8.8 7.2,-16 16,-16 8.8,0 16,7.2 16,16 0,8.8 -7.2,16 -16,16 z M 198.6,343.8 H 25.1 V 68.2 h 173.5 v 275.5 z"></path></svg></button><button title="Feature phone (240)" data-width='240'><svg viewBox="0 0 201 412" height="24" width="12" class="icon"><path d="M 165.5,0.2 V 45 H 25 c -13.8,0 -25,11.2 -25,25 V 387 c 0,13.8 11.2,25 25,25 h 150.5 c 13.8,0 25,-11.2 25,-25 V 0.2 h -35 z M 65.2,366.5 H 34.2 v -24.5 h 31 v 24.5 z m 0,-44.3 H 34.2 v -24.5 h 31 v 24.5 z m 50.5,44.3 H 84.7 v -24.5 h 31 v 24.5 z m 0,-44.3 H 84.7 v -24.5 h 31 v 24.5 z m 50.5,44.3 h -31 v -24.5 h 31 v 24.5 z m 0,-44.3 h -31 v -24.5 h 31 v 24.5 z m 0,-59.3 h -132 V 95.4 h 132 V 262.9 z"></path></svg></button><button title="Auto (100%)" data-width="auto" class="auto is-active">Auto</button></div></div><script>(function(){var a=[{title:"actions-toolbar",filename:"actions-toolbar",url:"actions-toolbar.html"},{title:"Actions toolbar",filename:"actions-toolbar",url:"actions-toolbar.html#actions-toolbar"},{title:"Actions toolbar mixin variables",filename:"actions-toolbar",url:"actions-toolbar.html#actions-toolbar-mixin-variables"},{title:"Actions toolbar alignment",filename:"actions-toolbar",url:"actions-toolbar.html#actions-toolbar-alignment"},{title:"Reverse primary and secondary blocks",filename:"actions-toolbar",url:"actions-toolbar.html#reverse-primary-and-secondary-blocks"},{title:"Actions toolbar indents customizations",filename:"actions-toolbar",url:"actions-toolbar.html#actions-toolbar-indents-customizations"},{title:"Responsive actions toolbar",filename:"actions-toolbar",url:"actions-toolbar.html#responsive-actions-toolbar"},{title:"breadcrumbs",filename:"breadcrumbs",url:"breadcrumbs.html"},{title:"Breadcrumbs",filename:"breadcrumbs",url:"breadcrumbs.html#breadcrumbs"},{title:"Breadcrumbs variables",filename:"breadcrumbs",url:"breadcrumbs.html#breadcrumbs-variables"},{title:"Button-styled breadcrumbs with gradient background, border, and no separating symbol",filename:"breadcrumbs",url:"breadcrumbs.html#buttonstyled-breadcrumbs-with-gradient-background-border-and-no-separating-symbol"},{title:"Breadcrumbs with solid background",filename:"breadcrumbs",url:"breadcrumbs.html#breadcrumbs-with-solid-background"},{title:"buttons",filename:"buttons",url:"buttons.html"},{title:"Default button",filename:"buttons",url:"buttons.html#default-button"},{title:"Button variables",filename:"buttons",url:"buttons.html#button-variables"},{title:"Button as an icon",filename:"buttons",url:"buttons.html#button-as-an-icon"},{title:"Button with an icon on the left or right side of the text",filename:"buttons",url:"buttons.html#button-with-an-icon-on-the-left-or-right-side-of-the-text"},{title:"Button with fixed width",filename:"buttons",url:"buttons.html#button-with-fixed-width"},{title:"Primary button",filename:"buttons",url:"buttons.html#primary-button"},{title:"Primary button variables",filename:"buttons",url:"buttons.html#primary-button-variables"},{title:"Button with gradient background",filename:"buttons",url:"buttons.html#button-with-gradient-background"},{title:"Button as a link",filename:"buttons",url:"buttons.html#button-as-a-link"},{title:"Link as a button",filename:"buttons",url:"buttons.html#link-as-a-button"},{title:"docs",filename:"docs",url:"docs.html"},{title:"Documentation",filename:"docs",url:"docs.html#documentation"},{title:"dropdowns",filename:"dropdowns",url:"dropdowns.html"},{title:"Drop-down and split buttons mixins",filename:"dropdowns",url:"dropdowns.html#dropdown-and-split-buttons-mixins"},{title:"Drop-down",filename:"dropdowns",url:"dropdowns.html#dropdown"},{title:"Drop-down variables",filename:"dropdowns",url:"dropdowns.html#dropdown-variables"},{title:"Drop-down with icon customization",filename:"dropdowns",url:"dropdowns.html#dropdown-with-icon-customization"},{title:"Modify dropdown list styles",filename:"dropdowns",url:"dropdowns.html#modify-dropdown-list-styles"},{title:"Split button",filename:"dropdowns",url:"dropdowns.html#split-button"},{title:"Split button variables",filename:"dropdowns",url:"dropdowns.html#split-button-variables"},{title:"Split button - button styling",filename:"dropdowns",url:"dropdowns.html#split-button-button-styling"},{title:"Split button icon customization",filename:"dropdowns",url:"dropdowns.html#split-button-icon-customization"},{title:"Split button drop-down list customization",filename:"dropdowns",url:"dropdowns.html#split-button-dropdown-list-customization"},{title:"forms",filename:"forms",url:"forms.html"},{title:"Forms mixins",filename:"forms",url:"forms.html#forms-mixins"},{title:"Global forms elements customization",filename:"forms",url:"forms.html#global-forms-elements-customization"},{title:"Fieldsets & fields customization",filename:"forms",url:"forms.html#fieldsets-fields-customization"},{title:"Fieldset and legend customization variables",filename:"forms",url:"forms.html#fieldset-and-legend-customization-variables"},{title:"Fields customization variables",filename:"forms",url:"forms.html#fields-customization-variables"},{title:"Required fields message customization variables",filename:"forms",url:"forms.html#required-fields-message-customization-variables"},{title:"Form element inputs customization",filename:"forms",url:"forms.html#form-element-inputs-customization"},{title:"Form element inputs customization variables",filename:"forms",url:"forms.html#form-element-inputs-customization-variables"},{title:"Form element choice",filename:"forms",url:"forms.html#form-element-choice"},{title:"Form element choice variables",filename:"forms",url:"forms.html#form-element-choice-variables"},{title:"Custom indents for element inputs",filename:"forms",url:"forms.html#custom-indents-for-element-inputs"},{title:"Custom color",filename:"forms",url:"forms.html#custom-color"},{title:"Custom indents for choice inputs",filename:"forms",url:"forms.html#custom-indents-for-choice-inputs"},{title:"Form elements custom size",filename:"forms",url:"forms.html#form-elements-custom-size"},{title:"Input number - input-text view",filename:"forms",url:"forms.html#input-number-inputtext-view"},{title:"Input search - input-text view",filename:"forms",url:"forms.html#input-search-inputtext-view"},{title:"Form validation",filename:"forms",url:"forms.html#form-validation"},{title:"Form validation variables",filename:"forms",url:"forms.html#form-validation-variables"},{title:"icons",filename:"icons",url:"icons.html"},{title:"Icons",filename:"icons",url:"icons.html#icons"},{title:"Icon with image or sprite",filename:"icons",url:"icons.html#icon-with-image-or-sprite"},{title:"Icon with image or sprite variables",filename:"icons",url:"icons.html#icon-with-image-or-sprite-variables"},{title:"Icon position for an icon with image or sprite",filename:"icons",url:"icons.html#icon-position-for-an-icon-with-image-or-sprite"},{title:"Position for icon with image or sprite mixin variables",filename:"icons",url:"icons.html#position-for-icon-with-image-or-sprite-mixin-variables"},{title:"Icon sprite position (with grid)",filename:"icons",url:"icons.html#icon-sprite-position-with-grid"},{title:"Icon sprite position variables",filename:"icons",url:"icons.html#icon-sprite-position-variables"},{title:"Image/sprite icon size",filename:"icons",url:"icons.html#imagesprite-icon-size"},{title:"Image/sprite icon size variables",filename:"icons",url:"icons.html#imagesprite-icon-size-variables"},{title:"Font icon",filename:"icons",url:"icons.html#font-icon"},{title:"Font icon variables",filename:"icons",url:"icons.html#font-icon-variables"},{title:"Change the size of font icon",filename:"icons",url:"icons.html#change-the-size-of-font-icon"},{title:"Change the size of font icon variables",filename:"icons",url:"icons.html#change-the-size-of-font-icon-variables"},{title:"Hide icon text",filename:"icons",url:"icons.html#hide-icon-text"},{title:"Sprite and font icons for Blank theme",filename:"icons",url:"icons.html#sprite-and-font-icons-for-blank-theme"},{title:"layout",filename:"layout",url:"layout.html"},{title:"Layout",filename:"layout",url:"layout.html#layout"},{title:"Layout global variables",filename:"layout",url:"layout.html#layout-global-variables"},{title:"Page layouts",filename:"layout",url:"layout.html#page-layouts"},{title:"Layout column",filename:"layout",url:"layout.html#layout-column"},{title:"Layout column variables",filename:"layout",url:"layout.html#layout-column-variables"},{title:"Layout width",filename:"layout",url:"layout.html#layout-width"},{title:"Layout width variables",filename:"layout",url:"layout.html#layout-width-variables"},{title:"lib",filename:"lib",url:"lib.html"},{title:"Including Magento UI library to your theme",filename:"lib",url:"lib.html#including-magento-ui-library-to-your-theme"},{title:"loaders",filename:"loaders",url:"loaders.html"},{title:"Loaders",filename:"loaders",url:"loaders.html#loaders"},{title:"Default loader variables",filename:"loaders",url:"loaders.html#default-loader-variables"},{title:"Loading",filename:"loaders",url:"loaders.html#loading"},{title:"Loading default variables",filename:"loaders",url:"loaders.html#loading-default-variables"},{title:"messages",filename:"messages",url:"messages.html"},{title:"Messages",filename:"messages",url:"messages.html#messages"},{title:"Information message",filename:"messages",url:"messages.html#information-message"},{title:"Warning message",filename:"messages",url:"messages.html#warning-message"},{title:"Error message",filename:"messages",url:"messages.html#error-message"},{title:"Success message",filename:"messages",url:"messages.html#success-message"},{title:"Notice message",filename:"messages",url:"messages.html#notice-message"},{title:"Message with inner icon",filename:"messages",url:"messages.html#message-with-inner-icon"},{title:"Message with lateral icon",filename:"messages",url:"messages.html#message-with-lateral-icon"},{title:"Custom message style",filename:"messages",url:"messages.html#custom-message-style"},{title:"Messages global variables",filename:"messages",url:"messages.html#messages-global-variables"},{title:"navigation",filename:"navigation",url:"navigation.html"},{title:"Mobile off canvas navigation",filename:"navigation",url:"navigation.html#mobile-off-canvas-navigation"},{title:"Mobile off canvas navigation variables",filename:"navigation",url:"navigation.html#mobile-off-canvas-navigation-variables"},{title:"Desktop navigation",filename:"navigation",url:"navigation.html#desktop-navigation"},{title:"Desktop navigation variables",filename:"navigation",url:"navigation.html#desktop-navigation-variables"},{title:"pages",filename:"pages",url:"pages.html"},{title:"Pagination HTML markup",filename:"pages",url:"pages.html#pagination-html-markup"},{title:"Pagination variables",filename:"pages",url:"pages.html#pagination-variables"},{title:"Pagination with label and gradient background on links",filename:"pages",url:"pages.html#pagination-with-label-and-gradient-background-on-links"},{title:'Pagination with "previous"..."next" text links and label',filename:"pages",url:"pages.html#pagination-with-previousnext-text-links-and-label"},{title:"Pagination without label, with solid background",filename:"pages",url:"pages.html#pagination-without-label-with-solid-background"},{title:"popups",filename:"popups",url:"popups.html"},{title:"Popups",filename:"popups",url:"popups.html#popups"},{title:"Popup variables",filename:"popups",url:"popups.html#popup-variables"},{title:"Window overlay mixin variables",filename:"popups",url:"popups.html#window-overlay-mixin-variables"},{title:"Fixed height popup",filename:"popups",url:"popups.html#fixed-height-popup"},{title:"Fixed content height popup",filename:"popups",url:"popups.html#fixed-content-height-popup"},{title:"Margins for header, content and footer block in popup",filename:"popups",url:"popups.html#margins-for-header-content-and-footer-block-in-popup"},{title:"Popup titles styled as theme headings",filename:"popups",url:"popups.html#popup-titles-styled-as-theme-headings"},{title:"Popup action toolbar",filename:"popups",url:"popups.html#popup-action-toolbar"},{title:"Popup Close button without an icon",filename:"popups",url:"popups.html#popup-close-button-without-an-icon"},{title:"Modify the icon of popup Close button",filename:"popups",url:"popups.html#modify-the-icon-of-popup-close-button"},{title:"Modify overlay styles",filename:"popups",url:"popups.html#modify-overlay-styles"},{title:"rating",filename:"rating",url:"rating.html"},{title:"Ratings",filename:"rating",url:"rating.html#ratings"},{title:"Global rating variables",filename:"rating",url:"rating.html#global-rating-variables"},{title:"Rating with vote",filename:"rating",url:"rating.html#rating-with-vote"},{title:"Rating with vote icons number customization",filename:"rating",url:"rating.html#rating-with-vote-icons-number-customization"},{title:"Rating with vote icons colors customization",filename:"rating",url:"rating.html#rating-with-vote-icons-colors-customization"},{title:"Rating with vote icons symbol customization",filename:"rating",url:"rating.html#rating-with-vote-icons-symbol-customization"},{title:"Accessible rating with vote",filename:"rating",url:"rating.html#accessible-rating-with-vote"},{title:"Rating summary",filename:"rating",url:"rating.html#rating-summary"},{title:"Rating summary icons number customization",filename:"rating",url:"rating.html#rating-summary-icons-number-customization"},{title:"Rating summary icons color customization",filename:"rating",url:"rating.html#rating-summary-icons-color-customization"},{title:"Rating summary icons symbol customization",filename:"rating",url:"rating.html#rating-summary-icons-symbol-customization"},{title:"Rating summary hide label",filename:"rating",url:"rating.html#rating-summary-hide-label"},{title:"Rating summary multiple ratings",filename:"rating",url:"rating.html#rating-summary-multiple-ratings"},{title:"Rating hide label mixin",filename:"rating",url:"rating.html#rating-hide-label-mixin"},{title:"resets",filename:"resets",url:"resets.html"},{title:"Resets",filename:"resets",url:"resets.html#resets"},{title:"sections",filename:"sections",url:"sections.html"},{title:"Tabs and accordions",filename:"sections",url:"sections.html#tabs-and-accordions"},{title:"Tabs",filename:"sections",url:"sections.html#tabs"},{title:"Tabs mixin variables",filename:"sections",url:"sections.html#tabs-mixin-variables"},{title:"Tabs with content top border",filename:"sections",url:"sections.html#tabs-with-content-top-border"},{title:"Accordion",filename:"sections",url:"sections.html#accordion"},{title:"Accordion mixin variables",filename:"sections",url:"sections.html#accordion-mixin-variables"},{title:"Responsive tabs",filename:"sections",url:"sections.html#responsive-tabs"},{title:"Tabs Base",filename:"sections",url:"sections.html#tabs-base"},{title:"Accordion Base",filename:"sections",url:"sections.html#accordion-base"},{title:"tables",filename:"tables",url:"tables.html"},{title:"Tables",filename:"tables",url:"tables.html#tables"},{title:"Table mixin variables",filename:"tables",url:"tables.html#table-mixin-variables"},{title:"Table typography",filename:"tables",url:"tables.html#table-typography"},{title:"Table typography mixin variables",filename:"tables",url:"tables.html#table-typography-mixin-variables"},{title:"Table caption",filename:"tables",url:"tables.html#table-caption"},{title:"Table caption mixin variables",filename:"tables",url:"tables.html#table-caption-mixin-variables"},{title:"Table cells resize",filename:"tables",url:"tables.html#table-cells-resize"},{title:"Table cells resize variables",filename:"tables",url:"tables.html#table-cells-resize-variables"},{title:"Table background customization",filename:"tables",url:"tables.html#table-background-customization"},{title:"Table background mixin variables",filename:"tables",url:"tables.html#table-background-mixin-variables"},{title:"Table borders customization",filename:"tables",url:"tables.html#table-borders-customization"},{title:"Table borders mixin variables",filename:"tables",url:"tables.html#table-borders-mixin-variables"},{title:"Table with horizontal borders",filename:"tables",url:"tables.html#table-with-horizontal-borders"},{title:"Table with vertical borders",filename:"tables",url:"tables.html#table-with-vertical-borders"},{title:"Table with light borders",filename:"tables",url:"tables.html#table-with-light-borders"},{title:"Table without borders",filename:"tables",url:"tables.html#table-without-borders"},{title:"Striped table",filename:"tables",url:"tables.html#striped-table"},{title:"Striped table mixin variables",filename:"tables",url:"tables.html#striped-table-mixin-variables"},{title:"Table with rows hover",filename:"tables",url:"tables.html#table-with-rows-hover"},{title:"Table with rows hover mixin variables",filename:"tables",url:"tables.html#table-with-rows-hover-mixin-variables"},{title:"Responsive table technics #1",filename:"tables",url:"tables.html#responsive-table-technics-1"},{title:"Responsive table technics #2",filename:"tables",url:"tables.html#responsive-table-technics-2"},{title:"Responsive table technics #2 mixin variables",filename:"tables",url:"tables.html#responsive-table-technics-2-mixin-variables"},{title:"tooltips",filename:"tooltips",url:"tooltips.html"},{title:"Tooltips",filename:"tooltips",url:"tooltips.html#tooltips"},{title:"Tooltips variables",filename:"tooltips",url:"tooltips.html#tooltips-variables"},{title:"typography",filename:"typography",url:"typography.html"},{title:"Typogrphy",filename:"typography",url:"typography.html#typogrphy"},{title:"Typography variables",filename:"typography",url:"typography.html#typography-variables"},{title:"Font-size mixin",filename:"typography",url:"typography.html#fontsize-mixin"},{title:"Word breaking mixin",filename:"typography",url:"typography.html#word-breaking-mixin"},{title:"Font face mixin",filename:"typography",url:"typography.html#font-face-mixin"},{title:"Text overflow mixin",filename:"typography",url:"typography.html#text-overflow-mixin"},{title:"Text hide",filename:"typography",url:"typography.html#text-hide"},{title:"Hyphens",filename:"typography",url:"typography.html#hyphens"},{title:"Font style and color",filename:"typography",url:"typography.html#font-style-and-color"},{title:"Font style mixin variables",filename:"typography",url:"typography.html#font-style-mixin-variables"},{title:"Reset list styles",filename:"typography",url:"typography.html#reset-list-styles"},{title:"Reset list styles variables",filename:"typography",url:"typography.html#reset-list-styles-variables"},{title:"Inline-block list item styling",filename:"typography",url:"typography.html#inlineblock-list-item-styling"},{title:"Link styling mixin",filename:"typography",url:"typography.html#link-styling-mixin"},{title:"Link styling mixin variables",filename:"typography",url:"typography.html#link-styling-mixin-variables"},{title:"Heading styling mixin",filename:"typography",url:"typography.html#heading-styling-mixin"},{title:"Base typography mixins",filename:"typography",url:"typography.html#base-typography-mixins"},{title:"Headings typography mixin",filename:"typography",url:"typography.html#headings-typography-mixin"},{title:"Typography links mixin",filename:"typography",url:"typography.html#typography-links-mixin"},{title:"Typography lists mixin",filename:"typography",url:"typography.html#typography-lists-mixin"},{title:"Typography code elements mixin",filename:"typography",url:"typography.html#typography-code-elements-mixin"},{title:"Typography blockquote",filename:"typography",url:"typography.html#typography-blockquote"},{title:"variables",filename:"variables",url:"variables.html"},{title:"List of Global Variables",filename:"variables",url:"variables.html#list-of-global-variables"},{title:"Table with rows hover mixin variables",filename:"variables",url:"variables.html#table-with-rows-hover-mixin-variables"}];(function(){"use strict";var b=function(a,b){return Array.prototype.indexOf.call(a,b)!==-1},c=function(a,b){return Array.prototype.filter.call(a,b)},d=function(a,b){return Array.prototype.forEach.call(a,b)},e=document.getElementsByTagName("body")[0];e.addEventListener("click",function(a){var b=a.target;b.tagName.toLowerCase()==="svg"&&(b=b.parentNode);var c=!1;b.dataset.toggle!=null&&(a.preventDefault(),b.classList.contains("is-active")||(c=!0)),d(e.querySelectorAll("[data-toggle]"),function(a){a.classList.remove("is-active"),document.getElementById(a.dataset.toggle).hidden=!0}),c&&(b.classList.add("is-active"),document.getElementById(b.dataset.toggle).hidden=!1)}),function(){var f=e.getElementsByClassName("nav")[0];if(!f)return;var g=document.createElement("ul");g.className="nav-results",g.id="nav-search",g.hidden=!0,d(a,function(a){var b,c,d;b=document.createElement("li"),b._title=a.title.toLowerCase(),b.hidden=!0,b.appendChild(c=document.createElement("a")),c.href=a.url,c.innerHTML=a.title,c.appendChild(d=document.createElement("span")),d.innerHTML=a.filename,d.className="nav-results-filename",g.appendChild(b)}),f.appendChild(g);var h=g.children,i=function(a){d(h,function(a){a.hidden=!0});var b=this.value.toLowerCase(),e=[];b!==""&&(e=c(h,function(a){return a._title.indexOf(b)!==-1})),e.length>0?(d(e,function(a){a.hidden=!1}),g.hidden=!1):g.hidden=!0},j=f.querySelector('input[type="search"]');j.addEventListener("keyup",i),j.addEventListener("focus",i),e.addEventListener("click",function(a){if(a.target.classList&&a.target.classList.contains("search"))return;g.hidden=!0}),g.addEventListener("click",function(a){j.value=""});var k=document.createElement("ul");k.id="nav-toc",k.hidden=!0,k.className="nav-results toc-list",c(e.getElementsByTagName("*"),function(a){return b(["h1","h2","h3"],a.tagName.toLowerCase())}).map(function(a){var b=document.createElement("li"),c=document.createElement("a"),d=a.tagName.toLowerCase()[1];c.classList.add("level-"+d),b.appendChild(c),c.href="#"+a.id,c.innerHTML=a.innerHTML,k.appendChild(b)}),f.appendChild(k)}()})(),function(){"use strict";if(location.hash==="#__preview__"||location.protocol==="data:")return;var a=function(a,b){return Array.prototype.forEach.call(a,b)},b=function(a,b){var e=Array.prototype.slice.call(arguments,2);return d(a,function(a){return(c(b)?b||a:a[b]).apply(a,e)})},c=function(a){return Object.prototype.toString.call(a)==="[object Function]"},d=function(a,b){return Array.prototype.map.call(a,b)},e=function(a,b){return d(a,function(a){return a[b]})},f=function(a){var b={},c=a.split(";");for(var d=0;c.length>d;d++){var e=c[d].trim().split("=");b[e[0]]=e[1]}return b},g=function(a,c){return b(e(a,"classList"),"remove",c)},h=function(a,b){a.contentDocument.defaultView.postMessage(b,"*")},i=document.getElementsByTagName("head")[0],j=document.getElementsByTagName("body")[0],k=e(i.querySelectorAll('style[type="text/preview"]'),"innerHTML").join(""),l=e(i.querySelectorAll('script[type="text/preview"]'),"innerHTML").join(""),m=location.href.split("#")[0]+"#__preview__",n=document.createElement("iframe");n.src="data:text/html,",j.appendChild(n),n.addEventListener("load",function(){var b={sameOriginDataUri:!0};try{this.contentDocument,this.contentDocument||(b.sameOriginDataUri=!1)}catch(c){b.sameOriginDataUri=!1}this.parentNode.removeChild(this),a(j.getElementsByTagName("textarea"),function(a,c){o(a,b,c),q(),p(a)})});var o=function(a,b,c){var d,e,f;d=document.createElement("div"),d.appendChild(e=document.createElement("div")),d.className="preview",e.appendChild(f=document.createElement("iframe")),e.className="resizeable",f.setAttribute("scrolling","no"),f.name="iframe"+c++,f.addEventListener("load",function(){var c,d,e,f,g,i,j;j=this.contentDocument;if(!b.sameOriginDataUri&&this.src!==m)return;this.src===m&&(c=j.createElement("html"),c.appendChild(j.createElement("head")),c.appendChild(d=j.createElement("body")),d.innerHTML=a.textContent,j.replaceChild(c,j.documentElement)),g=j.createElement("head"),g.appendChild(f=j.createElement("style")),g.appendChild(e=j.createElement("script")),e.textContent=l,f.textContent=k,i=j.getElementsByTagName("head")[0],i.parentNode.replaceChild(g,i),h(this,"getHeight")});var g;b.sameOriginDataUri?g="data:text/html;charset=utf-8,"+encodeURIComponent("<!doctype html><html><head></head></body>"+a.textContent):g=m,f.setAttribute("src",g);var i=function(){f.contentDocument.body.innerHTML=this.value,h(f,"getHeight")};a.addEventListener("keypress",i),a.addEventListener("keyup",i),a.parentNode.insertBefore(d,a)},p=function(a){var b=document.createElement("div");b.className="preview-code",b.style.position="absolute",b.style.left="-9999px",j.appendChild(b);var c=parseInt(window.getComputedStyle(a).getPropertyValue("max-height"),10),d=function(a){b.textContent=this.value+"\n";var d=b.offsetHeight+2;d>=c?this.style.overflow="auto":this.style.overflow="hidden",this.style.height=b.offsetHeight+2+"px"};a.addEventListener("keypress",d),a.addEventListener("keyup",d),d.call(a)},q=function(){var b=j.getElementsByClassName("settings")[0],c=j.getElementsByClassName("resizeable"),d=30,e=function(b){document.cookie="preview-width="+b,a(c,function(a){b==="auto"&&(b=a.parentNode.offsetWidth),a.style.width=b+"px",h(a.getElementsByTagName("iframe")[0],"getHeight")})},i=f(document.cookie)["preview-width"];if(i){e(i),g(b.getElementsByClassName("is-active"),"is-active");var k=b.querySelector('button[data-width="'+i+'"]');k&&k.classList.add("is-active")}window.addEventListener("message",function(a){if(a.data==null||!a.source)return;var b=a.data,c=document.getElementsByName(a.source.name)[0];b.height!=null&&c&&(c.parentNode.style.height=b.height+d+"px")},!1),b&&c.length>0&&(b.hidden=!1,b.addEventListener("click",function(a){var c=a.target.tagName.toLowerCase(),d;if(c==="button")d=a.target;else{if(c!=="svg")return;d=a.target.parentNode}a.preventDefault(),g(b.getElementsByClassName("is-active"),"is-active"),d.classList.add("is-active");var f=d.dataset.width;e(f)}))}}()})()</script></body></html><!-- Generated with StyleDocco (http://jacobrask.github.com/styledocco). -->
+
+</code></pre></div></article><article id="form-validation-variables" class="section"><div class="docs"><a href="#form-validation-variables" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="form-validation-variables">Form validation variables</h1>
+  <pre>
+    <table>
+        <tr>
+            <th class="vars_head">Mixin variable</th>
+            <th class="vars_head">Global variable</th>
+            <th class="vars_head">Default values [Allowed values]</th>
+            <th class="vars_head">Comment</th>
+        </tr>
+        <tr>
+            <th>@_note-color</th>
+            <td class="vars_value">@form-validation-note-color-error</td>
+            <td class="vars_value">@color-error</td>
+            <td>Validation note text color</td>
+        </tr>
+        <tr>
+            <th>@_note-font-size</th>
+            <td class="vars_value">@form-validation-note-font-size</td>
+            <td class="vars_value">@font-size-s</td>
+            <td>Validation note font size</td>
+        </tr>
+        <tr>
+            <th>@_note-font-family</th>
+            <td class="vars_value">@form-validation-note-font-family</td>
+            <td class="vars_value">false</td>
+            <td>Validation note font family</td>
+        </tr>
+        <tr>
+            <th>@_note-font-style</th>
+            <td class="vars_value">@form-validation-note-font-style</td>
+            <td class="vars_value">false</td>
+            <td>Validation note font style</td>
+        </tr>
+        <tr>
+            <th>@_note-font-weight</th>
+            <td class="vars_value">@form-validation-note-font-weight</td>
+            <td class="vars_value">false</td>
+            <td>Validation note font weight</td>
+        </tr>
+        <tr>
+            <th>@_note-line-height</th>
+            <td class="vars_value">@form-validation-note-line-height</td>
+            <td class="vars_value">false</td>
+            <td>Validation note line height</td>
+        </tr>
+        <tr>
+            <th>@_note-margin</th>
+            <td class="vars_value">@form-validation-note-margin</td>
+            <td class="vars_value">3px 0 0</td>
+            <td>Validation note margin</td>
+        </tr>
+        <tr>
+            <th>@_note-padding</th>
+            <td class="vars_value">@form-validation-note-padding</td>
+            <td class="vars_value">false</td>
+            <td>Validation note padding</td>
+        </tr>
+        <tr>
+            <th>@_note-icon-use</th>
+            <td class="vars_value">@form-validation-note-icon-use</td>
+            <td class="vars_value">false [true | false]</td>
+            <td>Show validation note icon</td>
+        </tr>
+        <tr>
+            <th>@_note-icon-font-content</th>
+            <td class="vars_value">@form-validation-note-icon-font-content</td>
+            <td class="vars_value">@icon-pointer-up</td>
+            <td>Validation note icon code</td>
+        </tr>
+        <tr>
+            <th>@_note-icon-font</th>
+            <td class="vars_value">@form-validation-note-icon-font</td>
+            <td class="vars_value">@icon-font</td>
+            <td>Validation note icon font</td>
+        </tr>
+        <tr>
+            <th>@_note-icon-font-size</th>
+            <td class="vars_value">@form-validation-note-icon-font-size</td>
+            <td class="vars_value">@form-validation-note-font-size * 2</td>
+            <td>Validation note icon font size</td>
+        </tr>
+        <tr>
+            <th>@_note-icon-font-line-height</th>
+            <td class="vars_value">@form-validation-note-icon-font-line-height</td>
+            <td class="vars_value">@form-validation-note-font-size</td>
+            <td>Validation note icon line height</td>
+        </tr>
+        <tr>
+            <th>@_note-icon-font-color</th>
+            <td class="vars_value">@form-validation-note-icon-font-color</td>
+            <td class="vars_value">@form-validation-note-color-error</td>
+            <td>Validation note icon color</td>
+        </tr>
+        <tr>
+            <th>@_note-icon-font-color-hover</th>
+            <td class="vars_value">@form-validation-note-icon-font-color-hover</td>
+            <td class="vars_value">false</td>
+            <td>Hovered validation note icon color</td>
+        </tr>
+        <tr>
+            <th>@_note-icon-font-color-active</th>
+            <td class="vars_value">@form-validation-note-icon-font-color-active</td>
+            <td class="vars_value">false</td>
+            <td>Active validation note icon color</td>
+        </tr>
+        <tr>
+            <th>@_note-icon-font-margin</th>
+            <td class="vars_value">@form-validation-note-icon-font-margin</td>
+            <td class="vars_value">false</td>
+            <td>Validation note icon margin</td>
+        </tr>
+        <tr>
+            <th>@_note-icon-font-vertical-align</th>
+            <td class="vars_value">@form-validation-note-icon-font-vertical-align</td>
+            <td class="vars_value"> @icon-font-vertical-align</td>
+            <td>Validation note icon vertical align</td>
+        </tr>
+        <tr>
+            <th>@_note-icon-font-position</th>
+            <td class="vars_value">@form-validation-note-icon-font-position</td>
+            <td class="vars_value">@icon-font-position</td>
+            <td>Validation note icon position</td>
+        </tr>
+        <tr>
+            <th>@_note-icon-font-text-hide</th>
+            <td class="vars_value">@form-validation-note-icon-font-text-hide</td>
+            <td class="vars_value">@icon-font-text-hide</td>
+            <td>Validation note icon text hide</td>
+        </tr>
+    </table>
+  </pre>
+</div></article></section><div class="bar bottom"><div hidden class="settings container"><!-- Icons from http://iconmonstr.com--><button title="Desktop (1280)" data-width='1280'><svg viewBox="0 0 412 386" height="24" width="26" class="icon"><path d="m147.6,343.9c-4.5,15.9-26.2,37.6-42.1,42.1h201c-15.3,-4-38.1,-26.8-42.1,-42.1H147.6zM387,0.5H25c-13.8,0-25,11.2-25,25V294c0,13.8 11.2,25 25,25h362c13.8,0 25,-11.2 25,-25V25.5C412,11.7 400.8,0.5 387,0.5zM369.9,238.2H42.1L42.1,42.6 369.9,42.6V238.2z"></path></svg></button><button title="Laptop (1024)" data-width='1024'><svg viewBox="0 0 384 312" height="23" width="28" class="icon"><path d="m349.2,20.5c0,-11-9,-20-20,-20H53.6c-11,0-20,9-20,20v194H349.2v-194zm-27,167H60.6V27.5H322.2v160zm28,42H32.6L2.6,282.1c-3.5,6.2-3.5,13.8 0.1,19.9 3.6,6.2 10.2,9.9 17.3,9.9H363.1c7.1,0 13.7,-3.8 17.3,-10 3.6,-6.2 3.6,-13.8 0,-20l-30.2,-52.5zm-196.9,54 8,-23.5h60.5l8,23.5h-76.5z"></path></svg></button><button title="Tablet (768)" data-width='768'><svg viewBox="0 0 317 412" height="24" width="18" class="icon"><path d="M 316.5,380 V 32 c 0,-17.7 -14.3,-32 -32,-32 H 32 C 14.3,0 0,14.3 0,32 v 348 c 0,17.7 14.3,32 32,32 h 252.5 c 17.7,0 32,-14.3 32,-32 z M 40,367 V 45 H 276.5 V 367 H 40 z m 109.8,22.7 c 0,-4.7 3.8,-8.5 8.5,-8.5 4.7,0 8.5,3.8 8.5,8.5 0,4.7 -3.8,8.5 -8.5,8.5 -4.7,0 -8.5,-3.8 -8.5,-8.5 z"></path></svg></button><button title="Smart phone (320)" data-width='320'><svg viewBox="0 0 224 412" height="24" width="13" class="icon"><path d="M 190.7,0 H 33 C 14.8,0 0,14.8 0,33 v 346 c 0,18.2 14.8,33 33,33 h 157.7 c 18.2,0 33,-14.8 33,-33 V 33 c 0,-18.2 -14.8,-33 -33,-33 z M 94.3,30.2 h 37 c 2.2,0 4,1.8 4,4 0,2.2 -1.8,4 -4,4 h -37 c -2.2,0 -4,-1.8 -4,-4 0,-2.2 1.8,-4 4,-4 z m 18.5,362.8 c -8.8,0 -16,-7.2 -16,-16 0,-8.8 7.2,-16 16,-16 8.8,0 16,7.2 16,16 0,8.8 -7.2,16 -16,16 z M 198.6,343.8 H 25.1 V 68.2 h 173.5 v 275.5 z"></path></svg></button><button title="Feature phone (240)" data-width='240'><svg viewBox="0 0 201 412" height="24" width="12" class="icon"><path d="M 165.5,0.2 V 45 H 25 c -13.8,0 -25,11.2 -25,25 V 387 c 0,13.8 11.2,25 25,25 h 150.5 c 13.8,0 25,-11.2 25,-25 V 0.2 h -35 z M 65.2,366.5 H 34.2 v -24.5 h 31 v 24.5 z m 0,-44.3 H 34.2 v -24.5 h 31 v 24.5 z m 50.5,44.3 H 84.7 v -24.5 h 31 v 24.5 z m 0,-44.3 H 84.7 v -24.5 h 31 v 24.5 z m 50.5,44.3 h -31 v -24.5 h 31 v 24.5 z m 0,-44.3 h -31 v -24.5 h 31 v 24.5 z m 0,-59.3 h -132 V 95.4 h 132 V 262.9 z"></path></svg></button><button title="Auto (100%)" data-width="auto" class="auto is-active">Auto</button></div></div><script>(function(){var a=[{title:"actions-toolbar",filename:"actions-toolbar",url:"actions-toolbar.html"},{title:"Actions toolbar",filename:"actions-toolbar",url:"actions-toolbar.html#actions-toolbar"},{title:"Actions toolbar mixin variables",filename:"actions-toolbar",url:"actions-toolbar.html#actions-toolbar-mixin-variables"},{title:"Actions toolbar alignment",filename:"actions-toolbar",url:"actions-toolbar.html#actions-toolbar-alignment"},{title:"Reverse primary and secondary blocks",filename:"actions-toolbar",url:"actions-toolbar.html#reverse-primary-and-secondary-blocks"},{title:"Actions toolbar indents customizations",filename:"actions-toolbar",url:"actions-toolbar.html#actions-toolbar-indents-customizations"},{title:"Responsive actions toolbar",filename:"actions-toolbar",url:"actions-toolbar.html#responsive-actions-toolbar"},{title:"breadcrumbs",filename:"breadcrumbs",url:"breadcrumbs.html"},{title:"Breadcrumbs",filename:"breadcrumbs",url:"breadcrumbs.html#breadcrumbs"},{title:"Breadcrumbs variables",filename:"breadcrumbs",url:"breadcrumbs.html#breadcrumbs-variables"},{title:"Button-styled breadcrumbs with gradient background, border, and no separating symbol",filename:"breadcrumbs",url:"breadcrumbs.html#buttonstyled-breadcrumbs-with-gradient-background-border-and-no-separating-symbol"},{title:"Breadcrumbs with solid background",filename:"breadcrumbs",url:"breadcrumbs.html#breadcrumbs-with-solid-background"},{title:"buttons",filename:"buttons",url:"buttons.html"},{title:"Default button",filename:"buttons",url:"buttons.html#default-button"},{title:"Button variables",filename:"buttons",url:"buttons.html#button-variables"},{title:"Button as an icon",filename:"buttons",url:"buttons.html#button-as-an-icon"},{title:"Button with an icon on the left or right side of the text",filename:"buttons",url:"buttons.html#button-with-an-icon-on-the-left-or-right-side-of-the-text"},{title:"Button with fixed width",filename:"buttons",url:"buttons.html#button-with-fixed-width"},{title:"Primary button",filename:"buttons",url:"buttons.html#primary-button"},{title:"Primary button variables",filename:"buttons",url:"buttons.html#primary-button-variables"},{title:"Button with gradient background",filename:"buttons",url:"buttons.html#button-with-gradient-background"},{title:"Button as a link",filename:"buttons",url:"buttons.html#button-as-a-link"},{title:"Link as a button",filename:"buttons",url:"buttons.html#link-as-a-button"},{title:"docs",filename:"docs",url:"docs.html"},{title:"Documentation",filename:"docs",url:"docs.html#documentation"},{title:"dropdowns",filename:"dropdowns",url:"dropdowns.html"},{title:"Drop-down and split buttons mixins",filename:"dropdowns",url:"dropdowns.html#dropdown-and-split-buttons-mixins"},{title:"Drop-down",filename:"dropdowns",url:"dropdowns.html#dropdown"},{title:"Drop-down variables",filename:"dropdowns",url:"dropdowns.html#dropdown-variables"},{title:"Drop-down with icon customization",filename:"dropdowns",url:"dropdowns.html#dropdown-with-icon-customization"},{title:"Modify dropdown list styles",filename:"dropdowns",url:"dropdowns.html#modify-dropdown-list-styles"},{title:"Split button",filename:"dropdowns",url:"dropdowns.html#split-button"},{title:"Split button variables",filename:"dropdowns",url:"dropdowns.html#split-button-variables"},{title:"Split button - button styling",filename:"dropdowns",url:"dropdowns.html#split-button-button-styling"},{title:"Split button icon customization",filename:"dropdowns",url:"dropdowns.html#split-button-icon-customization"},{title:"Split button drop-down list customization",filename:"dropdowns",url:"dropdowns.html#split-button-dropdown-list-customization"},{title:"forms",filename:"forms",url:"forms.html"},{title:"Forms mixins",filename:"forms",url:"forms.html#forms-mixins"},{title:"Global forms elements customization",filename:"forms",url:"forms.html#global-forms-elements-customization"},{title:"Fieldsets & fields customization",filename:"forms",url:"forms.html#fieldsets-fields-customization"},{title:"Fieldset and legend customization variables",filename:"forms",url:"forms.html#fieldset-and-legend-customization-variables"},{title:"Fields customization variables",filename:"forms",url:"forms.html#fields-customization-variables"},{title:"Required fields message customization variables",filename:"forms",url:"forms.html#required-fields-message-customization-variables"},{title:"Form element inputs customization",filename:"forms",url:"forms.html#form-element-inputs-customization"},{title:"Form element inputs customization variables",filename:"forms",url:"forms.html#form-element-inputs-customization-variables"},{title:"Form element choice",filename:"forms",url:"forms.html#form-element-choice"},{title:"Form element choice variables",filename:"forms",url:"forms.html#form-element-choice-variables"},{title:"Custom indents for element inputs",filename:"forms",url:"forms.html#custom-indents-for-element-inputs"},{title:"Custom color",filename:"forms",url:"forms.html#custom-color"},{title:"Custom indents for choice inputs",filename:"forms",url:"forms.html#custom-indents-for-choice-inputs"},{title:"Form elements custom size",filename:"forms",url:"forms.html#form-elements-custom-size"},{title:"Input number - input-text view",filename:"forms",url:"forms.html#input-number-inputtext-view"},{title:"Input search - input-text view",filename:"forms",url:"forms.html#input-search-inputtext-view"},{title:"Form validation",filename:"forms",url:"forms.html#form-validation"},{title:"Form validation variables",filename:"forms",url:"forms.html#form-validation-variables"},{title:"icons",filename:"icons",url:"icons.html"},{title:"Icons",filename:"icons",url:"icons.html#icons"},{title:"Icon with image or sprite",filename:"icons",url:"icons.html#icon-with-image-or-sprite"},{title:"Icon with image or sprite variables",filename:"icons",url:"icons.html#icon-with-image-or-sprite-variables"},{title:"Icon position for an icon with image or sprite",filename:"icons",url:"icons.html#icon-position-for-an-icon-with-image-or-sprite"},{title:"Position for icon with image or sprite mixin variables",filename:"icons",url:"icons.html#position-for-icon-with-image-or-sprite-mixin-variables"},{title:"Icon sprite position (with grid)",filename:"icons",url:"icons.html#icon-sprite-position-with-grid"},{title:"Icon sprite position variables",filename:"icons",url:"icons.html#icon-sprite-position-variables"},{title:"Image/sprite icon size",filename:"icons",url:"icons.html#imagesprite-icon-size"},{title:"Image/sprite icon size variables",filename:"icons",url:"icons.html#imagesprite-icon-size-variables"},{title:"Font icon",filename:"icons",url:"icons.html#font-icon"},{title:"Font icon variables",filename:"icons",url:"icons.html#font-icon-variables"},{title:"Change the size of font icon",filename:"icons",url:"icons.html#change-the-size-of-font-icon"},{title:"Change the size of font icon variables",filename:"icons",url:"icons.html#change-the-size-of-font-icon-variables"},{title:"Hide icon text",filename:"icons",url:"icons.html#hide-icon-text"},{title:"Sprite and font icons for Blank theme",filename:"icons",url:"icons.html#sprite-and-font-icons-for-blank-theme"},{title:"layout",filename:"layout",url:"layout.html"},{title:"Layout",filename:"layout",url:"layout.html#layout"},{title:"Layout global variables",filename:"layout",url:"layout.html#layout-global-variables"},{title:"Page layouts",filename:"layout",url:"layout.html#page-layouts"},{title:"Layout column",filename:"layout",url:"layout.html#layout-column"},{title:"Layout column variables",filename:"layout",url:"layout.html#layout-column-variables"},{title:"Layout width",filename:"layout",url:"layout.html#layout-width"},{title:"Layout width variables",filename:"layout",url:"layout.html#layout-width-variables"},{title:"lib",filename:"lib",url:"lib.html"},{title:"Including Magento UI library to your theme",filename:"lib",url:"lib.html#including-magento-ui-library-to-your-theme"},{title:"loaders",filename:"loaders",url:"loaders.html"},{title:"Loaders",filename:"loaders",url:"loaders.html#loaders"},{title:"Default loader variables",filename:"loaders",url:"loaders.html#default-loader-variables"},{title:"Loading",filename:"loaders",url:"loaders.html#loading"},{title:"Loading default variables",filename:"loaders",url:"loaders.html#loading-default-variables"},{title:"messages",filename:"messages",url:"messages.html"},{title:"Messages",filename:"messages",url:"messages.html#messages"},{title:"Information message",filename:"messages",url:"messages.html#information-message"},{title:"Warning message",filename:"messages",url:"messages.html#warning-message"},{title:"Error message",filename:"messages",url:"messages.html#error-message"},{title:"Success message",filename:"messages",url:"messages.html#success-message"},{title:"Notice message",filename:"messages",url:"messages.html#notice-message"},{title:"Message with inner icon",filename:"messages",url:"messages.html#message-with-inner-icon"},{title:"Message with lateral icon",filename:"messages",url:"messages.html#message-with-lateral-icon"},{title:"Custom message style",filename:"messages",url:"messages.html#custom-message-style"},{title:"Messages global variables",filename:"messages",url:"messages.html#messages-global-variables"},{title:"navigation",filename:"navigation",url:"navigation.html"},{title:"Mobile off canvas navigation",filename:"navigation",url:"navigation.html#mobile-off-canvas-navigation"},{title:"Mobile off canvas navigation variables",filename:"navigation",url:"navigation.html#mobile-off-canvas-navigation-variables"},{title:"Desktop navigation",filename:"navigation",url:"navigation.html#desktop-navigation"},{title:"Desktop navigation variables",filename:"navigation",url:"navigation.html#desktop-navigation-variables"},{title:"pages",filename:"pages",url:"pages.html"},{title:"Pagination HTML markup",filename:"pages",url:"pages.html#pagination-html-markup"},{title:"Pagination variables",filename:"pages",url:"pages.html#pagination-variables"},{title:"Pagination with label and gradient background on links",filename:"pages",url:"pages.html#pagination-with-label-and-gradient-background-on-links"},{title:'Pagination with "previous"..."next" text links and label',filename:"pages",url:"pages.html#pagination-with-previousnext-text-links-and-label"},{title:"Pagination without label, with solid background",filename:"pages",url:"pages.html#pagination-without-label-with-solid-background"},{title:"popups",filename:"popups",url:"popups.html"},{title:"Popups",filename:"popups",url:"popups.html#popups"},{title:"Popup variables",filename:"popups",url:"popups.html#popup-variables"},{title:"Window overlay mixin variables",filename:"popups",url:"popups.html#window-overlay-mixin-variables"},{title:"Fixed height popup",filename:"popups",url:"popups.html#fixed-height-popup"},{title:"Fixed content height popup",filename:"popups",url:"popups.html#fixed-content-height-popup"},{title:"Margins for header, content and footer block in popup",filename:"popups",url:"popups.html#margins-for-header-content-and-footer-block-in-popup"},{title:"Popup titles styled as theme headings",filename:"popups",url:"popups.html#popup-titles-styled-as-theme-headings"},{title:"Popup action toolbar",filename:"popups",url:"popups.html#popup-action-toolbar"},{title:"Popup Close button without an icon",filename:"popups",url:"popups.html#popup-close-button-without-an-icon"},{title:"Modify the icon of popup Close button",filename:"popups",url:"popups.html#modify-the-icon-of-popup-close-button"},{title:"Modify overlay styles",filename:"popups",url:"popups.html#modify-overlay-styles"},{title:"rating",filename:"rating",url:"rating.html"},{title:"Ratings",filename:"rating",url:"rating.html#ratings"},{title:"Global rating variables",filename:"rating",url:"rating.html#global-rating-variables"},{title:"Rating with vote",filename:"rating",url:"rating.html#rating-with-vote"},{title:"Rating with vote icons number customization",filename:"rating",url:"rating.html#rating-with-vote-icons-number-customization"},{title:"Rating with vote icons colors customization",filename:"rating",url:"rating.html#rating-with-vote-icons-colors-customization"},{title:"Rating with vote icons symbol customization",filename:"rating",url:"rating.html#rating-with-vote-icons-symbol-customization"},{title:"Accessible rating with vote",filename:"rating",url:"rating.html#accessible-rating-with-vote"},{title:"Rating summary",filename:"rating",url:"rating.html#rating-summary"},{title:"Rating summary icons number customization",filename:"rating",url:"rating.html#rating-summary-icons-number-customization"},{title:"Rating summary icons color customization",filename:"rating",url:"rating.html#rating-summary-icons-color-customization"},{title:"Rating summary icons symbol customization",filename:"rating",url:"rating.html#rating-summary-icons-symbol-customization"},{title:"Rating summary hide label",filename:"rating",url:"rating.html#rating-summary-hide-label"},{title:"Rating summary multiple ratings",filename:"rating",url:"rating.html#rating-summary-multiple-ratings"},{title:"Rating hide label mixin",filename:"rating",url:"rating.html#rating-hide-label-mixin"},{title:"resets",filename:"resets",url:"resets.html"},{title:"Resets",filename:"resets",url:"resets.html#resets"},{title:"sections",filename:"sections",url:"sections.html"},{title:"Tabs and accordions",filename:"sections",url:"sections.html#tabs-and-accordions"},{title:"Tabs",filename:"sections",url:"sections.html#tabs"},{title:"Tabs mixin variables",filename:"sections",url:"sections.html#tabs-mixin-variables"},{title:"Tabs with content top border",filename:"sections",url:"sections.html#tabs-with-content-top-border"},{title:"Accordion",filename:"sections",url:"sections.html#accordion"},{title:"Accordion mixin variables",filename:"sections",url:"sections.html#accordion-mixin-variables"},{title:"Responsive tabs",filename:"sections",url:"sections.html#responsive-tabs"},{title:"Tabs Base",filename:"sections",url:"sections.html#tabs-base"},{title:"Accordion Base",filename:"sections",url:"sections.html#accordion-base"},{title:"tables",filename:"tables",url:"tables.html"},{title:"Tables",filename:"tables",url:"tables.html#tables"},{title:"Table mixin variables",filename:"tables",url:"tables.html#table-mixin-variables"},{title:"Table typography",filename:"tables",url:"tables.html#table-typography"},{title:"Table typography mixin variables",filename:"tables",url:"tables.html#table-typography-mixin-variables"},{title:"Table caption",filename:"tables",url:"tables.html#table-caption"},{title:"Table caption mixin variables",filename:"tables",url:"tables.html#table-caption-mixin-variables"},{title:"Table cells resize",filename:"tables",url:"tables.html#table-cells-resize"},{title:"Table cells resize variables",filename:"tables",url:"tables.html#table-cells-resize-variables"},{title:"Table background customization",filename:"tables",url:"tables.html#table-background-customization"},{title:"Table background mixin variables",filename:"tables",url:"tables.html#table-background-mixin-variables"},{title:"Table borders customization",filename:"tables",url:"tables.html#table-borders-customization"},{title:"Table borders mixin variables",filename:"tables",url:"tables.html#table-borders-mixin-variables"},{title:"Table with horizontal borders",filename:"tables",url:"tables.html#table-with-horizontal-borders"},{title:"Table with vertical borders",filename:"tables",url:"tables.html#table-with-vertical-borders"},{title:"Table with light borders",filename:"tables",url:"tables.html#table-with-light-borders"},{title:"Table without borders",filename:"tables",url:"tables.html#table-without-borders"},{title:"Striped table",filename:"tables",url:"tables.html#striped-table"},{title:"Striped table mixin variables",filename:"tables",url:"tables.html#striped-table-mixin-variables"},{title:"Table with rows hover",filename:"tables",url:"tables.html#table-with-rows-hover"},{title:"Table with rows hover mixin variables",filename:"tables",url:"tables.html#table-with-rows-hover-mixin-variables"},{title:"Responsive table technics #1",filename:"tables",url:"tables.html#responsive-table-technics-1"},{title:"Responsive table technics #2",filename:"tables",url:"tables.html#responsive-table-technics-2"},{title:"Responsive table technics #2 mixin variables",filename:"tables",url:"tables.html#responsive-table-technics-2-mixin-variables"},{title:"tooltips",filename:"tooltips",url:"tooltips.html"},{title:"Tooltips",filename:"tooltips",url:"tooltips.html#tooltips"},{title:"Tooltips variables",filename:"tooltips",url:"tooltips.html#tooltips-variables"},{title:"typography",filename:"typography",url:"typography.html"},{title:"Typogrphy",filename:"typography",url:"typography.html#typogrphy"},{title:"Typography variables",filename:"typography",url:"typography.html#typography-variables"},{title:"Font-size mixin",filename:"typography",url:"typography.html#fontsize-mixin"},{title:"Word breaking mixin",filename:"typography",url:"typography.html#word-breaking-mixin"},{title:"Font face mixin",filename:"typography",url:"typography.html#font-face-mixin"},{title:"Text overflow mixin",filename:"typography",url:"typography.html#text-overflow-mixin"},{title:"Text hide",filename:"typography",url:"typography.html#text-hide"},{title:"Hyphens",filename:"typography",url:"typography.html#hyphens"},{title:"Font style and color",filename:"typography",url:"typography.html#font-style-and-color"},{title:"Font style mixin variables",filename:"typography",url:"typography.html#font-style-mixin-variables"},{title:"Reset list styles",filename:"typography",url:"typography.html#reset-list-styles"},{title:"Reset list styles variables",filename:"typography",url:"typography.html#reset-list-styles-variables"},{title:"Inline-block list item styling",filename:"typography",url:"typography.html#inlineblock-list-item-styling"},{title:"Link styling mixin",filename:"typography",url:"typography.html#link-styling-mixin"},{title:"Link styling mixin variables",filename:"typography",url:"typography.html#link-styling-mixin-variables"},{title:"Heading styling mixin",filename:"typography",url:"typography.html#heading-styling-mixin"},{title:"Base typography mixins",filename:"typography",url:"typography.html#base-typography-mixins"},{title:"Headings typography mixin",filename:"typography",url:"typography.html#headings-typography-mixin"},{title:"Typography links mixin",filename:"typography",url:"typography.html#typography-links-mixin"},{title:"Typography lists mixin",filename:"typography",url:"typography.html#typography-lists-mixin"},{title:"Typography code elements mixin",filename:"typography",url:"typography.html#typography-code-elements-mixin"},{title:"Typography blockquote",filename:"typography",url:"typography.html#typography-blockquote"},{title:"variables",filename:"variables",url:"variables.html"},{title:"List of Global Variables",filename:"variables",url:"variables.html#list-of-global-variables"},{title:"Table with rows hover mixin variables",filename:"variables",url:"variables.html#table-with-rows-hover-mixin-variables"}];(function(){"use strict";var b=function(a,b){return Array.prototype.indexOf.call(a,b)!==-1},c=function(a,b){return Array.prototype.filter.call(a,b)},d=function(a,b){return Array.prototype.forEach.call(a,b)},e=document.getElementsByTagName("body")[0];e.addEventListener("click",function(a){var b=a.target;b.tagName.toLowerCase()==="svg"&&(b=b.parentNode);var c=!1;b.dataset.toggle!=null&&(a.preventDefault(),b.classList.contains("is-active")||(c=!0)),d(e.querySelectorAll("[data-toggle]"),function(a){a.classList.remove("is-active"),document.getElementById(a.dataset.toggle).hidden=!0}),c&&(b.classList.add("is-active"),document.getElementById(b.dataset.toggle).hidden=!1)}),function(){var f=e.getElementsByClassName("nav")[0];if(!f)return;var g=document.createElement("ul");g.className="nav-results",g.id="nav-search",g.hidden=!0,d(a,function(a){var b,c,d;b=document.createElement("li"),b._title=a.title.toLowerCase(),b.hidden=!0,b.appendChild(c=document.createElement("a")),c.href=a.url,c.innerHTML=a.title,c.appendChild(d=document.createElement("span")),d.innerHTML=a.filename,d.className="nav-results-filename",g.appendChild(b)}),f.appendChild(g);var h=g.children,i=function(a){d(h,function(a){a.hidden=!0});var b=this.value.toLowerCase(),e=[];b!==""&&(e=c(h,function(a){return a._title.indexOf(b)!==-1})),e.length>0?(d(e,function(a){a.hidden=!1}),g.hidden=!1):g.hidden=!0},j=f.querySelector('input[type="search"]');j.addEventListener("keyup",i),j.addEventListener("focus",i),e.addEventListener("click",function(a){if(a.target.classList&&a.target.classList.contains("search"))return;g.hidden=!0}),g.addEventListener("click",function(a){j.value=""});var k=document.createElement("ul");k.id="nav-toc",k.hidden=!0,k.className="nav-results toc-list",c(e.getElementsByTagName("*"),function(a){return b(["h1","h2","h3"],a.tagName.toLowerCase())}).map(function(a){var b=document.createElement("li"),c=document.createElement("a"),d=a.tagName.toLowerCase()[1];c.classList.add("level-"+d),b.appendChild(c),c.href="#"+a.id,c.innerHTML=a.innerHTML,k.appendChild(b)}),f.appendChild(k)}()})(),function(){"use strict";if(location.hash==="#__preview__"||location.protocol==="data:")return;var a=function(a,b){return Array.prototype.forEach.call(a,b)},b=function(a,b){var e=Array.prototype.slice.call(arguments,2);return d(a,function(a){return(c(b)?b||a:a[b]).apply(a,e)})},c=function(a){return Object.prototype.toString.call(a)==="[object Function]"},d=function(a,b){return Array.prototype.map.call(a,b)},e=function(a,b){return d(a,function(a){return a[b]})},f=function(a){var b={},c=a.split(";");for(var d=0;c.length>d;d++){var e=c[d].trim().split("=");b[e[0]]=e[1]}return b},g=function(a,c){return b(e(a,"classList"),"remove",c)},h=function(a,b){a.contentDocument.defaultView.postMessage(b,"*")},i=document.getElementsByTagName("head")[0],j=document.getElementsByTagName("body")[0],k=e(i.querySelectorAll('style[type="text/preview"]'),"innerHTML").join(""),l=e(i.querySelectorAll('script[type="text/preview"]'),"innerHTML").join(""),m=location.href.split("#")[0]+"#__preview__",n=document.createElement("iframe");n.src="data:text/html,",j.appendChild(n),n.addEventListener("load",function(){var b={sameOriginDataUri:!0};try{this.contentDocument,this.contentDocument||(b.sameOriginDataUri=!1)}catch(c){b.sameOriginDataUri=!1}this.parentNode.removeChild(this),a(j.getElementsByTagName("textarea"),function(a,c){o(a,b,c),q(),p(a)})});var o=function(a,b,c){var d,e,f;d=document.createElement("div"),d.appendChild(e=document.createElement("div")),d.className="preview",e.appendChild(f=document.createElement("iframe")),e.className="resizeable",f.setAttribute("scrolling","no"),f.name="iframe"+c++,f.addEventListener("load",function(){var c,d,e,f,g,i,j;j=this.contentDocument;if(!b.sameOriginDataUri&&this.src!==m)return;this.src===m&&(c=j.createElement("html"),c.appendChild(j.createElement("head")),c.appendChild(d=j.createElement("body")),d.innerHTML=a.textContent,j.replaceChild(c,j.documentElement)),g=j.createElement("head"),g.appendChild(f=j.createElement("style")),g.appendChild(e=j.createElement("script")),e.textContent=l,f.textContent=k,i=j.getElementsByTagName("head")[0],i.parentNode.replaceChild(g,i),h(this,"getHeight")});var g;b.sameOriginDataUri?g="data:text/html;charset=utf-8,"+encodeURIComponent("<!doctype html><html><head></head></body>"+a.textContent):g=m,f.setAttribute("src",g);var i=function(){f.contentDocument.body.innerHTML=this.value,h(f,"getHeight")};a.addEventListener("keypress",i),a.addEventListener("keyup",i),a.parentNode.insertBefore(d,a)},p=function(a){var b=document.createElement("div");b.className="preview-code",b.style.position="absolute",b.style.left="-9999px",j.appendChild(b);var c=parseInt(window.getComputedStyle(a).getPropertyValue("max-height"),10),d=function(a){b.textContent=this.value+"\n";var d=b.offsetHeight+2;d>=c?this.style.overflow="auto":this.style.overflow="hidden",this.style.height=b.offsetHeight+2+"px"};a.addEventListener("keypress",d),a.addEventListener("keyup",d),d.call(a)},q=function(){var b=j.getElementsByClassName("settings")[0],c=j.getElementsByClassName("resizeable"),d=30,e=function(b){document.cookie="preview-width="+b,a(c,function(a){b==="auto"&&(b=a.parentNode.offsetWidth),a.style.width=b+"px",h(a.getElementsByTagName("iframe")[0],"getHeight")})},i=f(document.cookie)["preview-width"];if(i){e(i),g(b.getElementsByClassName("is-active"),"is-active");var k=b.querySelector('button[data-width="'+i+'"]');k&&k.classList.add("is-active")}window.addEventListener("message",function(a){if(a.data==null||!a.source)return;var b=a.data,c=document.getElementsByName(a.source.name)[0];b.height!=null&&c&&(c.parentNode.style.height=b.height+d+"px")},!1),b&&c.length>0&&(b.hidden=!1,b.addEventListener("click",function(a){var c=a.target.tagName.toLowerCase(),d;if(c==="button")d=a.target;else{if(c!=="svg")return;d=a.target.parentNode}a.preventDefault(),g(b.getElementsByClassName("is-active"),"is-active"),d.classList.add("is-active");var f=d.dataset.width;e(f)}))}}()})()</script></body></html><!-- Generated with StyleDocco (http://jacobrask.github.com/styledocco). -->
diff --git a/lib/web/css/docs/source/forms.less b/lib/web/css/docs/source/forms.less
index 5563bec8133..64f6da1dbf3 100644
--- a/lib/web/css/docs/source/forms.less
+++ b/lib/web/css/docs/source/forms.less
@@ -814,12 +814,6 @@ textarea {
 //            <td>Form control background clip</td>
 //        </tr>
 //        <tr>
-//            <th>@_outline</th>
-//            <td class="vars_value">@form-element-input-outline<br/>@input-text-outline<br/>@select-outline<br/>@textarea-outline</td>
-//            <td class="vars_value">true [true | false]</td>
-//            <td>Form control outline</td>
-//        </tr>
-//        <tr>
 //            <th colspan="4" class="vars_section">Text settings</th>
 //        </tr>
 //        <tr>
diff --git a/lib/web/css/docs/source/variables.less b/lib/web/css/docs/source/variables.less
index 9bb7bf08304..a615f6a84f9 100644
--- a/lib/web/css/docs/source/variables.less
+++ b/lib/web/css/docs/source/variables.less
@@ -2428,12 +2428,6 @@
 //            <td>Form control background clip</td>
 //        </tr>
 //        <tr>
-//            <th>@_outline</th>
-//            <td class="vars_value">@form-element-input-outline<br/>@input-text-outline<br/>@select-outline<br/>@textarea-outline</td>
-//            <td class="vars_value">true [true | false]</td>
-//            <td>Form control outline</td>
-//        </tr>
-//        <tr>
 //            <th colspan="4" class="vars_section">Text settings</th>
 //        </tr>
 //        <tr>
diff --git a/lib/web/css/docs/variables.html b/lib/web/css/docs/variables.html
index d2d349bf61e..a380e14814e 100644
--- a/lib/web/css/docs/variables.html
+++ b/lib/web/css/docs/variables.html
@@ -2400,12 +2400,6 @@
             <td class="vars_value">padding-box [padding-box | border-box | content-box]</td>
             <td>Form control background clip</td>
         </tr>
-        <tr>
-            <th>@_outline</th>
-            <td class="vars_value">@form-element-input-outline<br/>@input-text-outline<br/>@select-outline<br/>@textarea-outline</td>
-            <td class="vars_value">true [true | false]</td>
-            <td>Form control outline</td>
-        </tr>
         <tr>
             <th colspan="4" class="vars_section">Text settings</th>
         </tr>
diff --git a/lib/web/css/source/lib/buttons.less b/lib/web/css/source/lib/buttons.less
index c004f2c967f..9f6964f6fe2 100644
--- a/lib/web/css/source/lib/buttons.less
+++ b/lib/web/css/source/lib/buttons.less
@@ -112,7 +112,6 @@
             @_button-gradient
         );
         .css(border, @_button-border-active);
-        .tab-focus();
         .css(color, @_button-color-active);
     }
     &:hover {
@@ -213,7 +212,6 @@
     &:focus {
         background: none;
         border: 0;
-        outline: none;
     }
     &.disabled,
     &[disabled],
@@ -250,7 +248,6 @@
     .css(font-weight, @font-weight-base);
     &:focus,
     &:active {
-        .tab-focus();
         background: none;
         border: none;
     }
diff --git a/lib/web/css/source/lib/forms.less b/lib/web/css/source/lib/forms.less
index 15d522129a0..8ca0d8b4735 100644
--- a/lib/web/css/source/lib/forms.less
+++ b/lib/web/css/source/lib/forms.less
@@ -33,7 +33,6 @@
     @_margin: ~"@{@{_type}-margin}",
     @_vertical-align: ~"@{@{_type}-vertical-align}",
     @_background-clip: ~"@{@{_type}-background-clip}",
-    @_outline: ~"@{@{_type}-outline}",
 
     @_font-size:  ~"@{@{_type}-font-size}",
     @_color: ~"@{@{_type}-color}",
@@ -64,7 +63,6 @@
     .css(width, @_width);
     .css(padding, @_padding);
     .css(margin, @_margin);
-    ._form-element-outline(@_outline);
 
     .css(font-size, @_font-size);
     .css(font-family, @_font-family);
@@ -388,10 +386,6 @@
     );
 }
 
-._form-element-outline(@_form-element-outline) when (@_form-element-outline = false) {
-    outline: none;
-}
-
 ._form-element-add-opacity(@_opacity) when not (@_opacity = 1) {
     .css(opacity, @_opacity);
 }
diff --git a/lib/web/css/source/lib/resets.less b/lib/web/css/source/lib/resets.less
index c630893c3d5..978ade89771 100644
--- a/lib/web/css/source/lib/resets.less
+++ b/lib/web/css/source/lib/resets.less
@@ -96,6 +96,25 @@
     address {
         font-style: normal;
     }
+
+    * {
+        &:focus {
+            outline: 0;
+            box-shadow: none;
+        }
+    }
+
+    .focusin *,
+    input:not([disabled]),
+    textarea:not([disabled]),
+    select:not([disabled]) {
+        &:focus {
+            box-shadow: @focus-box-shadow;
+        }
+    }
+
+
+
 }
 
 //
diff --git a/lib/web/css/source/lib/responsive.less b/lib/web/css/source/lib/responsive.less
index a21ab6eb88a..9d88fa5fc34 100644
--- a/lib/web/css/source/lib/responsive.less
+++ b/lib/web/css/source/lib/responsive.less
@@ -25,15 +25,15 @@
 // Small screens only
 .responsive-smaller(@screen-s) {}
 
-@media only screen and (max-width: @screen-xs) {
+@media only screen and (max-width: (@screen-xs - 1)) {
     .responsive-smaller(@screen-xs);
 }
 
-@media only screen and (max-width: @screen-s) {
+@media only screen and (max-width: (@screen-s - 1)) {
     .responsive-smaller(@screen-s);
 }
 
-@media only screen and (max-width: @screen-m) {
+@media only screen and (max-width: (@screen-m - 1)) {
     .responsive-smaller(@screen-m);
 }
 
@@ -51,3 +51,8 @@ print {
 print {
     .responsive(@screen-l);
 }
+
+@media all and (min-width: @screen-xl),
+print {
+    .responsive(@screen-xl);
+}
diff --git a/lib/web/css/source/lib/typography.less b/lib/web/css/source/lib/typography.less
index d6962e22dbc..db7bb778e49 100644
--- a/lib/web/css/source/lib/typography.less
+++ b/lib/web/css/source/lib/typography.less
@@ -152,9 +152,6 @@
         .add-color(@_link-color-active);
         text-decoration: @_link-text-decoration-active;
     }
-    &:focus {
-        .tab-focus();
-    }
 }
 
 .heading(@_heading_level: h1) {
diff --git a/lib/web/css/source/lib/ui-dialog.less b/lib/web/css/source/lib/ui-dialog.less
index db50cf0fc66..8834fd0c7ca 100644
--- a/lib/web/css/source/lib/ui-dialog.less
+++ b/lib/web/css/source/lib/ui-dialog.less
@@ -29,5 +29,4 @@
   .ui-dialog-buttonpane {
     padding: 0;
   }
-  outline: none;
 }
diff --git a/lib/web/css/source/lib/utilities.less b/lib/web/css/source/lib/utilities.less
index 6a97e0e25d1..e6677ca687f 100644
--- a/lib/web/css/source/lib/utilities.less
+++ b/lib/web/css/source/lib/utilities.less
@@ -22,10 +22,6 @@
 //  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
 //  */
 
-.debug() {
-    outline:2px dotted red;
-}
-
 .margin-top-rem(
     @value
 ) when not (@value = false) and not (@value = '') {
@@ -183,17 +179,6 @@
     #gradient > .vertical(@_background-gradient-start-color, @_background-gradient-end-color);
 }
 
-//
-//    WebKit-style focus
-//--------------------------------------
-.tab-focus() {
-    // Default
-    outline: thin dotted;
-    // WebKit
-    outline: 5px auto -webkit-focus-ring-color;
-    outline-offset: -2px;
-}
-
 //
 //    Box-sizing
 //--------------------------------------
diff --git a/lib/web/css/source/lib/variables.less b/lib/web/css/source/lib/variables.less
index 0886947b4b3..242defbc7ea 100644
--- a/lib/web/css/source/lib/variables.less
+++ b/lib/web/css/source/lib/variables.less
@@ -44,6 +44,7 @@
 @panel-bg: darken(@page-bg-color, 6%);
 @color-active: #ff5501;
 @color-error: #e02b27;
+@color-focus: #68a8e0;
 
 @font-family-base: @font-family-sans-serif; // Also used in: @loader-text-font-family
 // setting font-size for HTML tag, use <b>%</b>  units
@@ -184,6 +185,9 @@
 @heading-small-line-height: 1;
 @heading-small-size: (@font-size-xs/@font-size-base) * 100%;
 
+// Focus
+@focus-box-shadow: 0 0 3px 1px @color-focus;
+
 // Code blocks
 @code-font-size: @font-size-s;
 @code-color: @color-primary-darker;
@@ -845,7 +849,6 @@
 @form-element-input-margin: false;
 @form-element-input-vertical-align: baseline;
 @form-element-input-background-clip: padding-box; // border-box, content-box
-@form-element-input-outline: true; // false
 @form-element-input-font-size: @font-size-base;
 @form-element-input-color: false;
 @form-element-input-font-family: @font-family-base;
@@ -886,7 +889,6 @@
 @input-text-margin: @form-element-input-margin;
 @input-text-vertical-align: @form-element-input-vertical-align;
 @input-text-background-clip: @form-element-input-background-clip; // border-box, content-box
-@input-text-outline: @form-element-input-outline; // false
 @input-text-font-size: @form-element-input-font-size;
 @input-text-color: @form-element-input-color;
 @input-text-font-family: @form-element-input-font-family;
@@ -921,7 +923,6 @@
 @select-margin: @form-element-input-margin;
 @select-vertical-align: @form-element-input-vertical-align;
 @select-background-clip: @form-element-input-background-clip; // border-box, content-box
-@select-outline: @form-element-input-outline; // false
 @select-font-size: @form-element-input-font-size;
 @select-color: @form-element-input-color;
 @select-font-family: @form-element-input-font-family;
@@ -956,7 +957,6 @@
 @textarea-margin: 0;
 @textarea-vertical-align: @form-element-input-vertical-align;
 @textarea-background-clip: @form-element-input-background-clip; // border-box, content-box
-@textarea-outline: @form-element-input-outline; // false
 @textarea-font-size: @form-element-input-font-size;
 @textarea-color: @form-element-input-color;
 @textarea-font-family: @form-element-input-font-family;
@@ -1122,7 +1122,7 @@
 @pager-font-size: @font-size-s;
 @pager-font-weight: @font-weight-base;
 @pager-line-height: 32px;
-@pager-item-margin: 0 1px;
+@pager-item-margin: 0 2px 0 0;
 @pager-item-padding: 0 4px;
 @pager-actions-padding: 0;
 
diff --git a/lib/web/mage/gallery.less b/lib/web/mage/gallery.less
index a64d7674812..fef6306df0f 100644
--- a/lib/web/mage/gallery.less
+++ b/lib/web/mage/gallery.less
@@ -78,7 +78,6 @@
     z-index: 9999;
     overflow: hidden;
     background: @page-bg-color;
-    outline: @gallery-lens-border-width solid @gallery-lens-border-color;
     .zoom.inner > img {
         position: absolute;
     }
@@ -212,7 +211,6 @@
         a {
             border: @gallery-thumb-border-width solid transparent;
             display: block;
-            outline: none;
             &.active {
                 border-color: @gallery-thumb-border-color-active;
             }
diff --git a/lib/web/mage/smart-keyboard-handler.js b/lib/web/mage/smart-keyboard-handler.js
new file mode 100644
index 00000000000..fa267cb38b4
--- /dev/null
+++ b/lib/web/mage/smart-keyboard-handler.js
@@ -0,0 +1,58 @@
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Academic Free License (AFL 3.0)
+ * that is bundled with this package in the file LICENSE_AFL.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/afl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
+ */
+define([
+    'jquery'
+], function ($) {
+
+    function KeyboardHandler() {
+        var focusState = false;
+        var tabFocusClass = 'focusin';
+        return {
+            init: SmartKeyboardFocus
+        };
+
+        function SmartKeyboardFocus() {
+            $(document).on('keydown keypress', function (event) {
+                if (event.which === 9 && !focusState) {
+                    $('body')
+                        .on('focusin', onFocusInHandler)
+                        .on('click', onClickHandler);
+                }
+            });
+        }
+
+        function onFocusInHandler() {
+            focusState = true;
+            $('body').addClass(tabFocusClass)
+                .off('focusin', onFocusInHandler);
+        }
+
+        function onClickHandler(event) {
+            focusState = false;
+            $('body').removeClass(tabFocusClass)
+                .off('click', onClickHandler);
+        }
+    }
+
+    return new KeyboardHandler();
+});
diff --git a/lib/web/varien/js.js b/lib/web/varien/js.js
index 8511e8de331..533adcd1d8b 100644
--- a/lib/web/varien/js.js
+++ b/lib/web/varien/js.js
@@ -336,40 +336,6 @@ Varien.searchForm.prototype = {
         }
     }
 }
-/* Varien.Tabs is depricated.
-   IK: 12/17/12
-   Only one usage left in /app/code/Magento/Install/view/install/download.phtml - Questionable becuase that page does not have the markup using CSS class "tabs"
-   Need further investigation
- */
-Varien.Tabs = Class.create();
-Varien.Tabs.prototype = {
-  initialize: function(selector) {
-    var self=this;
-    $$(selector+' a').each(this.initTab.bind(this));
-  },
-
-  initTab: function(el) {
-      el.href = 'javascript:void(0)';
-      if ($(el.parentNode).hasClassName('active')) {
-        this.showContent(el);
-      }
-      el.observe('click', this.showContent.bind(this, el));
-  },
-
-  showContent: function(a) {
-    var li = $(a.parentNode), ul = $(li.parentNode);
-    ul.getElementsBySelector('li', 'ol').each(function(el){
-      var contents = $(el.id+'_contents');
-      if (el==li) {
-        el.addClassName('active');
-        contents.show();
-      } else {
-        el.removeClassName('active');
-        contents.hide();
-      }
-    });
-  }
-}
 
 Varien.DateElement = Class.create();
 Varien.DateElement.prototype = {
diff --git a/setup/config/application.config.php b/setup/config/application.config.php
index e60400759ec..c4fb6dd9eb7 100644
--- a/setup/config/application.config.php
+++ b/setup/config/application.config.php
@@ -22,9 +22,10 @@
  * @license   http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
+use Magento\Setup\Mvc\Bootstrap\InitParamListener;
+
 return [
     'modules' => [
-        'Magento\Config',
         'Magento\Setup',
     ],
     'module_listener_options' => [
@@ -36,4 +37,10 @@ return [
             __DIR__ . '/autoload/{,*.}{global,local}.php',
         ),
     ],
+    'listeners' => ['Magento\Setup\Mvc\Bootstrap\InitParamListener'],
+    'service_manager' => [
+        'factories' => [
+            InitParamListener::BOOTSTRAP_PARAM => 'Magento\Setup\Mvc\Bootstrap\InitParamListener',
+        ]
+    ],
 ];
diff --git a/setup/config/autoload/global.php b/setup/config/autoload/global.php
index 54e90d7edb2..02e1601b752 100644
--- a/setup/config/autoload/global.php
+++ b/setup/config/autoload/global.php
@@ -22,18 +22,12 @@
  * @license   http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  */
 
+use Magento\Framework\App\Bootstrap;
+use Magento\Framework\App\Filesystem\DirectoryList;
+use Magento\Setup\Mvc\Bootstrap\InitParamListener;
+
 return [
-    'parameters' => [
-        'application' => [
-            'base_path' => realpath(__DIR__ . '/../../'),
-        ],
-        'magento' => [
-            'base_path' => realpath(__DIR__ . '/../../../'),
-            'filesystem' => [
-                'module' => '/app/code/',
-                'config' => '/app/etc/',
-                'framework' => '/lib/internal/Magento/Framework/',
-            ],
-        ],
-    ],
+    InitParamListener::BOOTSTRAP_PARAM => [
+        Bootstrap::INIT_PARAM_FILESYSTEM_DIR_PATHS => [DirectoryList::ROOT => [DirectoryList::PATH => BP]]
+    ]
 ];
diff --git a/setup/index.php b/setup/index.php
index de0298447cb..2e1e4e94884 100644
--- a/setup/index.php
+++ b/setup/index.php
@@ -24,6 +24,8 @@
 
 $autoload = __DIR__ . '/vendor/autoload.php';
 
+define('BP', dirname(__DIR__));
+
 if (!file_exists($autoload)) {
     if (PHP_SAPI == 'cli') {
         echo "Dependencies not installed. Please run 'composer install' under /setup directory.\n";
@@ -43,19 +45,4 @@ HTML;
 
 require $autoload;
 
-use Zend\Mvc\Service\ServiceManagerConfig;
-use Zend\ServiceManager\ServiceManager;
-
-$configuration = include "config/application.config.php";
-
-$smConfig = new ServiceManagerConfig();
-$serviceManager = new ServiceManager($smConfig);
-$serviceManager->setService('ApplicationConfig', $configuration);
-
-$serviceManager->setAllowOverride(true);
-$serviceManager->get('ModuleManager')->loadModules();
-$serviceManager->setAllowOverride(false);
-
-$serviceManager->get('Application')
-    ->bootstrap()
-    ->run();
\ No newline at end of file
+\Zend\Mvc\Application::init(require __DIR__ . '/config/application.config.php')->run();
diff --git a/setup/module/Magento/Composer/src/FileResolver.php b/setup/module/Magento/Composer/src/FileResolver.php
index 98dee5b025c..983d4a0af7e 100644
--- a/setup/module/Magento/Composer/src/FileResolver.php
+++ b/setup/module/Magento/Composer/src/FileResolver.php
@@ -26,79 +26,37 @@ namespace Magento\Composer;
 
 use Zend\Stdlib\Glob;
 use Magento\Config\FileResolverInterface;
-use Magento\Config\FileIteratorFactory;
-use Magento\Config\ConfigFactory;
+use Magento\Config\FileIterator;
+use Magento\Framework\App\Filesystem\DirectoryList;
 
 class FileResolver implements FileResolverInterface
 {
     /**
-     * @var \Magento\Config\FileIteratorFactory
-     */
-    protected $iteratorFactory;
-
-    /**
-     * @var \Magento\Config\ConfigFactory
-     */
-    protected $configFactory;
-
-    /**
-     * @var \Magento\Config\Config
+     * Magento application's DirectoryList
+     *
+     * @var DirectoryList
      */
-    protected $config;
+    private $directoryList;
 
     /**
-     * @param \Magento\Config\FileIteratorFactory $iteratorFactory
-     * @param \Magento\Config\ConfigFactory $configFactory
-     * @internal param \Magento\Config\Config $config
+     * Constructor
+     *
+     * @param DirectoryList $directoryList
      */
-    public function __construct(
-        FileIteratorFactory $iteratorFactory,
-        ConfigFactory $configFactory
-    ) {
-        $this->iteratorFactory = $iteratorFactory;
-        $this->configFactory = $configFactory;
-        $this->config = $this->configFactory->create();
+    public function __construct(DirectoryList $directoryList)
+    {
+        $this->directoryList = $directoryList;
     }
 
     /**
      * Collect files and wrap them into an Iterator object
      *
      * @param string $filename
-     * @return array
+     * @return FileIterator
      */
     public function get($filename)
     {
-        $paths = [];
-        $files = $this->getFiles($this->config->getMagentoModulePath() . '*/*/' . $filename);
-        foreach ($files as $file) {
-            $paths[] = $this->getRelativePath($file);
-        }
-        return $this->iteratorFactory->create($this->config->getMagentoBasePath(), $paths);
-    }
-
-    /**
-     * Retrieves relative path
-     *
-     * @param string $path
-     * @return string
-     */
-    protected function getRelativePath($path = null)
-    {
-        $basePath = $this->config->getMagentoBasePath();
-        if (strpos($path, $basePath) === 0
-            || $basePath == $path . '/') {
-            return substr($path, strlen($basePath));
-        } else {
-            return $path;
-        }
-    }
-
-    /**
-     * @param string $path
-     * @return array|false
-     */
-    protected function getFiles($path)
-    {
-        return Glob::glob($this->config->getMagentoBasePath() . $path);
+        $pattern = $this->directoryList->getPath(DirectoryList::MODULES) . '/*/*/' . $filename;
+        return new FileIterator(Glob::glob($pattern));
     }
 }
diff --git a/setup/module/Magento/Config/Module.php b/setup/module/Magento/Config/Module.php
deleted file mode 100644
index e5a51ba1084..00000000000
--- a/setup/module/Magento/Config/Module.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license   http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-
-namespace Magento\Config;
-
-use Zend\ModuleManager\Feature\ConfigProviderInterface;
-
-class Module implements ConfigProviderInterface
-{
-    /**
-     * @return array
-     */
-    public function getConfig()
-    {
-        return include __DIR__ . '/config/module.config.php';
-    }
-
-}
diff --git a/setup/module/Magento/Config/src/Config.php b/setup/module/Magento/Config/src/Config.php
deleted file mode 100644
index 326071a1216..00000000000
--- a/setup/module/Magento/Config/src/Config.php
+++ /dev/null
@@ -1,104 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license   http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-
-namespace Magento\Config;
-
-use Zend\Config\Config as ZendConfig;
-use Zend\Filter\Inflector;
-
-class Config extends ZendConfig
-{
-    /**
-     * @var Inflector
-     */
-    private $inflector;
-
-    /**
-     * @param Inflector $inflector
-     * @param array $array
-     */
-    public function __construct(Inflector $inflector, array $array)
-    {
-        $this->inflector = $inflector;
-        $this->inflector->setTarget(':name')
-            ->setRules([':name' => ['Word\CamelCaseToUnderscore', 'StringToLower']]);
-
-        foreach ($array as $key => $value) {
-            if (is_array($value)) {
-                $this->data[$key] = new static($this->inflector, $value);
-            } else {
-                $this->data[$key] = $value;
-            }
-            $this->count++;
-        }
-    }
-
-    /**
-     * Retrieve a value and return $default if there is no element set.
-     *
-     * @param  string $name
-     * @param  mixed  $default
-     * @return mixed
-     */
-    public function get($name, $default = null)
-    {
-        $name = $this->inflector->filter(['name' => $name]);
-
-        if (array_key_exists($name, $this->data)) {
-            return $this->data[$name];
-        }
-
-        return $default;
-    }
-
-    /**
-     * Retrieve Magento base path
-     *
-     * @return string
-     */
-    public function getMagentoBasePath()
-    {
-        return $this->magento->basePath;
-    }
-
-    /**
-     * Retrieve path to Magento modules
-     *
-     * @return string
-     */
-    public function getMagentoModulePath()
-    {
-        return $this->magento->filesystem->module;
-    }
-
-    /**
-     * Retrieve path to Magento config directory
-     *
-     * @return mixed
-     */
-    public function getMagentoConfigPath()
-    {
-        return $this->magento->filesystem->config;
-    }
-}
diff --git a/setup/module/Magento/Config/src/ConfigFactory.php b/setup/module/Magento/Config/src/ConfigFactory.php
deleted file mode 100644
index d42a00b0901..00000000000
--- a/setup/module/Magento/Config/src/ConfigFactory.php
+++ /dev/null
@@ -1,58 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license   http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-
-namespace Magento\Config;
-
-use Zend\Filter\Inflector;
-use Zend\ServiceManager\ServiceLocatorInterface;
-
-class ConfigFactory
-{
-    /**
-     * @var ServiceLocatorInterface
-     */
-    protected $serviceLocator;
-
-    /**
-     * @var array
-     */
-    protected $configuration = [];
-
-    /**
-     * @param ServiceLocatorInterface $serviceLocator
-     */
-    public function __construct(ServiceLocatorInterface $serviceLocator)
-    {
-        $this->serviceLocator = $serviceLocator;
-        $this->configuration = $this->serviceLocator->get('config')['parameters'];
-    }
-
-    /**
-     * @return Config
-     */
-    public function create()
-    {
-        return new Config(new Inflector(), $this->configuration);
-    }
-}
diff --git a/setup/module/Magento/Config/src/FileIterator.php b/setup/module/Magento/Config/src/FileIterator.php
index 6a4441bfd58..95c8a5daa57 100644
--- a/setup/module/Magento/Config/src/FileIterator.php
+++ b/setup/module/Magento/Config/src/FileIterator.php
@@ -29,23 +29,16 @@ namespace Magento\Config;
  */
 class FileIterator implements \Iterator, \Countable
 {
-    /**
-     * @var string
-     */
-    private $basePath;
-
     /**
      * @var array
      */
     protected $paths = array();
 
     /**
-     * @param string $basePath
      * @param array $paths
      */
-    public function __construct($basePath, array $paths)
+    public function __construct(array $paths)
     {
-        $this->basePath = $basePath;
         $this->paths = $paths;
     }
 
@@ -66,7 +59,7 @@ class FileIterator implements \Iterator, \Countable
      */
     public function current()
     {
-        return file_get_contents($this->basePath . $this->key());
+        return file_get_contents($this->key());
     }
 
     /**
diff --git a/setup/module/Magento/Config/src/FileIteratorFactory.php b/setup/module/Magento/Config/src/FileIteratorFactory.php
deleted file mode 100644
index f41f08030c1..00000000000
--- a/setup/module/Magento/Config/src/FileIteratorFactory.php
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-
-namespace Magento\Config;
-
-class FileIteratorFactory
-{
-    /**
-     * Create file iterator
-     *
-     * @param string $basePath
-     * @param array $paths
-     * @return FileIterator
-     */
-    public function create($basePath, $paths)
-    {
-        return new FileIterator($basePath, $paths);
-    }
-}
diff --git a/setup/module/Magento/Setup/Module.php b/setup/module/Magento/Setup/Module.php
index c5c08cc8a13..9b68b6bcef0 100644
--- a/setup/module/Magento/Setup/Module.php
+++ b/setup/module/Magento/Setup/Module.php
@@ -34,6 +34,7 @@ use Zend\Mvc\MvcEvent;
 use Zend\EventManager\EventInterface;
 use Magento\Setup\Mvc\View\Http\InjectTemplateListener;
 use Magento\Setup\Controller\ConsoleController;
+use Magento\Setup\Mvc\Bootstrap\InitParamListener;
 
 class Module implements
     BootstrapListenerInterface,
@@ -60,16 +61,6 @@ class Module implements
         // Override Zend\Mvc\View\Http\InjectTemplateListener
         // to process templates by Vendor/Module
         $injectTemplateListener = new InjectTemplateListener();
-        $translator = $application->getServiceManager()->get('translator');
-        $sharedEvents->attach(
-            'Zend\Stdlib\DispatchableInterface',
-            MvcEvent::EVENT_DISPATCH,
-            [
-                new \Magento\Setup\Model\Location($translator),
-                'onChangeLocation'
-            ],
-            10
-        );
         $sharedEvents->attach(
             'Zend\Stdlib\DispatchableInterface',
             MvcEvent::EVENT_DISPATCH,
@@ -84,13 +75,15 @@ class Module implements
      */
     public function getConfig()
     {
-        return array_merge(
+        $result = array_merge(
             include __DIR__ . '/config/module.config.php',
             include __DIR__ . '/config/router.config.php',
             include __DIR__ . '/config/di.config.php',
             include __DIR__ . '/config/states.config.php',
             include __DIR__ . '/config/languages.config.php'
         );
+        $result = InitParamListener::attachToConsoleRoutes($result);
+        return $result;
     }
 
     /**
@@ -108,6 +101,6 @@ class Module implements
      */
     public function getConsoleUsage(AdapterInterface $console)
     {
-        return ConsoleController::getConsoleUsage();
+        return array_merge(ConsoleController::getConsoleUsage(), InitParamListener::getConsoleUsage());
     }
 }
diff --git a/setup/module/Magento/Setup/src/Controller/ConsoleController.php b/setup/module/Magento/Setup/src/Controller/ConsoleController.php
index 696d3b4e566..47b23770ac9 100644
--- a/setup/module/Magento/Setup/src/Controller/ConsoleController.php
+++ b/setup/module/Magento/Setup/src/Controller/ConsoleController.php
@@ -29,13 +29,12 @@ use Magento\Setup\Module\Setup\Config;
 use Magento\Setup\Model\InstallerFactory;
 use Magento\Setup\Model\Installer;
 use Magento\Setup\Model\ConsoleLogger;
-use Magento\Webapi\Exception;
 use Zend\Console\Request as ConsoleRequest;
 use Zend\EventManager\EventManagerInterface;
-use Zend\Stdlib\RequestInterface as Request;
 use Zend\Mvc\Controller\AbstractActionController;
 use Magento\Setup\Model\UserConfigurationData as UserConfig;
 use Magento\Setup\Model\AdminAccount;
+use Magento\Framework\App\MaintenanceMode;
 
 /**
  * Controller that handles all setup commands via command line interface.
@@ -55,6 +54,8 @@ class ConsoleController extends AbstractActionController
     const CMD_INSTALL_USER_CONFIG = 'install-user-configuration';
     const CMD_INSTALL_ADMIN_USER = 'install-admin-user';
     const CMD_UPDATE = 'update';
+    const CMD_UNINSTALL = 'uninstall';
+    const CMD_MAINTENANCE = 'maintenance';
     /**#@- */
 
     /**#@+
@@ -79,6 +80,8 @@ class ConsoleController extends AbstractActionController
         self::CMD_INSTALL_USER_CONFIG => 'installUserConfig',
         self::CMD_INSTALL_ADMIN_USER => 'installAdminUser',
         self::CMD_UPDATE => 'update',
+        self::CMD_UNINSTALL => 'uninstall',
+        self::CMD_MAINTENANCE => 'maintenance',
     ];
 
     /**
@@ -94,6 +97,8 @@ class ConsoleController extends AbstractActionController
         self::CMD_INSTALL_USER_CONFIG,
         self::CMD_INSTALL_ADMIN_USER,
         self::CMD_UPDATE,
+        self::CMD_UNINSTALL,
+        self::CMD_MAINTENANCE,
         self::INFO_LOCALES,
         self::INFO_CURRENCIES,
         self::INFO_TIMEZONES,
@@ -172,10 +177,10 @@ class ConsoleController extends AbstractActionController
             . ' [--' . Config::KEY_DB_INIT_STATEMENTS . '=]'
             . ' [--' . Config::KEY_SESSION_SAVE . '=]'
             . ' [--' . Config::KEY_ENCRYPTION_KEY . '=]';
-        $userConfig = '--' . UserConfig::KEY_BASE_URL . '='
-            . ' --' . UserConfig::KEY_LANGUAGE . '='
-            . ' --' . UserConfig::KEY_TIMEZONE . '='
-            . ' --' . UserConfig::KEY_CURRENCY . '='
+        $userConfig = '[--' . UserConfig::KEY_BASE_URL . '=]'
+            . ' [--' . UserConfig::KEY_LANGUAGE . '=]'
+            . ' [--' . UserConfig::KEY_TIMEZONE . '=]'
+            . ' [--' . UserConfig::KEY_CURRENCY . '=]'
             . ' [--' . UserConfig::KEY_USE_SEF_URL . '=]'
             . ' [--' . UserConfig::KEY_IS_SECURE . '=]'
             . ' [--' . UserConfig::KEY_BASE_URL_SECURE . '=]'
@@ -203,6 +208,12 @@ class ConsoleController extends AbstractActionController
                 'usage_short' => self::CMD_UPDATE,
                 'usage_desc' => 'Update database schema and data',
             ],
+            self::CMD_UNINSTALL => [
+                'route' => self::CMD_UNINSTALL,
+                'usage' => '',
+                'usage_short' => self::CMD_UNINSTALL,
+                'usage_desc' => 'Uninstall Magento application',
+            ],
             self::CMD_INSTALL_CONFIG => [
                 'route' => self::CMD_INSTALL_CONFIG . ' ' . $deployConfig,
                 'usage' => $deployConfig,
@@ -233,6 +244,12 @@ class ConsoleController extends AbstractActionController
                 'usage_short' => self::CMD_INSTALL_ADMIN_USER . ' <options>',
                 'usage_desc' => 'Install admin user account',
             ],
+            self::CMD_MAINTENANCE => [
+                'route' => self::CMD_MAINTENANCE . ' [--set=] [--addresses=]',
+                'usage' => '[--set=1|0] [--addresses=127.0.0.1,...|none]',
+                'usage_short' => self::CMD_MAINTENANCE,
+                'usage_desc' => 'Set maintenance mode, optionally for specified addresses',
+            ],
             self::CMD_HELP => [
                 'route' => self::CMD_HELP . ' (' . implode('|', self::$helpOptions) . '):type',
                 'usage' => '<' . implode('|', self::$helpOptions) . '>',
@@ -248,15 +265,18 @@ class ConsoleController extends AbstractActionController
      * @param ConsoleLogger $consoleLogger
      * @param Lists $options
      * @param InstallerFactory $installerFactory
+     * @param MaintenanceMode $maintenanceMode
      */
     public function __construct(
         ConsoleLogger $consoleLogger,
         Lists $options,
-        InstallerFactory $installerFactory
+        InstallerFactory $installerFactory,
+        MaintenanceMode $maintenanceMode
     ) {
         $this->log = $consoleLogger;
         $this->options = $options;
         $this->installer = $installerFactory->create($consoleLogger);
+        $this->maintenanceMode = $maintenanceMode;
     }
 
     /**
@@ -287,13 +307,9 @@ class ConsoleController extends AbstractActionController
      */
     public function installAction()
     {
-        try {
-            /** @var \Zend\Console\Request $request */
-            $request = $this->getRequest();
-            $this->installer->install($request->getParams());
-        } catch (Exception $e) {
-            $this->log->logError($e);
-        }
+        /** @var \Zend\Console\Request $request */
+        $request = $this->getRequest();
+        $this->installer->install($request->getParams());
     }
 
     /**
@@ -370,6 +386,48 @@ class ConsoleController extends AbstractActionController
         $this->installer->installAdminUser($request->getParams());
     }
 
+    /**
+     * Controller for Uninstall Command
+     *
+     * @return void
+     * @throws \Exception
+     */
+    public function uninstallAction()
+    {
+        $this->installer->uninstall();
+    }
+
+    /**
+     * Action for "maintenance" command
+     *
+     * @return void
+     */
+    public function maintenanceAction()
+    {
+        /** @var \Zend\Console\Request $request */
+        $request = $this->getRequest();
+        $set = $request->getParam('set');
+        $addresses = $request->getParam('addresses');
+
+        if (null !== $set) {
+            if (1 == $set) {
+                $this->log->log('Enabling maintenance mode...');
+                $this->maintenanceMode->set(true);
+            } else {
+                $this->log->log('Disabling maintenance mode...');
+                $this->maintenanceMode->set(false);
+            }
+        }
+        if (null !== $addresses) {
+            $addresses = ('none' == $addresses) ? '' : $addresses;
+            $this->maintenanceMode->setAddresses($addresses);
+        }
+
+        $this->log->log('Status: maintenance mode is ' . ($this->maintenanceMode->isOn() ? 'active' : 'not active'));
+        $addresses = implode(', ', $this->maintenanceMode->getAddressInfo());
+        $this->log->log('List of exempt IP-addresses: ' . ($addresses ? $addresses : 'none'));
+    }
+
     /**
      * Shows necessary information for installing Magento
      *
@@ -407,7 +465,7 @@ class ConsoleController extends AbstractActionController
      */
     private function formatCliUsage($text)
     {
-        $result = [];
+        $result = ['required' => [], 'optional' => []];
         foreach (explode(' ', $text) as  $value) {
             if (empty($value)) {
                 continue;
diff --git a/setup/module/Magento/Setup/src/Controller/LandingController.php b/setup/module/Magento/Setup/src/Controller/LandingController.php
index 4a8670cd2ce..cba7469b567 100644
--- a/setup/module/Magento/Setup/src/Controller/LandingController.php
+++ b/setup/module/Magento/Setup/src/Controller/LandingController.php
@@ -27,9 +27,8 @@ namespace Magento\Setup\Controller;
 use Zend\Mvc\Controller\AbstractActionController;
 use Zend\View\Model\ViewModel;
 use Zend\ServiceManager\ServiceLocatorInterface;
-use Magento\Setup\Model\Location;
 use Composer\Json\JsonFile;
-use Magento\Config\ConfigFactory as SystemConfigFactory;
+use Magento\Framework\App\Filesystem\DirectoryList;
 
 class LandingController extends AbstractActionController
 {
@@ -43,32 +42,23 @@ class LandingController extends AbstractActionController
      */
     protected $view;
 
-    /**
-     * @var Location
-     */
-    protected $location;
-
     /**
      * @var array
      */
     protected $composerJson;
 
     /**
-     * @param Location $location
      * @param ServiceLocatorInterface $serviceLocator
      * @param ViewModel $view
-     * @param SystemConfigFactory $systemConfigFactory
+     * @param DirectoryList $directoryList
      */
     public function __construct(
-        Location $location,
         ServiceLocatorInterface $serviceLocator,
         ViewModel $view,
-        SystemConfigFactory $systemConfigFactory
+        DirectoryList $directoryList
     ) {
-        $this->location = $location;
         $this->view = $view;
-        $config = $systemConfigFactory->create();
-        $jsonFile = new JsonFile($config->getMagentoBasePath() . '/composer.json');
+        $jsonFile = new JsonFile($directoryList->getRoot() . '/composer.json');
         $this->composerJson = $jsonFile->read();
     }
 
@@ -79,7 +69,7 @@ class LandingController extends AbstractActionController
     {
         $this->view->setTerminal(true);
         $this->view->setVariable('languages', $this->serviceLocator->get('config')['languages']);
-        $this->view->setVariable('location', $this->location->getLocationCode());
+        $this->view->setVariable('location', 'en_US');
         $this->view->setVariable('version', $this->composerJson['version']);
         return $this->view;
     }
diff --git a/setup/module/Magento/Setup/src/Framework/DB/Adapter/AdapterInterface.php b/setup/module/Magento/Setup/src/Framework/DB/Adapter/AdapterInterface.php
deleted file mode 100644
index a5ca82e852a..00000000000
--- a/setup/module/Magento/Setup/src/Framework/DB/Adapter/AdapterInterface.php
+++ /dev/null
@@ -1,642 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-namespace Magento\Setup\Framework\DB\Adapter;
-
-use Magento\Setup\Framework\DB\Ddl\Table;
-
-/**
- * Magento Database Adapter Interface
- *
- * @author      Magento Core Team <core@magentocommerce.com>
- */
-interface AdapterInterface extends \Zend\Db\Adapter\AdapterInterface
-{
-    const INDEX_TYPE_PRIMARY = 'primary';
-
-    const INDEX_TYPE_UNIQUE = 'unique';
-
-    const INDEX_TYPE_INDEX = 'index';
-
-    const INDEX_TYPE_FULLTEXT = 'fulltext';
-
-    const FK_ACTION_CASCADE = 'CASCADE';
-
-    const FK_ACTION_SET_NULL = 'SET NULL';
-
-    const FK_ACTION_NO_ACTION = 'NO ACTION';
-
-    const FK_ACTION_RESTRICT = 'RESTRICT';
-
-    const FK_ACTION_SET_DEFAULT = 'SET DEFAULT';
-
-    const INSERT_ON_DUPLICATE = 1;
-
-    const INSERT_IGNORE = 2;
-
-    const ISO_DATE_FORMAT = 'yyyy-MM-dd';
-
-    const ISO_DATETIME_FORMAT = 'yyyy-MM-dd HH-mm-ss';
-
-    const INTERVAL_SECOND = 'SECOND';
-
-    const INTERVAL_MINUTE = 'MINUTES';
-
-    const INTERVAL_HOUR = 'HOURS';
-
-    const INTERVAL_DAY = 'DAYS';
-
-    const INTERVAL_MONTH = 'MONTHS';
-
-    const INTERVAL_YEAR = 'YEARS';
-
-    /**
-     * Error message for DDL query in transactions
-     */
-    const ERROR_DDL_MESSAGE = 'DDL statements are not allowed in transactions';
-
-    /**
-     * Error message for unfinished rollBack transaction
-     */
-    const ERROR_ROLLBACK_INCOMPLETE_MESSAGE = 'Rolled back transaction has not been completed correctly.';
-
-    /**
-     * Error message for asymmetric transaction rollback
-     */
-    const ERROR_ASYMMETRIC_ROLLBACK_MESSAGE = 'Asymmetric transaction rollback.';
-
-    /**
-     * Error message for asymmetric transaction commit
-     */
-    const ERROR_ASYMMETRIC_COMMIT_MESSAGE = 'Asymmetric transaction commit.';
-
-    /**
-     * Begin new DB transaction for connection
-     *
-     * @return \Magento\Setup\Framework\DB\Adapter\Pdo\Mysql
-     */
-    public function beginTransaction();
-
-    /**
-     * Commit DB transaction
-     *
-     * @return \Magento\Setup\Framework\DB\Adapter\Pdo\Mysql
-     */
-    public function commit();
-
-    /**
-     * Roll-back DB transaction
-     *
-     * @return \Magento\Setup\Framework\DB\Adapter\Pdo\Mysql
-     */
-    public function rollBack();
-
-    /**
-     * Retrieve DDL object for new table
-     *
-     * @param string $tableName the table name
-     * @param string $schemaName the database or schema name
-     * @return Table
-     */
-    public function newTable($tableName = null, $schemaName = null);
-
-    /**
-     * Create table from DDL object
-     *
-     * @param Table $table
-     * @throws \Zend_Db_Exception
-     * @return \Zend_Db_Statement_Interface
-     */
-    public function createTable(Table $table);
-
-    /**
-     * Drop table from database
-     *
-     * @param string $tableName
-     * @param string $schemaName
-     * @return boolean
-     */
-    public function dropTable($tableName, $schemaName = null);
-
-    /**
-     * Rename several tables
-     *
-     * @param array $tablePairs array('oldName' => 'Name1', 'newName' => 'Name2')
-     *
-     * @return boolean
-     * @throws \Zend_Db_Exception
-     */
-    public function renameTablesBatch(array $tablePairs);
-
-    /**
-     * Truncate a table
-     *
-     * @param string $tableName
-     * @param string $schemaName
-     * @return \Magento\Setup\Framework\DB\Adapter\AdapterInterface
-     */
-    public function truncateTable($tableName, $schemaName = null);
-
-    /**
-     * Checks if table exists
-     *
-     * @param string $tableName
-     * @param string $schemaName
-     * @return boolean
-     */
-    public function isTableExists($tableName, $schemaName = null);
-
-    /**
-     * Returns short table status array
-     *
-     * @param string $tableName
-     * @param string $schemaName
-     * @return array|false
-     */
-    public function showTableStatus($tableName, $schemaName = null);
-
-    /**
-     * Returns the column descriptions for a table.
-     *
-     * The return value is an associative array keyed by the column name,
-     * as returned by the RDBMS.
-     *
-     * The value of each array element is an associative array
-     * with the following keys:
-     *
-     * SCHEMA_NAME      => string; name of database or schema
-     * TABLE_NAME       => string;
-     * COLUMN_NAME      => string; column name
-     * COLUMN_POSITION  => number; ordinal position of column in table
-     * DATA_TYPE        => string; SQL datatype name of column
-     * DEFAULT          => string; default expression of column, null if none
-     * NULLABLE         => boolean; true if column can have nulls
-     * LENGTH           => number; length of CHAR/VARCHAR
-     * SCALE            => number; scale of NUMERIC/DECIMAL
-     * PRECISION        => number; precision of NUMERIC/DECIMAL
-     * UNSIGNED         => boolean; unsigned property of an integer type
-     * PRIMARY          => boolean; true if column is part of the primary key
-     * PRIMARY_POSITION => integer; position of column in primary key
-     * IDENTITY         => integer; true if column is auto-generated with unique values
-     *
-     * @param string $tableName
-     * @param string $schemaName OPTIONAL
-     * @return array
-     */
-    public function describeTable($tableName, $schemaName = null);
-
-    /**
-     * Create \Magento\Setup\Framework\DB\Ddl\Table object by data from describe table
-     *
-     * @param string $tableName
-     * @param string $newTableName
-     * @return Table
-     */
-    public function createTableByDdl($tableName, $newTableName);
-
-    /**
-     * Modify the column definition by data from describe table
-     *
-     * @param string $tableName
-     * @param string $columnName
-     * @param array|string $definition
-     * @param boolean $flushData
-     * @param string $schemaName
-     * @return \Magento\Setup\Framework\DB\Adapter\Pdo\Mysql
-     */
-    public function modifyColumnByDdl($tableName, $columnName, $definition, $flushData = false, $schemaName = null);
-
-    /**
-     * Rename table
-     *
-     * @param string $oldTableName
-     * @param string $newTableName
-     * @param string $schemaName
-     * @return boolean
-     */
-    public function renameTable($oldTableName, $newTableName, $schemaName = null);
-
-    /**
-     * Adds new column to the table.
-     *
-     * Generally $defintion must be array with column data to keep this call cross-DB compatible.
-     * Using string as $definition is allowed only for concrete DB adapter.
-     *
-     * @param string $tableName
-     * @param string $columnName
-     * @param array|string $definition  string specific or universal array DB Server definition
-     * @param string $schemaName
-     * @return \Magento\Setup\Framework\DB\Adapter\AdapterInterface
-     */
-    public function addColumn($tableName, $columnName, $definition, $schemaName = null);
-
-    /**
-     * Change the column name and definition
-     *
-     * For change definition of column - use modifyColumn
-     *
-     * @param string $tableName
-     * @param string $oldColumnName
-     * @param string $newColumnName
-     * @param array|string $definition
-     * @param boolean $flushData        flush table statistic
-     * @param string $schemaName
-     * @return \Magento\Setup\Framework\DB\Adapter\AdapterInterface
-     */
-    public function changeColumn(
-        $tableName,
-        $oldColumnName,
-        $newColumnName,
-        $definition,
-        $flushData = false,
-        $schemaName = null
-    );
-
-    /**
-     * Modify the column definition
-     *
-     * @param string $tableName
-     * @param string $columnName
-     * @param array|string $definition
-     * @param boolean $flushData
-     * @param string $schemaName
-     * @return \Magento\Setup\Framework\DB\Adapter\AdapterInterface
-     */
-    public function modifyColumn($tableName, $columnName, $definition, $flushData = false, $schemaName = null);
-
-    /**
-     * Drop the column from table
-     *
-     * @param string $tableName
-     * @param string $columnName
-     * @param string $schemaName
-     * @return boolean
-     */
-    public function dropColumn($tableName, $columnName, $schemaName = null);
-
-    /**
-     * Check is table column exists
-     *
-     * @param string $tableName
-     * @param string $columnName
-     * @param string $schemaName
-     * @return boolean
-     */
-    public function tableColumnExists($tableName, $columnName, $schemaName = null);
-
-    /**
-     * Add new index to table name
-     *
-     * @param string $tableName
-     * @param string $indexName
-     * @param string|array $fields  the table column name or array of ones
-     * @param string $indexType     the index type
-     * @param string $schemaName
-     * @return \Zend_Db_Statement_Interface
-     */
-    public function addIndex($tableName, $indexName, $fields, $indexType = self::INDEX_TYPE_INDEX, $schemaName = null);
-
-    /**
-     * Drop the index from table
-     *
-     * @param string $tableName
-     * @param string $keyName
-     * @param string $schemaName
-     * @return bool|\Zend_Db_Statement_Interface
-     */
-    public function dropIndex($tableName, $keyName, $schemaName = null);
-
-    /**
-     * Returns the table index information
-     *
-     * The return value is an associative array keyed by the UPPERCASE index key (except for primary key,
-     * that is always stored under 'PRIMARY' key) as returned by the RDBMS.
-     *
-     * The value of each array element is an associative array
-     * with the following keys:
-     *
-     * SCHEMA_NAME      => string; name of database or schema
-     * TABLE_NAME       => string; name of the table
-     * KEY_NAME         => string; the original index name
-     * COLUMNS_LIST     => array; array of index column names
-     * INDEX_TYPE       => string; lowercase, create index type
-     * INDEX_METHOD     => string; index method using
-     * type             => string; see INDEX_TYPE
-     * fields           => array; see COLUMNS_LIST
-     *
-     * @param string $tableName
-     * @param string $schemaName
-     * @return array
-     */
-    public function getIndexList($tableName, $schemaName = null);
-
-    /**
-     * Add new Foreign Key to table
-     * If Foreign Key with same name is exist - it will be deleted
-     *
-     * @param string $fkName
-     * @param string $tableName
-     * @param string $columnName
-     * @param string $refTableName
-     * @param string $refColumnName
-     * @param string $onDelete
-     * @param string $onUpdate
-     * @param boolean $purge trying remove invalid data
-     * @param string $schemaName
-     * @param string $refSchemaName
-     * @return \Magento\Setup\Framework\DB\Adapter\AdapterInterface
-     *
-     * @SuppressWarnings(PHPMD.ExcessiveParameterList)
-     */
-    public function addForeignKey(
-        $fkName,
-        $tableName,
-        $columnName,
-        $refTableName,
-        $refColumnName,
-        $onDelete = self::FK_ACTION_CASCADE,
-        $onUpdate = self::FK_ACTION_CASCADE,
-        $purge = false,
-        $schemaName = null,
-        $refSchemaName = null
-    );
-
-    /**
-     * Drop the Foreign Key from table
-     *
-     * @param string $tableName
-     * @param string $fkName
-     * @param string $schemaName
-     * @return \Magento\Setup\Framework\DB\Adapter\AdapterInterface
-     */
-    public function dropForeignKey($tableName, $fkName, $schemaName = null);
-
-    /**
-     * Retrieve the foreign keys descriptions for a table.
-     *
-     * The return value is an associative array keyed by the UPPERCASE foreign key,
-     * as returned by the RDBMS.
-     *
-     * The value of each array element is an associative array
-     * with the following keys:
-     *
-     * FK_NAME          => string; original foreign key name
-     * SCHEMA_NAME      => string; name of database or schema
-     * TABLE_NAME       => string;
-     * COLUMN_NAME      => string; column name
-     * REF_SCHEMA_NAME  => string; name of reference database or schema
-     * REF_TABLE_NAME   => string; reference table name
-     * REF_COLUMN_NAME  => string; reference column name
-     * ON_DELETE        => string; action type on delete row
-     * ON_UPDATE        => string; action type on update row
-     *
-     * @param string $tableName
-     * @param string $schemaName
-     * @return array
-     */
-    public function getForeignKeys($tableName, $schemaName = null);
-
-    /**
-     * Creates and returns a new \Magento\Setup\Framework\DB\Select object for this adapter.
-     *
-     * @return \Zend\Db\Sql\Select
-     */
-    public function select();
-
-    /**
-     * Inserts a table row with specified data.
-     *
-     * @param mixed $table The table to insert data into.
-     * @param array $bind Column-value pairs.
-     * @return int The number of affected rows.
-     */
-    public function insert($table, array $bind);
-
-    /**
-     * Inserts a table row with specified data
-     * Special for Zero values to identity column
-     *
-     * @param string $table
-     * @param array $bind
-     * @return int The number of affected rows.
-     */
-    public function insertForce($table, array $bind);
-
-    /**
-     * Updates table rows with specified data based on a WHERE clause.
-     *
-     * @param  mixed        $table The table to update.
-     * @param  array        $bind  Column-value pairs.
-     * @param  mixed        $where UPDATE WHERE clause(s).
-     * @return int          The number of affected rows.
-     */
-    public function update($table, array $bind, $where = '');
-
-    /**
-     * Deletes table rows based on a WHERE clause.
-     *
-     * @param  mixed        $table The table to update.
-     * @param  mixed        $where DELETE WHERE clause(s).
-     * @return int          The number of affected rows.
-     */
-    public function delete($table, $where = '');
-
-    /**
-     * Prepares and executes an SQL statement with bound data.
-     *
-     * @param  mixed  $sql  The SQL statement with placeholders.
-     * @param  mixed  $bind An array of data or data itself to bind to the placeholders.
-     * @return \Zend\Db\Adapter\Driver\StatementInterface
-     */
-    public function query($sql, $bind = array());
-
-    /**
-     * Safely quotes a value for an SQL statement.
-     *
-     * If an array is passed as the value, the array values are quoted
-     * and then returned as a comma-separated string.
-     *
-     * @param mixed $value The value to quote.
-     * @param mixed $type  OPTIONAL the SQL datatype name, or constant, or null.
-     * @return mixed An SQL-safe quoted value (or string of separated values).
-     */
-    public function quote($value, $type = null);
-
-    /**
-     * Quotes a value and places into a piece of text at a placeholder.
-     *
-     * The placeholder is a question-mark; all placeholders will be replaced
-     * with the quoted value.   For example:
-     *
-     * <code>
-     * $text = "WHERE date < ?";
-     * $date = "2005-01-02";
-     * $safe = $sql->quoteInto($text, $date);
-     * // $safe = "WHERE date < '2005-01-02'"
-     * </code>
-     *
-     * @param string  $text  The text with a placeholder.
-     * @param mixed   $value The value to quote.
-     * @param string  $type  OPTIONAL SQL datatype
-     * @param integer $count OPTIONAL count of placeholders to replace
-     * @return string An SQL-safe quoted value placed into the original text.
-     */
-    public function quoteInto($text, $value, $type = null, $count = null);
-
-    /**
-     * Quotes an identifier.
-     *
-     * Accepts a string representing a qualified indentifier. For Example:
-     * <code>
-     * $adapter->quoteIdentifier('myschema.mytable')
-     * </code>
-     * Returns: "myschema"."mytable"
-     *
-     * Or, an array of one or more identifiers that may form a qualified identifier:
-     * <code>
-     * $adapter->quoteIdentifier(array('myschema','my.table'))
-     * </code>
-     * Returns: "myschema"."my.table"
-     *
-     * The actual quote character surrounding the identifiers may vary depending on
-     * the adapter.
-     *
-     * @param string|array|\Zend_Db_Expr $ident The identifier.
-     * @param boolean $auto If true, heed the AUTO_QUOTE_IDENTIFIERS config option.
-     * @return string The quoted identifier.
-     */
-    public function quoteIdentifier($ident, $auto = false);
-
-    /**
-     * Run additional environment before setup
-     *
-     * @return \Magento\Setup\Framework\DB\Adapter\AdapterInterface
-     */
-    public function startSetup();
-
-    /**
-     * Run additional environment after setup
-     *
-     * @return \Magento\Setup\Framework\DB\Adapter\AdapterInterface
-     */
-    public function endSetup();
-
-    /**
-     * Build SQL statement for condition
-     *
-     * If $condition integer or string - exact value will be filtered ('eq' condition)
-     *
-     * If $condition is array - one of the following structures is expected:
-     * - array("from" => $fromValue, "to" => $toValue)
-     * - array("eq" => $equalValue)
-     * - array("neq" => $notEqualValue)
-     * - array("like" => $likeValue)
-     * - array("in" => array($inValues))
-     * - array("nin" => array($notInValues))
-     * - array("notnull" => $valueIsNotNull)
-     * - array("null" => $valueIsNull)
-     * - array("moreq" => $moreOrEqualValue)
-     * - array("gt" => $greaterValue)
-     * - array("lt" => $lessValue)
-     * - array("gteq" => $greaterOrEqualValue)
-     * - array("lteq" => $lessOrEqualValue)
-     * - array("finset" => $valueInSet)
-     * - array("regexp" => $regularExpression)
-     * - array("seq" => $stringValue)
-     * - array("sneq" => $stringValue)
-     *
-     * If non matched - sequential array is expected and OR conditions
-     * will be built using above mentioned structure
-     *
-     * @param string $fieldName
-     * @param integer|string|array $condition
-     * @return string
-     */
-    public function prepareSqlCondition($fieldName, $condition);
-
-    /**
-     * Retrieve valid table name
-     * Check table name length and allowed symbols
-     *
-     * @param string $tableName
-     * @return string
-     */
-    public function getTableName($tableName);
-
-    /**
-     * Retrieve valid index name
-     * Check index name length and allowed symbols
-     *
-     * @param string $tableName
-     * @param string|array $fields  the columns list
-     * @param string $indexType
-     * @return string
-     */
-    public function getIndexName($tableName, $fields, $indexType = '');
-
-    /**
-     * Retrieve valid foreign key name
-     * Check foreign key name length and allowed symbols
-     *
-     * @param string $priTableName
-     * @param string $priColumnName
-     * @param string $refTableName
-     * @param string $refColumnName
-     * @return string
-     */
-    public function getForeignKeyName($priTableName, $priColumnName, $refTableName, $refColumnName);
-
-    /**
-     * Return array of table(s) checksum as table name - checksum pairs
-     *
-     * @param array|string $tableNames
-     * @param string $schemaName
-     * @return array
-     */
-    public function getTablesChecksum($tableNames, $schemaName = null);
-
-    /**
-     * Try to find installed primary key name, if not - formate new one.
-     *
-     * @param string $tableName Table name
-     * @param string $schemaName OPTIONAL
-     * @return string Primary Key name
-     */
-    public function getPrimaryKeyName($tableName, $schemaName = null);
-
-    /**
-     * Get adapter transaction level state. Return 0 if all transactions are complete
-     *
-     * @return int
-     */
-    public function getTransactionLevel();
-
-    /**
-     * Drop trigger from database
-     *
-     * @param string $triggerName
-     * @param string|null $schemaName
-     * @return bool
-     */
-    public function dropTrigger($triggerName, $schemaName = null);
-}
diff --git a/setup/module/Magento/Setup/src/Framework/DB/Adapter/Pdo/Mysql.php b/setup/module/Magento/Setup/src/Framework/DB/Adapter/Pdo/Mysql.php
deleted file mode 100644
index 2fcc49bb11c..00000000000
--- a/setup/module/Magento/Setup/src/Framework/DB/Adapter/Pdo/Mysql.php
+++ /dev/null
@@ -1,2789 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-namespace Magento\Setup\Framework\DB\Adapter\Pdo;
-
-use Magento\Framework\Filesystem;
-use Magento\Setup\Framework\DB\Adapter\AdapterInterface;
-use Magento\Setup\Framework\DB\Ddl\Table;
-use \Magento\Framework\DB\ExpressionConverter;
-use Zend\Db\Adapter\Adapter;
-use Zend\Db\Adapter\Driver\StatementInterface;
-use Zend\Db\Adapter\Driver;
-use Zend\Db\Exception\ErrorException;
-use Zend\Db\Exception\InvalidArgumentException;
-use Zend\Db\Adapter\Exception;
-use Zend\Db\Adapter\ParameterContainer;
-use Zend\Db\Adapter\Platform;
-use Zend\Db\Adapter\Profiler;
-use Zend\Db\ResultSet;
-use Zend\Db\Sql\Expression;
-use Zend\Db\Sql\Sql;
-use Magento\Setup\Model\FilesystemFactory;
-
-class Mysql extends Adapter implements AdapterInterface
-{
-    const DEBUG_CONNECT         = 0;
-    const DEBUG_TRANSACTION     = 1;
-    const DEBUG_QUERY           = 2;
-
-
-    const LENGTH_TABLE_NAME     = 64;
-    const LENGTH_INDEX_NAME     = 64;
-    const LENGTH_FOREIGN_NAME   = 64;
-
-    /**
-     * MEMORY engine type for MySQL tables
-     */
-    const ENGINE_MEMORY = 'MEMORY';
-
-    /**
-     * Maximum number of connection retries
-     */
-    const MAX_CONNECTION_RETRIES = 10;
-
-    /**
-     * Current Transaction Level
-     *
-     * @var int
-     */
-    protected $_transactionLevel = 0;
-
-    /**
-     * Whether transaction was rolled back or not
-     *
-     * @var bool
-     */
-    protected $_isRolledBack = false;
-
-    /**
-     * Set attribute to connection flag
-     *
-     * @var bool
-     */
-    protected $_connectionFlagsSet  = false;
-
-
-
-    /**
-     * SQL bind params. Used temporarily by regexp callback.
-     *
-     * @var array
-     */
-    protected $_bindParams = [];
-
-    /**
-     * Autoincrement for bind value. Used by regexp callback.
-     *
-     * @var int
-     */
-    protected $_bindIncrement = 0;
-
-    /**
-     * Write SQL debug data to file
-     *
-     * @var bool
-     */
-    protected $_debug = false;
-
-    /**
-     * Minimum query duration time to be logged
-     *
-     * @var float
-     */
-    protected $_logQueryTime = 0.05;
-
-    /**
-     * Log all queries (ignored minimum query duration time)
-     *
-     * @var bool
-     */
-    protected $_logAllQueries = false;
-
-    /**
-     * Add to log call stack data (backtrace)
-     *
-     * @var bool
-     */
-    protected $_logCallStack = false;
-
-    /**
-     * Path to SQL debug data log
-     *
-     * @var string
-     */
-    protected $_debugFile = '/debug/pdo_mysql.log';
-
-    /**
-     * Filesystem class
-     *
-     * @var Filesystem
-     */
-    protected $_filesystem;
-
-    /**
-     * Debug timer start value
-     *
-     * @var float
-     */
-    protected $_debugTimer = 0;
-
-    /**
-     * MySQL column - Table DDL type pairs
-     *
-     * @var array
-     */
-    protected $_ddlColumnTypes      = array(
-        Table::TYPE_BOOLEAN       => 'bool',
-        Table::TYPE_SMALLINT      => 'smallint',
-        Table::TYPE_INTEGER       => 'int',
-        Table::TYPE_BIGINT        => 'bigint',
-        Table::TYPE_FLOAT         => 'float',
-        Table::TYPE_DECIMAL       => 'decimal',
-        Table::TYPE_NUMERIC       => 'decimal',
-        Table::TYPE_DATE          => 'date',
-        Table::TYPE_TIMESTAMP     => 'timestamp',
-        Table::TYPE_DATETIME      => 'datetime',
-        Table::TYPE_TEXT          => 'text',
-        Table::TYPE_BLOB          => 'blob',
-        Table::TYPE_VARBINARY     => 'blob'
-    );
-
-    /**
-     * All possible DDL statements
-     * First 3 symbols for each statement
-     *
-     * @var string[]
-     */
-    protected $_ddlRoutines = array('alt', 'cre', 'ren', 'dro', 'tru');
-
-    /**
-     * Contructor to create
-     *
-     * @param array|Driver\DriverInterface $driver
-     * @param Platform\PlatformInterface $platform
-     * @param ResultSet\ResultSetInterface $queryResultPrototype
-     * @param Profiler\ProfilerInterface $profiler
-     * @param FilesystemFactory $filesystemFactory
-     */
-    public function __construct(
-        $driver,
-        Platform\PlatformInterface $platform = null,
-        ResultSet\ResultSetInterface $queryResultPrototype = null,
-        Profiler\ProfilerInterface $profiler = null,
-        FilesystemFactory $filesystemFactory = null
-    ) {
-        if ($filesystemFactory !== null) {
-            $this->_filesystem = $filesystemFactory->create();
-        }
-        parent::__construct($driver, $platform, $queryResultPrototype, $profiler);
-    }
-
-    /**
-     * Begin new DB transaction for connection
-     *
-     * @return $this
-     * @throws \Exception
-     */
-    public function beginTransaction()
-    {
-        if ($this->_isRolledBack) {
-            throw new \Exception(AdapterInterface::ERROR_ROLLBACK_INCOMPLETE_MESSAGE);
-        }
-        if ($this->_transactionLevel === 0) {
-            $this->_debugTimer();
-            $this->getDriver()->getConnection()->beginTransaction();
-            $this->_debugStat(self::DEBUG_TRANSACTION, 'BEGIN');
-        }
-        ++$this->_transactionLevel;
-        return $this;
-    }
-
-    /**
-     * Commit DB transaction
-     *
-     * @return $this
-     * @throws \Exception
-     */
-    public function commit()
-    {
-        if ($this->_transactionLevel === 1 && !$this->_isRolledBack) {
-            $this->_debugTimer();
-            $this->getDriver()->getConnection()->commit();
-            $this->_debugStat(self::DEBUG_TRANSACTION, 'COMMIT');
-        } elseif ($this->_transactionLevel === 0) {
-            throw new \Exception(AdapterInterface::ERROR_ASYMMETRIC_COMMIT_MESSAGE);
-        } elseif ($this->_isRolledBack) {
-            throw new \Exception(AdapterInterface::ERROR_ROLLBACK_INCOMPLETE_MESSAGE);
-        }
-        --$this->_transactionLevel;
-        return $this;
-    }
-
-    /**
-     * Rollback DB transaction
-     *
-     * @return $this
-     * @throws \Exception
-     */
-    public function rollBack()
-    {
-        if ($this->_transactionLevel === 1) {
-            $this->_debugTimer();
-            $this->getDriver()->getConnection()->rollBack();
-            $this->_isRolledBack = false;
-            $this->_debugStat(self::DEBUG_TRANSACTION, 'ROLLBACK');
-        } elseif ($this->_transactionLevel === 0) {
-            throw new \Exception(AdapterInterface::ERROR_ASYMMETRIC_ROLLBACK_MESSAGE);
-        } else {
-            $this->_isRolledBack = true;
-        }
-        --$this->_transactionLevel;
-        return $this;
-    }
-
-    /**
-     * Get adapter transaction level state. Return 0 if all transactions are complete
-     *
-     * @return int
-     */
-    public function getTransactionLevel()
-    {
-        return $this->_transactionLevel;
-    }
-
-    /**
-     * Creates a PDO object and connects to the database.
-     *
-     * @return void
-     * @throws ErrorException
-     */
-    public function connect()
-    {
-        if ($this->getDriver()->getConnection()->isConnected()) {
-            return;
-        }
-
-        $this->_debugTimer();
-        $this->getDriver()->getConnection()->connect();
-        $this->_debugStat(self::DEBUG_CONNECT, '');
-    }
-
-    /**
-     * Run RAW Query
-     *
-     * @param string $sql
-     * @return StatementInterface
-     * @throws \PDOException
-     */
-    public function rawQuery($sql)
-    {
-        try {
-            $result = $this->query($sql);
-        } catch (InvalidArgumentException $e) {
-            // Convert to \PDOException to maintain backwards compatibility with usage of MySQL adapter
-            $e = $e->getPrevious();
-            if (!($e instanceof \PDOException)) {
-                $e = new \PDOException($e->getMessage(), $e->getCode());
-            }
-            throw $e;
-        }
-
-        return $result;
-    }
-
-    /**
-     * Fetch all queries
-     *
-     * @param \Zend\Db\Sql\Select $sql
-     * @param array $bind
-     * @param null $fetchMode
-     * @return StatementInterface|ResultSet\ResultSetInterface
-     */
-    public function fetchAll($sql, $bind = array(), $fetchMode = null)
-    {
-        if ($sql instanceof \Zend\Db\Sql\Select) {
-            $sql = $sql->getSqlString($this->getPlatform());
-        }
-        return $this->query($sql);
-    }
-
-    /**
-     * Run RAW query and Fetch First row
-     *
-     * @param string $sql
-     * @param string|int $field
-     * @return mixed|null
-     */
-    public function rawFetchRow($sql, $field = null)
-    {
-        $result = $this->rawQuery($sql);
-
-        if ($result instanceof ResultSet\ResultSetInterface && $result->count()) {
-            $resultSet = new ResultSet\ResultSet;
-            $resultSet->initialize($result);
-
-            $row = $resultSet->toArray();
-
-            if (empty($field)) {
-                return $row;
-            } else {
-                return isset($row[0][$field]) ? $row[0][$field] : false;
-            }
-        } else {
-            return false;
-        }
-    }
-
-    /**
-     * Check transaction level in case of DDL query
-     *
-     * @param string $sql
-     * @return void
-     * @throws \Zend_Db_Adapter_Exception
-     */
-    protected function _checkDdlTransaction($sql)
-    {
-        if (is_string($sql) && $this->getTransactionLevel() > 0) {
-            $startSql = strtolower(substr(ltrim($sql), 0, 3));
-            if (in_array($startSql, $this->_ddlRoutines)) {
-                trigger_error(AdapterInterface::ERROR_DDL_MESSAGE, E_USER_ERROR);
-            }
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function query(
-        $sql,
-        $parametersOrQueryMode = self::QUERY_MODE_EXECUTE,
-        ResultSet\ResultSetInterface $resultPrototype = null
-    ) {
-        return parent::query($sql, $parametersOrQueryMode, $resultPrototype);
-    }
-
-    /**
-     * Drop the Foreign Key from table
-     *
-     * @param string $tableName
-     * @param string $fkName
-     * @param string $schemaName
-     * @return $this
-     */
-    public function dropForeignKey($tableName, $fkName, $schemaName = null)
-    {
-        $foreignKeys = $this->getForeignKeys($tableName, $schemaName);
-        $fkName = strtoupper($fkName);
-        if (substr($fkName, 0, 3) == 'FK_') {
-            $fkName = substr($fkName, 3);
-        }
-        foreach (array($fkName, 'FK_' . $fkName) as $key) {
-            if (isset($foreignKeys[$key])) {
-                $sql = sprintf(
-                    'ALTER TABLE %s DROP FOREIGN KEY %s',
-                    $this->getPlatform()->quoteIdentifierChain($this->_getTableName($tableName)),
-                    $this->quoteIdentifier($foreignKeys[$key]['FK_NAME'])
-                );
-                $this->rawQuery($sql);
-            }
-        }
-        return $this;
-    }
-
-    /**
-     * Prepare table before add constraint foreign key
-     *
-     * @param string $tableName
-     * @param string $columnName
-     * @param string $refTableName
-     * @param string $refColumnName
-     * @param string $onDelete
-     * @return $this
-     */
-    public function purgeOrphanRecords(
-        $tableName,
-        $columnName,
-        $refTableName,
-        $refColumnName,
-        $onDelete = AdapterInterface::FK_ACTION_CASCADE
-    ) {
-        $onDelete = strtoupper($onDelete);
-        if ($onDelete == AdapterInterface::FK_ACTION_CASCADE
-            || $onDelete == AdapterInterface::FK_ACTION_RESTRICT
-        ) {
-            $sql = sprintf(
-                "DELETE p.* FROM %s AS p LEFT JOIN %s AS r ON p.%s = r.%s WHERE r.%s IS NULL",
-                $this->quoteIdentifier($tableName),
-                $this->quoteIdentifier($refTableName),
-                $this->quoteIdentifier($columnName),
-                $this->quoteIdentifier($refColumnName),
-                $this->quoteIdentifier($refColumnName)
-            );
-            $this->rawQuery($sql);
-        } elseif ($onDelete == AdapterInterface::FK_ACTION_SET_NULL) {
-            $sql = sprintf(
-                "UPDATE %s AS p LEFT JOIN %s AS r ON p.%s = r.%s SET p.%s = NULL WHERE r.%s IS NULL",
-                $this->quoteIdentifier($tableName),
-                $this->quoteIdentifier($refTableName),
-                $this->quoteIdentifier($columnName),
-                $this->quoteIdentifier($refColumnName),
-                $this->quoteIdentifier($columnName),
-                $this->quoteIdentifier($refColumnName)
-            );
-            $this->query($sql);
-        }
-
-        return $this;
-    }
-
-    /**
-     * Check does table column exist
-     *
-     * @param string $tableName
-     * @param string $columnName
-     * @param string $schemaName
-     * @return bool
-     */
-    public function tableColumnExists($tableName, $columnName, $schemaName = null)
-    {
-        $describe = $this->describeTable($tableName, $schemaName);
-        foreach ($describe as $column) {
-            if ($column['COLUMN_NAME'] == $columnName) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Adds new column to table.
-     *
-     * Generally $defintion must be array with column data to keep this call cross-DB compatible.
-     * Using string as $definition is allowed only for concrete DB adapter.
-     * Adds primary key if needed
-     *
-     * @param   string $tableName
-     * @param   string $columnName
-     * @param   array|string $definition  string specific or universal array DB Server definition
-     * @param   string $schemaName
-     * @return  true|StatementInterface
-     * @throws  ErrorException
-     */
-    public function addColumn($tableName, $columnName, $definition, $schemaName = null)
-    {
-        if ($this->tableColumnExists($tableName, $columnName, $schemaName)) {
-            return true;
-        }
-
-        $primaryKey = '';
-        if (is_array($definition)) {
-            $definition = array_change_key_case($definition, CASE_UPPER);
-            if (empty($definition['COMMENT'])) {
-                throw new ErrorException("Impossible to create a column without comment.");
-            }
-            if (!empty($definition['PRIMARY'])) {
-                $primaryKey = sprintf(', ADD PRIMARY KEY (%s)', $this->quoteIdentifier($columnName));
-            }
-            $definition = $this->_getColumnDefinition($definition);
-        }
-
-        $sql = sprintf(
-            'ALTER TABLE %s ADD COLUMN %s %s %s',
-            $this->getPlatform()->quoteIdentifierChain($tableName),
-            $this->quoteIdentifier($columnName),
-            $definition,
-            $primaryKey
-        );
-
-        $result = $this->query($sql);
-
-        return $result;
-    }
-
-    /**
-     * Delete table column
-     *
-     * @param string $tableName
-     * @param string $columnName
-     * @param string $schemaName
-     * @return true|StatementInterface
-     */
-    public function dropColumn($tableName, $columnName, $schemaName = null)
-    {
-        if (!$this->tableColumnExists($tableName, $columnName, $schemaName)) {
-            return true;
-        }
-
-        $alterDrop = array();
-
-        $foreignKeys = $this->getForeignKeys($tableName, $schemaName);
-        foreach ($foreignKeys as $fkProp) {
-            if ($fkProp['COLUMN_NAME'] == $columnName) {
-                $alterDrop[] = 'DROP FOREIGN KEY ' . $this->quoteIdentifier($fkProp['FK_NAME']);
-            }
-        }
-
-        /* drop index that after column removal would coincide with the existing index by indexed columns */
-        foreach ($this->getIndexList($tableName, $schemaName) as $idxData) {
-            $idxColumns = $idxData['COLUMNS_LIST'];
-            $idxColumnKey = array_search($columnName, $idxColumns);
-            if ($idxColumnKey !== false) {
-                unset($idxColumns[$idxColumnKey]);
-                if ($idxColumns && $this->_getIndexByColumns($tableName, $idxColumns, $schemaName)) {
-                    $this->dropIndex($tableName, $idxData['KEY_NAME'], $schemaName);
-                }
-            }
-        }
-
-        $alterDrop[] = 'DROP COLUMN ' . $this->quoteIdentifier($columnName);
-        $sql = sprintf(
-            'ALTER TABLE %s %s',
-            $this->getPlatform()->quoteIdentifierChain($tableName),
-            implode(', ', $alterDrop)
-        );
-
-        $result = $this->query($sql);
-
-        return $result;
-    }
-
-    /**
-     * Retrieve index information by indexed columns or return NULL, if there is no index for a column list
-     *
-     * @param string $tableName
-     * @param array $columns
-     * @param string|null $schemaName
-     * @return array|null
-     */
-    protected function _getIndexByColumns($tableName, array $columns, $schemaName)
-    {
-        foreach ($this->getIndexList($tableName, $schemaName) as $idxData) {
-            if ($idxData['COLUMNS_LIST'] === $columns) {
-                return $idxData;
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Change the column name and definition
-     *
-     * For change definition of column - use modifyColumn
-     *
-     * @param string $tableName
-     * @param string $oldColumnName
-     * @param string $newColumnName
-     * @param array $definition
-     * @param boolean $flushData        flush table statistic
-     * @param string $schemaName
-     * @return StatementInterface
-     * @throws ErrorException
-     */
-    public function changeColumn(
-        $tableName,
-        $oldColumnName,
-        $newColumnName,
-        $definition,
-        $flushData = false,
-        $schemaName = null
-    ) {
-        if (!$this->tableColumnExists($tableName, $oldColumnName, $schemaName)) {
-            throw new ErrorException(
-                sprintf(
-                    'Column "%s" does not exist in table "%s".',
-                    $oldColumnName,
-                    $tableName
-                )
-            );
-        }
-
-        if (is_array($definition)) {
-            $definition = $this->_getColumnDefinition($definition);
-        }
-
-        $sql = sprintf(
-            'ALTER TABLE %s CHANGE COLUMN %s %s %s',
-            $this->getPlatform()->quoteIdentifierChain($tableName),
-            $this->quoteIdentifier($oldColumnName),
-            $this->quoteIdentifier($newColumnName),
-            $definition
-        );
-
-        $result = $this->query($sql);
-
-        if ($flushData) {
-            $this->showTableStatus($tableName, $schemaName);
-        }
-
-        return $result;
-    }
-
-    /**
-     * Modify the column definition
-     *
-     * @param string $tableName
-     * @param string $columnName
-     * @param array|string $definition
-     * @param boolean $flushData
-     * @param string $schemaName
-     * @return $this
-     * @throws ErrorException
-     */
-    public function modifyColumn($tableName, $columnName, $definition, $flushData = false, $schemaName = null)
-    {
-        if (!$this->tableColumnExists($tableName, $columnName, $schemaName)) {
-            throw new ErrorException(sprintf('Column "%s" does not exist in table "%s".', $columnName, $tableName));
-        }
-        if (is_array($definition)) {
-            $definition = $this->_getColumnDefinition($definition);
-        }
-
-        $sql = sprintf(
-            'ALTER TABLE %s MODIFY COLUMN %s %s',
-            $this->getPlatform()->quoteIdentifierChain($tableName),
-            $this->quoteIdentifier($columnName),
-            $definition
-        );
-
-        $this->query($sql);
-        if ($flushData) {
-            $this->showTableStatus($tableName, $schemaName);
-        }
-
-        return $this;
-    }
-
-    /**
-     * Show table status
-     *
-     * @param string $tableName
-     * @param string $schemaName
-     * @return mixed
-     */
-    public function showTableStatus($tableName, $schemaName = null)
-    {
-        $fromDbName = null;
-        if ($schemaName !== null) {
-            $fromDbName = ' FROM ' . $this->quoteIdentifier($schemaName);
-        }
-        $query = sprintf('SHOW TABLE STATUS%s LIKE %s', $fromDbName, $this->quote($tableName));
-
-        return $this->rawFetchRow($query);
-    }
-
-    /**
-     * Retrieve Create Table SQL
-     *
-     * @param string $tableName
-     * @param string $schemaName
-     * @return string
-     */
-    public function getCreateTable($tableName, $schemaName = null)
-    {
-        if ($schemaName) {
-            $table = array($schemaName, $tableName);
-        } else {
-            $table = $tableName;
-        }
-        $sql = 'SHOW CREATE TABLE ' . $this->getPlatform()->quoteIdentifierChain($table);
-        $ddl = $this->rawFetchRow($sql, 'Create Table');
-
-        return $ddl;
-    }
-
-    /**
-     * Retrieve the foreign keys descriptions for a table.
-     *
-     * The return value is an associative array keyed by the UPPERCASE foreign key,
-     * as returned by the RDBMS.
-     *
-     * The value of each array element is an associative array
-     * with the following keys:
-     *
-     * FK_NAME          => string; original foreign key name
-     * SCHEMA_NAME      => string; name of database or schema
-     * TABLE_NAME       => string;
-     * COLUMN_NAME      => string; column name
-     * REF_SCHEMA_NAME  => string; name of reference database or schema
-     * REF_TABLE_NAME   => string; reference table name
-     * REF_COLUMN_NAME  => string; reference column name
-     * ON_DELETE        => string; action type on delete row
-     * ON_UPDATE        => string; action type on update row
-     *
-     * @param string $tableName
-     * @param string $schemaName
-     * @return array
-     */
-    public function getForeignKeys($tableName, $schemaName = null)
-    {
-        $ddl = array();
-        $createSql = $this->getCreateTable($tableName, $schemaName);
-
-        // collect CONSTRAINT
-        $regExp  = '#,\s+CONSTRAINT `([^`]*)` FOREIGN KEY \(`([^`]*)`\) '
-            . 'REFERENCES (`([^`]*)`\.)?`([^`]*)` \(`([^`]*)`\)'
-            . '( ON DELETE (RESTRICT|CASCADE|SET NULL|NO ACTION))?'
-            . '( ON UPDATE (RESTRICT|CASCADE|SET NULL|NO ACTION))?#';
-        $matches = array();
-        preg_match_all($regExp, $createSql, $matches, PREG_SET_ORDER);
-        foreach ($matches as $match) {
-            $ddl[strtoupper($match[1])] = array(
-                'FK_NAME'           => $match[1],
-                'SCHEMA_NAME'       => $schemaName,
-                'TABLE_NAME'        => $tableName,
-                'COLUMN_NAME'       => $match[2],
-                'REF_SHEMA_NAME'    => isset($match[4]) ? $match[4] : $schemaName,
-                'REF_TABLE_NAME'    => $match[5],
-                'REF_COLUMN_NAME'   => $match[6],
-                'ON_DELETE'         => isset($match[7]) ? $match[8] : '',
-                'ON_UPDATE'         => isset($match[9]) ? $match[10] : ''
-            );
-        }
-
-        return $ddl;
-    }
-
-    /**
-     * Retrieve the foreign keys tree for all tables
-     *
-     * @return array
-     */
-    public function getForeignKeysTree()
-    {
-        $tree = array();
-        foreach ($this->listTables() as $table) {
-            foreach ($this->getForeignKeys($table) as $key) {
-                $tree[$table][$key['COLUMN_NAME']] = $key;
-            }
-        }
-
-        return $tree;
-    }
-
-    /**
-     * Modify tables, used for upgrade process
-     * Change columns definitions, reset foreign keys, change tables comments and engines.
-     *
-     * The value of each array element is an associative array
-     * with the following keys:
-     *
-     * columns => array; list of columns definitions
-     * comment => string; table comment
-     * engine  => string; table engine
-     *
-     * @param array $tables
-     * @return $this
-     */
-    public function modifyTables($tables)
-    {
-        $foreignKeys = $this->getForeignKeysTree();
-        foreach ($tables as $table => $tableData) {
-            if (!$this->isTableExists($table)) {
-                continue;
-            }
-            foreach ($tableData['columns'] as $column => $columnDefinition) {
-                if (!$this->tableColumnExists($table, $column)) {
-                    continue;
-                }
-                $droppedKeys = array();
-                foreach ($foreignKeys as $keyTable => $columns) {
-                    foreach ($columns as $columnName => $keyOptions) {
-                        if ($table == $keyOptions['REF_TABLE_NAME'] && $column == $keyOptions['REF_COLUMN_NAME']) {
-                            $this->dropForeignKey($keyTable, $keyOptions['FK_NAME']);
-                            $droppedKeys[] = $keyOptions;
-                        }
-                    }
-                }
-
-                $this->modifyColumn($table, $column, $columnDefinition);
-
-                foreach ($droppedKeys as $options) {
-                    unset($columnDefinition['identity'], $columnDefinition['primary'], $columnDefinition['comment']);
-
-                    $onDelete = $options['ON_DELETE'];
-                    $onUpdate = $options['ON_UPDATE'];
-
-                    if ($onDelete == AdapterInterface::FK_ACTION_SET_NULL
-                        || $onUpdate == AdapterInterface::FK_ACTION_SET_NULL) {
-                           $columnDefinition['nullable'] = true;
-                    }
-                    $this->modifyColumn($options['TABLE_NAME'], $options['COLUMN_NAME'], $columnDefinition);
-                    $this->addForeignKey(
-                        $options['FK_NAME'],
-                        $options['TABLE_NAME'],
-                        $options['COLUMN_NAME'],
-                        $options['REF_TABLE_NAME'],
-                        $options['REF_COLUMN_NAME'],
-                        ($onDelete) ? $onDelete : AdapterInterface::FK_ACTION_NO_ACTION,
-                        ($onUpdate) ? $onUpdate : AdapterInterface::FK_ACTION_NO_ACTION
-                    );
-                }
-            }
-            if (!empty($tableData['comment'])) {
-                $this->changeTableComment($table, $tableData['comment']);
-            }
-            if (!empty($tableData['engine'])) {
-                $this->changeTableEngine($table, $tableData['engine']);
-            }
-        }
-
-        return $this;
-    }
-
-    /**
-     * Retrieve table index information
-     *
-     * The return value is an associative array keyed by the UPPERCASE index key (except for primary key,
-     * that is always stored under 'PRIMARY' key) as returned by the RDBMS.
-     *
-     * The value of each array element is an associative array
-     * with the following keys:
-     *
-     * SCHEMA_NAME      => string; name of database or schema
-     * TABLE_NAME       => string; name of the table
-     * KEY_NAME         => string; the original index name
-     * COLUMNS_LIST     => array; array of index column names
-     * INDEX_TYPE       => string; lowercase, create index type
-     * INDEX_METHOD     => string; index method using
-     * type             => string; see INDEX_TYPE
-     * fields           => array; see COLUMNS_LIST
-     *
-     * @param string $tableName
-     * @param string $schemaName
-     * @return array|string|int
-     */
-    public function getIndexList($tableName, $schemaName = null)
-    {
-        $ddl = array();
-
-        $sql = sprintf(
-            'SHOW INDEX FROM %s',
-            $this->getPlatform()->quoteIdentifierChain($tableName)
-        );
-
-        foreach ($this->fetchAll($sql) as $row) {
-            $fieldKeyName   = 'Key_name';
-            $fieldNonUnique = 'Non_unique';
-            $fieldColumn    = 'Column_name';
-            $fieldIndexType = 'Index_type';
-
-            if (strtolower($row[$fieldKeyName]) == AdapterInterface::INDEX_TYPE_PRIMARY) {
-                $indexType  = AdapterInterface::INDEX_TYPE_PRIMARY;
-            } elseif ($row[$fieldNonUnique] == 0) {
-                $indexType  = AdapterInterface::INDEX_TYPE_UNIQUE;
-            } elseif (strtolower($row[$fieldIndexType]) == AdapterInterface::INDEX_TYPE_FULLTEXT) {
-                $indexType  = AdapterInterface::INDEX_TYPE_FULLTEXT;
-            } else {
-                $indexType  = AdapterInterface::INDEX_TYPE_INDEX;
-            }
-
-            $upperKeyName = strtoupper($row[$fieldKeyName]);
-            if (isset($ddl[$upperKeyName])) {
-                $ddl[$upperKeyName]['fields'][] = $row[$fieldColumn]; // for compatible
-                $ddl[$upperKeyName]['COLUMNS_LIST'][] = $row[$fieldColumn];
-            } else {
-                $ddl[$upperKeyName] = array(
-                    'SCHEMA_NAME'   => $schemaName,
-                    'TABLE_NAME'    => $tableName,
-                    'KEY_NAME'      => $row[$fieldKeyName],
-                    'COLUMNS_LIST'  => array($row[$fieldColumn]),
-                    'INDEX_TYPE'    => $indexType,
-                    'INDEX_METHOD'  => $row[$fieldIndexType],
-                    'type'          => strtolower($indexType), // for compatibility
-                    'fields'        => array($row[$fieldColumn]) // for compatibility
-                );
-            }
-        }
-
-        return $ddl;
-    }
-
-    /**
-     * Remove duplicate entry for create key
-     *
-     * @param string $table
-     * @param array $fields
-     * @param string[] $ids
-     * @return $this
-     */
-    protected function _removeDuplicateEntry($table, $fields, $ids)
-    {
-        $where = array();
-        $i = 0;
-        foreach ($fields as $field) {
-            $where[] = $this->quoteInto($field . '=?', $ids[$i++]);
-        }
-
-        if (!$where) {
-            return $this;
-        }
-        $whereCond = implode(' AND ', $where);
-        $sql = sprintf('SELECT COUNT(*) as `cnt` FROM `%s` WHERE %s', $table, $whereCond);
-
-        $cnt = $this->rawFetchRow($sql, 'cnt');
-        if ($cnt > 1) {
-            $sql = sprintf(
-                'DELETE FROM `%s` WHERE %s LIMIT %d',
-                $table,
-                $whereCond,
-                $cnt - 1
-            );
-            $this->rawQuery($sql);
-        }
-
-        return $this;
-    }
-
-    /**
-     * Creates and returns a new \Zend\Db\Sql\Select object for this adapter.
-     *
-     * @return Sql/Select
-     */
-    public function select()
-    {
-        $sql = new Sql($this);
-        return $sql->select();
-    }
-
-    /**
-     * Start debug timer
-     *
-     * @return $this
-     */
-    protected function _debugTimer()
-    {
-        if ($this->_debug) {
-            $this->_debugTimer = microtime(true);
-        }
-
-        return $this;
-    }
-
-    /**
-     * Logging debug information
-     *
-     * @param int $type
-     * @param string $sql
-     * @param array $bind
-     * @param StatementInterface $result
-     * @return $this
-     */
-    protected function _debugStat($type, $sql, $bind = array(), $result = null)
-    {
-        if (!$this->_debug) {
-            return $this;
-        }
-
-        $code = '## ' . getmypid() . ' ## ';
-        $nl   = "\n";
-        $time = sprintf('%.4f', microtime(true) - $this->_debugTimer);
-
-        if (!$this->_logAllQueries && $time < $this->_logQueryTime) {
-            return $this;
-        }
-        switch ($type) {
-            case self::DEBUG_CONNECT:
-                $code .= 'CONNECT' . $nl;
-                break;
-            case self::DEBUG_TRANSACTION:
-                $code .= 'TRANSACTION ' . $sql . $nl;
-                break;
-            case self::DEBUG_QUERY:
-                $code .= 'QUERY' . $nl;
-                $code .= 'SQL: ' . $sql . $nl;
-                if ($bind) {
-                    $code .= 'BIND: ' . var_export($bind, true) . $nl;
-                }
-                if ($result instanceof StatementInterface) {
-                    $code .= 'AFF: ' . $result->rowCount() . $nl;
-                }
-                break;
-        }
-        $code .= 'TIME: ' . $time . $nl;
-
-        if ($this->_logCallStack) {
-            $code .= 'TRACE: ' . Debug::backtrace(true, false) . $nl;
-        }
-
-        $code .= $nl;
-
-        $this->_debugWriteToFile($code);
-
-        return $this;
-    }
-
-    /**
-     * Write exception and thow
-     *
-     * @param \Exception $e
-     * @return void
-     * @throws \Exception
-     */
-    protected function _debugException(\Exception $e)
-    {
-        if (!$this->_debug) {
-            throw $e;
-        }
-
-        $nl   = "\n";
-        $code = 'EXCEPTION ' . $nl . $e . $nl . $nl;
-        $this->_debugWriteToFile($code);
-
-        throw $e;
-    }
-
-    /**
-     * Debug write to file process
-     *
-     * @param string $str
-     * @return void
-     */
-    protected function _debugWriteToFile($str)
-    {
-        $str = '## ' . date('Y-m-d H:i:s') . "\r\n" . $str;
-        $this->_filesystem->getDirectoryWrite('var')->writeFile($this->_debugFile, $str, FILE_APPEND | LOCK_EX);
-    }
-
-    /**
-     * Quotes a value and places into a piece of text at a placeholder.
-     *
-     * Method revrited for handle empty arrays in value param
-     *
-     * @param string  $text  The text with a placeholder.
-     * @param mixed   $value The value to quote.
-     * @param string  $type  OPTIONAL SQL datatype
-     * @param integer $count OPTIONAL count of placeholders to replace
-     * @return string An SQL-safe quoted value placed into the orignal text.
-     */
-    public function quoteInto($text, $value, $type = null, $count = null)
-    {
-        if ($value instanceof \Zend\Db\Sql\Expression) {
-            $value = $value->getExpression();
-        }
-        if ($count === null) {
-            return str_replace('?', $this->quote($value, $type), $text);
-        } else {
-            while ($count > 0) {
-                if (strpos($text, '?') !== false) {
-                    $text = substr_replace($text, $this->quote($value, $type), strpos($text, '?'), 1);
-                }
-                --$count;
-            }
-            return $text;
-        }
-    }
-
-    /**
-     * Retrieve ddl cache name
-     *
-     * @param string $tableName
-     * @param string $schemaName
-     * @return string
-     */
-    protected function _getTableName($tableName, $schemaName = null)
-    {
-        return ($schemaName ? $schemaName . '.' : '') . $tableName;
-    }
-
-    /**
-     * Returns the column descriptions for a table.
-     *
-     * The return value is an associative array keyed by the column name,
-     * as returned by the RDBMS.
-     *
-     * The value of each array element is an associative array
-     * with the following keys:
-     *
-     * SCHEMA_NAME      => string; name of database or schema
-     * TABLE_NAME       => string;
-     * COLUMN_NAME      => string; column name
-     * COLUMN_POSITION  => number; ordinal position of column in table
-     * DATA_TYPE        => string; SQL datatype name of column
-     * DEFAULT          => string; default expression of column, null if none
-     * NULLABLE         => boolean; true if column can have nulls
-     * LENGTH           => number; length of CHAR/VARCHAR
-     * SCALE            => number; scale of NUMERIC/DECIMAL
-     * PRECISION        => number; precision of NUMERIC/DECIMAL
-     * UNSIGNED         => boolean; unsigned property of an integer type
-     * PRIMARY          => boolean; true if column is part of the primary key
-     * PRIMARY_POSITION => integer; position of column in primary key
-     * IDENTITY         => integer; true if column is auto-generated with unique values
-     *
-     * @param string $tableName
-     * @param string $schemaName OPTIONAL
-     * @return array
-     */
-    public function describeTable($tableName, $schemaName = null)
-    {
-        $desc = [];
-        $ddl = new \Zend\Db\Metadata\Metadata($this);
-        $ddlTable = $ddl->getTable($tableName, $schemaName);
-        $constraints = $ddlTable->getConstraints();
-
-        foreach ($ddlTable->getColumns() as $ddlColumn) {
-            $primary = false;
-            foreach ($constraints as $constraint) {
-                $primary = in_array($ddlColumn->getName(), $constraint->getColumns()) && $constraint->isPrimaryKey();
-            }
-            $desc[$ddlColumn->getName()] = array(
-                'SCHEMA_NAME'      => null,
-                'TABLE_NAME'       => $tableName,
-                'COLUMN_NAME'      => $ddlColumn->getName(),
-                'COLUMN_POSITION'  => $ddlColumn->getOrdinalPosition(),
-                'DATA_TYPE'        => $ddlColumn->getDataType(),
-                'DEFAULT'          => $ddlColumn->getColumnDefault(),
-                'NULLABLE'         => $ddlColumn->isNullable(),
-                'LENGTH'           => $ddlColumn->getCharacterMaximumLength(),
-                'SCALE'            => $ddlColumn->getNumericScale(),
-                'PRECISION'        => $ddlColumn->getNumericPrecision(),
-                'UNSIGNED'         => $ddlColumn->isNumericUnsigned(),
-                'PRIMARY'          => $primary,
-                'PRIMARY_POSITION' => 0,
-                'IDENTITY'         => false,
-            );
-
-        }
-
-        return $desc;
-    }
-
-    /**
-     * Format described column to definition, ready to be added to ddl table.
-     * Return array with keys: name, type, length, options, comment
-     *
-     * @param  array $columnData
-     * @return array
-     */
-    public function getColumnCreateByDescribe($columnData)
-    {
-        $type = $this->_getColumnTypeByDdl($columnData);
-        $options = array();
-
-        if ($columnData['IDENTITY'] === true) {
-            $options['identity'] = true;
-        }
-        if ($columnData['UNSIGNED'] === true) {
-            $options['unsigned'] = true;
-        }
-        if ($columnData['NULLABLE'] === false
-            && !($type == Table::TYPE_TEXT && strlen($columnData['DEFAULT']) != 0)
-        ) {
-            $options['nullable'] = false;
-        }
-        if ($columnData['PRIMARY'] === true) {
-            $options['primary'] = true;
-        }
-        if (!is_null($columnData['DEFAULT'])
-            && $type != Table::TYPE_TEXT
-        ) {
-            $options['default'] = $this->quote($columnData['DEFAULT']);
-        }
-        if (strlen($columnData['SCALE']) > 0) {
-            $options['scale'] = $columnData['SCALE'];
-        }
-        if (strlen($columnData['PRECISION']) > 0) {
-            $options['precision'] = $columnData['PRECISION'];
-        }
-
-        $comment = ucwords(str_replace('_', ' ', $columnData['COLUMN_NAME']));
-
-        $result = array(
-            'name'      => $columnData['COLUMN_NAME'],
-            'type'      => $type,
-            'length'    => $columnData['LENGTH'],
-            'options'   => $options,
-            'comment'   => $comment
-        );
-
-        return $result;
-    }
-
-    /**
-     * Create \Magento\Setup\Framework\DB\Ddl\Table object by data from describe table
-     *
-     * @param string $tableName
-     * @param string $newTableName
-     * @return Table
-     */
-    public function createTableByDdl($tableName, $newTableName)
-    {
-        $describe = $this->describeTable($tableName);
-        $table = $this->newTable($newTableName)
-            ->setComment(ucwords(str_replace('_', ' ', $newTableName)));
-
-        foreach ($describe as $columnData) {
-            $columnInfo = $this->getColumnCreateByDescribe($columnData);
-
-            $table->addColumn(
-                $columnInfo['name'],
-                $columnInfo['type'],
-                $columnInfo['length'],
-                $columnInfo['options'],
-                $columnInfo['comment']
-            );
-        }
-
-        $indexes = $this->getIndexList($tableName);
-        foreach ($indexes as $indexData) {
-            /**
-             * Do not create primary index - it is created with identity column.
-             * For reliability check both name and type, because these values can start to differ in future.
-             */
-            if (($indexData['KEY_NAME'] == 'PRIMARY')
-                || ($indexData['INDEX_TYPE'] == AdapterInterface::INDEX_TYPE_PRIMARY)
-            ) {
-                continue;
-            }
-
-            $fields = $indexData['COLUMNS_LIST'];
-            $options = array('type' => $indexData['INDEX_TYPE']);
-            $table->addIndex($this->getIndexName($newTableName, $fields, $indexData['INDEX_TYPE']), $fields, $options);
-        }
-
-        $foreignKeys = $this->getForeignKeys($tableName);
-        foreach ($foreignKeys as $keyData) {
-            $fkName = $this->getForeignKeyName(
-                $newTableName,
-                $keyData['COLUMN_NAME'],
-                $keyData['REF_TABLE_NAME'],
-                $keyData['REF_COLUMN_NAME']
-            );
-            $onDelete = $this->_getDdlAction($keyData['ON_DELETE']);
-            $onUpdate = $this->_getDdlAction($keyData['ON_UPDATE']);
-
-            $table->addForeignKey(
-                $fkName,
-                $keyData['COLUMN_NAME'],
-                $keyData['REF_TABLE_NAME'],
-                $keyData['REF_COLUMN_NAME'],
-                $onDelete,
-                $onUpdate
-            );
-        }
-
-        // Set additional options
-        $tableData = $this->showTableStatus($tableName);
-        if (isset($tableData['Engine'])) {
-            $table->setOption('type', $tableData['Engine']);
-        }
-
-        return $table;
-    }
-
-    /**
-     * Modify the column definition by data from describe table
-     *
-     * @param string $tableName
-     * @param string $columnName
-     * @param array $definition
-     * @param boolean $flushData
-     * @param string $schemaName
-     * @return $this
-     */
-    public function modifyColumnByDdl($tableName, $columnName, $definition, $flushData = false, $schemaName = null)
-    {
-        $definition = array_change_key_case($definition, CASE_UPPER);
-        $definition['COLUMN_TYPE'] = $this->_getColumnTypeByDdl($definition);
-        if (array_key_exists('DEFAULT', $definition) && is_null($definition['DEFAULT'])) {
-            unset($definition['DEFAULT']);
-        }
-
-        return $this->modifyColumn($tableName, $columnName, $definition, $flushData, $schemaName);
-    }
-
-    /**
-     * Retrieve column data type by data from describe table
-     *
-     * @param array $column
-     * @return string
-     */
-    protected function _getColumnTypeByDdl($column)
-    {
-        switch ($column['DATA_TYPE']) {
-            case 'bool':
-                return Table::TYPE_BOOLEAN;
-            case 'tinytext':
-            case 'char':
-            case 'varchar':
-            case 'text':
-            case 'mediumtext':
-            case 'longtext':
-                return Table::TYPE_TEXT;
-            case 'blob':
-            case 'mediumblob':
-            case 'longblob':
-                return Table::TYPE_BLOB;
-            case 'tinyint':
-            case 'smallint':
-                return Table::TYPE_SMALLINT;
-            case 'mediumint':
-            case 'int':
-                return Table::TYPE_INTEGER;
-            case 'bigint':
-                return Table::TYPE_BIGINT;
-            case 'datetime':
-                return Table::TYPE_DATETIME;
-            case 'timestamp':
-                return Table::TYPE_TIMESTAMP;
-            case 'date':
-                return Table::TYPE_DATE;
-            case 'float':
-                return Table::TYPE_FLOAT;
-            case 'decimal':
-            case 'numeric':
-                return Table::TYPE_DECIMAL;
-        }
-    }
-
-    /**
-     * Change table storage engine
-     *
-     * @param string $tableName
-     * @param string $engine
-     * @param string $schemaName
-     * @return StatementInterface
-     */
-    public function changeTableEngine($tableName, $engine, $schemaName = null)
-    {
-        $table = $this->getPlatform()->quoteIdentifierChain($tableName);
-        $sql   = sprintf('ALTER TABLE %s ENGINE=%s', $table, $engine);
-
-        return $this->query($sql);
-    }
-
-    /**
-     * Change table comment
-     *
-     * @param string $tableName
-     * @param string $comment
-     * @param string $schemaName
-     * @return StatementInterface
-     */
-    public function changeTableComment($tableName, $comment, $schemaName = null)
-    {
-        $table = $this->getPlatform()->quoteIdentifierChain($tableName);
-        $sql   = sprintf("ALTER TABLE %s COMMENT='%s'", $table, $comment);
-
-        return $this->query($sql);
-    }
-
-    /**
-     * Inserts a table row with specified data
-     * Special for Zero values to identity column
-     *
-     * @param string $table
-     * @param array $bind
-     * @return int The number of affected rows.
-     */
-    public function insertForce($table, array $bind)
-    {
-        $this->rawQuery("SET @OLD_INSERT_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO'");
-        $result = $this->insert($table, $bind);
-        $this->rawQuery("SET SQL_MODE=IFNULL(@OLD_INSERT_SQL_MODE,'')");
-
-        return $result;
-    }
-
-    /**
-     * Return new DDL Table object
-     *
-     * @param string $tableName the table name
-     * @param string $schemaName the database/schema name
-     * @return Table
-     */
-    public function newTable($tableName = null, $schemaName = null)
-    {
-        $table = new Table();
-        if ($tableName !== null) {
-            $table->setName($tableName);
-        }
-        if ($schemaName !== null) {
-            $table->setSchema($schemaName);
-        }
-
-        return $table;
-    }
-
-    /**
-     * Create table
-     *
-     * @param Table $table
-     * @throws ErrorException
-     * @return ResultSet\ResultSetInterface
-     */
-    public function createTable(Table $table)
-    {
-        $columns = $table->getColumns();
-        foreach ($columns as $columnEntry) {
-            if (empty($columnEntry['COMMENT'])) {
-                throw new ErrorException("Cannot create table without columns comments");
-            }
-        }
-
-        $sqlFragment    = array_merge(
-            $this->_getColumnsDefinition($table),
-            $this->_getIndexesDefinition($table),
-            $this->_getForeignKeysDefinition($table)
-        );
-        $tableOptions   = $this->_getOptionsDefinition($table);
-        $sql = sprintf(
-            "CREATE TABLE %s (\n%s\n) %s",
-            $this->quoteIdentifier($table->getName()),
-            implode(",\n", $sqlFragment),
-            implode(" ", $tableOptions)
-        );
-        return $this->query($sql);
-    }
-
-    /**
-     * Create temporary table
-     *
-     * @param Table $table
-     * @return ResultSet\ResultSetInterface
-     */
-    public function createTemporaryTable(Table $table)
-    {
-        $columns = $table->getColumns();
-        $sqlFragment    = array_merge(
-            $this->_getColumnsDefinition($table),
-            $this->_getIndexesDefinition($table),
-            $this->_getForeignKeysDefinition($table)
-        );
-        $tableOptions   = $this->_getOptionsDefinition($table);
-        $sql = sprintf(
-            "CREATE TEMPORARY TABLE %s (\n%s\n) %s",
-            $this->getPlatform()->quoteIdentifier($table->getName()),
-            implode(",\n", $sqlFragment),
-            implode(" ", $tableOptions)
-        );
-
-        return $this->query($sql);
-    }
-
-    /**
-     * Rename several tables
-     *
-     * @param array $tablePairs array('oldName' => 'Name1', 'newName' => 'Name2')
-     *
-     * @return boolean
-     * @throws ErrorException
-     */
-    public function renameTablesBatch(array $tablePairs)
-    {
-        if (count($tablePairs) == 0) {
-            throw new ErrorException('Please provide tables for rename');
-        }
-
-        $renamesList = array();
-        $tablesList  = array();
-        foreach ($tablePairs as $pair) {
-            $oldTableName  = $pair['oldName'];
-            $newTableName  = $pair['newName'];
-            $renamesList[] = sprintf('%s TO %s', $oldTableName, $newTableName);
-
-            $tablesList[$oldTableName] = $oldTableName;
-            $tablesList[$newTableName] = $newTableName;
-        }
-
-        $query = sprintf('RENAME TABLE %s', implode(',', $renamesList));
-        $this->query($query);
-
-        return true;
-    }
-
-    /**
-     * Retrieve columns and primary keys definition array for create table
-     *
-     * @param Table $table
-     * @return string[]
-     * @throws ErrorException
-     */
-    protected function _getColumnsDefinition(Table $table)
-    {
-        $definition = array();
-        $primary    = array();
-        $columns    = $table->getColumns();
-        if (empty($columns)) {
-            throw new ErrorException('Table columns are not defined');
-        }
-
-        foreach ($columns as $columnData) {
-            $columnDefinition = $this->_getColumnDefinition($columnData);
-            if ($columnData['PRIMARY']) {
-                $primary[$columnData['COLUMN_NAME']] = $columnData['PRIMARY_POSITION'];
-            }
-
-            $definition[] = sprintf(
-                '  %s %s',
-                $this->quoteIdentifier($columnData['COLUMN_NAME']),
-                $columnDefinition
-            );
-        }
-
-        // PRIMARY KEY
-        if (!empty($primary)) {
-            asort($primary, SORT_NUMERIC);
-            $primary      = array_map(array($this->getPlatform(), 'quoteIdentifier'), array_keys($primary));
-            $definition[] = sprintf('  PRIMARY KEY (%s)', implode(', ', $primary));
-        }
-
-        return $definition;
-    }
-
-    /**
-     * Retrieve table indexes definition array for create table
-     *
-     * @param Table $table
-     * @return string[]
-     */
-    protected function _getIndexesDefinition(Table $table)
-    {
-        $definition = array();
-        $indexes    = $table->getIndexes();
-        if (!empty($indexes)) {
-            foreach ($indexes as $indexData) {
-                if (!empty($indexData['TYPE'])) {
-                    switch ($indexData['TYPE']) {
-                        case 'primary':
-                            $indexType = 'PRIMARY KEY';
-                            unset($indexData['INDEX_NAME']);
-                            break;
-                        default:
-                            $indexType = strtoupper($indexData['TYPE']);
-                            break;
-                    }
-                } else {
-                    $indexType = 'KEY';
-                }
-
-                $columns = array();
-                foreach ($indexData['COLUMNS'] as $columnData) {
-                    $column = $this->quoteIdentifier($columnData['NAME']);
-                    if (!empty($columnData['SIZE'])) {
-                        $column .= sprintf('(%d)', $columnData['SIZE']);
-                    }
-                    $columns[] = $column;
-                }
-                $indexName = isset($indexData['INDEX_NAME'])
-                    ? $this->getPlatform()->quoteIdentifier($indexData['INDEX_NAME'])
-                    : '';
-                $definition[] = sprintf(
-                    '  %s %s (%s)',
-                    $indexType,
-                    $indexName,
-                    implode(', ', $columns)
-                );
-            }
-        }
-
-        return $definition;
-    }
-
-    /**
-     * Retrieve table foreign keys definition array for create table
-     *
-     * @param Table $table
-     * @return string[]
-     */
-    protected function _getForeignKeysDefinition(Table $table)
-    {
-        $definition = array();
-        $relations  = $table->getForeignKeys();
-
-        if (!empty($relations)) {
-            foreach ($relations as $fkData) {
-                $onDelete = $this->_getDdlAction($fkData['ON_DELETE']);
-                $onUpdate = $this->_getDdlAction($fkData['ON_UPDATE']);
-
-                $definition[] = sprintf(
-                    '  CONSTRAINT %s FOREIGN KEY (%s) REFERENCES %s (%s) ON DELETE %s ON UPDATE %s',
-                    $this->quoteIdentifier($fkData['FK_NAME']),
-                    $this->quoteIdentifier($fkData['COLUMN_NAME']),
-                    $this->quoteIdentifier($fkData['REF_TABLE_NAME']),
-                    $this->quoteIdentifier($fkData['REF_COLUMN_NAME']),
-                    $onDelete,
-                    $onUpdate
-                );
-            }
-        }
-
-        return $definition;
-    }
-
-    /**
-     * Retrieve table options definition array for create table
-     *
-     * @param Table $table
-     * @return string[]
-     * @throws ErrorException
-     */
-    protected function _getOptionsDefinition(Table $table)
-    {
-        $definition = array();
-        $comment    = $table->getComment();
-        if (empty($comment)) {
-            throw new ErrorException('Comment for table is required and must be defined');
-        }
-        $definition[] = $this->quoteInto('COMMENT=?', $comment);
-
-        $tableProps = array(
-            'type'              => 'ENGINE=%s',
-            'checksum'          => 'CHECKSUM=%d',
-            'auto_increment'    => 'AUTO_INCREMENT=%d',
-            'avg_row_length'    => 'AVG_ROW_LENGTH=%d',
-            'max_rows'          => 'MAX_ROWS=%d',
-            'min_rows'          => 'MIN_ROWS=%d',
-            'delay_key_write'   => 'DELAY_KEY_WRITE=%d',
-            'row_format'        => 'row_format=%s',
-            'charset'           => 'charset=%s',
-            'collate'           => 'COLLATE=%s'
-        );
-        foreach ($tableProps as $key => $mask) {
-            $v = $table->getOption($key);
-            if ($v !== null) {
-                $definition[] = sprintf($mask, $v);
-            }
-        }
-
-        return $definition;
-    }
-
-    /**
-     * Get column definition from description
-     *
-     * @param  array $options
-     * @param  null|string $ddlType
-     * @return string
-     */
-    public function getColumnDefinitionFromDescribe($options, $ddlType = null)
-    {
-        $columnInfo = $this->getColumnCreateByDescribe($options);
-        foreach ($columnInfo['options'] as $key => $value) {
-            $columnInfo[$key] = $value;
-        }
-        return $this->_getColumnDefinition($columnInfo, $ddlType);
-    }
-
-    /**
-     * Retrieve column definition fragment
-     *
-     * @param array $options
-     * @param string $ddlType Table DDL Column type constant
-     * @return string
-     * @throws ErrorException
-     */
-    protected function _getColumnDefinition($options, $ddlType = null)
-    {
-        // convert keys to uppercase
-        $options    = array_change_key_case($options, CASE_UPPER);
-        $cType      = null;
-        $cUnsigned  = false;
-        $cNullable  = true;
-        $cDefault   = false;
-        $cIdentity  = false;
-
-        // detect and validate column type
-        if ($ddlType === null) {
-            $ddlType = $this->_getDdlType($options);
-        }
-
-        if (empty($ddlType) || !isset($this->_ddlColumnTypes[$ddlType])) {
-            throw new ErrorException('Invalid column definition data');
-        }
-
-        // column size
-        $cType = $this->_ddlColumnTypes[$ddlType];
-        switch ($ddlType) {
-            case Table::TYPE_SMALLINT:
-            case Table::TYPE_INTEGER:
-            case Table::TYPE_BIGINT:
-                if (!empty($options['UNSIGNED'])) {
-                    $cUnsigned = true;
-                }
-                break;
-            case Table::TYPE_DECIMAL:
-            case Table::TYPE_NUMERIC:
-                $precision  = 10;
-                $scale      = 0;
-                $match      = array();
-                if (!empty($options['LENGTH']) && preg_match('#^\(?(\d+),(\d+)\)?$#', $options['LENGTH'], $match)) {
-                    $precision  = $match[1];
-                    $scale      = $match[2];
-                } else {
-                    if (isset($options['SCALE']) && is_numeric($options['SCALE'])) {
-                        $scale = $options['SCALE'];
-                    }
-                    if (isset($options['PRECISION']) && is_numeric($options['PRECISION'])) {
-                        $precision = $options['PRECISION'];
-                    }
-                }
-                $cType .= sprintf('(%d,%d)', $precision, $scale);
-                break;
-            case Table::TYPE_TEXT:
-            case Table::TYPE_BLOB:
-            case Table::TYPE_VARBINARY:
-                if (empty($options['LENGTH'])) {
-                    $length = Table::DEFAULT_TEXT_SIZE;
-                } else {
-                    $length = $this->_parseTextSize($options['LENGTH']);
-                }
-                if ($length <= 255) {
-                    $cType = $ddlType == Table::TYPE_TEXT ? 'varchar' : 'varbinary';
-                    $cType = sprintf('%s(%d)', $cType, $length);
-                } elseif ($length > 255 && $length <= 65536) {
-                    $cType = $ddlType == Table::TYPE_TEXT ? 'text' : 'blob';
-                } elseif ($length > 65536 && $length <= 16777216) {
-                    $cType = $ddlType == Table::TYPE_TEXT ? 'mediumtext' : 'mediumblob';
-                } else {
-                    $cType = $ddlType == Table::TYPE_TEXT ? 'longtext' : 'longblob';
-                }
-                break;
-        }
-
-        if (array_key_exists('DEFAULT', $options)) {
-            $cDefault = $options['DEFAULT'];
-        }
-        if (array_key_exists('NULLABLE', $options)) {
-            $cNullable = (bool)$options['NULLABLE'];
-        }
-        if (!empty($options['IDENTITY']) || !empty($options['AUTO_INCREMENT'])) {
-            $cIdentity = true;
-        }
-
-        /*  For cases when tables created from createTableByDdl()
-         *  where default value can be quoted already.
-         *  We need to avoid "double-quoting" here
-         */
-        if ($cDefault !== null && strlen($cDefault)) {
-            $cDefault = $this->quote(str_replace("'", '', $cDefault));
-        }
-
-        // prepare default value string
-        if ($ddlType == Table::TYPE_TIMESTAMP) {
-            if ($cDefault === null) {
-                $cDefault = new Expression('NULL');
-            } elseif (Table::TIMESTAMP_INIT == $cDefault) {
-                $cDefault = new Expression('CURRENT_TIMESTAMP');
-            } elseif ($cDefault == Table::TIMESTAMP_UPDATE) {
-                $cDefault = new Expression('0 ON UPDATE CURRENT_TIMESTAMP');
-            } elseif ($cDefault == Table::TIMESTAMP_INIT_UPDATE) {
-                $cDefault = new Expression('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP');
-            } elseif ($cNullable && !$cDefault) {
-                $cDefault = new Expression('NULL');
-            } else {
-                $cDefault = false;
-            }
-        } elseif (is_null($cDefault) && $cNullable) {
-            $cDefault = new Expression('NULL');
-        }
-
-        if (empty($options['COMMENT'])) {
-            $comment = '';
-        } else {
-            $comment = $options['COMMENT'];
-        }
-
-        //set column position
-        $after = null;
-        if (!empty($options['AFTER'])) {
-            $after = $options['AFTER'];
-        }
-
-        if ($cDefault instanceof \Zend\Db\Sql\Expression) {
-            $cDefault = $cDefault->getExpression();
-        }
-
-        return sprintf(
-            '%s%s%s%s%s COMMENT %s %s',
-            $cType,
-            $cUnsigned ? ' UNSIGNED' : '',
-            $cNullable ? ' NULL' : ' NOT NULL',
-            $cDefault !== false ? ' default ' . $cDefault : '',
-            $cIdentity ? ' auto_increment' : '',
-            $this->quote($comment),
-            $after ? 'AFTER ' . $this->quoteIdentifier($after) : ''
-        );
-    }
-
-    /**
-     * Drop table from database
-     *
-     * @param string $tableName
-     * @param string $schemaName
-     * @return true
-     */
-    public function dropTable($tableName, $schemaName = null)
-    {
-        $table = $this->getPlatform()->quoteIdentifierChain($tableName);
-        $query = 'DROP TABLE IF EXISTS ' . $table;
-        $this->query($query);
-
-        return true;
-    }
-
-    /**
-     * Drop temporary table from database
-     *
-     * @param string $tableName
-     * @param string $schemaName
-     * @return boolean
-     */
-    public function dropTemporaryTable($tableName, $schemaName = null)
-    {
-        $table = $this->getPlatform()->quoteIdentifierChain($tableName);
-        $query = 'DROP TEMPORARY TABLE IF EXISTS ' . $table;
-        $this->query($query);
-
-        return true;
-    }
-
-    /**
-     * Truncate a table
-     *
-     * @param string $tableName
-     * @param string $schemaName
-     * @return $this
-     * @throws ErrorException
-     */
-    public function truncateTable($tableName, $schemaName = null)
-    {
-        if (!$this->isTableExists($tableName, $schemaName)) {
-            throw new ErrorException(sprintf('Table "%s" is not exists', $tableName));
-        }
-
-        $table = $this->quoteIdentifier($this->_getTableName($tableName, $schemaName));
-        $query = 'TRUNCATE TABLE ' . $table;
-        $this->query($query);
-
-        return $this;
-    }
-
-    /**
-     * Check is a table exists
-     *
-     * @param string $tableName
-     * @param string $schemaName
-     * @return bool
-     */
-    public function isTableExists($tableName, $schemaName = null)
-    {
-        return $this->showTableStatus($tableName, $schemaName) !== false;
-    }
-
-    /**
-     * Rename table
-     *
-     * @param string $oldTableName
-     * @param string $newTableName
-     * @param string $schemaName
-     * @return true
-     * @throws ErrorException
-     */
-    public function renameTable($oldTableName, $newTableName, $schemaName = null)
-    {
-        if (!$this->isTableExists($oldTableName, $schemaName)) {
-            throw new ErrorException(sprintf('Table "%s" is not exists', $oldTableName));
-        }
-        if ($this->isTableExists($newTableName, $schemaName)) {
-            throw new ErrorException(sprintf('Table "%s" already exists', $newTableName));
-        }
-
-        $oldTable = $this->_getTableName($oldTableName, $schemaName);
-        $newTable = $this->_getTableName($newTableName, $schemaName);
-
-        $query = sprintf('ALTER TABLE %s RENAME TO %s', $oldTable, $newTable);
-        $this->query($query);
-
-        return true;
-    }
-
-    /**
-     * Add new index to table name
-     *
-     * @param string $tableName
-     * @param string $indexName
-     * @param string|array $fields  the table column name or array of ones
-     * @param string $indexType     the index type
-     * @param string $schemaName
-     * @return StatementInterface
-     * @throws ErrorException
-     * @throws \Exception
-     */
-    public function addIndex(
-        $tableName,
-        $indexName,
-        $fields,
-        $indexType = AdapterInterface::INDEX_TYPE_INDEX,
-        $schemaName = null
-    ) {
-        $columns = $this->describeTable($tableName, $schemaName);
-        $keyList = $this->getIndexList($tableName, $schemaName);
-
-        $query = sprintf('ALTER TABLE %s', $this->getPlatform()->quoteIdentifierChain($tableName));
-        if (isset($keyList[strtoupper($indexName)])) {
-            if ($keyList[strtoupper($indexName)]['INDEX_TYPE'] == AdapterInterface::INDEX_TYPE_PRIMARY) {
-                $query .= ' DROP PRIMARY KEY,';
-            } else {
-                $query .= sprintf(' DROP INDEX %s,', $this->quoteIdentifier($indexName));
-            }
-        }
-
-        if (!is_array($fields)) {
-            $fields = array($fields);
-        }
-
-        $fieldSql = array();
-        foreach ($fields as $field) {
-            if (!isset($columns[$field])) {
-                $msg = sprintf(
-                    'There is no field "%s" that you are trying to create an index on "%s"',
-                    $field,
-                    $tableName
-                );
-                throw new ErrorException($msg);
-            }
-            $fieldSql[] = $this->quoteIdentifier($field);
-        }
-        $fieldSql = implode(',', $fieldSql);
-
-        switch (strtolower($indexType)) {
-            case AdapterInterface::INDEX_TYPE_PRIMARY:
-                $condition = 'PRIMARY KEY';
-                break;
-            case AdapterInterface::INDEX_TYPE_UNIQUE:
-                $condition = 'UNIQUE ' . $this->quoteIdentifier($indexName);
-                break;
-            case AdapterInterface::INDEX_TYPE_FULLTEXT:
-                $condition = 'FULLTEXT ' . $this->quoteIdentifier($indexName);
-                break;
-            default:
-                $condition = 'INDEX ' . $this->quoteIdentifier($indexName);
-                break;
-        }
-
-        $query .= sprintf(' ADD %s (%s)', $condition, $fieldSql);
-
-        $cycle = true;
-        while ($cycle === true) {
-            try {
-                $result = $this->rawQuery($query);
-                $cycle  = false;
-            } catch (\Exception $e) {
-                if (in_array(strtolower($indexType), array('primary', 'unique'))) {
-                    $match = array();
-                    if (preg_match('#SQLSTATE\[23000\]: [^:]+: 1062[^\']+\'([\d-\.]+)\'#', $e->getMessage(), $match)) {
-                        $ids = explode('-', $match[1]);
-                        $this->_removeDuplicateEntry($tableName, $fields, $ids);
-                        continue;
-                    }
-                }
-                throw $e;
-            }
-        }
-
-        return $result;
-    }
-
-    /**
-     * Drop the index from table
-     *
-     * @param string $tableName
-     * @param string $keyName
-     * @param string $schemaName
-     * @return true|StatementInterface
-     */
-    public function dropIndex($tableName, $keyName, $schemaName = null)
-    {
-        $indexList = $this->getIndexList($tableName, $schemaName);
-        $keyName = strtoupper($keyName);
-        if (!isset($indexList[$keyName])) {
-            return true;
-        }
-
-        if ($keyName == 'PRIMARY') {
-            $cond = 'DROP PRIMARY KEY';
-        } else {
-            $cond = 'DROP KEY ' . $this->quoteIdentifier($indexList[$keyName]['KEY_NAME']);
-        }
-        $sql = sprintf(
-            'ALTER TABLE %s %s',
-            $this->getPlatform()->quoteIdentifierChain($tableName),
-            $cond
-        );
-
-        return $this->rawQuery($sql);
-    }
-
-    /**
-     * Add new Foreign Key to table
-     * If Foreign Key with same name is exist - it will be deleted
-     *
-     * @param string $fkName
-     * @param string $tableName
-     * @param string $columnName
-     * @param string $refTableName
-     * @param string $refColumnName
-     * @param string $onDelete
-     * @param string $onUpdate
-     * @param bool $purge            trying remove invalid data
-     * @param string $schemaName
-     * @param string $refSchemaName
-     * @return StatementInterface
-     */
-    public function addForeignKey(
-        $fkName,
-        $tableName,
-        $columnName,
-        $refTableName,
-        $refColumnName,
-        $onDelete = AdapterInterface::FK_ACTION_CASCADE,
-        $onUpdate = AdapterInterface::FK_ACTION_CASCADE,
-        $purge = false,
-        $schemaName = null,
-        $refSchemaName = null
-    ) {
-        $this->dropForeignKey($tableName, $fkName, $schemaName);
-
-        if ($purge) {
-            $this->purgeOrphanRecords($tableName, $columnName, $refTableName, $refColumnName, $onDelete);
-        }
-
-        $query = sprintf(
-            'ALTER TABLE %s ADD CONSTRAINT %s FOREIGN KEY (%s) REFERENCES %s (%s)',
-            $this->getPlatform()->quoteIdentifierChain($tableName),
-            $this->quoteIdentifier($fkName),
-            $this->quoteIdentifier($columnName),
-            $this->getPlatform()->quoteIdentifierChain($refTableName),
-            $this->quoteIdentifier($refColumnName)
-        );
-
-        if ($onDelete !== null) {
-            $query .= ' ON DELETE ' . strtoupper($onDelete);
-        }
-        if ($onUpdate  !== null) {
-            $query .= ' ON UPDATE ' . strtoupper($onUpdate);
-        }
-
-        $result = $this->rawQuery($query);
-        return $result;
-    }
-
-    /**
-     * Run additional environment before setup
-     *
-     * @return $this
-     */
-    public function startSetup()
-    {
-        $this->rawQuery("SET SQL_MODE=''");
-        $this->rawQuery("SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0");
-        $this->rawQuery("SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO'");
-
-        return $this;
-    }
-
-    /**
-     * Run additional environment after setup
-     *
-     * @return $this
-     */
-    public function endSetup()
-    {
-        $this->rawQuery("SET SQL_MODE=IFNULL(@OLD_SQL_MODE,'')");
-        $this->rawQuery("SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS=0, 0, 1)");
-
-        return $this;
-    }
-
-    /**
-     * Build SQL statement for condition
-     *
-     * If $condition integer or string - exact value will be filtered ('eq' condition)
-     *
-     * If $condition is array is - one of the following structures is expected:
-     * - array("from" => $fromValue, "to" => $toValue)
-     * - array("eq" => $equalValue)
-     * - array("neq" => $notEqualValue)
-     * - array("like" => $likeValue)
-     * - array("in" => array($inValues))
-     * - array("nin" => array($notInValues))
-     * - array("notnull" => $valueIsNotNull)
-     * - array("null" => $valueIsNull)
-     * - array("gt" => $greaterValue)
-     * - array("lt" => $lessValue)
-     * - array("gteq" => $greaterOrEqualValue)
-     * - array("lteq" => $lessOrEqualValue)
-     * - array("finset" => $valueInSet)
-     * - array("regexp" => $regularExpression)
-     * - array("seq" => $stringValue)
-     * - array("sneq" => $stringValue)
-     *
-     * If non matched - sequential array is expected and OR conditions
-     * will be built using above mentioned structure
-     *
-     * @param string $fieldName
-     * @param integer|string|array $condition
-     * @return string
-     */
-    public function prepareSqlCondition($fieldName, $condition)
-    {
-        $conditionKeyMap = array(
-            'eq'            => "{{fieldName}} = ?",
-            'neq'           => "{{fieldName}} != ?",
-            'like'          => "{{fieldName}} LIKE ?",
-            'nlike'         => "{{fieldName}} NOT LIKE ?",
-            'in'            => "{{fieldName}} IN(?)",
-            'nin'           => "{{fieldName}} NOT IN(?)",
-            'is'            => "{{fieldName}} IS ?",
-            'notnull'       => "{{fieldName}} IS NOT NULL",
-            'null'          => "{{fieldName}} IS NULL",
-            'gt'            => "{{fieldName}} > ?",
-            'lt'            => "{{fieldName}} < ?",
-            'gteq'          => "{{fieldName}} >= ?",
-            'lteq'          => "{{fieldName}} <= ?",
-            'finset'        => "FIND_IN_SET(?, {{fieldName}})",
-            'regexp'        => "{{fieldName}} REGEXP ?",
-            'from'          => "{{fieldName}} >= ?",
-            'to'            => "{{fieldName}} <= ?",
-            'seq'           => null,
-            'sneq'          => null
-        );
-
-        $query = '';
-        if (is_array($condition)) {
-            if (isset($condition['field_expr'])) {
-                $fieldName = str_replace('#?', $this->quoteIdentifier($fieldName), $condition['field_expr']);
-                unset($condition['field_expr']);
-            }
-            $key = key(array_intersect_key($condition, $conditionKeyMap));
-
-            if (isset($condition['from']) || isset($condition['to'])) {
-                if (isset($condition['from'])) {
-                    $from  = $this->_prepareSqlDateCondition($condition, 'from');
-                    $query = $this->_prepareQuotedSqlCondition($conditionKeyMap['from'], $from, $fieldName);
-                }
-
-                if (isset($condition['to'])) {
-                    $query .= empty($query) ? '' : ' AND ';
-                    $to     = $this->_prepareSqlDateCondition($condition, 'to');
-                    $query = $this->_prepareQuotedSqlCondition($query . $conditionKeyMap['to'], $to, $fieldName);
-                }
-            } elseif (array_key_exists($key, $conditionKeyMap)) {
-                $value = $condition[$key];
-                if (($key == 'seq') || ($key == 'sneq')) {
-                    $key = $this->_transformStringSqlCondition($key, $value);
-                }
-                $query = $this->_prepareQuotedSqlCondition($conditionKeyMap[$key], $value, $fieldName);
-            } else {
-                $queries = array();
-                foreach ($condition as $orCondition) {
-                    $queries[] = sprintf('(%s)', $this->prepareSqlCondition($fieldName, $orCondition));
-                }
-
-                $query = sprintf('(%s)', implode(' OR ', $queries));
-            }
-        } else {
-            $query = $this->_prepareQuotedSqlCondition($conditionKeyMap['eq'], (string)$condition, $fieldName);
-        }
-
-        return $query;
-    }
-
-    /**
-     * Prepare Sql condition
-     *
-     * @param  string $text Condition value
-     * @param  mixed $value
-     * @param  string $fieldName
-     * @return string
-     */
-    protected function _prepareQuotedSqlCondition($text, $value, $fieldName)
-    {
-        $sql = $this->quoteInto($text, $value);
-        $sql = str_replace('{{fieldName}}', $fieldName, $sql);
-        return $sql;
-    }
-
-    /**
-     * Transforms sql condition key 'seq' / 'sneq' that is used for comparing string values to its analog:
-     * - 'null' / 'notnull' for empty strings
-     * - 'eq' / 'neq' for non-empty strings
-     *
-     * @param string $conditionKey
-     * @param mixed $value
-     * @return string
-     */
-    protected function _transformStringSqlCondition($conditionKey, $value)
-    {
-        $value = (string) $value;
-        if ($value == '') {
-            return ($conditionKey == 'seq') ? 'null' : 'notnull';
-        } else {
-            return ($conditionKey == 'seq') ? 'eq' : 'neq';
-        }
-    }
-
-    /**
-     * Get Interval Unit SQL fragment
-     *
-     * @param int $interval
-     * @param string $unit
-     * @return string
-     * @throws ErrorException
-     */
-    protected function _getIntervalUnitSql($interval, $unit)
-    {
-        if (!isset($this->_intervalUnits[$unit])) {
-            throw new ErrorException(sprintf('Undefined interval unit "%s" specified', $unit));
-        }
-
-        return sprintf('INTERVAL %d %s', $interval, $this->_intervalUnits[$unit]);
-    }
-
-    /**
-     * Add time values (intervals) to a date value
-     *
-     * @param \Zend_Db_Expr|string $date quoted field name or SQL statement
-     * @param int $interval
-     * @param string $unit
-     * @return \Zend_Db_Expr
-     *
-     * @see INTERVAL_* constants for $unit
-     */
-    public function getDateAddSql($date, $interval, $unit)
-    {
-        $expr = sprintf('DATE_ADD(%s, %s)', $date, $this->_getIntervalUnitSql($interval, $unit));
-        return new Expression($expr);
-    }
-
-    /**
-     * Subtract time values (intervals) to a date value
-     *
-     * @param \Zend_Db_Expr|string $date quoted field name or SQL statement
-     * @param int|string $interval
-     * @param string $unit
-     * @return \Zend_Db_Expr
-     * @see INTERVAL_* constants for $expr
-     */
-    public function getDateSubSql($date, $interval, $unit)
-    {
-        $expr = sprintf('DATE_SUB(%s, %s)', $date, $this->_getIntervalUnitSql($interval, $unit));
-        return new Expression($expr);
-    }
-
-    /**
-     * Minus superfluous characters from hash.
-     *
-     * @param  string $hash
-     * @param  string $prefix
-     * @param  int $maxCharacters
-     * @return string
-     */
-    protected function _minusSuperfluous($hash, $prefix, $maxCharacters)
-    {
-         $diff        = strlen($hash) + strlen($prefix) -  $maxCharacters;
-         $superfluous = $diff / 2;
-         $odd         = $diff % 2;
-         $hash        = substr($hash, $superfluous, - ($superfluous + $odd));
-         return $hash;
-    }
-
-    /**
-     * Retrieve valid table name
-     * Check table name length and allowed symbols
-     *
-     * @param string $tableName
-     * @return string
-     */
-    public function getTableName($tableName)
-    {
-        $prefix = 't_';
-        if (strlen($tableName) > self::LENGTH_TABLE_NAME) {
-            $shortName = ExpressionConverter::shortName($tableName);
-            if (strlen($shortName) > self::LENGTH_TABLE_NAME) {
-                $hash = md5($tableName);
-                if (strlen($prefix.$hash) > self::LENGTH_TABLE_NAME) {
-                    $tableName = $this->_minusSuperfluous($hash, $prefix, self::LENGTH_TABLE_NAME);
-                } else {
-                    $tableName = $prefix . $hash;
-                }
-            } else {
-                $tableName = $shortName;
-            }
-        }
-
-        return $tableName;
-    }
-
-    /**
-     * Retrieve valid index name
-     * Check index name length and allowed symbols
-     *
-     * @param string $tableName
-     * @param string|string[] $fields  the columns list
-     * @param string $indexType
-     * @return string
-     */
-    public function getIndexName($tableName, $fields, $indexType = '')
-    {
-        if (is_array($fields)) {
-            $fields = implode('_', $fields);
-        }
-
-        switch (strtolower($indexType)) {
-            case AdapterInterface::INDEX_TYPE_UNIQUE:
-                $prefix = 'unq_';
-                $shortPrefix = 'u_';
-                break;
-            case AdapterInterface::INDEX_TYPE_FULLTEXT:
-                $prefix = 'fti_';
-                $shortPrefix = 'f_';
-                break;
-            case AdapterInterface::INDEX_TYPE_INDEX:
-            default:
-                $prefix = 'idx_';
-                $shortPrefix = 'i_';
-        }
-
-        $hash = $tableName . '_' . $fields;
-
-        if (strlen($hash) + strlen($prefix) > self::LENGTH_INDEX_NAME) {
-            $short = ExpressionConverter::shortName($prefix . $hash);
-            if (strlen($short) > self::LENGTH_INDEX_NAME) {
-                $hash = md5($hash);
-                if (strlen($hash) + strlen($shortPrefix) > self::LENGTH_INDEX_NAME) {
-                    $hash = $this->_minusSuperfluous($hash, $shortPrefix, self::LENGTH_INDEX_NAME);
-                }
-            } else {
-                $hash = $short;
-            }
-        } else {
-            $hash = $prefix . $hash;
-        }
-
-        return strtoupper($hash);
-    }
-
-    /**
-     * Retrieve valid foreign key name
-     * Check foreign key name length and allowed symbols
-     *
-     * @param string $priTableName
-     * @param string $priColumnName
-     * @param string $refTableName
-     * @param string $refColumnName
-     * @return string
-     */
-    public function getForeignKeyName($priTableName, $priColumnName, $refTableName, $refColumnName)
-    {
-        $prefix = 'fk_';
-        $hash = sprintf('%s_%s_%s_%s', $priTableName, $priColumnName, $refTableName, $refColumnName);
-        if (strlen($prefix.$hash) > self::LENGTH_FOREIGN_NAME) {
-            $short = ExpressionConverter::shortName($prefix . $hash);
-            if (strlen($short) > self::LENGTH_FOREIGN_NAME) {
-                $hash = md5($hash);
-                if (strlen($prefix.$hash) > self::LENGTH_FOREIGN_NAME) {
-                    $hash = $this->_minusSuperfluous($hash, $prefix, self::LENGTH_FOREIGN_NAME);
-                } else {
-                    $hash = $prefix . $hash;
-                }
-            } else {
-                $hash = $short;
-            }
-        } else {
-            $hash = $prefix . $hash;
-        }
-
-        return strtoupper($hash);
-    }
-
-    /**
-     * Stop updating indexes
-     *
-     * @param string $tableName
-     * @param string $schemaName
-     * @return $this
-     */
-    public function disableTableKeys($tableName, $schemaName = null)
-    {
-        $query     = sprintf(
-            'ALTER TABLE %s DISABLE KEYS',
-            $this->getPlatform()->quoteIdentifierChain($tableName)
-        );
-        $this->query($query);
-
-        return $this;
-    }
-
-    /**
-     * Re-create missing indexes
-     *
-     * @param string $tableName
-     * @param string $schemaName
-     * @return $this
-     */
-    public function enableTableKeys($tableName, $schemaName = null)
-    {
-        $tableName = $this->_getTableName($tableName, $schemaName);
-        $query     = sprintf(
-            'ALTER TABLE %s ENABLE KEYS',
-            $this->getPlatform()->quoteIdentifierChain($tableName)
-        );
-        $this->query($query);
-
-        return $this;
-    }
-
-    /**
-     * Calculate checksum for table or for group of tables
-     *
-     * @param array|string $tableNames array of tables names | table name
-     * @param string $schemaName schema name
-     * @return array
-     */
-    public function getTablesChecksum($tableNames, $schemaName = null)
-    {
-        $result     = array();
-        $tableNames = is_array($tableNames) ? $tableNames : array($tableNames);
-
-        foreach ($tableNames as $tableName) {
-            $query = 'CHECKSUM TABLE ' . $this->_getTableName($tableName, $schemaName);
-            $checkSumArray      = $this->fetchRow($query);
-            $result[$tableName] = $checkSumArray['Checksum'];
-        }
-
-        return $result;
-    }
-
-    /**
-     * Render SQL FOR UPDATE clause
-     *
-     * @param string $sql
-     * @return string
-     */
-    public function forUpdate($sql)
-    {
-        return sprintf('%s FOR UPDATE', $sql);
-    }
-
-    /**
-     * Prepare insert data
-     *
-     * @param mixed $row
-     * @param array &$bind
-     * @return string
-     */
-    protected function _prepareInsertData($row, &$bind)
-    {
-        $row = (array)$row;
-        $line = array();
-        foreach ($row as $value) {
-            if ($value instanceof \Zend_Db_Expr) {
-                $line[] = $value->__toString();
-            } else {
-                $line[] = '?';
-                $bind[] = $value;
-            }
-        }
-        $line = implode(', ', $line);
-
-        return sprintf('(%s)', $line);
-    }
-
-    /**
-     * Return ddl type
-     *
-     * @param array $options
-     * @return string
-     */
-    protected function _getDdlType($options)
-    {
-        $ddlType = null;
-        if (isset($options['TYPE'])) {
-            $ddlType = $options['TYPE'];
-        } elseif (isset($options['COLUMN_TYPE'])) {
-            $ddlType = $options['COLUMN_TYPE'];
-        }
-
-        return $ddlType;
-    }
-
-    /**
-     * Return DDL action
-     *
-     * @param string $action
-     * @return string
-     */
-    protected function _getDdlAction($action)
-    {
-        switch ($action) {
-            case AdapterInterface::FK_ACTION_CASCADE:
-                return Table::ACTION_CASCADE;
-            case AdapterInterface::FK_ACTION_SET_NULL:
-                return Table::ACTION_SET_NULL;
-            case AdapterInterface::FK_ACTION_RESTRICT:
-                return Table::ACTION_RESTRICT;
-            default:
-                return Table::ACTION_NO_ACTION;
-        }
-    }
-
-    /**
-     * Prepare sql date condition
-     *
-     * @param array $condition
-     * @param string $key
-     * @return string
-     */
-    protected function _prepareSqlDateCondition($condition, $key)
-    {
-        if (empty($condition['date'])) {
-            if (empty($condition['datetime'])) {
-                $result = $condition[$key];
-            } else {
-                $result = $this->formatDate($condition[$key]);
-            }
-        } else {
-            $result = $this->formatDate($condition[$key]);
-        }
-
-        return $result;
-    }
-
-    /**
-     * Try to find installed primary key name, if not - formate new one.
-     *
-     * @param string $tableName Table name
-     * @param string $schemaName OPTIONAL
-     * @return string Primary Key name
-     */
-    public function getPrimaryKeyName($tableName, $schemaName = null)
-    {
-        $indexes = $this->getIndexList($tableName, $schemaName);
-        if (isset($indexes['PRIMARY'])) {
-            return $indexes['PRIMARY']['KEY_NAME'];
-        } else {
-            return 'PK_' . strtoupper($tableName);
-        }
-    }
-
-    /**
-     * Parse text size
-     * Returns max allowed size if value great it
-     *
-     * @param string|int $size
-     * @return int
-     */
-    protected function _parseTextSize($size)
-    {
-        $size = trim($size);
-        $last = strtolower(substr($size, -1));
-
-        switch ($last) {
-            case 'k':
-                $size = intval($size) * 1024;
-                break;
-            case 'm':
-                $size = intval($size) * 1024 * 1024;
-                break;
-            case 'g':
-                $size = intval($size) * 1024 * 1024 * 1024;
-                break;
-        }
-
-        if (empty($size)) {
-            return Table::DEFAULT_TEXT_SIZE;
-        }
-        if ($size >= Table::MAX_TEXT_SIZE) {
-            return Table::MAX_TEXT_SIZE;
-        }
-
-        return intval($size);
-    }
-
-    /**
-     * Converts fetched blob into raw binary PHP data.
-     * The MySQL drivers do it nice, no processing required.
-     *
-     * @param mixed $value
-     * @return mixed
-     */
-    public function decodeVarbinary($value)
-    {
-        return $value;
-    }
-
-    /**
-     * Create trigger
-     *
-     * @param \Magento\Setup\Framework\DB\Ddl\Trigger $trigger
-     * @throws ErrorException
-     * @return StatementInterface
-     */
-    public function createTrigger(\Magento\Setup\Framework\DB\Ddl\Trigger $trigger)
-    {
-        if (!$trigger->getStatements()) {
-            throw new ErrorException(sprintf(__('Trigger %s has not statements available'), $trigger->getName()));
-        }
-
-        $statements = implode("\n", $trigger->getStatements());
-
-        $sql = sprintf(
-            "CREATE TRIGGER %s %s %s ON %s FOR EACH ROW\nBEGIN\n%s\nEND",
-            $trigger->getName(),
-            $trigger->getTime(),
-            $trigger->getEvent(),
-            $trigger->getTable(),
-            $statements
-        );
-
-        return $this->query($sql);
-    }
-
-    /**
-     * Drop trigger from database
-     *
-     * @param string $triggerName
-     * @param string|null $schemaName
-     * @return bool
-     * @throws \InvalidArgumentException
-     */
-    public function dropTrigger($triggerName, $schemaName = null)
-    {
-        if (empty($triggerName)) {
-            throw new \InvalidArgumentException(__('Trigger name is not defined'));
-        }
-
-        $triggerName = ($schemaName ? $schemaName . '.' : '') . $triggerName;
-
-        $sql = 'DROP TRIGGER IF EXISTS ' . $this->quoteIdentifier($triggerName);
-        $this->query($sql);
-
-        return true;
-    }
-
-    /**
-     * Check if all transactions have been committed
-     *
-     * @return void
-     */
-    public function __destruct()
-    {
-        if ($this->_transactionLevel > 0) {
-            trigger_error('Some transactions have not been committed or rolled back', E_USER_ERROR);
-        }
-    }
-
-    /**
-     * Quotes an identifier.
-     *
-     * @param array|string|\Zend_Db_Expr $ident
-     * @param bool $auto
-     * @return string
-     */
-    public function quoteIdentifier($ident, $auto = false)
-    {
-        return $this->getPlatform()->quoteIdentifier($ident);
-    }
-
-    /**
-     * Safely quotes a value for an SQL statement.
-     *
-     * If an array is passed as the value, the array values are quoted
-     * and then returned as a comma-separated string.
-     *
-     * @param mixed $value The value to quote.
-     * @param mixed $type OPTIONAL the SQL datatype name, or constant, or null.
-     * @return mixed An SQL-safe quoted value (or string of separated values).
-     */
-    public function quote($value, $type = null)
-    {
-        return $this->getPlatform()->quoteValueList($value);
-    }
-
-    /**
-     * Deletes table rows based on a WHERE clause.
-     *
-     * @param  mixed $table The table to update.
-     * @param  mixed $where DELETE WHERE clause(s).
-     * @return int          The number of affected rows.
-     */
-    public function delete($table, $where = '')
-    {
-        $sql = new Sql($this);
-        $delete = $sql->delete($this->_getTableName($table));
-        $delete->where($where);
-
-        $sqlString = $sql->getSqlStringForSqlObject($delete);
-        $result = $this->query($sqlString);
-        return $result->count();
-    }
-
-    /**
-     * Updates table rows with specified data based on a WHERE clause.
-     *
-     * @param  mixed $table The table to update.
-     * @param  array $bind Column-value pairs.
-     * @param  mixed $where UPDATE WHERE clause(s).
-     * @return int          The number of affected rows.
-     */
-    public function update($table, array $bind, $where = '')
-    {
-        $sql = new Sql($this);
-        $update = $sql->update($this->_getTableName($table));
-        $update->where($where);
-        $update->set($bind);
-        $updateString = $sql->getSqlStringForSqlObject($update);
-        $result = $this->query($updateString);
-        return $result->count();
-    }
-
-    /**
-     * Inserts a table row with specified data.
-     *
-     * @param mixed $table The table to insert data into.
-     * @param array $bind Column-value pairs.
-     * @param boolean $onDuplicate
-     * @return int The number of affected rows.
-     */
-    public function insert($table, array $bind, $onDuplicate = false)
-    {
-        $sql = new Sql($this);
-        $insert = $sql->insert($this->_getTableName($table));
-        $insert->values($bind);
-
-        $sqlString = $sql->getSqlStringForSqlObject($insert);
-        if ($onDuplicate) {
-            $sqlString .= ' ON DUPLICATE KEY UPDATE ';
-            $parts = [];
-            foreach (array_keys($bind) as $filed) {
-                $parts[] = $this->quoteIdentifier($filed) . '=VALUES(' . $this->quoteIdentifier($filed) . ')';
-            }
-            $sqlString .= implode(', ', $parts);
-        }
-
-        $result = $this->query($sqlString);
-        return $result->count();
-    }
-}
diff --git a/setup/module/Magento/Setup/src/Framework/DB/Ddl/Table.php b/setup/module/Magento/Setup/src/Framework/DB/Ddl/Table.php
deleted file mode 100644
index 983f0b413b7..00000000000
--- a/setup/module/Magento/Setup/src/Framework/DB/Ddl/Table.php
+++ /dev/null
@@ -1,685 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-
-
-/**
- * Data Definition for table
- *
- * @author      Magento Core Team <core@magentocommerce.com>
- */
-namespace Magento\Setup\Framework\DB\Ddl;
-
-use Magento\Setup\Framework\DB\Adapter\AdapterInterface;
-use Zend\Db\Exception\ErrorException;
-
-class Table
-{
-    /**
-     * Types of columns
-     */
-    const TYPE_BOOLEAN = 'boolean';
-
-    const TYPE_SMALLINT = 'smallint';
-
-    const TYPE_INTEGER = 'integer';
-
-    const TYPE_BIGINT = 'bigint';
-
-    const TYPE_FLOAT = 'float';
-
-    const TYPE_NUMERIC = 'numeric';
-
-    const TYPE_DECIMAL = 'decimal';
-
-    const TYPE_DATE = 'date';
-
-    const TYPE_TIMESTAMP = 'timestamp';
-
-    // Capable to support date-time from 1970 + auto-triggers in some RDBMS
-    const TYPE_DATETIME = 'datetime';
-
-    // Capable to support long date-time before 1970
-    const TYPE_TEXT = 'text';
-
-    const TYPE_BLOB = 'blob';
-
-    // Used for back compatibility, when query param can't use statement options
-    const TYPE_VARBINARY = 'varbinary';
-
-    // A real blob, stored as binary inside DB
-
-    /**
-     * Default and maximal TEXT and BLOB columns sizes we can support for different DB systems.
-     */
-    const DEFAULT_TEXT_SIZE = 1024;
-
-    const MAX_TEXT_SIZE = 2147483648;
-
-    const MAX_VARBINARY_SIZE = 2147483648;
-
-    /**
-     * Default values for timestampses - fill with current timestamp on inserting record, on changing and both cases
-     */
-    const TIMESTAMP_INIT_UPDATE = 'TIMESTAMP_INIT_UPDATE';
-
-    const TIMESTAMP_INIT = 'TIMESTAMP_INIT';
-
-    const TIMESTAMP_UPDATE = 'TIMESTAMP_UPDATE';
-
-    /**
-     * Actions used for foreign keys
-     */
-    const ACTION_CASCADE = 'CASCADE';
-
-    const ACTION_SET_NULL = 'SET NULL';
-
-    const ACTION_NO_ACTION = 'NO ACTION';
-
-    const ACTION_RESTRICT = 'RESTRICT';
-
-    const ACTION_SET_DEFAULT = 'SET DEFAULT';
-
-    /**
-     * Name of table
-     *
-     * @var string
-     */
-    protected $_tableName;
-
-    /**
-     * Schema name
-     *
-     * @var string
-     */
-    protected $_schemaName;
-
-    /**
-     * Comment for Table
-     *
-     * @var string
-     */
-    protected $_tableComment;
-
-    /**
-     * Column descriptions for a table
-     *
-     * Is an associative array keyed by the uppercase column name
-     * The value of each array element is an associative array
-     * with the following keys:
-     *
-     * COLUMN_NAME      => string; column name
-     * COLUMN_POSITION  => number; ordinal position of column in table
-     * DATA_TYPE        => string; constant datatype of column
-     * DEFAULT          => string; default expression of column, null if none
-     * NULLABLE         => boolean; true if column can have nulls
-     * LENGTH           => number; length of CHAR/VARCHAR/INT
-     * SCALE            => number; scale of NUMERIC/DECIMAL
-     * PRECISION        => number; precision of NUMERIC/DECIMAL
-     * UNSIGNED         => boolean; unsigned property of an integer type
-     * PRIMARY          => boolean; true if column is part of the primary key
-     * PRIMARY_POSITION => integer; position of column in primary key
-     * IDENTITY         => integer; true if column is auto-generated with unique values
-     * COMMENT          => string; column description
-     *
-     * @var array
-     */
-    protected $_columns = array();
-
-    /**
-     * Index descriptions for a table
-     *
-     * Is an associative array keyed by the uppercase index name
-     * The value of each array element is an associative array
-     * with the following keys:
-     *
-     * INDEX_NAME       => string; index name
-     * COLUMNS          => array; array of index columns
-     * TYPE             => string; Optional special index type
-     *
-     * COLUMNS is an associative array keyed by the uppercase column name
-     * The value of each COLUMNS array element is an associative array
-     * with the following keys:
-     *
-     * NAME             => string; The column name
-     * SIZE             => int|null; Length of index column (always null if index is unique)
-     * POSITION         => int; Position in index
-     *
-     * @var array
-     */
-    protected $_indexes = array();
-
-    /**
-     * Foreign key descriptions for a table
-     *
-     * Is an associative array keyed by the uppercase foreign key name
-     * The value of each array element is an associative array
-     * with the following keys:
-     *
-     * FK_NAME          => string; The foreign key name
-     * COLUMN_NAME      => string; The column name in table
-     * REF_TABLE_NAME   => string; Reference table name
-     * REF_COLUMN_NAME  => string; Reference table column name
-     * ON_DELETE        => string; Integrity Actions, default NO ACTION
-     * ON_UPDATE        => string; Integrity Actions, default NO ACTION
-     *
-     * Valid Integrity Actions:
-     * CASCADE | SET NULL | NONE | RESTRICT | SET DEFAULT
-     *
-     * @var array
-     */
-    protected $_foreignKeys = array();
-
-    /**
-     * Additional table options
-     *
-     * @var array
-     */
-    protected $_options = array('type' => 'INNODB', 'charset' => 'utf8', 'collate' => 'utf8_general_ci');
-
-    /**
-     * Set table name
-     *
-     * @param string $name
-     * @return $this
-     */
-    public function setName($name)
-    {
-        $this->_tableName = $name;
-        if ($this->_tableComment === null) {
-            $this->_tableComment = $name;
-        }
-        return $this;
-    }
-
-    /**
-     * Set schema name
-     *
-     * @param string $name
-     * @return $this
-     */
-    public function setSchema($name)
-    {
-        $this->_schemaName = $name;
-        return $this;
-    }
-
-    /**
-     * Set comment for table
-     *
-     * @param string $comment
-     * @return $this
-     */
-    public function setComment($comment)
-    {
-        $this->_tableComment = $comment;
-        return $this;
-    }
-
-    /**
-     * Retrieve name of table
-     *
-     * @return string
-     * @throws ErrorException
-     */
-    public function getName()
-    {
-        if (is_null($this->_tableName)) {
-            throw new ErrorException('Table name is not defined');
-        }
-        return $this->_tableName;
-    }
-
-    /**
-     * Get schema name
-     *
-     * @return string|null
-     */
-    public function getSchema()
-    {
-        return $this->_schemaName;
-    }
-
-    /**
-     * Return comment for table
-     *
-     * @return string
-     */
-    public function getComment()
-    {
-        return $this->_tableComment;
-    }
-
-    /**
-     * Adds column to table.
-     *
-     * $options contains additional options for columns. Supported values are:
-     * - 'unsigned', for number types only. Default: FALSE.
-     * - 'precision', for numeric and decimal only. Default: taken from $size, if not set there then 0.
-     * - 'scale', for numeric and decimal only. Default: taken from $size, if not set there then 10.
-     * - 'default'. Default: not set.
-     * - 'nullable'. Default: TRUE.
-     * - 'primary', add column to primary index. Default: do not add.
-     * - 'primary_position', only for column in primary index. Default: count of primary columns + 1.
-     * - 'identity' or 'auto_increment'. Default: FALSE.
-     *
-     * @param string $name the column name
-     * @param string $type the column data type
-     * @param string|int|array $size the column length
-     * @param array $options array of additional options
-     * @param string $comment column description
-     * @return $this
-     * @throws \Zend\Db\Exception\ExceptionInterface
-     */
-    public function addColumn($name, $type, $size = null, $options = array(), $comment = null)
-    {
-        $position = count($this->_columns);
-        $default = false;
-        $nullable = true;
-        $length = null;
-        $scale = null;
-        $precision = null;
-        $unsigned = false;
-        $primary = false;
-        $primaryPosition = 0;
-        $identity = false;
-
-        // Prepare different properties
-        switch ($type) {
-            case self::TYPE_BOOLEAN:
-                break;
-
-            case self::TYPE_SMALLINT:
-            case self::TYPE_INTEGER:
-            case self::TYPE_BIGINT:
-                if (!empty($options['unsigned'])) {
-                    $unsigned = true;
-                }
-
-                break;
-
-            case self::TYPE_FLOAT:
-                if (!empty($options['unsigned'])) {
-                    $unsigned = true;
-                }
-                break;
-
-            case self::TYPE_DECIMAL:
-            case self::TYPE_NUMERIC:
-                $match = array();
-                $scale = 10;
-                $precision = 0;
-                // parse size value
-                if (is_array($size)) {
-                    if (count($size) == 2) {
-                        $size = array_values($size);
-                        $precision = $size[0];
-                        $scale = $size[1];
-                    }
-                } elseif (preg_match('#^(\d+),(\d+)$#', $size, $match)) {
-                    $precision = $match[1];
-                    $scale = $match[2];
-                }
-                // check options
-                if (isset($options['precision'])) {
-                    $precision = $options['precision'];
-                }
-
-                if (isset($options['scale'])) {
-                    $scale = $options['scale'];
-                }
-
-                if (!empty($options['unsigned'])) {
-                    $unsigned = true;
-                }
-                break;
-            case self::TYPE_DATE:
-            case self::TYPE_DATETIME:
-            case self::TYPE_TIMESTAMP:
-                break;
-            case self::TYPE_TEXT:
-            case self::TYPE_BLOB:
-            case self::TYPE_VARBINARY:
-                $length = $size;
-                break;
-            default:
-                throw new ErrorException('Invalid column data type "' . $type . '"');
-        }
-
-        if (array_key_exists('default', $options)) {
-            $default = $options['default'];
-        }
-        if (array_key_exists('nullable', $options)) {
-            $nullable = (bool)$options['nullable'];
-        }
-        if (!empty($options['primary'])) {
-            $primary = true;
-            if (isset($options['primary_position'])) {
-                $primaryPosition = (int)$options['primary_position'];
-            } else {
-                $primaryPosition = 0;
-                foreach ($this->_columns as $v) {
-                    if ($v['PRIMARY']) {
-                        $primaryPosition++;
-                    }
-                }
-            }
-        }
-        if (!empty($options['identity']) || !empty($options['auto_increment'])) {
-            $identity = true;
-        }
-
-        if ($comment === null) {
-            $comment = ucfirst($name);
-        }
-
-        $upperName = strtoupper($name);
-        $this->_columns[$upperName] = array(
-            'COLUMN_NAME' => $name,
-            'COLUMN_TYPE' => $type,
-            'COLUMN_POSITION' => $position,
-            'DATA_TYPE' => $type,
-            'DEFAULT' => $default,
-            'NULLABLE' => $nullable,
-            'LENGTH' => $length,
-            'SCALE' => $scale,
-            'PRECISION' => $precision,
-            'UNSIGNED' => $unsigned,
-            'PRIMARY' => $primary,
-            'PRIMARY_POSITION' => $primaryPosition,
-            'IDENTITY' => $identity,
-            'COMMENT' => $comment
-        );
-
-        return $this;
-    }
-
-    /**
-     * Add Foreign Key to table
-     *
-     * @param string $fkName        the foreign key name
-     * @param string $column        the foreign key column name
-     * @param string $refTable      the reference table name
-     * @param string $refColumn     the reference table column name
-     * @param string $onDelete      the action on delete row
-     * @param string $onUpdate      the action on update
-     * @return $this
-     * @throws ErrorException
-     */
-    public function addForeignKey($fkName, $column, $refTable, $refColumn, $onDelete = null, $onUpdate = null)
-    {
-        $upperName = strtoupper($fkName);
-
-        // validate column name
-        if (!isset($this->_columns[strtoupper($column)])) {
-            throw new ErrorException('Undefined column "' . $column . '"');
-        }
-
-        switch ($onDelete) {
-            case self::ACTION_CASCADE:
-            case self::ACTION_RESTRICT:
-            case self::ACTION_SET_DEFAULT:
-            case self::ACTION_SET_NULL:
-                break;
-            default:
-                $onDelete = self::ACTION_NO_ACTION;
-        }
-
-        switch ($onUpdate) {
-            case self::ACTION_CASCADE:
-            case self::ACTION_RESTRICT:
-            case self::ACTION_SET_DEFAULT:
-            case self::ACTION_SET_NULL:
-                break;
-            default:
-                $onUpdate = self::ACTION_NO_ACTION;
-        }
-
-        $this->_foreignKeys[$upperName] = array(
-            'FK_NAME' => $fkName,
-            'COLUMN_NAME' => $column,
-            'REF_TABLE_NAME' => $refTable,
-            'REF_COLUMN_NAME' => $refColumn,
-            'ON_DELETE' => $onDelete,
-            'ON_UPDATE' => $onUpdate
-        );
-
-        return $this;
-    }
-
-    /**
-     * Add index to table
-     *
-     * @param string $indexName the index name
-     * @param array|string $fields array of columns or column string
-     * @param array $options array of additional options
-     * @return $this
-     * @throws ErrorException
-     */
-    public function addIndex($indexName, $fields, $options = array())
-    {
-        $idxType = AdapterInterface::INDEX_TYPE_INDEX;
-        $position = 0;
-        $columns = array();
-        if (!is_array($fields)) {
-            $fields = array($fields);
-        }
-
-        foreach ($fields as $columnData) {
-            $columnSize = null;
-            $columnPos = $position;
-            if (is_string($columnData)) {
-                $columnName = $columnData;
-            } elseif (is_array($columnData)) {
-                if (!isset($columnData['name'])) {
-                    throw new ErrorException('Invalid index column data');
-                }
-
-                $columnName = $columnData['name'];
-                if (!empty($columnData['size'])) {
-                    $columnSize = (int)$columnData['size'];
-                }
-                if (!empty($columnData['position'])) {
-                    $columnPos = (int)$columnData['position'];
-                }
-            } else {
-                continue;
-            }
-
-            $columns[strtoupper(
-                $columnName
-            )] = array(
-                'NAME' => $columnName,
-                'SIZE' => $columnSize,
-                'POSITION' => $columnPos
-            );
-
-            $position++;
-        }
-
-        if (empty($columns)) {
-            throw new ErrorException('Columns for index are not defined');
-        }
-
-        if (!empty($options['type'])) {
-            $idxType = $options['type'];
-        }
-
-        $this->_indexes[strtoupper(
-            $indexName
-        )] = array(
-            'INDEX_NAME' => $indexName,
-            'COLUMNS' => $this->normalizeIndexColumnPosition($columns),
-            'TYPE' => $idxType
-        );
-
-        return $this;
-    }
-
-    /**
-     * Retrieve array of table columns
-     *
-     * @param bool $normalized
-     * @see $this->_columns
-     * @return array
-     */
-    public function getColumns($normalized = true)
-    {
-        if ($normalized) {
-            return $this->normalizeColumnPosition($this->_columns);
-        }
-        return $this->_columns;
-    }
-
-    /**
-     * Set column, formatted according to DDL Table format, into columns structure
-     *
-     * @param array $column
-     * @see $this->_columns
-     * @return $this
-     */
-    public function setColumn($column)
-    {
-        $upperName = strtoupper($column['COLUMN_NAME']);
-        $this->_columns[$upperName] = $column;
-        return $this;
-    }
-
-    /**
-     * Retrieve array of table indexes
-     *
-     * @see $this->_indexes
-     * @return array
-     */
-    public function getIndexes()
-    {
-        return $this->_indexes;
-    }
-
-    /**
-     * Retrieve array of table foreign keys
-     *
-     * @see $this->_foreignKeys
-     * @return array
-     */
-    public function getForeignKeys()
-    {
-        return $this->_foreignKeys;
-    }
-
-    /**
-     * Set table option
-     *
-     * @param string $key
-     * @param string $value
-     * @return $this
-     */
-    public function setOption($key, $value)
-    {
-        $this->_options[$key] = $value;
-        return $this;
-    }
-
-    /**
-     * Retrieve table option value by option name
-     * Return null if option does not exits
-     *
-     * @param string $key
-     * @return null|string
-     */
-    public function getOption($key)
-    {
-        if (!isset($this->_options[$key])) {
-            return null;
-        }
-        return $this->_options[$key];
-    }
-
-    /**
-     * Retrieve array of table options
-     *
-     * @return array
-     */
-    public function getOptions()
-    {
-        return $this->_options;
-    }
-
-    /**
-     * Index column position comparison function
-     *
-     * @param array $a
-     * @param array $b
-     * @return int
-     */
-    protected function sortIndexColumnPosition($a, $b)
-    {
-        return $a['POSITION'] - $b['POSITION'];
-    }
-
-    /**
-     * table column position comparison function
-     *
-     * @param array $a
-     * @param array $b
-     * @return int
-     */
-    protected function sortColumnPosition($a, $b)
-    {
-        return $a['COLUMN_POSITION'] - $b['COLUMN_POSITION'];
-    }
-
-    /**
-     * Normalize positon of index columns array
-     *
-     * @param array $columns
-     * @return array
-     */
-    protected function normalizeIndexColumnPosition($columns)
-    {
-        uasort($columns, array($this, 'sortIndexColumnPosition'));
-        $position = 0;
-        foreach (array_keys($columns) as $columnId) {
-            $columns[$columnId]['POSITION'] = $position;
-            $position++;
-        }
-        return $columns;
-    }
-
-    /**
-     * Normalize position of table columns array
-     *
-     * @param array $columns
-     * @return array
-     */
-    protected function normalizeColumnPosition($columns)
-    {
-        uasort($columns, array($this, 'sortColumnPosition'));
-        $position = 0;
-        foreach (array_keys($columns) as $columnId) {
-            $columns[$columnId]['COLUMN_POSITION'] = $position;
-            $position++;
-        }
-        return $columns;
-    }
-}
diff --git a/setup/module/Magento/Setup/src/Framework/DB/Ddl/Trigger.php b/setup/module/Magento/Setup/src/Framework/DB/Ddl/Trigger.php
deleted file mode 100644
index 3efc769d553..00000000000
--- a/setup/module/Magento/Setup/src/Framework/DB/Ddl/Trigger.php
+++ /dev/null
@@ -1,271 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license   http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-namespace Magento\Setup\Framework\DB\Ddl;
-
-use Zend\Db\Exception\ErrorException;
-
-class Trigger
-{
-    /**#@+
-     * Trigger times
-     */
-    const TIME_BEFORE = 'BEFORE';
-
-    const TIME_AFTER = 'AFTER';
-    /**#@-*/
-
-    /**#@+
-     * Trigger events
-     */
-    const EVENT_INSERT = 'INSERT';
-
-    const EVENT_UPDATE = 'UPDATE';
-
-    const EVENT_DELETE = 'DELETE';
-
-    /**#@-*/
-
-    /**
-     * List of times available for trigger
-     *
-     * @var array
-     */
-    protected static $listOfTimes = array(self::TIME_BEFORE, self::TIME_AFTER);
-
-    /**
-     * List of events available for trigger
-     *
-     * @var array
-     */
-    protected static $listOfEvents = array(self::EVENT_INSERT, self::EVENT_UPDATE, self::EVENT_DELETE);
-
-    /**
-     * Name of trigger
-     *
-     * @var string
-     */
-    protected $name;
-
-    /**
-     * Time of trigger
-     *
-     * @var string
-     */
-    protected $time;
-
-    /**
-     * Time of trigger
-     *
-     * @var string
-     */
-    protected $event;
-
-    /**
-     * Table name
-     *
-     * @var string
-     */
-    protected $tableName;
-
-    /**
-     * List of statements for trigger body
-     *
-     * @var array
-     */
-    protected $statements = array();
-
-    /**
-     * Set trigger name
-     *
-     * @param string $name
-     * @throws \InvalidArgumentException
-     * @return Trigger
-     */
-    public function setName($name)
-    {
-        if (!is_string($name)) {
-            throw new \InvalidArgumentException(__('Trigger name should be a string'));
-        }
-
-        $this->name = strtolower($name);
-        return $this;
-    }
-
-    /**
-     * Retrieve name of trigger
-     *
-     * @throws ErrorException
-     * @return string
-     */
-    public function getName()
-    {
-        if (empty($this->name)) {
-            throw new ErrorException(__('Trigger name is not defined'));
-        }
-        return $this->name;
-    }
-
-    /**
-     * Set trigger time
-     *
-     * @param string $time
-     * @throws \InvalidArgumentException
-     * @return Trigger
-     */
-    public function setTime($time)
-    {
-        if (in_array($time, self::$listOfTimes)) {
-            $this->time = strtoupper($time);
-        } else {
-            throw new \InvalidArgumentException(__('Trigger unsupported time type'));
-        }
-        return $this;
-    }
-
-    /**
-     * Retrieve time of trigger
-     *
-     * @throws ErrorException
-     * @return string
-     */
-    public function getTime()
-    {
-        if (is_null($this->time)) {
-            throw new ErrorException(__('Trigger time is not defined'));
-        }
-        return $this->time;
-    }
-
-    /**
-     * Set trigger event
-     *
-     * @param string $event
-     * @throws \InvalidArgumentException
-     * @return Trigger
-     */
-    public function setEvent($event)
-    {
-        if (in_array($event, self::$listOfEvents)) {
-            $this->event = strtoupper($event);
-        } else {
-            throw new \InvalidArgumentException(__('Trigger unsupported event type'));
-        }
-        return $this;
-    }
-
-    /**
-     * Retrieve event of trigger
-     *
-     * @throws ErrorException
-     * @return string
-     */
-    public function getEvent()
-    {
-        if (is_null($this->event)) {
-            throw new ErrorException(__('Trigger event is not defined'));
-        }
-        return $this->event;
-    }
-
-    /**
-     * Set table name
-     *
-     * @param string $name
-     * @throws \InvalidArgumentException
-     * @return Trigger
-     */
-    public function setTable($name)
-    {
-        if (!is_string($name)) {
-            throw new \InvalidArgumentException(__('Trigger table name should be a string'));
-        }
-        $this->tableName = strtolower($name);
-        return $this;
-    }
-
-    /**
-     * Retrieve table name
-     *
-     * @throws ErrorException
-     * @return string
-     */
-    public function getTable()
-    {
-        if (empty($this->tableName)) {
-            throw new ErrorException(__('Trigger table name is not defined'));
-        }
-        return $this->tableName;
-    }
-
-    /**
-     * Add statement to trigger
-     *
-     * @param string $statement
-     * @throws \InvalidArgumentException
-     * @return Trigger
-     */
-    public function addStatement($statement)
-    {
-        if (!is_string($statement)) {
-            throw new \InvalidArgumentException(__('Trigger statement should be a string'));
-        }
-
-        $statement = trim($statement);
-        $statement = rtrim($statement, ';') . ';';
-
-        $this->statements[] = $statement;
-
-        return $this;
-    }
-
-    /**
-     * Retrieve list of statements of trigger
-     *
-     * @return array
-     */
-    public function getStatements()
-    {
-        return $this->statements;
-    }
-
-    /**
-     * Retrieve list of times available for trigger
-     *
-     * @return array
-     */
-    public static function getListOfTimes()
-    {
-        return self::$listOfTimes;
-    }
-
-    /**
-     * Retrieve list of events available for trigger
-     *
-     * @return array
-     */
-    public static function getListOfEvents()
-    {
-        return self::$listOfEvents;
-    }
-}
diff --git a/setup/module/Magento/Setup/src/Model/AdminAccount.php b/setup/module/Magento/Setup/src/Model/AdminAccount.php
index a7640ae756d..b41246181bf 100644
--- a/setup/module/Magento/Setup/src/Model/AdminAccount.php
+++ b/setup/module/Magento/Setup/src/Model/AdminAccount.php
@@ -117,16 +117,16 @@ class AdminAccount
             'password'  => $this->generatePassword(),
             'is_active' => 1,
         ];
-        $resultSet = $this->setup->getConnection()->query(
+        $result = $this->setup->getConnection()->fetchRow(
             'SELECT user_id, username, email FROM ' . $this->setup->getTable('admin_user') . ' ' .
             'WHERE username = :username OR email = :email',
             ['username' => $this->data[self::KEY_USERNAME], 'email' => $this->data[self::KEY_EMAIL]]
         );
 
-        if ($resultSet->count() > 0) {
+        if (!empty($result)) {
             // User exists, update
-            $this->validateUserMatches($resultSet->current()->username, $resultSet->current()->email);
-            $adminId = $resultSet->current()->user_id;
+            $this->validateUserMatches($result['username'], $result['email']);
+            $adminId = $result['user_id'];
             $adminData['modified'] = date('Y-m-d H:i:s');
             $this->setup->getConnection()->update(
                 $this->setup->getTable('admin_user'),
@@ -142,7 +142,7 @@ class AdminAccount
                 $this->setup->getTable('admin_user'),
                 $adminData
             );
-            $adminId = $this->setup->getConnection()->getDriver()->getLastGeneratedValue();
+            $adminId = $this->setup->getConnection()->lastInsertId();
         }
         return $adminId;
     }
@@ -185,12 +185,12 @@ class AdminAccount
      */
     private function saveAdminUserRole($adminId)
     {
-        $resultSet = $this->setup->getConnection()->query(
+        $result = $this->setup->getConnection()->fetchRow(
             'SELECT * FROM ' . $this->setup->getTable('authorization_role') . ' ' .
             'WHERE user_id = :user_id',
             ['user_id' => $adminId]
         );
-        if ($resultSet->count() < 1) {
+        if (empty($result)) {
             // No user role exists for this user id, create it
             $adminRoleData = [
                 'parent_id'  => $this->retrieveAdministratorsRoleId(),
@@ -221,18 +221,17 @@ class AdminAccount
             'user_type' => UserContextInterface::USER_TYPE_ADMIN,
             'role_name' => 'Administrators'
         ];
-
-        $resultSet = $this->setup->getConnection()->query(
+        $result = $this->setup->getConnection()->fetchRow(
             'SELECT * FROM ' . $this->setup->getTable('authorization_role') . ' ' .
             'WHERE parent_id = :parent_id AND tree_level = :tree_level AND role_type = :role_type AND ' .
             'user_id = :user_id AND user_type = :user_type AND role_name = :role_name',
             $administratorsRoleData
         );
-        if ($resultSet->count() < 1) {
+        if (empty($result)) {
             throw new \Exception('No Administrators role was found, data fixture needs to be run');
         } else {
             // Found at least one, use first
-            return $resultSet->current()->role_id;
+            return $result['role_id'];
         }
     }
 }
diff --git a/setup/module/Magento/Setup/src/Model/DirectoryListFactory.php b/setup/module/Magento/Setup/src/Model/DirectoryListFactory.php
deleted file mode 100644
index 395253e50d7..00000000000
--- a/setup/module/Magento/Setup/src/Model/DirectoryListFactory.php
+++ /dev/null
@@ -1,73 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright  Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-
-namespace Magento\Setup\Model;
-
-use Zend\ServiceManager\ServiceLocatorInterface;
-use Magento\Config\Config;
-use Magento\Config\ConfigFactory;
-use Magento\Framework\App\Filesystem\DirectoryList;
-
-class DirectoryListFactory
-{
-    /**
-     * Zend Framework's service locator
-     *
-     * @var ServiceLocatorInterface
-     */
-    protected $serviceLocator;
-
-    /**
-     * @var Config
-     */
-    protected $config;
-
-    /**
-     * Constructor
-     *
-     * @param ServiceLocatorInterface $serviceLocator
-     * @param ConfigFactory $configFactory
-     */
-    public function __construct(
-        ServiceLocatorInterface $serviceLocator,
-        ConfigFactory $configFactory
-    ) {
-        $this->serviceLocator = $serviceLocator;
-        $this->config = $configFactory->create();
-    }
-
-    /**
-     * Factory method for DirectoryList object
-     *
-     * @param array $config
-     * @return DirectoryList
-     */
-    public function create(array $config = array())
-    {
-        return new DirectoryList(
-            $this->config->getMagentoBasePath(),
-            $config
-        );
-    }
-}
diff --git a/setup/module/Magento/Setup/src/Model/FilePermissions.php b/setup/module/Magento/Setup/src/Model/FilePermissions.php
index d57af0dec46..5da5d56693a 100644
--- a/setup/module/Magento/Setup/src/Model/FilePermissions.php
+++ b/setup/module/Magento/Setup/src/Model/FilePermissions.php
@@ -29,7 +29,6 @@ use Magento\Framework\Filesystem;
 
 class FilePermissions
 {
-
     /**
      * @var Filesystem
      */
@@ -69,15 +68,15 @@ class FilePermissions
     protected $applicationCurrentNonWritableDirectories = [];
 
     /**
-     * @param FilesystemFactory  $filesystemFactory
-     * @param DirectoryListFactory  $directoryListFactory
+     * @param Filesystem $filesystem
+     * @param DirectoryList $directoryList
      */
     public function __construct(
-        FilesystemFactory  $filesystemFactory,
-        DirectoryListFactory  $directoryListFactory
+        Filesystem $filesystem,
+        DirectoryList $directoryList
     ) {
-        $this->filesystem = $filesystemFactory->create();
-        $this->directoryList = $directoryListFactory->create();
+        $this->filesystem = $filesystem;
+        $this->directoryList = $directoryList;
     }
 
     /**
diff --git a/setup/module/Magento/Setup/src/Model/FilesystemFactory.php b/setup/module/Magento/Setup/src/Model/FilesystemFactory.php
deleted file mode 100644
index f9cd4df2b33..00000000000
--- a/setup/module/Magento/Setup/src/Model/FilesystemFactory.php
+++ /dev/null
@@ -1,66 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright  Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-
-namespace Magento\Setup\Model;
-
-use Zend\ServiceManager\ServiceLocatorInterface;
-use Magento\Framework\Filesystem;
-use Magento\Framework\Filesystem\File\ReadFactory;
-
-class FilesystemFactory
-{
-    /**
-     * Zend Framework's service locator
-     *
-     * @var ServiceLocatorInterface
-     */
-    protected $serviceLocator;
-
-    /**
-     * Constructor
-     *
-     * @param ServiceLocatorInterface $serviceLocator
-     */
-    public function __construct(
-        ServiceLocatorInterface $serviceLocator
-    ) {
-        $this->serviceLocator = $serviceLocator;
-    }
-
-    /**
-     * Factory method for Filesystem object
-     *
-     * @param ReadFactory $fileReadFactory
-     * @return Filesystem
-     */
-    public function create(ReadFactory $fileReadFactory = null)
-    {
-        return new Filesystem(
-            $this->serviceLocator->get('Magento\Setup\Model\DirectoryListFactory')->create(),
-            $this->serviceLocator->get('Magento\Framework\Filesystem\Directory\ReadFactory'),
-            $this->serviceLocator->get('Magento\Framework\Filesystem\Directory\WriteFactory'),
-            $fileReadFactory
-        );
-    }
-}
diff --git a/setup/module/Magento/Setup/src/Model/Installer.php b/setup/module/Magento/Setup/src/Model/Installer.php
index 132957b42a2..b96772d3ed5 100644
--- a/setup/module/Magento/Setup/src/Model/Installer.php
+++ b/setup/module/Magento/Setup/src/Model/Installer.php
@@ -25,8 +25,6 @@
 namespace Magento\Setup\Model;
 
 use Magento\Setup\Module\Setup\ConfigFactory as DeploymentConfigFactory;
-use Magento\Config\ConfigFactory as SystemConfigFactory;
-use Magento\Config\Config as SystemConfig;
 use Magento\Setup\Module\Setup\Config;
 use Magento\Setup\Module\SetupFactory;
 use Magento\Setup\Module\ModuleListInterface;
@@ -37,6 +35,12 @@ use Zend\Db\Sql\Sql;
 use Magento\Framework\Shell;
 use Magento\Framework\Shell\CommandRenderer;
 use Symfony\Component\Process\PhpExecutableFinder;
+use Magento\Framework\App\Filesystem\DirectoryList;
+use Magento\Framework\App\MaintenanceMode;
+use Magento\Framework\Filesystem;
+use Magento\Framework\Filesystem\FilesystemException;
+use Zend\ServiceManager\ServiceLocatorInterface;
+use Magento\Setup\Mvc\Bootstrap\InitParamListener;
 
 /**
  * Class Installer contains the logic to install Magento application.
@@ -90,11 +94,11 @@ class Installer
     private $moduleList;
 
     /**
-     * System configuration factory
+     * List of directories of Magento application
      *
-     * @var SystemConfig
+     * @var DirectoryList
      */
-    private $systemConfig;
+    private $directoryList;
 
     /**
      * Admin account factory
@@ -146,12 +150,33 @@ class Installer
     private $progress;
 
     /**
-     * Messages
+     * Maintenance mode handler
+     *
+     * @var MaintenanceMode
+     */
+    private $maintenanceMode;
+
+    /**
+     * Magento filesystem
+     *
+     * @var Filesystem
+     */
+    private $filesystem;
+
+    /**
+     * Informational messages that may appear during installation routine
      *
      * @var array
      */
     private $messages = array();
 
+    /**
+     * A materialized string of initialization parameters to pass on any script that's run externally by this model
+     *
+     * @var string
+     */
+    private $execParams;
+
     /**
      * Constructor
      *
@@ -159,34 +184,43 @@ class Installer
      * @param DeploymentConfigFactory $deploymentConfigFactory
      * @param SetupFactory $setupFactory
      * @param ModuleListInterface $moduleList
-     * @param SystemConfigFactory $systemConfigFactory
+     * @param DirectoryList $directoryList
      * @param AdminAccountFactory $adminAccountFactory
      * @param LoggerInterface $log
      * @param Random $random
      * @param ConnectionFactory $connectionFactory
+     * @param MaintenanceMode $maintenanceMode
+     * @param Filesystem $filesystem
+     * @param ServiceLocatorInterface $serviceManager
      */
     public function __construct(
         FilePermissions $filePermissions,
         DeploymentConfigFactory $deploymentConfigFactory,
         SetupFactory $setupFactory,
         ModuleListInterface $moduleList,
-        SystemConfigFactory $systemConfigFactory,
+        DirectoryList $directoryList,
         AdminAccountFactory $adminAccountFactory,
         LoggerInterface $log,
         Random $random,
-        ConnectionFactory $connectionFactory
+        ConnectionFactory $connectionFactory,
+        MaintenanceMode $maintenanceMode,
+        Filesystem $filesystem,
+        ServiceLocatorInterface $serviceManager
     ) {
         $this->filePermissions = $filePermissions;
         $this->deploymentConfigFactory = $deploymentConfigFactory;
         $this->setupFactory = $setupFactory;
         $this->moduleList = $moduleList;
-        $this->systemConfig = $systemConfigFactory->create();
+        $this->directoryList = $directoryList;
         $this->adminAccountFactory = $adminAccountFactory;
         $this->log = $log;
         $this->random = $random;
         $this->connectionFactory = $connectionFactory;
         $this->shellRenderer = new CommandRenderer;
         $this->shell = new Shell($this->shellRenderer);
+        $this->maintenanceMode = $maintenanceMode;
+        $this->filesystem = $filesystem;
+        $this->execParams = urldecode(http_build_query($serviceManager->get(InitParamListener::BOOTSTRAP_PARAM)));
     }
 
     /**
@@ -199,10 +233,10 @@ class Installer
     public function install($request)
     {
         $script[] = ['File permissions check...', 'checkInstallationFilePermissions', []];
-        $script[] = ['Enabling Maintenance Mode:', 'setMaintenanceMode', [1]];
+        $script[] = ['Enabling Maintenance Mode...', 'setMaintenanceMode', [1]];
         $script[] = ['Installing deployment configuration...', 'installDeploymentConfig', [$request]];
         if (!empty($request[self::CLEANUP_DB])) {
-            $script[] = ['Cleaning up database...', 'cleanupDb', [$request]];
+            $script[] = ['Cleaning up database...', 'cleanupDb', []];
         }
         $script[] = ['Installing database schema:', 'installSchema', []];
         $script[] = ['Installing user configuration...', 'installUserConfig', [$request]];
@@ -280,7 +314,7 @@ class Installer
     {
         $results = $this->filePermissions->getUnnecessaryWritableDirectoriesForApplication();
         if ($results) {
-            $errorMsg = 'Unnecessary writing permissions to the following directories: ';
+            $errorMsg = 'For security, remove write permissions from these directories: ';
             foreach ($results as $result) {
                 $errorMsg .= '\'' . $result . '\' ';
             }
@@ -298,8 +332,8 @@ class Installer
     public function installDeploymentConfig($data)
     {
         $data[Config::KEY_DATE] = date('r');
-        if (empty($data[config::KEY_ENCRYPTION_KEY])) {
-            $data[config::KEY_ENCRYPTION_KEY] = md5($this->random->getRandomString(10));
+        if (empty($data[Config::KEY_ENCRYPTION_KEY])) {
+            $data[Config::KEY_ENCRYPTION_KEY] = md5($this->random->getRandomString(10));
         }
         $config = $this->deploymentConfigFactory->create((array)$data);
         $config->saveToFile();
@@ -339,7 +373,8 @@ class Installer
      */
     public function installDataFixtures()
     {
-        $this->exec('-f %s', [$this->systemConfig->getMagentoBasePath() . '/dev/shell/run_data_fixtures.php']);
+        $params = [$this->directoryList->getRoot() . '/dev/shell/run_data_fixtures.php', $this->execParams];
+        $this->exec('-f %s -- --bootstrap=%s', $params);
     }
 
     /**
@@ -368,23 +403,19 @@ class Installer
 
         // get entity_type_id for order
         $select = $dbConnection->select()
-            ->from($setup->getTable('eav_entity_type'))
+            ->from($setup->getTable('eav_entity_type'), 'entity_type_id')
             ->where('entity_type_code = \'order\'');
-        $sql = new Sql($dbConnection);
-        $selectString = $sql->getSqlStringForSqlObject($select, $dbConnection->getPlatform());
-        $statement = $dbConnection->getDriver()->createStatement($selectString);
-        $selectResult = $statement->execute();
-        $entityTypeId = $selectResult->current()['entity_type_id'];
+        $entityTypeId = $dbConnection->fetchOne($select);
 
         // See if row already exists
-        $resultSet = $dbConnection->query(
+        $incrementRow = $dbConnection->fetchRow(
             'SELECT * FROM ' . $setup->getTable('eav_entity_store') . ' WHERE entity_type_id = ? AND store_id = ?',
             [$entityTypeId, Store::DISTRO_STORE_ID]
         );
 
-        if ($resultSet->count() > 0) {
+        if (!empty($incrementRow)) {
             // row exists, update it
-            $entityStoreId = $resultSet->current()->entity_store_id;
+            $entityStoreId = $incrementRow['entity_store_id'];
             $dbConnection->update(
                 $setup->getTable('eav_entity_store'),
                 ['increment_prefix' => $orderIncrementPrefix],
@@ -414,6 +445,24 @@ class Installer
         $adminAccount->save();
     }
 
+    /**
+     * Uninstall Magento application
+     *
+     * @return void
+     */
+    public function uninstall()
+    {
+        $this->log->log('Starting Magento uninstallation:');
+
+        $this->cleanupDb();
+        $this->log->log('File system cleanup:');
+        $this->deleteDirContents(DirectoryList::VAR_DIR);
+        $this->deleteDirContents(DirectoryList::STATIC_VIEW);
+        $this->deleteLocalXml();
+
+        $this->log->logSuccess('Magento uninstallation complete.');
+    }
+
     /**
      * Enables caches after installing application
      *
@@ -421,8 +470,8 @@ class Installer
      */
     private function enableCaches()
     {
-        $args = [$this->systemConfig->getMagentoBasePath() . '/dev/shell/cache.php'];
-        $this->exec('-f %s -- --set=1', $args);
+        $args = [$this->directoryList->getRoot() . '/dev/shell/cache.php', $this->execParams];
+        $this->exec('-f %s -- --set=1 --bootstrap=%s', $args);
     }
 
     /**
@@ -433,8 +482,7 @@ class Installer
      */
     private function setMaintenanceMode($value)
     {
-        $args = [$this->systemConfig->getMagentoBasePath() . '/dev/shell/maintenance.php', $value];
-        $this->exec('-f %s -- --set=%s', $args);
+        $this->maintenanceMode->set($value);
     }
 
     /**
@@ -480,34 +528,97 @@ class Installer
             Config::KEY_DB_USER => $dbUser,
             Config::KEY_DB_PASS => $dbPass
         ]);
-        $adapter->connect();
-        if (!$adapter->getDriver()->getConnection()->isConnected()) {
+        $adapter->getConnection();
+        if (!$adapter->isConnected()) {
             throw new \Exception('Database connection failure.');
         }
         return true;
     }
 
     /**
-     * Cleans up database
+     * Return messages
+     *
+     * @return array
+     */
+    public function getMessages()
+    {
+        return $this->messages;
+    }
+
+
+    /**
+     * Deletes the database and creates it again
      *
-     * @param \ArrayObject|array $config
      * @return void
      */
-    public function cleanupDb($config)
+    private function cleanupDb()
     {
-        $adapter = $this->connectionFactory->create($config);
-        $dbName = $adapter->quoteIdentifier($config[Config::KEY_DB_NAME]);
+        // stops cleanup if app/etc/local.xml does not exist
+        if (!$this->filesystem->getDirectoryWrite(DirectoryList::CONFIG)->isFile('local.xml')) {
+            $this->log->log('No database connection defined - skipping database cleanup');
+            return;
+        }
+        $config = $this->deploymentConfigFactory->create();
+        $config->loadFromFile();
+        $configData = $config->getConfigData();
+        $adapter = $this->connectionFactory->create($configData);
+        try {
+            $adapter->getConnection();
+        } catch (\Exception $e) {
+            $this->log->log($e->getMessage() . ' - skipping database cleanup');
+            return;
+        }
+        $dbName = $adapter->quoteIdentifier($configData[Config::KEY_DB_NAME]);
+        $this->log->log("Recreating database {$dbName}");
         $adapter->query("DROP DATABASE IF EXISTS {$dbName}");
         $adapter->query("CREATE DATABASE IF NOT EXISTS {$dbName}");
     }
 
     /**
-     * Return messages
+     * Removes contents of a directory
      *
-     * @return array
+     * @param string $type
+     * @return void
      */
-    public function getMessages()
+    private function deleteDirContents($type)
     {
-        return $this->messages;
+        $dir = $this->filesystem->getDirectoryWrite($type);
+        $dirPath = $dir->getAbsolutePath();
+        if (!$dir->isExist()) {
+            $this->log->log("The directory '{$dirPath}' doesn't exist - skipping cleanup");
+            return;
+        }
+        foreach ($dir->read() as $path) {
+            if (preg_match('/^\./', $path)) {
+                continue;
+            }
+            $this->log->log("{$dirPath}{$path}");
+            try {
+                $dir->delete($path);
+            } catch (FilesystemException $e) {
+                $this->log->log($e->getMessage());
+            }
+        }
+    }
+
+    /**
+     * Removes deployment configuration
+     *
+     * @return void
+     */
+    private function deleteLocalXml()
+    {
+        $configDir = $this->filesystem->getDirectoryWrite(DirectoryList::CONFIG);
+        $localXml = "{$configDir->getAbsolutePath()}local.xml";
+        if (!$configDir->isFile('local.xml')) {
+            $this->log->log("The file '{$localXml}' doesn't exist - skipping cleanup");
+            return;
+        }
+        try {
+            $this->log->log($localXml);
+            $configDir->delete('local.xml');
+        } catch (FilesystemException $e) {
+            $this->log->log($e->getMessage());
+        }
     }
 }
diff --git a/setup/module/Magento/Setup/src/Model/InstallerFactory.php b/setup/module/Magento/Setup/src/Model/InstallerFactory.php
index 7970e5b3ee6..4be7951ed43 100644
--- a/setup/module/Magento/Setup/src/Model/InstallerFactory.php
+++ b/setup/module/Magento/Setup/src/Model/InstallerFactory.php
@@ -58,11 +58,14 @@ class InstallerFactory
             $this->serviceLocator->get('Magento\Setup\Module\Setup\ConfigFactory'),
             $this->serviceLocator->get('Magento\Setup\Module\SetupFactory'),
             $this->serviceLocator->get('Magento\Setup\Module\ModuleList'),
-            $this->serviceLocator->get('Magento\Config\ConfigFactory'),
+            $this->serviceLocator->get('Magento\Framework\App\Filesystem\DirectoryList'),
             $this->serviceLocator->get('Magento\Setup\Model\AdminAccountFactory'),
             $log,
             $this->serviceLocator->get('Magento\Framework\Math\Random'),
-            $this->serviceLocator->get('Magento\Setup\Module\Setup\ConnectionFactory')
+            $this->serviceLocator->get('Magento\Setup\Module\Setup\ConnectionFactory'),
+            $this->serviceLocator->get('Magento\Framework\App\MaintenanceMode'),
+            $this->serviceLocator->get('Magento\Framework\Filesystem'),
+            $this->serviceLocator
         );
     }
 }
diff --git a/setup/module/Magento/Setup/src/Model/License.php b/setup/module/Magento/Setup/src/Model/License.php
index fc670d51851..540e45f8038 100644
--- a/setup/module/Magento/Setup/src/Model/License.php
+++ b/setup/module/Magento/Setup/src/Model/License.php
@@ -24,11 +24,11 @@
 
 namespace Magento\Setup\Model;
 
-use Magento\Config\Config;
-use Magento\Config\ConfigFactory;
+use Magento\Framework\Filesystem;
+use Magento\Framework\App\Filesystem\DirectoryList;
 
 /**
- * License model
+ * License file reader
  *
  * @package Magento\Setup\Model
  */
@@ -41,37 +41,22 @@ class License
      */
     const LICENSE_FILENAME = 'LICENSE.txt';
 
-    /**
-     * Path of license file
-     *
-     * @var string
-     */
-    protected $licenseFile;
-
-    /**
-     * Configuration details
-     *
-     * @var Config
-     */
-    protected $config;
 
     /**
-     * ConfigFactory to create config
+     * Directory that contains license file
      *
-     * @var ConfigFactory
+     * @var \Magento\Framework\Filesystem\Directory\ReadInterface
      */
-    protected $configFactory;
+    private $dir;
 
     /**
      * Constructor
      *
-     * @param ConfigFactory $configFactory
+     * @param Filesystem $filesystem
      */
-    public function __construct(ConfigFactory $configFactory)
+    public function __construct(Filesystem $filesystem)
     {
-        $this->configFactory = $configFactory;
-        $this->config = $this->configFactory->create();
-        $this->licenseFile = $this->config->getMagentoBasePath() . DIRECTORY_SEPARATOR . self::LICENSE_FILENAME;
+        $this->dir = $filesystem->getDirectoryRead(DirectoryList::ROOT);
     }
 
     /**
@@ -81,9 +66,9 @@ class License
      */
     public function getContents()
     {
-        if (!file_exists($this->licenseFile)) {
+        if (!$this->dir->isFile(self::LICENSE_FILENAME)) {
             return false;
         }
-        return file_get_contents($this->licenseFile);
+        return $this->dir->readFile(self::LICENSE_FILENAME);
     }
 }
diff --git a/setup/module/Magento/Setup/src/Model/Location.php b/setup/module/Magento/Setup/src/Model/Location.php
deleted file mode 100644
index 1b5ab3eeceb..00000000000
--- a/setup/module/Magento/Setup/src/Model/Location.php
+++ /dev/null
@@ -1,53 +0,0 @@
-<?php
-/**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @copyright   Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
- * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
- */
-
-namespace Magento\Setup\Model;
-
-use Zend\Mvc\I18n\Translator;
-use Zend\Mvc\MvcEvent;
-
-class Location
-{
-    /**
-     * @var Translator
-     */
-    protected $translator;
-
-    public function __construct(Translator $translator)
-    {
-        $this->translator = $translator;
-    }
-
-    public function onChangeLocation(MvcEvent $e)
-    {
-        $locale = $this->translator->getLocale();
-        $this->translator->setLocale($e->getRouteMatch()->getParam('lang'));
-        $this->translator->setFallbackLocale($locale);
-    }
-
-    public function getLocationCode()
-    {
-        return substr($this->translator->getLocale(), 0, 5);
-    }
-}
\ No newline at end of file
diff --git a/setup/module/Magento/Setup/src/Model/UserConfigurationData.php b/setup/module/Magento/Setup/src/Model/UserConfigurationData.php
index 8e5334f49e2..63996a11724 100644
--- a/setup/module/Magento/Setup/src/Model/UserConfigurationData.php
+++ b/setup/module/Magento/Setup/src/Model/UserConfigurationData.php
@@ -70,23 +70,6 @@ class UserConfigurationData
         Url::XML_PATH_USE_SECURE_KEY => self::KEY_ADMIN_USE_SECURITY_KEY,
     ];
 
-    /**
-     * Default data values
-     *
-     * @var array
-     */
-    private static $defaults = [
-        self::KEY_USE_SEF_URL => 0,
-        self::KEY_BASE_URL => '{{unsecure_base_url}}',
-        self::KEY_IS_SECURE => 0,
-        self::KEY_BASE_URL_SECURE => '{{unsecure_base_url}}',
-        self::KEY_IS_SECURE_ADMIN => 0,
-        self::KEY_LANGUAGE => 'en_US',
-        self::KEY_TIMEZONE => 'America/Los_Angeles',
-        self::KEY_CURRENCY => 'USD',
-        self::KEY_ADMIN_USE_SECURITY_KEY => 1,
-    ];
-
     /**
      * Setup Instance
      *
@@ -112,12 +95,9 @@ class UserConfigurationData
      */
     public function install($data)
     {
-        foreach (self::$defaults as $key => $value) {
+        foreach (self::$pathDataMap as $path => $key) {
             if (isset($data[$key])) {
-                $value = $data[$key];
-            }
-            foreach (array_keys(self::$pathDataMap, $key) as $path) {
-                $this->installData($path, $value);
+                $this->installData($path, $data[$key]);
             }
         }
     }
diff --git a/setup/module/Magento/Setup/src/Module/Dir.php b/setup/module/Magento/Setup/src/Module/Dir.php
index 0de4282ccee..beacd600109 100644
--- a/setup/module/Magento/Setup/src/Module/Dir.php
+++ b/setup/module/Magento/Setup/src/Module/Dir.php
@@ -28,7 +28,6 @@ namespace Magento\Setup\Module;
 use Magento\Framework\Filesystem\Directory\ReadInterface;
 use Magento\Framework\Filesystem;
 use Magento\Framework\App\Filesystem\DirectoryList;
-use Magento\Setup\Model\FilesystemFactory;
 
 class Dir
 {
@@ -40,11 +39,11 @@ class Dir
     protected $_modulesDirectory;
 
     /**
-     * @param FilesystemFactory $filesystemFactory
+     * @param Filesystem $filesystem
      */
-    public function __construct(FilesystemFactory $filesystemFactory)
+    public function __construct(Filesystem $filesystem)
     {
-        $this->_modulesDirectory = $filesystemFactory->create()->getDirectoryRead(DirectoryList::MODULES);
+        $this->_modulesDirectory = $filesystem->getDirectoryRead(DirectoryList::MODULES);
     }
 
     /**
diff --git a/setup/module/Magento/Setup/src/Module/FileResolver.php b/setup/module/Magento/Setup/src/Module/FileResolver.php
index 585682fbe22..4fcbc157858 100644
--- a/setup/module/Magento/Setup/src/Module/FileResolver.php
+++ b/setup/module/Magento/Setup/src/Module/FileResolver.php
@@ -24,90 +24,52 @@
 
 namespace Magento\Setup\Module;
 
-use Magento\Config\Config;
 use Zend\Stdlib\Glob;
 use Magento\Config\FileResolverInterface;
-use Magento\Config\FileIteratorFactory;
-use Magento\Config\ConfigFactory;
+use Magento\Config\FileIterator;
+use Magento\Framework\App\Filesystem\DirectoryList;
 
 class FileResolver implements FileResolverInterface
 {
     /**
-     * @var FileIteratorFactory
-     */
-    protected $iteratorFactory;
-
-    /**
-     * @var ConfigFactory
-     */
-    protected $configFactory;
-
-    /**
-     * @var Config
+     * Magento application's DirectoryList
+     *
+     * @var DirectoryList
      */
-    protected $config;
+    private $directoryList;
 
     /**
-     * @param FileIteratorFactory $iteratorFactory
-     * @param ConfigFactory $configFactory
-     * @internal param Config $config
+     * Constructor
+     *
+     * @param DirectoryList $directoryList
      */
-    public function __construct(
-        FileIteratorFactory $iteratorFactory,
-        ConfigFactory $configFactory
-    ) {
-        $this->iteratorFactory = $iteratorFactory;
-        $this->configFactory = $configFactory;
-        $this->config = $this->configFactory->create();
+    public function __construct(DirectoryList $directoryList)
+    {
+        $this->directoryList = $directoryList;
     }
 
     /**
+     * Collect files and wrap them into an Iterator object
+     *
      * @param string $filename
-     * @return array
+     * @return FileIterator
      */
     public function get($filename)
     {
-        $paths = [];
+        $result = [];
 
         // Collect files by /app/code/*/*/etc/{filename} pattern
-        $files = $this->getFiles($this->config->getMagentoModulePath() . '*/*/etc/' . $filename);
-        foreach ($files as $file) {
-            $paths[] = $this->getRelativePath($file);
+        $pattern = $this->directoryList->getPath(DirectoryList::MODULES) . '/*/*/etc/' . $filename;
+        foreach (Glob::glob($pattern) as $file) {
+            $result[] = $file;
         }
 
         // Collect files by /app/etc/*/{filename} pattern
-        $files = $this->getFiles($this->config->getMagentoConfigPath() . '*/' . $filename);
-        foreach ($files as $file) {
-            $paths[] = $this->getRelativePath($file);
-        }
-
-        return $this->iteratorFactory->create($this->config->getMagentoBasePath(), $paths);
-    }
-
-    /**
-     * Retrieves relative path
-     *
-     * @param string $path
-     * @return string
-     */
-    protected function getRelativePath($path = null)
-    {
-        $basePath = $this->config->getMagentoBasePath();
-        if (strpos($path, $basePath) === 0
-            || $basePath == $path . '/') {
-            $result = substr($path, strlen($basePath));
-        } else {
-            $result = $path;
+        $pattern = $this->directoryList->getPath(DirectoryList::CONFIG) . '/*/' . $filename;
+        foreach (Glob::glob($pattern) as $file) {
+            $result[] = $file;
         }
-        return $result;
-    }
 
-    /**
-     * @param string $path
-     * @return array|false
-     */
-    protected function getFiles($path)
-    {
-        return Glob::glob($this->config->getMagentoBasePath() . $path);
+        return new FileIterator($result);
     }
 }
diff --git a/setup/module/Magento/Setup/src/Module/Resource/Resource.php b/setup/module/Magento/Setup/src/Module/Resource/Resource.php
index 3c58437c55d..006c0cfc93e 100644
--- a/setup/module/Magento/Setup/src/Module/Resource/Resource.php
+++ b/setup/module/Magento/Setup/src/Module/Resource/Resource.php
@@ -23,9 +23,7 @@
  */
 namespace Magento\Setup\Module\Resource;
 
-use Zend\Db\Sql\Sql;
-use Zend\Db\ResultSet;
-use Magento\Setup\Framework\DB\Adapter\AdapterInterface;
+use Magento\Framework\DB\Adapter\AdapterInterface;
 use Magento\Setup\Module\ResourceInterface;
 
 /**
@@ -76,17 +74,12 @@ class Resource implements ResourceInterface
     protected function loadVersionDb()
     {
         self::$versions = array();
-        // Db version column always exists
 
+        // Db version column always exists
         if ($this->adapter->isTableExists($this->getMainTable())) {
             $select = $this->adapter->select()->from($this->getMainTable());
-            $sql = new Sql($this->adapter);
-            $selectString = $sql->getSqlStringForSqlObject($select);
-            $results = $this->adapter->query($selectString);
-            if ($results instanceof ResultSet\ResultSetInterface && $results->count()) {
-                foreach ($results as $row) {
-                    self::$versions[$row['code']] = $row['version'];
-                }
+            foreach ($this->adapter->fetchAll($select) as $row) {
+                self::$versions[$row['code']] = $row['version'];
             }
         }
 
@@ -98,9 +91,6 @@ class Resource implements ResourceInterface
      */
     public function getDbVersion($resName)
     {
-        if (!$this->adapter) {
-            return false;
-        }
         $this->loadVersionDb();
         return isset(self::$versions[$resName]) ? self::$versions[$resName] : false;
     }
diff --git a/setup/module/Magento/Setup/src/Module/SchemaLocator.php b/setup/module/Magento/Setup/src/Module/SchemaLocator.php
index d431a653a75..af73d99313d 100644
--- a/setup/module/Magento/Setup/src/Module/SchemaLocator.php
+++ b/setup/module/Magento/Setup/src/Module/SchemaLocator.php
@@ -27,14 +27,14 @@
 namespace Magento\Setup\Module;
 
 use Magento\Config\SchemaLocatorInterface;
-use Magento\Config\ConfigFactory;
+use Magento\Framework\App\Filesystem\DirectoryList;
 
 class SchemaLocator implements SchemaLocatorInterface
 {
     /**
-     * @var ConfigFactory
+     * @var DirectoryList
      */
-    protected $configFactory;
+    protected $directoryList;
 
     /**
      * @var string
@@ -42,15 +42,14 @@ class SchemaLocator implements SchemaLocatorInterface
     protected $schemaName;
 
     /**
-     * @param ConfigFactory $configFactory
+     * @param DirectoryList $directoryList
      * @param string $schemaName
      */
     public function __construct(
-        ConfigFactory $configFactory,
+        DirectoryList $directoryList,
         $schemaName = 'module.xsd'
     ) {
-        $this->configFactory = $configFactory;
-        $this->config = $this->configFactory->create();
+        $this->directoryList = $directoryList;
         $this->schemaName = $schemaName;
     }
 
@@ -61,10 +60,7 @@ class SchemaLocator implements SchemaLocatorInterface
      */
     public function getSchema()
     {
-        $path = $this->config->magento->basePath
-            . $this->config->magento->filesystem->framework
-            . 'Module/etc/' . $this->schemaName;
-
-        return realpath($path);
+        return $this->directoryList->getPath(DirectoryList::LIB_INTERNAL)
+            . '/Magento/Framework/Module/etc/' . $this->schemaName;
     }
 }
diff --git a/setup/module/Magento/Setup/src/Module/Setup.php b/setup/module/Magento/Setup/src/Module/Setup.php
index 29b5814c249..27bbb8f1113 100644
--- a/setup/module/Magento/Setup/src/Module/Setup.php
+++ b/setup/module/Magento/Setup/src/Module/Setup.php
@@ -40,7 +40,7 @@ class Setup implements SetupInterface
     /**
      * Setup Connection
      *
-     * @var \Magento\Setup\Framework\DB\Adapter\AdapterInterface
+     * @var \Magento\Framework\DB\Adapter\AdapterInterface
      */
     protected $connection = null;
 
@@ -92,7 +92,7 @@ class Setup implements SetupInterface
     /**
      * Get connection object
      *
-     * @return \Magento\Setup\Framework\DB\Adapter\AdapterInterface
+     * @return \Magento\Framework\DB\Adapter\AdapterInterface
      */
     public function getConnection()
     {
@@ -364,13 +364,12 @@ class Setup implements SetupInterface
      */
     public function addConfigData($key, $value)
     {
-        $this->getConnection()->insert(
+        $this->getConnection()->insertOnDuplicate(
             $this->getTable('core_config_data'),
             array(
                 'path'  => $key,
                 'value' => $value
-            ),
-            true
+            )
         );
     }
 }
diff --git a/setup/module/Magento/Setup/src/Module/Setup/Config.php b/setup/module/Magento/Setup/src/Module/Setup/Config.php
index 4b29db95f8e..14b939ee1fb 100644
--- a/setup/module/Magento/Setup/src/Module/Setup/Config.php
+++ b/setup/module/Magento/Setup/src/Module/Setup/Config.php
@@ -27,7 +27,6 @@ namespace Magento\Setup\Module\Setup;
 use Magento\Framework\Filesystem\Directory\Write;
 use Magento\Framework\Filesystem;
 use Magento\Framework\App\Filesystem\DirectoryList;
-use Magento\Setup\Model\FilesystemFactory;
 
 /**
  * Deployment configuration model
@@ -76,13 +75,6 @@ class Config
         self::KEY_ENCRYPTION_KEY => '',
     ];
 
-    /**
-     * Filesystem
-     *
-     * @var Filesystem
-     */
-    protected $filesystem;
-
     /**
      * Config Directory
      *
@@ -93,15 +85,12 @@ class Config
     /**
      * Default Constructor
      *
-     * @param FilesystemFactory $fileSystemFactory
+     * @param Filesystem $fileSystem
      * @param string[] $data
      */
-    public function __construct(
-        FilesystemFactory $fileSystemFactory,
-        $data = []
-    ) {
-        $this->filesystem = $fileSystemFactory->create();
-        $this->configDirectory = $this->filesystem->getDirectoryWrite(DirectoryList::CONFIG);
+    public function __construct(Filesystem $fileSystem, $data = [])
+    {
+        $this->configDirectory = $fileSystem->getDirectoryWrite(DirectoryList::CONFIG);
 
         if ($data) {
             $this->update($data);
diff --git a/setup/module/Magento/Setup/src/Module/Setup/ConfigFactory.php b/setup/module/Magento/Setup/src/Module/Setup/ConfigFactory.php
index 751897ce831..e9bdf135655 100644
--- a/setup/module/Magento/Setup/src/Module/Setup/ConfigFactory.php
+++ b/setup/module/Magento/Setup/src/Module/Setup/ConfigFactory.php
@@ -48,7 +48,7 @@ class ConfigFactory
     public function create(array $data = [])
     {
         return new Config(
-            $this->serviceLocator->get('Magento\Setup\Model\FilesystemFactory'),
+            $this->serviceLocator->get('Magento\Framework\Filesystem'),
             $data
         );
     }
diff --git a/setup/module/Magento/Setup/src/Module/Setup/ConnectionFactory.php b/setup/module/Magento/Setup/src/Module/Setup/ConnectionFactory.php
index 74f0f40f14a..f4360fd2246 100644
--- a/setup/module/Magento/Setup/src/Module/Setup/ConnectionFactory.php
+++ b/setup/module/Magento/Setup/src/Module/Setup/ConnectionFactory.php
@@ -23,26 +23,49 @@
  */
 namespace Magento\Setup\Module\Setup;
 
-use Magento\Setup\Framework\DB\Adapter\Pdo\Mysql;
+use Zend\ServiceManager\ServiceLocatorInterface;
+use Magento\Framework\DB\Adapter\Pdo\Mysql;
 
 class ConnectionFactory
 {
+    /**
+     * Zend Framework's service locator
+     *
+     * @var ServiceLocatorInterface
+     */
+    protected $serviceLocator;
+
+    /**
+     * Constructor
+     *
+     * @param ServiceLocatorInterface $serviceLocator
+     */
+    public function __construct(ServiceLocatorInterface $serviceLocator)
+    {
+        $this->serviceLocator = $serviceLocator;
+    }
+
     /**
      * Create DB adapter object
      *
      * @param \ArrayObject|array $config
-     * @return \Magento\Setup\Framework\DB\Adapter\Pdo\Mysql
+     * @return Mysql
      */
     public function create($config)
     {
+        $config = [
+            'driver' => 'Pdo',
+            'dbname' => $config[Config::KEY_DB_NAME],
+            'host' => $config[Config::KEY_DB_HOST],
+            'username' => $config[Config::KEY_DB_USER],
+            'password' => isset($config[Config::KEY_DB_PASS]) ? $config[Config::KEY_DB_PASS] : null,
+            'driver_options' => [\PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'"]
+        ];
         return new Mysql(
-            [
-                'driver' => 'Pdo',
-                'dsn' => "mysql:dbname=" . $config[Config::KEY_DB_NAME] . ";host=" . $config[Config::KEY_DB_HOST],
-                'username' => $config[Config::KEY_DB_USER],
-                'password' => isset($config[Config::KEY_DB_PASS]) ? $config[Config::KEY_DB_PASS] : null,
-                'driver_options' => [\PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'"]
-            ]
+            $this->serviceLocator->get('Magento\Framework\Filesystem'),
+            $this->serviceLocator->get('Magento\Framework\Stdlib\String'),
+            $this->serviceLocator->get('Magento\Framework\Stdlib\DateTime'),
+            $config
         );
     }
 }
diff --git a/setup/module/Magento/Setup/src/Module/Setup/FileResolver.php b/setup/module/Magento/Setup/src/Module/Setup/FileResolver.php
index 0276737fb45..d480f6e76a7 100644
--- a/setup/module/Magento/Setup/src/Module/Setup/FileResolver.php
+++ b/setup/module/Magento/Setup/src/Module/Setup/FileResolver.php
@@ -25,45 +25,25 @@
 namespace Magento\Setup\Module\Setup;
 
 use Zend\Stdlib\Glob;
-use Magento\Config\FileIteratorFactory;
-use Magento\Config\ConfigFactory as SystemConfigFactory;
+use Magento\Framework\App\Filesystem\DirectoryList;
 
 class FileResolver
 {
     /**
-     * File Iterator Factory
+     * Magento application's DirectoryList
      *
-     * @var FileIteratorFactory
+     * @var DirectoryList
      */
-    protected $iteratorFactory;
-
-    /**
-     * Configuration Factory
-     *
-     * @var SystemConfigFactory
-     */
-    protected $configFactory;
-
-    /**
-     * Configurations
-     *
-     * @var Config
-     */
-    protected $config;
+    private $directoryList;
 
     /**
      * Default Constructor
      *
-     * @param FileIteratorFactory $iteratorFactory
-     * @param SystemConfigFactory $configFactory
+     * @param DirectoryList $directoryList
      */
-    public function __construct(
-        FileIteratorFactory $iteratorFactory,
-        SystemConfigFactory $configFactory
-    ) {
-        $this->iteratorFactory = $iteratorFactory;
-        $this->configFactory = $configFactory;
-        $this->config = $this->configFactory->create();
+    public function __construct(DirectoryList $directoryList)
+    {
+        $this->directoryList = $directoryList;
     }
 
     /**
@@ -75,55 +55,10 @@ class FileResolver
      */
     public function getSqlSetupFiles($moduleName, $fileNamePattern = '*.php')
     {
-        $paths = [];
         $modulePath = str_replace('_', '/', $moduleName);
-        // Collect files by /app/code/{modulePath}/sql/*/*.php pattern
-        $files = $this->getFiles($this->config->getMagentoModulePath() . $modulePath . '/sql/*/' . $fileNamePattern);
-        foreach ($files as $file) {
-            $paths[] = $this->getRelativePath($file);
-        }
-
-        return $paths;
-    }
-
-    /**
-     * Retrieves relative path
-     *
-     * @param string $path
-     * @return string
-     */
-    protected function getRelativePath($path = null)
-    {
-        $basePath = $this->config->getMagentoBasePath();
-        if (strpos($path, $basePath) === 0
-            || $basePath == $path . '/') {
-            $result = substr($path, strlen($basePath));
-        } else {
-            $result = $path;
-        }
-        return $result;
-    }
-
-    /**
-     * Get Files
-     *
-     * @param string $path
-     * @return array|false
-     */
-    protected function getFiles($path)
-    {
-        return Glob::glob($this->config->getMagentoBasePath() . $path, Glob::GLOB_BRACE);
-    }
-
-    /**
-     * Get Directories
-     *
-     * @param string $path
-     * @return array|false
-     */
-    protected function getDirs($path)
-    {
-        return Glob::glob($this->config->getMagentoBasePath() . $path, Glob::GLOB_ONLYDIR);
+        $pattern = $this->directoryList->getPath(DirectoryList::MODULES)
+            . '/' . $modulePath . '/sql/*/' . $fileNamePattern;
+        return Glob::glob($pattern, Glob::GLOB_BRACE);
     }
 
     /**
@@ -139,15 +74,17 @@ class FileResolver
         $modulePath = str_replace('_', '/', $moduleName);
 
         // Collect files by /app/code/{modulePath}/sql/*/ pattern
-        $resourceDirs = $this->getDirs($this->config->getMagentoModulePath() . $modulePath . '/sql/*/');
+        $pattern = $this->directoryList->getPath(DirectoryList::MODULES) . '/' . $modulePath . '/sql/*';
+        $resourceDirs = Glob::glob($pattern, Glob::GLOB_ONLYDIR);
         if (!empty($resourceDirs)) {
             foreach ($resourceDirs as $resourceDir) {
                 $sqlResources[] = basename($resourceDir);
             }
         }
 
-        // Collect files by /app/code/{modulePath}/sql/*/ pattern
-        $resourceDirs = $this->getDirs($this->config->getMagentoModulePath() . $modulePath . '/data/*/');
+        // Collect files by /app/code/{modulePath}/data/*/ pattern
+        $pattern = $this->directoryList->getPath(DirectoryList::MODULES) . '/' . $modulePath . '/data/*';
+        $resourceDirs = Glob::glob($pattern, Glob::GLOB_ONLYDIR);
         if (!empty($resourceDirs)) {
             foreach ($resourceDirs as $resourceDir) {
                 $dataResources[] = basename($resourceDir);
@@ -157,27 +94,4 @@ class FileResolver
         $resources = array_unique(array_merge($sqlResources, $dataResources));
         return array_shift($resources);
     }
-
-    /**
-     * Get Absolute Path
-     *
-     * @param string $path
-     * @return string
-     */
-    public function getAbsolutePath($path)
-    {
-        return $this->config->getMagentoBasePath() . '/' . ltrim($this->fixSeparator($path), '/');
-    }
-
-    /**
-     * Fixes path separator
-     * Utility method.
-     *
-     * @param string $path
-     * @return string
-     */
-    protected function fixSeparator($path)
-    {
-        return str_replace('\\', '/', $path);
-    }
 }
diff --git a/setup/module/Magento/Setup/src/Module/SetupModule.php b/setup/module/Magento/Setup/src/Module/SetupModule.php
index 4fbc10e3f1b..f5a9c8dcb66 100644
--- a/setup/module/Magento/Setup/src/Module/SetupModule.php
+++ b/setup/module/Magento/Setup/src/Module/SetupModule.php
@@ -94,7 +94,6 @@ class SetupModule extends Setup
         $moduleName = (string)$this->moduleConfig['name'];
         foreach ($this->fileResolver->getSqlSetupFiles($moduleName, self::TYPE_DB_RECURRING . '.php') as $file) {
             try {
-                $file = $this->fileResolver->getAbsolutePath($file);
                 $this->includeFile($file);
             } catch (\Exception $e) {
                 throw new \Exception(sprintf('Error in file: "%s" - %s', $file, $e->getMessage()), 0, $e);
@@ -121,9 +120,9 @@ class SetupModule extends Setup
         foreach ($this->fileResolver->getSqlSetupFiles($moduleName, '*.{php,sql}') as $file) {
             $matches = array();
             if (preg_match($regExpDb, $file, $matches)) {
-                $dbFiles[$matches[1]] = $this->fileResolver->getAbsolutePath($file);
+                $dbFiles[$matches[1]] = $file;
             } elseif (preg_match($regExpType, $file, $matches)) {
-                $typeFiles[$matches[1]] = $this->fileResolver->getAbsolutePath($file);
+                $typeFiles[$matches[1]] = $file;
             }
         }
 
diff --git a/setup/module/Magento/Setup/src/Mvc/Bootstrap/InitParamListener.php b/setup/module/Magento/Setup/src/Mvc/Bootstrap/InitParamListener.php
new file mode 100644
index 00000000000..dbdfc9371de
--- /dev/null
+++ b/setup/module/Magento/Setup/src/Mvc/Bootstrap/InitParamListener.php
@@ -0,0 +1,229 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @copyright  Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+namespace Magento\Setup\Mvc\Bootstrap;
+
+use Magento\Framework\Filesystem;
+use Magento\Framework\App\Bootstrap as AppBootstrap;
+use Magento\Framework\App\State;
+use Magento\Framework\App\Filesystem\DirectoryList;
+use Zend\EventManager\EventInterface;
+use Zend\EventManager\EventManagerInterface;
+use Zend\Mvc\Application;
+use Zend\EventManager\ListenerAggregateInterface;
+use Zend\Mvc\MvcEvent;
+use Zend\Console\Request;
+use Zend\Stdlib\RequestInterface;
+use Magento\Framework\Shell\ComplexParameter;
+use Zend\ServiceManager\FactoryInterface;
+use Zend\ServiceManager\ServiceLocatorInterface;
+
+/**
+ * A listener that injects relevant Magento initialization parameters and initializes Magento\Filesystem component
+ */
+class InitParamListener implements ListenerAggregateInterface, FactoryInterface
+{
+    /**
+     * A CLI parameter for injecting bootstrap variables
+     */
+    const BOOTSTRAP_PARAM = 'magento_init_params';
+
+    /**
+     * List of ZF event listeners
+     *
+     * @var \Zend\Stdlib\CallbackHandler[]
+     */
+    private $listeners = array();
+
+    /**
+     * Registers itself to every command in console routes
+     *
+     * @param array $config
+     * @return array
+     */
+    public static function attachToConsoleRoutes($config)
+    {
+        foreach ($config['console']['router']['routes'] as &$route) {
+            $route['options']['route'] .= ' [--' . self::BOOTSTRAP_PARAM . '=]';
+        }
+        return $config;
+    }
+
+    /**
+     * Adds itself to CLI usage instructions
+     *
+     * @return array
+     */
+    public static function getConsoleUsage()
+    {
+        $result = [''];
+        $result[] = [
+            '[--' . self::BOOTSTRAP_PARAM . sprintf('=%s]', escapeshellarg('<query>')),
+            'Add to any command to customize Magento initialization parameters'
+        ];
+        $mode = State::PARAM_MODE;
+        $dirs = AppBootstrap::INIT_PARAM_FILESYSTEM_DIR_PATHS;
+        $examples = [
+            "{$mode}=developer",
+            "{$dirs}[base][path]=/var/www/example.com",
+            "{$dirs}[cache][path]=/var/tmp/cache",
+        ];
+        $result[] = ['', sprintf('For example: %s', escapeshellarg(implode('&', $examples)))];
+        return $result;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function attach(EventManagerInterface $events)
+    {
+        $sharedEvents = $events->getSharedManager();
+        $this->listeners[] = $sharedEvents->attach(
+            'Zend\Mvc\Application',
+            MvcEvent::EVENT_BOOTSTRAP,
+            array($this, 'onBootstrap')
+        );
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function detach(EventManagerInterface $events)
+    {
+        foreach ($this->listeners as $index => $listener) {
+            if ($events->detach($listener)) {
+                unset($this->listeners[$index]);
+            }
+        }
+    }
+
+    /**
+     * An event subscriber that initializes DirectoryList and Filesystem objects in ZF application bootstrap
+     *
+     * @param MvcEvent $e
+     * @return void
+     */
+    public function onBootstrap(\Zend\Mvc\MvcEvent $e)
+    {
+        /** @var Application $application */
+        $application = $e->getApplication();
+        $initParams = $application->getServiceManager()->get(self::BOOTSTRAP_PARAM);
+        $directoryList = $this->createDirectoryList($initParams);
+        $serviceManager = $application->getServiceManager();
+        $serviceManager->setService('Magento\Framework\App\Filesystem\DirectoryList', $directoryList);
+        $serviceManager->setService('Magento\Framework\Filesystem', $this->createFilesystem($directoryList));
+
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function createService(ServiceLocatorInterface $serviceLocator)
+    {
+        return $this->extractInitParameters($serviceLocator->get('Application'));
+    }
+
+    /**
+     * Collects init params configuration from multiple sources
+     *
+     * Each next step overwrites previous, whenever data is available, in the following order:
+     * 1: ZF application config
+     * 2: environment
+     * 3: CLI parameters (if the application is running in CLI mode)
+     *
+     * @param Application $application
+     * @return array
+     */
+    private function extractInitParameters(Application $application)
+    {
+        $result = [];
+        $config = $application->getConfig();
+        if (isset($config[self::BOOTSTRAP_PARAM])) {
+            $result = $config[self::BOOTSTRAP_PARAM];
+        }
+        foreach ([State::PARAM_MODE, AppBootstrap::INIT_PARAM_FILESYSTEM_DIR_PATHS] as $initKey) {
+            if (isset($_SERVER[$initKey])) {
+                $result[$initKey] = $_SERVER[$initKey];
+            }
+        }
+        $result = array_replace_recursive($result, $this->extractFromCli($application->getRequest()));
+        return $result;
+    }
+
+    /**
+     * Extracts the directory paths from a CLI request
+     *
+     * Uses format of a URL query
+     *
+     * @param RequestInterface $request
+     * @return array
+     */
+    private function extractFromCli(RequestInterface $request)
+    {
+        if (!($request instanceof Request)) {
+            return [];
+        }
+        $bootstrapParam = new ComplexParameter(self::BOOTSTRAP_PARAM);
+        foreach ($request->getContent() as $paramStr) {
+            $result = $bootstrapParam->getFromString($paramStr);
+            if (!empty($result)) {
+                return $result;
+            }
+        }
+        return [];
+    }
+
+    /**
+     * Initializes DirectoryList service
+     *
+     * @param array $initParams
+     * @return DirectoryList
+     * @throws \LogicException
+     */
+    public function createDirectoryList($initParams)
+    {
+        if (!isset($initParams[AppBootstrap::INIT_PARAM_FILESYSTEM_DIR_PATHS][DirectoryList::ROOT])) {
+            throw new \LogicException('Magento root directory is not specified.');
+        }
+        $config = $initParams[AppBootstrap::INIT_PARAM_FILESYSTEM_DIR_PATHS];
+        $rootDir = $config[DirectoryList::ROOT][DirectoryList::PATH];
+        return new DirectoryList($rootDir, $config);
+    }
+
+    /**
+     * Initializes Filesystem service
+     *
+     * @param DirectoryList $directoryList
+     * @return Filesystem
+     */
+    public function createFilesystem(DirectoryList $directoryList)
+    {
+        $driverPool = new Filesystem\DriverPool;
+        return new Filesystem(
+            $directoryList,
+            new Filesystem\Directory\ReadFactory($driverPool),
+            new Filesystem\Directory\WriteFactory($driverPool)
+        );
+    }
+}
diff --git a/setup/module/Magento/Setup/view/error/404.phtml b/setup/module/Magento/Setup/view/error/404.phtml
index be0be4e69f3..56252abcff9 100644
--- a/setup/module/Magento/Setup/view/error/404.phtml
+++ b/setup/module/Magento/Setup/view/error/404.phtml
@@ -22,7 +22,7 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 ?>
-<h1><?php echo $this->translate('A 404 error occurred') ?></h1>
+<h1>A 404 error occurred</h1>
 <h2><?php echo $this->message ?></h2>
 
 <?php if (isset($this->reason) && $this->reason): ?>
@@ -31,19 +31,19 @@
 $reasonMessage= '';
 switch ($this->reason) {
     case 'error-controller-cannot-dispatch':
-        $reasonMessage = $this->translate('The requested controller was unable to dispatch the request.');
+        $reasonMessage = 'The requested controller was unable to dispatch the request.';
         break;
     case 'error-controller-not-found':
-        $reasonMessage = $this->translate('The requested controller could not be mapped to an existing controller class.');
+        $reasonMessage = 'The requested controller could not be mapped to an existing controller class.';
         break;
     case 'error-controller-invalid':
-        $reasonMessage = $this->translate('The requested controller was not dispatchable.');
+        $reasonMessage = 'The requested controller was not dispatchable.';
         break;
     case 'error-router-no-match':
-        $reasonMessage = $this->translate('The requested URL could not be matched by routing.');
+        $reasonMessage = 'The requested URL could not be matched by routing.';
         break;
     default:
-        $reasonMessage = $this->translate('We cannot determine at this time why a 404 was generated.');
+        $reasonMessage = 'We cannot determine at this time why a 404 was generated.';
         break;
 }
 ?>
@@ -55,14 +55,14 @@ switch ($this->reason) {
 <?php if (isset($this->controller) && $this->controller): ?>
 
 <dl>
-    <dt><?php echo $this->translate('Controller') ?>:</dt>
+    <dt>Controller:</dt>
     <dd><?php echo $this->escapeHtml($this->controller) ?>
 <?php
 if (isset($this->controller_class)
     && $this->controller_class
     && $this->controller_class != $this->controller
 ) {
-    echo '(' . sprintf($this->translate('resolves to %s'), $this->escapeHtml($this->controller_class)) . ')';
+    echo '(' . sprintf('resolves to %s', $this->escapeHtml($this->controller_class)) . ')';
 }
 ?>
 </dd>
@@ -74,18 +74,18 @@ if (isset($this->controller_class)
 
 <?php if(isset($this->exception) && $this->exception instanceof Exception): ?>
 <hr/>
-<h2><?php echo $this->translate('Additional information') ?>:</h2>
+<h2>Additional information:</h2>
 <h3><?php echo get_class($this->exception); ?></h3>
 <dl>
-    <dt><?php echo $this->translate('File') ?>:</dt>
+    <dt>File:</dt>
     <dd>
         <pre class="prettyprint linenums"><?php echo $this->exception->getFile() ?>:<?php echo $this->exception->getLine() ?></pre>
     </dd>
-    <dt><?php echo $this->translate('Message') ?>:</dt>
+    <dt>Message:</dt>
     <dd>
         <pre class="prettyprint linenums"><?php echo $this->exception->getMessage() ?></pre>
     </dd>
-    <dt><?php echo $this->translate('Stack trace') ?>:</dt>
+    <dt>Stack trace:</dt>
     <dd>
         <pre class="prettyprint linenums"><?php echo $this->exception->getTraceAsString() ?></pre>
     </dd>
@@ -95,21 +95,21 @@ if (isset($this->controller_class)
     if ($e) :
 ?>
 <hr/>
-<h2><?php echo $this->translate('Previous exceptions') ?>:</h2>
+<h2>Previous exceptions:</h2>
 <ul class="unstyled">
     <?php while($e) : ?>
     <li>
         <h3><?php echo get_class($e); ?></h3>
         <dl>
-            <dt><?php echo $this->translate('File') ?>:</dt>
+            <dt>File:</dt>
             <dd>
                 <pre class="prettyprint linenums"><?php echo $e->getFile() ?>:<?php echo $e->getLine() ?></pre>
             </dd>
-            <dt><?php echo $this->translate('Message') ?>:</dt>
+            <dt>Message:</dt>
             <dd>
                 <pre class="prettyprint linenums"><?php echo $e->getMessage() ?></pre>
             </dd>
-            <dt><?php echo $this->translate('Stack trace') ?>:</dt>
+            <dt>Stack trace:</dt>
             <dd>
                 <pre class="prettyprint linenums"><?php echo $e->getTraceAsString() ?></pre>
             </dd>
@@ -124,7 +124,7 @@ if (isset($this->controller_class)
 
 <?php else: ?>
 
-<h3><?php echo $this->translate('No Exception available') ?></h3>
+<h3>No Exception available</h3>
 
 <?php endif ?>
 
diff --git a/setup/module/Magento/Setup/view/error/index.phtml b/setup/module/Magento/Setup/view/error/index.phtml
index 24c7e99d2f2..6ecef50c94a 100644
--- a/setup/module/Magento/Setup/view/error/index.phtml
+++ b/setup/module/Magento/Setup/view/error/index.phtml
@@ -22,25 +22,25 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 ?>
-<h1><?php echo $this->translate('An error occurred') ?></h1>
+<h1>An error occurred</h1>
 <h2><?php echo $this->message ?></h2>
 
 <?php if (isset($this->display_exceptions) && $this->display_exceptions): ?>
 
 <?php if(isset($this->exception) && $this->exception instanceof Exception): ?>
 <hr/>
-<h2><?php echo $this->translate('Additional information') ?>:</h2>
+<h2>Additional information:</h2>
 <h3><?php echo get_class($this->exception); ?></h3>
 <dl>
-    <dt><?php echo $this->translate('File') ?>:</dt>
+    <dt>File:</dt>
     <dd>
         <pre class="prettyprint linenums"><?php echo $this->exception->getFile() ?>:<?php echo $this->exception->getLine() ?></pre>
     </dd>
-    <dt><?php echo $this->translate('Message') ?>:</dt>
+    <dt>Message:</dt>
     <dd>
         <pre class="prettyprint linenums"><?php echo $this->escapeHtml($this->exception->getMessage()) ?></pre>
     </dd>
-    <dt><?php echo $this->translate('Stack trace') ?>:</dt>
+    <dt>Stack trace:</dt>
     <dd>
         <pre class="prettyprint linenums"><?php echo $this->escapeHtml($this->exception->getTraceAsString()) ?></pre>
     </dd>
@@ -50,21 +50,21 @@
     if ($e) :
 ?>
 <hr/>
-<h2><?php echo $this->translate('Previous exceptions') ?>:</h2>
+<h2>Previous exceptions:</h2>
 <ul class="unstyled">
     <?php while($e) : ?>
     <li>
         <h3><?php echo get_class($e); ?></h3>
         <dl>
-            <dt><?php echo $this->translate('File') ?>:</dt>
+            <dt>File:</dt>
             <dd>
                 <pre class="prettyprint linenums"><?php echo $e->getFile() ?>:<?php echo $e->getLine() ?></pre>
             </dd>
-            <dt><?php echo $this->translate('Message') ?>:</dt>
+            <dt>Message:</dt>
             <dd>
                 <pre class="prettyprint linenums"><?php echo $this->escapeHtml($e->getMessage()) ?></pre>
             </dd>
-            <dt><?php echo $this->translate('Stack trace') ?>:</dt>
+            <dt>Stack trace:</dt>
             <dd>
                 <pre class="prettyprint linenums"><?php echo $this->escapeHtml($e->getTraceAsString()) ?></pre>
             </dd>
@@ -79,7 +79,7 @@
 
 <?php else: ?>
 
-<h3><?php echo $this->translate('No Exception available') ?></h3>
+<h3>No Exception available</h3>
 
 <?php endif ?>
 
diff --git a/setup/module/Magento/Setup/view/layout/layout.phtml b/setup/module/Magento/Setup/view/layout/layout.phtml
index b60cf617716..f3950207348 100644
--- a/setup/module/Magento/Setup/view/layout/layout.phtml
+++ b/setup/module/Magento/Setup/view/layout/layout.phtml
@@ -27,7 +27,7 @@
     <head>
         <meta charset="utf-8">
         <meta name="viewport" content="width=device-width, initial-scale=1">
-        <?php echo $this->headTitle($this->translate('Magento Setup Tool'))->setSeparator(' - ')->setAutoEscape(false) ?>
+        <title>Magento Setup Tool</title>
         <?php echo $this->headLink()
             ->appendStylesheet($this->basePath() . '/pub/bootstrap/css/bootstrap.min.css')
             ->appendStylesheet($this->basePath() . '/pub/bootstrap/css/bootstrap-theme.min.css')
diff --git a/setup/module/Magento/Setup/view/magento/setup/add-database.phtml b/setup/module/Magento/Setup/view/magento/setup/add-database.phtml
index b06692c69bb..4e77cb9eb76 100644
--- a/setup/module/Magento/Setup/view/magento/setup/add-database.phtml
+++ b/setup/module/Magento/Setup/view/magento/setup/add-database.phtml
@@ -23,8 +23,8 @@
  */
 ?>
 <div class="step-controls">
-    <a href="#" class="btn btn-primary" ng-click="previousState()"><?php echo $this->translate('Previous'); ?></a>
-    <a href="#" class="btn btn-primary" ng-click="nextState()"><?php echo $this->translate('Next'); ?></a>
+    <a href="#" class="btn btn-primary" ng-click="previousState()">Previous</a>
+    <a href="#" class="btn btn-primary" ng-click="nextState()">Next</a>
 </div>
 
 <div class="page-header">
@@ -33,26 +33,26 @@
 
 <form novalidate name="database" class="form-horizontal" role="form" ng-submit="testConnection()">
     <div class="bs-callout bs-callout-warning col-sm-12 hide">
-        <h4><?php echo $this->translate('Did you want to use an existing or create a new database?'); ?></h4>
+        <h4>Did you want to use an existing or create a new database?</h4>
         <div class="radio col-sm-6">
             <label>
                 <input type="radio" name="useExistingDb" ng-model="db.useExistingDb" value="1">
-                <?php echo $this->translate('Use my existing database'); ?>
+                Use my existing database
             </label>
         </div>
         <div class="radio col-sm-6">
             <label>
                 <input type="radio" name="useExistingDb" ng-model="db.useExistingDb" value="0">
-                <?php echo $this->translate('Create a database for me'); ?>
+                Create a database for me
             </label>
         </div>
     </div>
 
     <div class="form-group" ng-class="{'has-error': database.dbHost.$invalid && database.submitted}">
-        <label class="col-sm-4 control-label"><?php echo $this->translate('Database Server Host'); ?>&nbsp;<span class="required">*</span></label>
+        <label class="col-sm-4 control-label">Database Server Host&nbsp;<span class="required">*</span></label>
         <div class="col-sm-4">
             <input tooltip-placement="right"
-                   tooltip="<?php echo $this->translate('Name and location of the server that hosts your store\'s database.'); ?>"
+                   tooltip="Name and location of the server that hosts your store's database."
                    tooltip-trigger="focus"
                    tooltip-append-to-body="true"
                    class="form-control"
@@ -63,17 +63,17 @@
         </div>
         <div class="col-sm-offset-4 col-sm-4" ng-show="database.dbHost.$invalid && database.submitted">
             <div class="error-container">
-                <span ng-show="database.dbHost.$error.required"><?php echo $this->translate('You must enter a valid host name. Please check the syntax and try again.'); ?></span>
+                <span ng-show="database.dbHost.$error.required">You must enter a valid host name. Please check the syntax and try again.</span>
             </div>
         </div>
     </div>
 
     <div class="form-group" ng-class="{'has-error': database.dbUser.$invalid && database.submitted}">
-        <label class="col-sm-4 control-label"><?php echo $this->translate('Database Server Username'); ?>&nbsp;<span class="required">*</span></label>
+        <label class="col-sm-4 control-label">Database Server Username&nbsp;<span class="required">*</span></label>
         <div class="col-sm-4" ng-switch="db.useExistingDb">
             <input ng-switch-when="1"
                    tooltip-placement="right"
-                   tooltip="<?php echo $this->translate('Sign-in credentials for your store\'s database on the database server (does not need to be admin-level credentials).'); ?>"
+                   tooltip="Sign-in credentials for your store's database on the database server (does not need to be admin-level credentials)."
                    tooltip-trigger="focus"
                    tooltip-append-to-body="true"
                    class="form-control"
@@ -83,7 +83,7 @@
                    required />
             <input ng-switch-when="0"
                    tooltip-placement="right"
-                   tooltip="<?php echo $this->translate('Administrator credentials to sign in to the server that will host your store\'s database.'); ?>"
+                   tooltip="Administrator credentials to sign in to the server that will host your store's database."
                    tooltip-trigger="focus"
                    tooltip-append-to-body="true"
                    class="form-control"
@@ -94,42 +94,42 @@
         </div>
         <div class="col-sm-offset-4 col-sm-4" ng-show="database.dbUser.$invalid && database.submitted">
             <div class="error-container">
-                <span ng-show="database.dbUser.$error.required"><?php echo $this->translate('Please enter a username to continue.'); ?></span>
+                <span ng-show="database.dbUser.$error.required">Please enter a username to continue.</span>
             </div>
         </div>
     </div>
 
     <div class="form-group">
-        <label class="col-sm-4 control-label"><?php echo $this->translate('Database Server Password'); ?></label>
+        <label class="col-sm-4 control-label">Database Server Password</label>
         <div class="col-sm-4" ng-switch="db.useExistingDb">
             <input ng-switch-when="1"
                    tooltip-placement="right"
-                   tooltip="<?php echo $this->translate('Sign-in credentials for your store\'s database on the database server (does not need to be admin-level credentials).'); ?>"
+                   tooltip="Sign-in credentials for your store's database on the database server (does not need to be admin-level credentials)."
                    tooltip-trigger="focus"
                    tooltip-append-to-body="true"
                    class="form-control"
                    type="password"
                    name="dbPassword"
                    ng-model="db.password"
-                   placeholder="<?php echo $this->translate('(not always necessary)'); ?>" />
+                   placeholder="(not always necessary)" />
             <input ng-switch-when="0"
                    tooltip-placement="right"
-                   tooltip="<?php echo $this->translate('Administrator credentials to sign in to the server that will host your store\'s database.'); ?>"
+                   tooltip="Administrator credentials to sign in to the server that will host your store's database."
                    tooltip-trigger="focus"
                    tooltip-append-to-body="true"
                    class="form-control"
                    type="password"
                    name="dbPassword"
                    ng-model="db.password"
-                   placeholder="<?php echo $this->translate('(not always necessary)'); ?>" />
+                   placeholder="(not always necessary)" />
         </div>
     </div>
 
     <div class="form-group" ng-if="db.useExistingDb">
-        <label class="col-sm-4 control-label"><?php echo $this->translate('Database Name'); ?><span class="required">*</span></label>
+        <label class="col-sm-4 control-label">Database Name<span class="required">*</span></label>
         <div class="col-sm-4">
             <input tooltip-placement="right"
-                   tooltip="<?php echo $this->translate('Enter the name of your store\'s database.'); ?>"
+                   tooltip="Enter the name of your store's database."
                    tooltip-trigger="focus"
                    tooltip-append-to-body="true"
                    class="form-control"
@@ -140,7 +140,7 @@
         </div>
         <div class="col-sm-offset-4 col-sm-4" ng-show="database.dbName.$invalid && database.submitted">
             <div class="error-container">
-                <span ng-show="database.dbName.$error.required"><?php echo $this->translate('You must enter a valid database name. Please check the syntax and try again.'); ?></span>
+                <span ng-show="database.dbName.$error.required">You must enter a valid database name. Please check the syntax and try again.</span>
             </div>
         </div>
     </div>
@@ -148,24 +148,24 @@
     <div class="form-group">
         <div class="col-sm-offset-4 col-sm-4">
             <button type="submit" class="btn btn-default" style="width: 100%;">
-                <?php echo $this->translate('Test Connection and Authentication'); ?>
+                Test Connection and Authentication
             </button>
         </div>
         <div class="col-sm-4" style="padding-top: 8px;">
             <div ng-show="testConnection.result.success && testConnection.pressed" class="animate-show text-success">
-                <span class="glyphicon glyphicon-ok-sign text-success"></span>&nbsp;<?php echo $this->translate('Test connection successful.'); ?>
+                <span class="glyphicon glyphicon-ok-sign text-success"></span>&nbsp;Test connection successful.
             </div>
             <div ng-show="!testConnection.result.success && testConnection.pressed" class="animate-show text-danger">
-                <span class="glyphicon glyphicon-remove-sign"></span>&nbsp;<?php echo $this->translate('Cannot connect to server.'); ?>
+                <span class="glyphicon glyphicon-remove-sign"></span>&nbsp;Cannot connect to server.
             </div>
         </div>
     </div>
 
     <div class="form-group" ng-if="db.useExistingDb==0">
-        <label class="col-sm-4 control-label"><?php echo $this->translate('New Database Name'); ?>&nbsp;<span class="required">*</span></label>
+        <label class="col-sm-4 control-label">New Database Name&nbsp;<span class="required">*</span></label>
         <div class="col-sm-4">
             <input tooltip-placement="right"
-                   tooltip="<?php echo $this->translate('Create sign-in credentials for your store\'s database.'); ?>"
+                   tooltip="Create sign-in credentials for your store's database."
                    tooltip-trigger="focus"
                    tooltip-append-to-body="true"
                    class="form-control"
@@ -177,30 +177,30 @@
     </div>
 
     <div class="form-group">
-        <label class="col-sm-4 control-label"><?php echo $this->translate('Table prefix'); ?></label>
+        <label class="col-sm-4 control-label">Table prefix</label>
         <div class="col-sm-4">
             <input tooltip-placement="right"
-                   tooltip="<?php echo $this->translate('Enter a tracking prefix to be used for database tables created for this Magento installation. (ex: \'mg1_\' )'); ?>"
+                   tooltip="Enter a tracking prefix to be used for database tables created for this Magento installation. (ex: 'mg1_' )"
                    tooltip-trigger="focus"
                    tooltip-append-to-body="true"
                    class="form-control"
                    type="text"
                    name="dbTablePrefix"
                    ng-model="db.tablePrefix"
-                   placeholder="<?php echo $this->translate('(optional)'); ?>" />
+                   placeholder="(optional)" />
         </div>
     </div>
 
     <div class="form-group" ng-if="db.useExistingDb==0">
-        <label class="col-sm-3 control-label"><?php echo $this->translate('Data Access'); ?><span class="required">*</span></label>
+        <label class="col-sm-3 control-label">Data Access<span class="required">*</span></label>
         <div class="col-sm-9">
             <div class="radio">
                 <label>
                     <input type="radio" name="db.useAccess" ng-model="db.useAccess" value="0">
-                    <?php echo $this->translate('Enter existing credentials to create the Magento database'); ?>
+                    Enter existing credentials to create the Magento database
                 </label>
                 <div class="form-group" style="margin-top: 20px;" ng-if="db.useAccess==0">
-                    <label class="col-sm-3 control-label"><?php echo $this->translate('Username'); ?><span class="required">*</span></label>
+                    <label class="col-sm-3 control-label">Username<span class="required">*</span></label>
                     <div class="col-sm-6">
                         <input class="form-control"
                                style="width: 80%;"
@@ -211,24 +211,24 @@
                     </div>
                 </div>
                 <div class="form-group" ng-if="db.useAccess==0">
-                    <label class="col-sm-3 control-label"><?php echo $this->translate('Password'); ?></label>
+                    <label class="col-sm-3 control-label">Password</label>
                     <div class="col-sm-6">
                         <input class="form-control"
                                style="width: 80%;"
                                type="password"
                                name="dbGrandPassword"
                                ng-model="db.grandPassword"
-                               placeholder="<?php echo $this->translate('(optional)'); ?>">
+                               placeholder="(optional)">
                     </div>
                 </div>
             </div>
             <div class="radio">
                 <label>
                     <input type="radio" name="useAccess" ng-model="db.useAccess" value="1">
-                    <?php echo $this->translate('Enter new credentials to create the Magento database'); ?>
+                    Enter new credentials to create the Magento database
                 </label>
                 <div class="form-group" style="margin-top: 20px;" ng-if="db.useAccess">
-                    <label class="col-sm-3 control-label"><?php echo $this->translate('New Username'); ?><span class="required">*</span></label>
+                    <label class="col-sm-3 control-label">New Username<span class="required">*</span></label>
                     <div class="col-sm-6">
                         <input class="form-control"
                                style="width: 80%;"
@@ -239,18 +239,18 @@
                     </div>
                 </div>
                 <div class="form-group" ng-if="db.useAccess">
-                    <label class="col-sm-3 control-label"><?php echo $this->translate('New Password'); ?></label>
+                    <label class="col-sm-3 control-label">New Password</label>
                     <div class="col-sm-6">
                         <input class="form-control"
                                style="width: 80%;"
                                type="password"
                                name="dbNewPassword"
                                ng-model="db.newPassword"
-                               placeholder="<?php echo $this->translate('(optional)'); ?>">
+                               placeholder="(optional)">
                     </div>
                 </div>
                 <div class="form-group" ng-if="db.useAccess">
-                    <label class="col-sm-3 control-label"><?php echo $this->translate('Confirm Password'); ?></label>
+                    <label class="col-sm-3 control-label">Confirm Password</label>
                     <div class="col-sm-6">
                         <input class="form-control"
                                style="width: 80%;"
@@ -265,6 +265,6 @@
 </form>
 
 <div class="step-controls">
-    <a href="#" class="btn btn-primary" ng-click="previousState()"><?php echo $this->translate('Previous'); ?></a>
-    <a href="#" class="btn btn-primary" ng-click="nextState()"><?php echo $this->translate('Next'); ?></a>
+    <a href="#" class="btn btn-primary" ng-click="previousState()">Previous</a>
+    <a href="#" class="btn btn-primary" ng-click="nextState()">Next</a>
 </div>
\ No newline at end of file
diff --git a/setup/module/Magento/Setup/view/magento/setup/create-admin-account.phtml b/setup/module/Magento/Setup/view/magento/setup/create-admin-account.phtml
index 93ae083d8d1..cd8d043e9e6 100644
--- a/setup/module/Magento/Setup/view/magento/setup/create-admin-account.phtml
+++ b/setup/module/Magento/Setup/view/magento/setup/create-admin-account.phtml
@@ -32,27 +32,27 @@ $passwordWizard = sprintf(
             <div class=\'col-sm-2\'></div>
         </div>
     <p>%s</p>',
-    $this->translate('Password Strength:'),
-    $this->translate('Must be a mix of at least 7 alpha and numeric characters.(Ex.: BuyIt54).')
+    'Password Strength:',
+    'Must be a mix of at least 7 alpha and numeric characters.(Ex.: BuyIt54).'
 );
 ?>
 <div class="step-controls">
-    <a href="#" class="btn btn-primary" ng-click="previousState()"><?php echo $this->translate('Previous'); ?></a>
-    <a href="#" class="btn btn-primary" ng-click="nextState()"><?php echo $this->translate('Next'); ?></a>
+    <a href="#" class="btn btn-primary" ng-click="previousState()">Previous</a>
+    <a href="#" class="btn btn-primary" ng-click="nextState()">Next</a>
 </div>
 
 <div class="page-header">
     <h1>{{$state.current.header}}</h1>
 </div>
 
-<p><?php echo $this->translate('Create a new Admin account to manage you store.'); ?></p>
+<p>Create a new Admin account to manage you store.</p>
 
 <form novalidate name="account" class="form-horizontal" role="form" style="padding-top: 20px;">
     <div class="form-group" ng-class="{'has-error': account.adminUsername.$invalid && account.submitted}">
-        <label class="col-sm-3 control-label"><?php echo $this->translate('New Username'); ?>&nbsp;<span class="required">*</span></label>
+        <label class="col-sm-3 control-label">New Username&nbsp;<span class="required">*</span></label>
         <div class="col-sm-4">
             <input tooltip-placement="right"
-                   tooltip="<?php echo $this->translate('Must be 1 to 40 characters'); ?>"
+                   tooltip="Must be 1 to 40 characters"
                    tooltip-trigger="focus"
                    tooltip-append-to-body="true"
                    class="form-control"
@@ -64,16 +64,16 @@ $passwordWizard = sprintf(
         </div>
         <div class="col-sm-offset-3 col-sm-4" ng-show="account.adminUsername.$invalid && account.submitted">
             <div class="error-container">
-                <span ng-show="account.adminUsername.$error.required"><?php echo $this->translate('Please enter your new username.'); ?></span>
-                <span ng-show="account.adminUsername.$error.maxlength"><?php echo $this->translate('Please enter a username between 1 and 40 characters.'); ?></span>
+                <span ng-show="account.adminUsername.$error.required">Please enter your new username.</span>
+                <span ng-show="account.adminUsername.$error.maxlength">Please enter a username between 1 and 40 characters.</span>
             </div>
         </div>
     </div>
     <div class="form-group" ng-class="{'has-error': account.adminEmail.$invalid && account.submitted}">
-        <label class="col-sm-3 control-label"><?php echo $this->translate('New E-Mail'); ?>&nbsp;<span class="required">*</span></label>
+        <label class="col-sm-3 control-label">New E-Mail&nbsp;<span class="required">*</span></label>
         <div class="col-sm-4">
             <input tooltip-placement="right"
-                   tooltip="<?php echo $this->translate('Must be a correct e-mail'); ?>"
+                   tooltip="Must be a correct e-mail"
                    tooltip-trigger="focus"
                    tooltip-append-to-body="true"
                    class="form-control"
@@ -84,13 +84,13 @@ $passwordWizard = sprintf(
         </div>
         <div class="col-sm-offset-3 col-sm-4" ng-show="account.adminEmail.$invalid && account.submitted">
             <div class="error-container">
-                <span ng-show="account.adminEmail.$error.required"><?php echo $this->translate('Please enter your new e-mail.'); ?></span>
-                <span ng-show="account.adminEmail.$error.email"><?php echo $this->translate('Please enter a correct e-mail.'); ?></span>
+                <span ng-show="account.adminEmail.$error.required">Please enter your new e-mail.</span>
+                <span ng-show="account.adminEmail.$error.email">Please enter a correct e-mail.</span>
             </div>
         </div>
     </div>
     <div class="form-group" ng-class="{'has-error': account.adminPassword.$invalid && account.submitted}">
-        <label class="col-sm-3 control-label"><?php echo $this->translate('New Password'); ?>&nbsp;<span class="required">*</span></label>
+        <label class="col-sm-3 control-label">New Password&nbsp;<span class="required">*</span></label>
         <div class="col-sm-4">
             <input ng-change="passwordStatusChange()"
                    tooltip-placement="right"
@@ -105,15 +105,15 @@ $passwordWizard = sprintf(
         </div>
         <div class="col-sm-offset-3 col-sm-4" ng-show="account.adminPassword.$invalid && account.submitted">
             <div class="error-container">
-                <span ng-show="account.adminPassword.$error.required"><?php echo $this->translate('Please enter your new password.'); ?></span>
+                <span ng-show="account.adminPassword.$error.required">Please enter your new password.</span>
             </div>
         </div>
     </div>
     <div class="form-group" ng-class="{'has-error': account.adminConfirm.$invalid && account.submitted}">
-        <label class="col-sm-3 control-label"><?php echo $this->translate('Confirm Password'); ?>&nbsp;<span class="required">*</span></label>
+        <label class="col-sm-3 control-label">Confirm Password&nbsp;<span class="required">*</span></label>
         <div class="col-sm-4">
             <input tooltip-placement="right"
-                   tooltip="<?php echo $this->translate('Please re-enter your password'); ?>"
+                   tooltip="Please re-enter your password"
                    tooltip-trigger="focus"
                    tooltip-append-to-body="true"
                    class="form-control"
@@ -125,14 +125,14 @@ $passwordWizard = sprintf(
         </div>
         <div class="col-sm-offset-3 col-sm-4" ng-show="account.adminConfirm.$invalid && account.submitted">
             <div class="error-container">
-                <span ng-show="account.adminConfirm.$error.required"><?php echo $this->translate('Please re-enter your password.'); ?></span>
-                <span ng-show="account.adminConfirm.$error.confirmPassword"><?php echo $this->translate('Please make sure your passwords match.'); ?></span>
+                <span ng-show="account.adminConfirm.$error.required">Please re-enter your password.</span>
+                <span ng-show="account.adminConfirm.$error.confirmPassword">Please make sure your passwords match.</span>
             </div>
         </div>
     </div>
 </form>
 
 <div class="step-controls">
-    <a href="#" class="btn btn-primary" ng-click="previousState()"><?php echo $this->translate('Previous'); ?></a>
-    <a href="#" class="btn btn-primary" ng-click="nextState()"><?php echo $this->translate('Next'); ?></a>
+    <a href="#" class="btn btn-primary" ng-click="previousState()">Previous</a>
+    <a href="#" class="btn btn-primary" ng-click="nextState()">Next</a>
 </div>
diff --git a/setup/module/Magento/Setup/view/magento/setup/customize-your-store.phtml b/setup/module/Magento/Setup/view/magento/setup/customize-your-store.phtml
index 198b432a828..3149fdf5089 100644
--- a/setup/module/Magento/Setup/view/magento/setup/customize-your-store.phtml
+++ b/setup/module/Magento/Setup/view/magento/setup/customize-your-store.phtml
@@ -23,8 +23,8 @@
  */
 ?>
 <div class="step-controls">
-    <a href="#" class="btn btn-primary" ng-click="previousState()"><?php echo $this->translate('Previous'); ?></a>
-    <a href="#" class="btn btn-primary" ng-click="nextState()"><?php echo $this->translate('Next'); ?></a>
+    <a href="#" class="btn btn-primary" ng-click="previousState()">Previous</a>
+    <a href="#" class="btn btn-primary" ng-click="nextState()">Next</a>
 </div>
 
 <div class="page-header">
@@ -33,27 +33,27 @@
 
 <form class="form-horizontal" role="form">
     <div class="form-group">
-        <label class="col-md-3 control-label"><?php echo $this->translate('Sample Data'); ?></label>
+        <label class="col-md-3 control-label">Sample Data</label>
         <div class="col-md-6">
-            <p class="form-control-static text-muted"><?php echo $this->translate('Using sample of "fake" data can be helpful, letting you automatically build your store with fictious products, tax, and payment settings. But it also creates a lot of extra data you need to remove later. Learn the pros and cons in out <a href="#">Guide to Using Sample Data</a>.'); ?></p>
+            <p class="form-control-static text-muted">Using sample of "fake" data can be helpful, letting you automatically build your store with fictious products, tax, and payment settings. But it also creates a lot of extra data you need to remove later. Learn the pros and cons in out <a href="#">Guide to Using Sample Data</a>.</p>
         </div>
     </div>
 
     <div class="form-group">
         <div class="checkbox col-md-4 col-md-offset-3">
             <label>
-                <input type="checkbox" ng-model="store.useSampleData" disabled>&nbsp;<span class="text-muted"><?php echo $this->translate('Use Sample Data'); ?></span>
+                <input type="checkbox" ng-model="store.useSampleData" disabled>&nbsp;<span class="text-muted">Use Sample Data</span>
             </label>
         </div>
     </div>
 
     <div class="form-group">
-        <label class="col-md-3 control-label"><?php echo $this->translate('Store Default Time Zone'); ?>&nbsp;<span class="required">*</span></label>
+        <label class="col-md-3 control-label">Store Default Time Zone&nbsp;<span class="required">*</span></label>
         <div class="col-md-6">
             <select class="form-control"
                     ng-model="store.timezone"
                     tooltip-placement="right"
-                    tooltip-html-unsafe="<?php echo $this->translate('The time zone in which your online store operates. You can change this later in Magento Admin.'); ?>"
+                    tooltip-html-unsafe="The time zone in which your online store operates. You can change this later in Magento Admin."
                     tooltip-trigger="focus"
                     tooltip-append-to-body="true">
             <?php foreach ($this->timezone as $value => $label): ?>
@@ -64,12 +64,12 @@
     </div>
 
     <div class="form-group">
-        <label class="col-md-3 control-label"><?php echo $this->translate('Store Default Currency'); ?>&nbsp;<span class="required">*</span></label>
+        <label class="col-md-3 control-label">Store Default Currency&nbsp;<span class="required">*</span></label>
         <div class="col-md-5">
             <select class="form-control"
                     ng-model="store.currency"
                     tooltip-placement="right"
-                    tooltip-html-unsafe="<?php echo $this->translate('The currency your store uses for price labeling, checkout, returns, credit and gift cards. You can change this later in Magento Admin.'); ?>"
+                    tooltip-html-unsafe="The currency your store uses for price labeling, checkout, returns, credit and gift cards. You can change this later in Magento Admin."
                     tooltip-trigger="focus"
                     tooltip-append-to-body="true">
             <?php foreach ($this->currency as $value => $label): ?>
@@ -80,12 +80,12 @@
     </div>
 
     <div class="form-group">
-        <label class="col-md-3 control-label"><?php echo $this->translate('Store Default Language'); ?>&nbsp;<span class="required">*</span></label>
+        <label class="col-md-3 control-label">Store Default Language&nbsp;<span class="required">*</span></label>
         <div class="col-md-4">
             <select class="form-control"
                     ng-model="store.language"
                     tooltip-placement="right"
-                    tooltip-html-unsafe="<?php echo $this->translate('The language customers will see in your store. You can change this later in Magento Set Up Tool.'); ?>"
+                    tooltip-html-unsafe="The language customers will see in your store. You can change this later in Magento Set Up Tool."
                     tooltip-trigger="focus"
                     tooltip-append-to-body="true">
             <?php foreach ($this->language as $value => $label): ?>
@@ -97,6 +97,6 @@
 </form>
 
 <div class="step-controls">
-    <a href="#" class="btn btn-primary" ng-click="previousState()"><?php echo $this->translate('Previous'); ?></a>
-    <a href="#" class="btn btn-primary" ng-click="nextState()"><?php echo $this->translate('Next'); ?></a>
+    <a href="#" class="btn btn-primary" ng-click="previousState()">Previous</a>
+    <a href="#" class="btn btn-primary" ng-click="nextState()">Next</a>
 </div>
diff --git a/setup/module/Magento/Setup/view/magento/setup/install.phtml b/setup/module/Magento/Setup/view/magento/setup/install.phtml
index 6e95df09c95..2f340c5f29c 100644
--- a/setup/module/Magento/Setup/view/magento/setup/install.phtml
+++ b/setup/module/Magento/Setup/view/magento/setup/install.phtml
@@ -23,8 +23,8 @@
  */
 ?>
 <div class="step-controls">
-    <a href="#" class="btn btn-primary" ng-disabled="isDisabled" ng-click="previousState()"><?php echo $this->translate('Previous'); ?></a>
-    <a href="#" class="btn btn-primary" ng-disabled="isDisabled" ng-click="start()" ng-show="isStarted"><?php echo $this->translate('Try Again'); ?></a>
+    <a href="#" class="btn btn-primary" ng-disabled="isDisabled" ng-click="previousState()">Previous</a>
+    <a href="#" class="btn btn-primary" ng-disabled="isDisabled" ng-click="start()" ng-show="isStarted">Try Again</a>
 </div>
 
 <div class="page-header">
@@ -32,7 +32,7 @@
 </div>
 
 <div ng-show="!isStarted" class="text-center" style="padding-top: 50px; padding-bottom: 50px;">
-    <p><?php echo $this->translate('You\'re ready!'); ?></p>
+    <p>You're ready!</p>
     <button ng-click="start()" class="btn btn-primary">Install Now</button>
 </div>
 
@@ -40,10 +40,10 @@
     <div class="progress"><div class="progress-bar progress-bar-striped" role="progressbar" aria-valuenow="{{progress}}" aria-valuemin="0" aria-valuemax="100" style="width: {{progress}}%; min-width: 5em;">{{progressText}}</div></div>
     <div ng-show="isFailed" class="error-container">
         <span class="glyphicon glyphicon-remove-sign "></span>
-        <span><?php echo $this->translate('Installation is incomplete. Check the console log for errors before trying again.'); ?></span>
+        <span>Installation is incomplete. Check the console log for errors before trying again.</span>
     </div>
     <div class="collapsed-options">
-        <a href="#" class="collapsed-options" ng-click="toggleConsole()"><?php echo $this->translate('Console Log'); ?></a>
+        <a href="#" class="collapsed-options" ng-click="toggleConsole()">Console Log</a>
         <span class="caret"></span>
     </div>
     <div ng-show="isConsole" id="console">
@@ -52,6 +52,6 @@
 </div>
 
 <div class="step-controls">
-    <a href="#" class="btn btn-primary" ng-disabled="isDisabled" ng-click="previousState()"><?php echo $this->translate('Previous'); ?></a>
-    <a href="#" class="btn btn-primary" ng-disabled="isDisabled" ng-click="start()" ng-show="isStarted"><?php echo $this->translate('Try Again'); ?></a>
+    <a href="#" class="btn btn-primary" ng-disabled="isDisabled" ng-click="previousState()">Previous</a>
+    <a href="#" class="btn btn-primary" ng-disabled="isDisabled" ng-click="start()" ng-show="isStarted">Try Again</a>
 </div>
diff --git a/setup/module/Magento/Setup/view/magento/setup/landing.phtml b/setup/module/Magento/Setup/view/magento/setup/landing.phtml
index b7e62a45258..8130e38842c 100644
--- a/setup/module/Magento/Setup/view/magento/setup/landing.phtml
+++ b/setup/module/Magento/Setup/view/magento/setup/landing.phtml
@@ -23,14 +23,14 @@
  */
 ?>
 <div class="text-center">
-    <h1><?php echo $this->translate('Magento'); ?></h1>
+    <h1>Magento</h1>
     <br/>
-    <p><?php echo $this->translate('Version') . ' ' . $this->version; ?></p>
+    <p><?php echo 'Version' . ' ' . $this->version; ?></p>
     <br/>
     <br/>
     <br/>
-    <p><?php echo $this->translate('Welcome to Magento Admin, your online store headquarters.
-    Click \'Agree and Set Up Magento\' or read <a href="#/getting-started">Getting Started</a> to learn more.'); ?></p>
+    <p>Welcome to Magento Admin, your online store headquarters.
+    Click 'Agree and Set Up Magento' or read <a href="#/getting-started">Getting Started</a> to learn more.</p>
     <br/>
 <?php
 /* not implemented yet
@@ -48,8 +48,8 @@
 ?>
     <br/>
     <div>
-        <a href="#" ng-click="previousState()"><?php echo $this->translate('Terms & Agreement'); ?></a>
+        <a href="#" ng-click="previousState()">Terms & Agreement</a>
     </div>
     <br/>
-    <button type="button" class="btn-lg btn-primary" ng-click="nextState()"><?php echo $this->translate('Agree and Set Up Magento'); ?></button>
+    <button type="button" class="btn-lg btn-primary" ng-click="nextState()">Agree and Set Up Magento</button>
 </div>
diff --git a/setup/module/Magento/Setup/view/magento/setup/license.phtml b/setup/module/Magento/Setup/view/magento/setup/license.phtml
index 13c5ce8cc08..9a0915cfd19 100644
--- a/setup/module/Magento/Setup/view/magento/setup/license.phtml
+++ b/setup/module/Magento/Setup/view/magento/setup/license.phtml
@@ -24,10 +24,10 @@
 ?>
 <div class="col-xs-9">
     <br/>
-    <a href="#" class="btn btn-primary" ng-click="nextState()"> <?php echo $this->translate('Go Back'); ?></a>
+    <a href="#" class="btn btn-primary" ng-click="nextState()"> Go Back</a>
     <br/><br/>
     <?php echo nl2br(htmlspecialchars($this->license, ENT_COMPAT, 'UTF-8')); ?>
     <br/><br/><br/>
-    <a href="#" class="btn btn-primary" ng-click="nextState()"> <?php echo $this->translate('Go Back'); ?></a>
+    <a href="#" class="btn btn-primary" ng-click="nextState()"> Go Back</a>
     <br/><br/>
 </div>
diff --git a/setup/module/Magento/Setup/view/magento/setup/readiness-check.phtml b/setup/module/Magento/Setup/view/magento/setup/readiness-check.phtml
index 957123e8f98..0690608920e 100644
--- a/setup/module/Magento/Setup/view/magento/setup/readiness-check.phtml
+++ b/setup/module/Magento/Setup/view/magento/setup/readiness-check.phtml
@@ -23,8 +23,8 @@
  */
 ?>
 <div class="step-controls" ng-show="$state.is('root.readiness-check.progress')">
-    <a href="#" class="btn btn-primary" ng-click="$state.forceReload()" ng-disabled="checkingInProgress()"><?php echo $this->translate('Try Again'); ?></a>
-    <a href="#" class="btn btn-primary" ng-click="nextState()" ng-disabled="checkingInProgress() || hasErrors"><?php echo $this->translate('Next'); ?></a>
+    <a href="#" class="btn btn-primary" ng-click="$state.forceReload()" ng-disabled="checkingInProgress()">Try Again</a>
+    <a href="#" class="btn btn-primary" ng-click="nextState()" ng-disabled="checkingInProgress() || hasErrors">Next</a>
 </div>
 
 <div class="page-header">
@@ -32,15 +32,15 @@
 </div>
 
 <div ng-show="$state.is('root.readiness-check')" class="readiness-check-landing">
-    <p><?php echo $this->translate('Let\'s check your environment for the corrent PHP version, PHP extensions, file permissions and compatibility.'); ?></p>
+    <p>Let's check your environment for the correct PHP version, PHP extensions, file permissions and compatibility.</p>
     <div>
-        <a href="#" ng-click="$state.go('.progress')" class="btn btn-primary"><?php echo $this->translate('Start Readiness Check'); ?></a>
+        <a href="#" ng-click="$state.go('.progress')" class="btn btn-primary">Start Readiness Check</a>
     </div>
 </div>
 
 <div ui-view></div>
 
 <div class="step-controls" ng-show="$state.is('root.readiness-check.progress')">
-    <a href="#" class="btn btn-primary" ng-click="$state.forceReload()" ng-disabled="checkingInProgress()"><?php echo $this->translate('Try Again'); ?></a>
-    <a href="#" class="btn btn-primary" ng-click="nextState()" ng-disabled="checkingInProgress() || hasErrors"><?php echo $this->translate('Next'); ?></a>
+    <a href="#" class="btn btn-primary" ng-click="$state.forceReload()" ng-disabled="checkingInProgress()">Try Again</a>
+    <a href="#" class="btn btn-primary" ng-click="nextState()" ng-disabled="checkingInProgress() || hasErrors">Next</a>
 </div>
\ No newline at end of file
diff --git a/setup/module/Magento/Setup/view/magento/setup/readiness-check/progress.phtml b/setup/module/Magento/Setup/view/magento/setup/readiness-check/progress.phtml
index a624d122864..4224ecf4515 100644
--- a/setup/module/Magento/Setup/view/magento/setup/readiness-check/progress.phtml
+++ b/setup/module/Magento/Setup/view/magento/setup/readiness-check/progress.phtml
@@ -25,45 +25,45 @@
 <div class="rediness-check-items">
     <div class="bg-info" ng-switch="isCompleted()">
         <div ng-switch-when="true" ng-switch="hasErrors">
-            <span ng-switch-when="true"><?php echo $this->translate('Completed! You need to resolve these issues to continue.'); ?></span>
-            <span ng-switch-default><?php echo $this->translate('Completed!'); ?></span>
+            <span ng-switch-when="true">Completed! You need to resolve these issues to continue.</span>
+            <span ng-switch-default>Completed!</span>
         </div>
         <div ng-switch-default>
             <img src="pub/images/ajax-loader.gif" />&nbsp;
-            <span><?php echo $this->translate('We\'re making sure your server environment is ready for Magento to be installed.'); ?></span>
+            <span>We're making sure your server environment is ready for Magento to be installed.</span>
         </div>
     </div>
 
     <div id="php-version" ng-show="version.visible">
         <div ng-hide="version.processed">
-            <span><?php echo $this->translate('Checking PHP Version...'); ?></span>
+            <span>Checking PHP Version...</span>
         </div>
         <div ng-show="version.processed" ng-switch="version.responseType">
             <div ng-switch-when="success" ng-init="updateOnSuccess(version)">
                 <span class="glyphicon glyphicon-ok-sign text-success"></span>
-                <span><?php echo $this->translate('PHP Version Check'); ?></span>
+                <span>PHP Version Check</span>
                 <div class="rediness-check-info">
-                    <?php echo $this->translate('Your PHP version is correct ({{version.data.current}}).'); ?>
+                    Your PHP version is correct ({{version.data.current}}).
                 </div>
             </div>
             <div ng-switch-default ng-init="updateOnError(version)">
                 <div class="rediness-check-panel-right">
-                    <p><?php echo $this->translate('Need Help?'); ?></p>
-                    <p><a href="http://www.php.net/docs.php" target="_blank"><?php echo $this->translate('PHP Documentation'); ?></a></p>
+                    <p>Need Help?</p>
+                    <p><a href="http://www.php.net/docs.php" target="_blank">PHP Documentation</a></p>
                 </div>
                 <span class="glyphicon glyphicon-remove text-danger"></span>
-                <span><?php echo $this->translate('PHP Version Check'); ?></span>
+                <span>PHP Version Check</span>
                 <div class="rediness-check-info">
                     <p>
-                        <?php echo $this->translate('Your PHP version is {{version.data.current}}. The required PHP version is {{version.data.required}}.'); ?>
+                        Your PHP version is {{version.data.current}}. The required PHP version is {{version.data.required}}.
                         <a href="#" ng-click="updateOnExpand(version)">
-                            <span ng-hide="version.expanded"><?php echo $this->translate('More detail'); ?></span>
-                            <span ng-show="version.expanded"><?php echo $this->translate('Less detail'); ?></span>
+                            <span ng-hide="version.expanded">More detail</span>
+                            <span ng-show="version.expanded">Less detail</span>
                         </a>
                     </p>
                     <div class="rediness-check-block" ng-show="version.expanded">
-                        <p><?php echo $this->translate('Donwload and install PHP version {{version.data.required}} from <a href="http://www.php.net" target="_blank">www.php.net</a> using this <a href="http://www.php.net/docs.php" target="_blank">PHP Documentation</a>.'); ?></p>
-                        <p><?php echo $this->translate('If you need more help please call your hosting provider.'); ?></p>
+                        <p>Donwload and install PHP version {{version.data.required}} from <a href="http://www.php.net" target="_blank">www.php.net</a> using this <a href="http://www.php.net/docs.php" target="_blank">PHP Documentation</a>.</p>
+                        <p>If you need more help please call your hosting provider.</p>
                     </div>
                 </div>
             </div>
@@ -72,25 +72,25 @@
 
     <div id="php-extensions" ng-show="extensions.visible">
         <div ng-hide="extensions.processed">
-            <span><?php echo $this->translate('Checking PHP Extensions...'); ?></span>
+            <span>Checking PHP Extensions...</span>
         </div>
         <div ng-show="extensions.processed" ng-switch="extensions.responseType">
             <div ng-switch-when="success" ng-init="updateOnSuccess(extensions)">
                 <span class="glyphicon glyphicon-ok-sign text-success"></span>
-                <span><?php echo $this->translate('PHP Extensions Check'); ?></span>
+                <span>PHP Extensions Check</span>
                 <div class="rediness-check-info">
                     <p>
-                        <?php echo $this->translate('You meet {{extensions.data.current.length}} out of {{extensions.data.required.length}} PHP extensions requirements.'); ?>
+                        You meet {{extensions.data.current.length}} out of {{extensions.data.required.length}} PHP extensions requirements.
                         <a href="#" ng-click="updateOnExpand(extensions)">
-                            <span ng-hide="extensions.expanded"><?php echo $this->translate('More detail'); ?></span>
-                            <span ng-show="extensions.expanded"><?php echo $this->translate('Less detail'); ?></span>
+                            <span ng-hide="extensions.expanded">More detail</span>
+                            <span ng-show="extensions.expanded">Less detail</span>
                         </a>
                     </p>
                     <div class="rediness-check-block" ng-show="extensions.expanded">
                         <ul class="list-unstyled">
                             <li ng-repeat="name in extensions.data.required">
                                 <span class="glyphicon glyphicon-ok text-success"></span>
-                                <span><?php echo $this->translate('PHP Extension {{name}}.'); ?></span>
+                                <span>PHP Extension {{name}}.</span>
                             </li>
                         </ul>
                     </div>
@@ -99,26 +99,26 @@
             <div ng-switch-default ng-init="updateOnError(extensions)">
                 <div class="rediness-check-panel-right">
                     <p>Need Help?</p>
-                    <p><a href="#" target="_blank"><?php echo $this->translate('PHP Extension Help'); ?></a></p>
+                    <p><a href="#" target="_blank">PHP Extension Help</a></p>
                 </div>
                 <span class="glyphicon glyphicon-remove text-danger"></span>
-                <span><?php echo $this->translate('PHP Extensions Check'); ?></span>
+                <span>PHP Extensions Check</span>
                 <div class="rediness-check-info">
                     <p>
-                        <?php echo $this->translate('{{extensions.data.required.length - extensions.data.current.length}} missing PHP extensions.'); ?>
+                        {{extensions.data.required.length - extensions.data.current.length}} missing PHP extensions.
                         <a href="#" ng-click="updateOnExpand(extensions)">
-                            <span ng-hide="extensions.expanded"><?php echo $this->translate('More detail'); ?></span>
-                            <span ng-show="extensions.expanded"><?php echo $this->translate('Less detail'); ?></span>
+                            <span ng-hide="extensions.expanded">More detail</span>
+                            <span ng-show="extensions.expanded">Less detail</span>
                         </a>
                     </p>
-                    <p><?php echo $this->translate('The best way to resolve this is to install the correct missing extensions. The exact fix depends on our server, your host, and other system variables.</br>Our <a href="#">PHP Extension Help</a> can get you started.'); ?></p>
-                    <p><?php echo $this->translate('If you need more help, please call your hosting provider.'); ?></p>
+                    <p>The best way to resolve this is to install the correct missing extensions. The exact fix depends on our server, your host, and other system variables.</br>Our <a href="#">PHP Extension Help</a> can get you started.</p>
+                    <p>If you need more help, please call your hosting provider.</p>
                     <div class="rediness-check-block" ng-show="extensions.expanded">
                         <ul class="list-unstyled">
                             <li ng-repeat="name in extensions.data.required" ng-switch="hasItem(extensions.data.current, name)">
                                 <span ng-switch-when="true" class="glyphicon glyphicon-ok text-success"></span>
                                 <span ng-switch-default class="glyphicon glyphicon-remove text-danger"></span>
-                                <span><?php echo $this->translate('PHP Extension {{name}}.'); ?></span>
+                                <span>PHP Extension {{name}}.</span>
                             </li>
                         </ul>
                     </div>
@@ -129,25 +129,25 @@
 
     <div id="php-permissions" ng-show="permissions.visible">
         <div ng-hide="permissions.processed">
-            <span><?php echo $this->translate('Checking File Permissions...'); ?></span>
+            <span>Checking File Permissions...</span>
         </div>
         <div ng-show="permissions.processed" ng-switch="permissions.responseType">
             <div ng-switch-when="success" ng-init="updateOnSuccess(permissions)">
                 <span class="glyphicon glyphicon-ok-sign text-success"></span>
-                <span><?php echo $this->translate('File Permission Check'); ?></span>
+                <span>File Permission Check</span>
                 <div class="rediness-check-info">
                     <p>
-                        <?php echo $this->translate('You meet {{permissions.data.current.length}} out of {{permissions.data.required.length}} writable file permission requirements.'); ?>
+                        You meet {{permissions.data.current.length}} out of {{permissions.data.required.length}} writable file permission requirements.
                         <a href="#" ng-click="updateOnExpand(permissions)">
-                            <span ng-hide="permissions.expanded"><?php echo $this->translate('More detail'); ?></span>
-                            <span ng-show="permissions.expanded"><?php echo $this->translate('Less detail'); ?></span>
+                            <span ng-hide="permissions.expanded">More detail</span>
+                            <span ng-show="permissions.expanded">Less detail</span>
                         </a>
                     </p>
                     <div class="rediness-check-block" ng-show="permissions.expanded">
                         <ul class="list-unstyled">
                             <li ng-repeat="name in permissions.data.required">
                                 <span class="glyphicon glyphicon-ok text-success"></span>
-                                <span><?php echo $this->translate('"{{name}}" writable directory permission.'); ?></span>
+                                <span>"{{name}}" writable directory permission.</span>
                             </li>
                         </ul>
                     </div>
@@ -155,27 +155,27 @@
             </div>
             <div ng-switch-default ng-init="updateOnError(permissions)">
                 <div class="rediness-check-panel-right">
-                    <p><?php echo $this->translate('Need Help?'); ?></p>
-                    <p><a href="#" target="_blank"><?php echo $this->translate('File Permission Help'); ?></a></p>
+                    <p>Need Help?</p>
+                    <p><a href="#" target="_blank">File Permission Help</a></p>
                 </div>
                 <span class="glyphicon glyphicon-remove text-danger"></span>
-                <span><?php echo $this->translate('File Permission Check'); ?></span>
+                <span>File Permission Check</span>
                 <div class="rediness-check-info">
                     <p>
-                        <?php echo $this->translate('{{permissions.data.required.length - permissions.data.current.length}} file permission not met.'); ?>
+                        {{permissions.data.required.length - permissions.data.current.length}} file permission not met.
                         <a href="#" ng-click="updateOnExpand(permissions)">
-                            <span ng-hide="permissions.expanded"><?php echo $this->translate('More detail'); ?></span>
-                            <span ng-show="permissions.expanded"><?php echo $this->translate('Less detail'); ?></span>
+                            <span ng-hide="permissions.expanded">More detail</span>
+                            <span ng-show="permissions.expanded">Less detail</span>
                         </a>
                     </p>
-                    <p><?php echo $this->translate('The best way to resolve this is to allow write permissions for the following Magento directories. The exact fix depends on your server, your host, and other system variables.</br>Our <a href="#">File Permission Help</a> can get you started.'); ?></p>
-                    <p><?php echo $this->translate('If you need more help, please call your hosting provider.'); ?></p>
+                    <p>The best way to resolve this is to allow write permissions for the following Magento directories. The exact fix depends on your server, your host, and other system variables.</br>Our <a href="#">File Permission Help</a> can get you started.</p>
+                    <p>If you need more help, please call your hosting provider.</p>
                     <div class="rediness-check-block" ng-show="permissions.expanded">
                         <ul class="list-unstyled">
                             <li ng-repeat="name in permissions.data.required" ng-switch="hasItem(permissions.data.current, name)">
                                 <span ng-switch-when="true" class="glyphicon glyphicon-ok text-success"></span>
                                 <span ng-switch-default class="glyphicon glyphicon-remove text-danger"></span>
-                                <span><?php echo $this->translate('"{{name}}" writable directory permission.'); ?></span>
+                                <span>"{{name}}" writable directory permission.</span>
                             </li>
                         </ul>
                     </div>
diff --git a/setup/module/Magento/Setup/view/magento/setup/success.phtml b/setup/module/Magento/Setup/view/magento/setup/success.phtml
index 518a5952dd7..20add4373b4 100644
--- a/setup/module/Magento/Setup/view/magento/setup/success.phtml
+++ b/setup/module/Magento/Setup/view/magento/setup/success.phtml
@@ -22,51 +22,51 @@
  * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
  */
 ?>
-<h1 class="text-center"><span class="glyphicon glyphicon-ok-sign text-success"></span>&nbsp;<?php echo $this->translate('Success'); ?></h1>
-<p><?php echo $this->translate('Please keep this information for your records'); ?>:</p>
+<h1 class="text-center"><span class="glyphicon glyphicon-ok-sign text-success"></span>&nbsp;Success</h1>
+<p>Please keep this information for your records:</p>
 <div id="admin-info" class="col-lg-12 p-top-10">
-    <div class="col-sm-12 bold p-top-10"><?php echo $this->translate('Magento Admin Info'); ?>:</div>
+    <div class="col-sm-12 bold p-top-10">Magento Admin Info:</div>
     <div class="row p-top-10">
-        <div class="col-sm-6"><?php echo $this->translate('Username'); ?>:</div>
+        <div class="col-sm-6">Username:</div>
         <div class="col-sm-6">{{admin.username}}</div>
     </div>
     <div class="row p-top-10">
-        <div class="col-sm-6"><?php echo $this->translate('E-Mail'); ?>:</div>
+        <div class="col-sm-6">E-Mail:</div>
         <div class="col-sm-6">{{admin.email}}</div>
     </div>
     <div class="row p-top-10">
-        <div class="col-sm-6"><?php echo $this->translate('Password'); ?>:</div>
+        <div class="col-sm-6">Password:</div>
         <div class="col-sm-6">******</div>
     </div>
     <div class="row p-top-10">
-        <div class="col-sm-6"><?php echo $this->translate('Your Store Address'); ?>:</div>
+        <div class="col-sm-6">Your Store Address:</div>
         <div class="col-sm-6"><a href="{{config.address.web}}">{{config.address.web}}</a></div>
     </div>
     <div class="row p-top-10">
-        <div class="col-sm-6"><?php echo $this->translate('Magento Admin Address'); ?>:</div>
+        <div class="col-sm-6">Magento Admin Address:</div>
         <div class="col-sm-6"><a href="{{config.address.web}}{{config.address.admin}}">{{config.address.web}}{{config.address.admin}}/</a></div>
     </div>
     <div class="row p-top-10">
-        <div class="col-sm-6"><?php echo $this->translate('Encryption Key'); ?>:</div>
+        <div class="col-sm-6">Encryption Key:</div>
         <div class="col-sm-6">{{config.encrypt.key}}</div>
     </div>
 </div>
 <div id="db-info" class="col-lg-12 p-top-10">
-    <div class="col-sm-12 bold p-top-10"><?php echo $this->translate('Database Info'); ?>:</div>
+    <div class="col-sm-12 bold p-top-10">Database Info:</div>
     <div class="row p-top-10">
-        <div class="col-sm-6"><?php echo $this->translate('Database Name'); ?>:</div>
+        <div class="col-sm-6">Database Name:</div>
         <div class="col-sm-6">{{db.name}}</div>
     </div>
     <div class="row p-top-10">
-        <div class="col-sm-6"><?php echo $this->translate('Username'); ?>:</div>
+        <div class="col-sm-6">Username:</div>
         <div class="col-sm-6">{{db.user}}</div>
     </div>
     <div class="row p-top-10">
-        <div class="col-sm-6"><?php echo $this->translate('Password'); ?>:</div>
+        <div class="col-sm-6">Password:</div>
         <div class="col-sm-6">******</div>
     </div>
 </div>
 <div class="text-center">
     <div class="bold" ng-repeat="message in messages">{{message}}</div><br/>
-    <a type="button" class="btn btn-primary" href="{{config.address.web}}{{config.address.admin}}"><?php echo $this->translate('Launch Magento Admin'); ?></a>
+    <a type="button" class="btn btn-primary" href="{{config.address.web}}{{config.address.admin}}">Launch Magento Admin</a>
 </div>
\ No newline at end of file
diff --git a/setup/module/Magento/Setup/view/magento/setup/web-configuration.phtml b/setup/module/Magento/Setup/view/magento/setup/web-configuration.phtml
index c053e44c4ef..e72a4f00803 100644
--- a/setup/module/Magento/Setup/view/magento/setup/web-configuration.phtml
+++ b/setup/module/Magento/Setup/view/magento/setup/web-configuration.phtml
@@ -26,20 +26,20 @@
 $hints = [
     'address_web' => sprintf(
         '<div><p>%s</p><p>%s</p><p><a href=\'#\'>%s</a></p></div>',
-        $this->translate('Enter the base URL that brings shoppers to your store (Ex. http://example.com/).'),
-        $this->translate('We recommend not using your actual IP address when your store goes live, otherwise all your shoppers will see it.'),
-        $this->translate('Detect IP Address')
+        'Enter the base URL that brings shoppers to your store (Ex. http://example.com/).',
+        'We recommend not using your actual IP address when your store goes live, otherwise all your shoppers will see it.',
+        'Detect IP Address'
     ),
     'encrypt_key' => sprintf(
         '<p>%s</p>',
-        $this->translate('Key to encrypt sensitive data such as passwords and personally identifiable customer informaton in the Magento database. The encryption key is stored in [your Magento install dir]/app/etc/local.xml/')
+        'Key to encrypt sensitive data such as passwords and personally identifiable customer informaton in the Magento database. The encryption key is stored in [your Magento install dir]/app/etc/local.xml/'
     ),
 ];
 ?>
 
 <div class="step-controls">
-    <a href="#" class="btn btn-primary" ng-click="previousState()"><?php echo $this->translate('Previous'); ?></a>
-    <a href="#" class="btn btn-primary" ng-click="nextState()"><?php echo $this->translate('Next'); ?></a>
+    <a href="#" class="btn btn-primary" ng-click="previousState()">Previous</a>
+    <a href="#" class="btn btn-primary" ng-click="nextState()">Next</a>
 </div>
 
 <div class="page-header">
@@ -48,7 +48,7 @@ $hints = [
 
 <form novalidate name="webconfig" class="form-horizontal" role="form">
     <div class="form-group" ng-class="{'has-error': webconfig.web.$invalid && webconfig.submitted}">
-        <label class="col-md-3 control-label"><?php echo $this->translate('Your Store Address'); ?>&nbsp;<span class="required">*</span></label>
+        <label class="col-md-3 control-label">Your Store Address&nbsp;<span class="required">*</span></label>
         <div class="col-md-4">
             <input type="text"
                    name="web"
@@ -63,13 +63,13 @@ $hints = [
         </div>
         <div class="col-md-offset-3 col-md-4" ng-show="webconfig.web.$invalid && webconfig.submitted">
             <div class="error-container">
-                <span ng-show="webconfig.web.$error.required"><?php echo $this->translate('Please enter a valid base URL Admin URL path. (ex: http://www.example.com/)'); ?></span>
+                <span ng-show="webconfig.web.$error.required">Please enter a valid base URL Admin URL path. (ex: http://www.example.com/)</span>
             </div>
         </div>
     </div>
 
     <div class="form-group" ng-class="{'has-error': webconfig.admin.$invalid && webconfig.submitted}">
-        <label class="col-md-3 control-label"><?php echo $this->translate('Magento Admin Address'); ?>&nbsp;<span class="required">*</span></label>
+        <label class="col-md-3 control-label">Magento Admin Address&nbsp;<span class="required">*</span></label>
         <div class="col-md-4 input-group" style="padding-left: 15px; padding-right: 15px;">
             <span class="input-group-addon">{{config.address.web}}</span>
             <input type="text"
@@ -80,55 +80,55 @@ $hints = [
         </div>
         <div class="col-md-offset-3 col-md-4" ng-show="webconfig.admin.$invalid && webconfig.submitted">
             <div class="error-container">
-                <span ng-show="webconfig.admin.$error.required"><?php echo $this->translate('Please enter a valid admin URL path.'); ?></span>
+                <span ng-show="webconfig.admin.$error.required">Please enter a valid admin URL path.</span>
             </div>
         </div>
     </div>
 
     <div class="collapsed-options">
-        <a href="#" class="collapsed-options" ng-click="updateOnExpand(config.advanced)"><?php echo $this->translate('Advanced Options'); ?></a>
+        <a href="#" class="collapsed-options" ng-click="updateOnExpand(config.advanced)">Advanced Options</a>
         <span class="caret"></span>
     </div>
 
     <div ng-show="config.advanced.expanded">
         <div class="form-group">
-            <label class="col-md-3 control-label"><?php echo $this->translate('HTTPS Options'); ?></label>
+            <label class="col-md-3 control-label">HTTPS Options</label>
             <div class="col-md-5">
                 <div class="checkbox">
                     <label>
-                        <input type="checkbox" ng-model="config.https.front">&nbsp;<?php echo $this->translate('Use HTTPS for Magento Storefront'); ?>
+                        <input type="checkbox" ng-model="config.https.front">&nbsp;Use HTTPS for Magento Storefront
                     </label>
                 </div>
                 <div class="checkbox">
                     <label>
-                        <input type="checkbox" ng-model="config.https.admin">&nbsp;<?php echo $this->translate('Use HTTPS for Magento Admin'); ?>
+                        <input type="checkbox" ng-model="config.https.admin">&nbsp;Use HTTPS for Magento Admin
                     </label>
                 </div>
             </div>
         </div>
 
         <div class="form-group">
-            <label class="col-md-3 control-label"><?php echo $this->translate('Apache Rewrites'); ?></label>
+            <label class="col-md-3 control-label">Apache Rewrites</label>
             <div class="col-md-5">
                 <div class="checkbox">
                     <label>
-                        <input type="checkbox" ng-model="config.rewrites.allowed">&nbsp;<?php echo $this->translate('Use Web Server Apache Rewrites'); ?>
+                        <input type="checkbox" ng-model="config.rewrites.allowed">&nbsp;Use Web Server Apache Rewrites
                     </label>
                 </div>
             </div>
         </div>
 
         <div class="form-group">
-            <label class="col-md-3 control-label"><?php echo $this->translate('Encryption Key'); ?>&nbsp;<span class="required">*</span></label>
+            <label class="col-md-3 control-label">Encryption Key&nbsp;<span class="required">*</span></label>
             <div class="col-md-5">
                 <div class="radio">
                     <label>
-                        <input type="radio" ng-model="config.encrypt.type" value="magento">&nbsp;<?php echo $this->translate('I want to use a Magento generated key'); ?>
+                        <input type="radio" ng-model="config.encrypt.type" value="magento">&nbsp;I want to use a Magento generated key
                     </label>
                 </div>
                 <div class="radio">
                     <label>
-                        <input type="radio" ng-model="config.encrypt.type" value="user">&nbsp;<?php echo $this->translate('I want to use my own encryption key'); ?>
+                        <input type="radio" ng-model="config.encrypt.type" value="user">&nbsp;I want to use my own encryption key
                     </label>
                 </div>
             </div>
@@ -151,8 +151,8 @@ $hints = [
             </div>
             <div class="col-md-offset-3 col-md-4" ng-show="webconfig.key.$invalid && webconfig.submitted">
                 <div class="error-container">
-                    <span ng-show="webconfig.key.$error.required"><?php echo $this->translate('You must enter an encryption key.'); ?></span>
-                    <span ng-show="webconfig.key.$error.minlength"><?php echo $this->translate('Your encryption key must be longer and stronger.'); ?></span>
+                    <span ng-show="webconfig.key.$error.required">You must enter an encryption key.</span>
+                    <span ng-show="webconfig.key.$error.minlength">Your encryption key must be longer and stronger.</span>
                 </div>
             </div>
         </div>
@@ -160,6 +160,6 @@ $hints = [
 </form>
 
 <div class="step-controls">
-    <a href="#" class="btn btn-primary" ng-click="previousState()"><?php echo $this->translate('Previous'); ?></a>
-    <a href="#" class="btn btn-primary" ng-click="nextState()"><?php echo $this->translate('Next'); ?></a>
+    <a href="#" class="btn btn-primary" ng-click="previousState()">Previous</a>
+    <a href="#" class="btn btn-primary" ng-click="nextState()">Next</a>
 </div>
diff --git a/success.png b/success.png
new file mode 100644
index 0000000000000000000000000000000000000000..c2853cfc0cbb8856e5baa894332e6f4063428c80
GIT binary patch
literal 62084
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

literal 0
HcmV?d00001

diff --git a/success_admin.png b/success_admin.png
new file mode 100644
index 0000000000000000000000000000000000000000..0901763600a4271438c4b604df881ba079dc934f
GIT binary patch
literal 98522
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
Hj6VGbkSzN_

literal 0
HcmV?d00001

-- 
GitLab