diff --git a/app/code/Magento/Backend/App/ConfigInterface.php b/app/code/Magento/Backend/App/ConfigInterface.php
index 0d7de58ecc308299576e3a6820a0edbe96b33b51..9203f07ad552dd70ade305ba4af77b2251ceed83 100644
--- a/app/code/Magento/Backend/App/ConfigInterface.php
+++ b/app/code/Magento/Backend/App/ConfigInterface.php
@@ -17,6 +17,7 @@ interface ConfigInterface
      *
      * @param string $path
      * @return mixed
+     * @api
      */
     public function getValue($path);
 
@@ -26,6 +27,7 @@ interface ConfigInterface
      * @param string $path
      * @param mixed $value
      * @return void
+     * @api
      */
     public function setValue($path, $value);
 
@@ -34,6 +36,7 @@ interface ConfigInterface
      *
      * @param string $path
      * @return bool
+     * @api
      */
     public function isSetFlag($path);
 }
diff --git a/app/code/Magento/Backend/Block/Widget/Button/ContextInterface.php b/app/code/Magento/Backend/Block/Widget/Button/ContextInterface.php
index 3828446f1a6abc7f4bf4cd1b319e32029bcf2439..0d75331f012cd6e5d1a568e3df2515e8807b631b 100644
--- a/app/code/Magento/Backend/Block/Widget/Button/ContextInterface.php
+++ b/app/code/Magento/Backend/Block/Widget/Button/ContextInterface.php
@@ -13,6 +13,7 @@ interface ContextInterface
      *
      * @param \Magento\Backend\Block\Widget\Button\Item $item
      * @return bool
+     * @api
      */
     public function canRender(\Magento\Backend\Block\Widget\Button\Item $item);
 }
diff --git a/app/code/Magento/Backend/Block/Widget/Button/ToolbarInterface.php b/app/code/Magento/Backend/Block/Widget/Button/ToolbarInterface.php
index 4228d487bdce1e05c546a38948a80fb3965a6773..72410c676d14d5f9c74430dd39251ed10cd7e14b 100644
--- a/app/code/Magento/Backend/Block/Widget/Button/ToolbarInterface.php
+++ b/app/code/Magento/Backend/Block/Widget/Button/ToolbarInterface.php
@@ -14,6 +14,7 @@ interface ToolbarInterface
      * @param \Magento\Framework\View\Element\AbstractBlock $context
      * @param \Magento\Backend\Block\Widget\Button\ButtonList $buttonList
      * @return void
+     * @api
      */
     public function pushButtons(
         \Magento\Framework\View\Element\AbstractBlock $context,
diff --git a/app/code/Magento/Backend/Block/Widget/Grid/Column/Filter/FilterInterface.php b/app/code/Magento/Backend/Block/Widget/Grid/Column/Filter/FilterInterface.php
index 403e028997c56aa99e2a1852d7aeceb5a58d44dc..2f2720cae0ca723fb6cfaf66c4556eaf8b84fcda 100644
--- a/app/code/Magento/Backend/Block/Widget/Grid/Column/Filter/FilterInterface.php
+++ b/app/code/Magento/Backend/Block/Widget/Grid/Column/Filter/FilterInterface.php
@@ -16,17 +16,20 @@ interface FilterInterface
 {
     /**
      * @return Column
+     * @api
      */
     public function getColumn();
 
     /**
      * @param Column $column
      * @return AbstractFilter
+     * @api
      */
     public function setColumn($column);
 
     /**
      * @return string
+     * @api
      */
     public function getHtml();
 }
diff --git a/app/code/Magento/Backend/Block/Widget/Grid/Column/Renderer/RendererInterface.php b/app/code/Magento/Backend/Block/Widget/Grid/Column/Renderer/RendererInterface.php
index 9b7e3d053b79e75ae28ae80cace94e3733352be1..5d8e5723954c582c921c76adae5e2a9fb1eabacf 100644
--- a/app/code/Magento/Backend/Block/Widget/Grid/Column/Renderer/RendererInterface.php
+++ b/app/code/Magento/Backend/Block/Widget/Grid/Column/Renderer/RendererInterface.php
@@ -20,6 +20,7 @@ interface RendererInterface
      * @param Column $column
      * @return void
      * @abstract
+     * @api
      */
     public function setColumn($column);
 
@@ -28,6 +29,7 @@ interface RendererInterface
      *
      * @abstract
      * @return void
+     * @api
      */
     public function getColumn();
 
@@ -36,6 +38,7 @@ interface RendererInterface
      *
      * @param \Magento\Framework\Object $row
      * @return string
+     * @api
      */
     public function render(\Magento\Framework\Object $row);
 }
diff --git a/app/code/Magento/Backend/Block/Widget/Grid/ExportInterface.php b/app/code/Magento/Backend/Block/Widget/Grid/ExportInterface.php
index 06a26faf108aa0fa28fae009facc7e320ee6f0a1..144ea5b43e7dc2857ef91d542d1324b97e7df61e 100644
--- a/app/code/Magento/Backend/Block/Widget/Grid/ExportInterface.php
+++ b/app/code/Magento/Backend/Block/Widget/Grid/ExportInterface.php
@@ -11,6 +11,7 @@ interface ExportInterface
      * Retrieve grid export types
      *
      * @return array|bool
+     * @api
      */
     public function getExportTypes();
 
@@ -18,6 +19,7 @@ interface ExportInterface
      * Retrieve grid id
      *
      * @return string
+     * @api
      */
     public function getId();
 
@@ -43,6 +45,7 @@ interface ExportInterface
      * Return array with keys type and value
      *
      * @return array
+     * @api
      */
     public function getCsvFile();
 
@@ -50,6 +53,7 @@ interface ExportInterface
      * Retrieve Grid data as CSV
      *
      * @return string
+     * @api
      */
     public function getCsv();
 
@@ -57,6 +61,7 @@ interface ExportInterface
      * Retrieve data in xml
      *
      * @return string
+     * @api
      */
     public function getXml();
 
@@ -67,6 +72,7 @@ interface ExportInterface
      *
      * @param string $sheetName
      * @return array
+     * @api
      */
     public function getExcelFile($sheetName = '');
 
@@ -74,6 +80,7 @@ interface ExportInterface
      * Retrieve grid data as MS Excel 2003 XML Document
      *
      * @return string
+     * @api
      */
     public function getExcel();
 }
diff --git a/app/code/Magento/Backend/Block/Widget/Grid/Massaction/Item/Additional/AdditionalInterface.php b/app/code/Magento/Backend/Block/Widget/Grid/Massaction/Item/Additional/AdditionalInterface.php
index a7430caa9a70c2747966d9c88b20f1e373870c46..1d84c61222f35524278e4a0454acf234160cecc2 100644
--- a/app/code/Magento/Backend/Block/Widget/Grid/Massaction/Item/Additional/AdditionalInterface.php
+++ b/app/code/Magento/Backend/Block/Widget/Grid/Massaction/Item/Additional/AdditionalInterface.php
@@ -15,6 +15,7 @@ interface AdditionalInterface
     /**
      * @param array $configuration
      * @return $this
+     * @api
      */
     public function createFromConfiguration(array $configuration);
 }
diff --git a/app/code/Magento/Backend/Block/Widget/Tab/TabInterface.php b/app/code/Magento/Backend/Block/Widget/Tab/TabInterface.php
index b0f8e90d40664433aff18ae0800433f0cc70b8a6..8e32c0648ec581297602f38d8c86a8de5e969d7a 100644
--- a/app/code/Magento/Backend/Block/Widget/Tab/TabInterface.php
+++ b/app/code/Magento/Backend/Block/Widget/Tab/TabInterface.php
@@ -17,6 +17,7 @@ interface TabInterface
      * Return Tab label
      *
      * @return string
+     * @api
      */
     public function getTabLabel();
 
@@ -24,6 +25,7 @@ interface TabInterface
      * Return Tab title
      *
      * @return string
+     * @api
      */
     public function getTabTitle();
 
@@ -31,6 +33,7 @@ interface TabInterface
      * Can show tab in tabs
      *
      * @return boolean
+     * @api
      */
     public function canShowTab();
 
@@ -38,6 +41,7 @@ interface TabInterface
      * Tab is hidden
      *
      * @return boolean
+     * @api
      */
     public function isHidden();
 }
diff --git a/app/code/Magento/Backend/Helper/Dashboard/Data.php b/app/code/Magento/Backend/Helper/Dashboard/Data.php
index efaf955675d592b7444f802db49e19047799387c..a7fbf36c8886386a26c1a91490acecc0295df265 100644
--- a/app/code/Magento/Backend/Helper/Dashboard/Data.php
+++ b/app/code/Magento/Backend/Helper/Dashboard/Data.php
@@ -14,7 +14,7 @@ use Magento\Framework\Config\ConfigOptionsListConstants;
 class Data extends \Magento\Framework\App\Helper\AbstractHelper
 {
     /**
-     * @var \MagentoFrameworkDataCollectionAbstractDb
+     * @var \Magento\Framework\Data\Collection\AbstractDb
      */
     protected $_stores;
 
@@ -48,7 +48,7 @@ class Data extends \Magento\Framework\App\Helper\AbstractHelper
     /**
      * Retrieve stores configured in system.
      *
-     * @return \MagentoFrameworkDataCollectionAbstractDb
+     * @return \Magento\Framework\Data\Collection\AbstractDb
      */
     public function getStores()
     {
diff --git a/app/code/Magento/Backend/Model/Auth/Credential/StorageInterface.php b/app/code/Magento/Backend/Model/Auth/Credential/StorageInterface.php
index 2125c2387fca8405c1684f252b3a97702d603e6e..5b5958b01aec524d2b5ab9b6f2e36f1679d8c993 100644
--- a/app/code/Magento/Backend/Model/Auth/Credential/StorageInterface.php
+++ b/app/code/Magento/Backend/Model/Auth/Credential/StorageInterface.php
@@ -9,6 +9,7 @@ namespace Magento\Backend\Model\Auth\Credential;
  * Backend Auth Credential Storage interface
  *
  * @author      Magento Core Team <core@magentocommerce.com>
+ * @api
  */
 interface StorageInterface
 {
diff --git a/app/code/Magento/Backend/Model/Auth/StorageInterface.php b/app/code/Magento/Backend/Model/Auth/StorageInterface.php
index 156b1fac33a497251588ccc000822e775e6e6475..c031b74e6d66c99409a005b31cf30c74886996ec 100644
--- a/app/code/Magento/Backend/Model/Auth/StorageInterface.php
+++ b/app/code/Magento/Backend/Model/Auth/StorageInterface.php
@@ -15,6 +15,7 @@ interface StorageInterface
      *
      * @return $this
      * @abstract
+     * @api
      */
     public function processLogin();
 
@@ -23,6 +24,7 @@ interface StorageInterface
      *
      * @return $this
      * @abstract
+     * @api
      */
     public function processLogout();
 
@@ -31,6 +33,7 @@ interface StorageInterface
      *
      * @return bool
      * @abstract
+     * @api
      */
     public function isLoggedIn();
 
@@ -39,6 +42,7 @@ interface StorageInterface
      *
      * @return void
      * @abstract
+     * @api
      */
     public function prolong();
 }
diff --git a/app/code/Magento/Backend/Model/Widget/Grid/Row/GeneratorInterface.php b/app/code/Magento/Backend/Model/Widget/Grid/Row/GeneratorInterface.php
index 025588f213d0fedbaaf942f19a8db380bfeb2254..7f1834f54d3c77013b584f90b1cad3c16c3491ee 100644
--- a/app/code/Magento/Backend/Model/Widget/Grid/Row/GeneratorInterface.php
+++ b/app/code/Magento/Backend/Model/Widget/Grid/Row/GeneratorInterface.php
@@ -12,6 +12,7 @@ interface GeneratorInterface
     /**
      * @param \Magento\Framework\Object $item
      * @return string
+     * @api
      */
     public function getUrl($item);
 }
diff --git a/app/code/Magento/Backend/Model/Widget/Grid/TotalsInterface.php b/app/code/Magento/Backend/Model/Widget/Grid/TotalsInterface.php
index e0c07eb6c7e5eb293ccfe710de6e0ef27e0b0cb4..b7ec0d6a034e9f466c4e6e693d6fd1b136ce07de 100644
--- a/app/code/Magento/Backend/Model/Widget/Grid/TotalsInterface.php
+++ b/app/code/Magento/Backend/Model/Widget/Grid/TotalsInterface.php
@@ -13,6 +13,7 @@ interface TotalsInterface
      * @abstract
      * @param \Magento\Framework\Data\Collection $collection
      * @return \Magento\Framework\Object
+     * @api
      */
     public function countTotals($collection);
 }
diff --git a/app/code/Magento/Bundle/Model/Product/OptionList.php b/app/code/Magento/Bundle/Model/Product/OptionList.php
index c90d6347e6015a036f1e20493b94197dad3e7803..7e26305be731befff28e27aceb55ee2ae06c06a3 100644
--- a/app/code/Magento/Bundle/Model/Product/OptionList.php
+++ b/app/code/Magento/Bundle/Model/Product/OptionList.php
@@ -28,22 +28,30 @@ class OptionList
      */
     protected $dataObjectHelper;
 
+    /**
+     * @var \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface
+     */
+    protected $extensionAttributesJoinProcessor;
+
     /**
      * @param Type $type
      * @param \Magento\Bundle\Api\Data\OptionInterfaceFactory $optionFactory
      * @param LinksList $linkList
      * @param \Magento\Framework\Api\DataObjectHelper $dataObjectHelper
+     * @param \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface $extensionAttributesJoinProcessor
      */
     public function __construct(
         \Magento\Bundle\Model\Product\Type $type,
         \Magento\Bundle\Api\Data\OptionInterfaceFactory $optionFactory,
         \Magento\Bundle\Model\Product\LinksList $linkList,
-        \Magento\Framework\Api\DataObjectHelper $dataObjectHelper
+        \Magento\Framework\Api\DataObjectHelper $dataObjectHelper,
+        \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface $extensionAttributesJoinProcessor
     ) {
         $this->type = $type;
         $this->optionFactory = $optionFactory;
         $this->linkList = $linkList;
         $this->dataObjectHelper = $dataObjectHelper;
+        $this->extensionAttributesJoinProcessor = $extensionAttributesJoinProcessor;
     }
 
     /**
@@ -53,6 +61,7 @@ class OptionList
     public function getItems(\Magento\Catalog\Api\Data\ProductInterface $product)
     {
         $optionCollection = $this->type->getOptionsCollection($product);
+        $this->extensionAttributesJoinProcessor->process($optionCollection);
         $optionList = [];
         /** @var \Magento\Bundle\Model\Option $option */
         foreach ($optionCollection as $option) {
diff --git a/app/code/Magento/Bundle/Test/Unit/Model/Product/OptionListTest.php b/app/code/Magento/Bundle/Test/Unit/Model/Product/OptionListTest.php
index 4827a7efd2fdad4bd1fd48897d1fa984e1dcf741..855c15bc06fd09d4d44513b445c0f4616cf94b02 100644
--- a/app/code/Magento/Bundle/Test/Unit/Model/Product/OptionListTest.php
+++ b/app/code/Magento/Bundle/Test/Unit/Model/Product/OptionListTest.php
@@ -33,6 +33,16 @@ class OptionListTest extends \PHPUnit_Framework_TestCase
      */
     protected $dataObjectHelperMock;
 
+    /**
+     * @var \PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $extensionAttributesFactoryMock;
+
+    /**
+     * @var \Magento\Framework\TestFramework\Unit\Helper\ObjectManager
+     */
+    protected $objectManager;
+
     protected function setUp()
     {
         $this->typeMock = $this->getMock('\Magento\Bundle\Model\Product\Type', [], [], '', false);
@@ -43,15 +53,26 @@ class OptionListTest extends \PHPUnit_Framework_TestCase
             '',
             false
         );
-        $this->dataObjectHelperMock = $this->getMockBuilder('\Magento\Framework\Api\DataObjectHelper')
-            ->disableOriginalConstructor()
-            ->getMock();
+        $this->dataObjectHelperMock = $this->getMock('\Magento\Framework\Api\DataObjectHelper', [], [], '', false);
         $this->linkListMock = $this->getMock('\Magento\Bundle\Model\Product\LinksList', [], [], '', false);
-        $this->model = new \Magento\Bundle\Model\Product\OptionList(
-            $this->typeMock,
-            $this->optionFactoryMock,
-            $this->linkListMock,
-            $this->dataObjectHelperMock
+        $this->extensionAttributesFactoryMock = $this->getMock(
+            '\Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface',
+            [],
+            [],
+            '',
+            false
+        );
+
+        $this->objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
+        $this->model = $this->objectManager->getObject(
+            'Magento\Bundle\Model\Product\OptionList',
+            [
+                'type' => $this->typeMock,
+                'optionFactory' => $this->optionFactoryMock,
+                'linkList' => $this->linkListMock,
+                'dataObjectHelper' => $this->dataObjectHelperMock,
+                'extensionAttributesJoinProcessor' => $this->extensionAttributesFactoryMock
+            ]
         );
     }
 
@@ -71,8 +92,7 @@ class OptionListTest extends \PHPUnit_Framework_TestCase
             '',
             false
         );
-        $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
-        $optionsCollMock = $objectManager->getCollectionMock(
+        $optionsCollMock = $this->objectManager->getCollectionMock(
             'Magento\Bundle\Model\Resource\Option\Collection',
             [$optionMock]
         );
diff --git a/app/code/Magento/Catalog/Api/Data/ProductCustomOptionInterface.php b/app/code/Magento/Catalog/Api/Data/ProductCustomOptionInterface.php
index ee11f877129b632df5d709832841a37b075c89a7..f57491b950d3388c86c4e3774ff05cd7a22c9e3a 100644
--- a/app/code/Magento/Catalog/Api/Data/ProductCustomOptionInterface.php
+++ b/app/code/Magento/Catalog/Api/Data/ProductCustomOptionInterface.php
@@ -9,7 +9,7 @@ namespace Magento\Catalog\Api\Data;
 /**
  * @api
  */
-interface ProductCustomOptionInterface
+interface ProductCustomOptionInterface extends \Magento\Framework\Api\ExtensibleDataInterface
 {
     /**
      * Get product SKU
@@ -201,4 +201,21 @@ interface ProductCustomOptionInterface
      * @return $this
      */
     public function setValues(array $values = null);
+
+    /**
+     * Retrieve existing extension attributes object or create a new one.
+     *
+     * @return \Magento\Catalog\Api\Data\ProductCustomOptionExtensionInterface|null
+     */
+    public function getExtensionAttributes();
+
+    /**
+     * Set an extension attributes object.
+     *
+     * @param \Magento\Catalog\Api\Data\ProductCustomOptionExtensionInterface $extensionAttributes
+     * @return $this
+     */
+    public function setExtensionAttributes(
+        \Magento\Catalog\Api\Data\ProductCustomOptionExtensionInterface $extensionAttributes
+    );
 }
diff --git a/app/code/Magento/Catalog/Model/Product.php b/app/code/Magento/Catalog/Model/Product.php
index 32ad8cfb390d3bc95efb7b381b03fafaee0c2613..11ae8402ce6fb2e925b27218d953f3399ad756ce 100644
--- a/app/code/Magento/Catalog/Model/Product.php
+++ b/app/code/Magento/Catalog/Model/Product.php
@@ -317,6 +317,11 @@ class Product extends \Magento\Catalog\Model\AbstractModel implements
         'group_price',
     ];
 
+    /**
+     * @var \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface
+     */
+    protected $joinProcessor;
+
     /**
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
@@ -351,6 +356,7 @@ class Product extends \Magento\Catalog\Model\AbstractModel implements
      * @param \Magento\Catalog\Api\Data\ProductLinkExtensionFactory $productLinkExtensionFactory
      * @param \Magento\Catalog\Api\Data\ProductAttributeMediaGalleryEntryInterfaceFactory $mediaGalleryEntryFactory
      * @param \Magento\Framework\Api\DataObjectHelper $dataObjectHelper
+     * @param \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface $joinProcessor
      * @param array $data
      *
      * @SuppressWarnings(PHPMD.ExcessiveParameterList)
@@ -389,6 +395,7 @@ class Product extends \Magento\Catalog\Model\AbstractModel implements
         \Magento\Catalog\Api\Data\ProductLinkExtensionFactory $productLinkExtensionFactory,
         \Magento\Catalog\Api\Data\ProductAttributeMediaGalleryEntryInterfaceFactory $mediaGalleryEntryFactory,
         \Magento\Framework\Api\DataObjectHelper $dataObjectHelper,
+        \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface $joinProcessor,
         array $data = []
     ) {
         $this->metadataService = $metadataService;
@@ -417,6 +424,7 @@ class Product extends \Magento\Catalog\Model\AbstractModel implements
         $this->productLinkExtensionFactory = $productLinkExtensionFactory;
         $this->mediaGalleryEntryFactory = $mediaGalleryEntryFactory;
         $this->dataObjectHelper = $dataObjectHelper;
+        $this->joinProcessor = $joinProcessor;
         parent::__construct(
             $context,
             $registry,
@@ -1961,7 +1969,9 @@ class Product extends \Magento\Catalog\Model\AbstractModel implements
     public function getOptions()
     {
         if (empty($this->_options) && $this->getHasOptions() && !$this->optionsInitialized) {
-            foreach ($this->getProductOptionsCollection() as $option) {
+            $collection = $this->getProductOptionsCollection();
+            $this->joinProcessor->process($collection);
+            foreach ($collection as $option) {
                 $option->setProduct($this);
                 $this->addOption($option);
             }
diff --git a/app/code/Magento/Catalog/Model/Product/Option.php b/app/code/Magento/Catalog/Model/Product/Option.php
index 8c5d3d25675d9f0b9b7f05df691d2b61334ade19..05ca2bbdf9c984250bdcfbfccd28754d7de88981 100644
--- a/app/code/Magento/Catalog/Model/Product/Option.php
+++ b/app/code/Magento/Catalog/Model/Product/Option.php
@@ -12,7 +12,6 @@ use Magento\Catalog\Api\Data\ProductCustomOptionValuesInterface;
 use Magento\Catalog\Model\Product;
 use Magento\Catalog\Model\Resource\Product\Option\Value\Collection;
 use Magento\Catalog\Pricing\Price\BasePrice;
-use Magento\Framework\Model\AbstractModel;
 use Magento\Framework\Exception\LocalizedException;
 
 /**
@@ -26,7 +25,8 @@ use Magento\Framework\Exception\LocalizedException;
  * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
  * @SuppressWarnings(PHPMD.ExcessivePublicCount)
  */
-class Option extends AbstractModel implements \Magento\Catalog\Api\Data\ProductCustomOptionInterface
+class Option extends \Magento\Framework\Model\AbstractExtensibleModel
+    implements \Magento\Catalog\Api\Data\ProductCustomOptionInterface
 {
     const OPTION_GROUP_TEXT = 'text';
 
@@ -116,6 +116,8 @@ class Option extends AbstractModel implements \Magento\Catalog\Api\Data\ProductC
     /**
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
+     * @param \Magento\Framework\Api\ExtensionAttributesFactory $extensionFactory
+     * @param \Magento\Framework\Api\AttributeValueFactory $customAttributeFactory
      * @param Option\Value $productOptionValue
      * @param Option\Type\Factory $optionFactory
      * @param \Magento\Framework\Stdlib\String $string
@@ -128,6 +130,8 @@ class Option extends AbstractModel implements \Magento\Catalog\Api\Data\ProductC
     public function __construct(
         \Magento\Framework\Model\Context $context,
         \Magento\Framework\Registry $registry,
+        \Magento\Framework\Api\ExtensionAttributesFactory $extensionFactory,
+        \Magento\Framework\Api\AttributeValueFactory $customAttributeFactory,
         Option\Value $productOptionValue,
         \Magento\Catalog\Model\Product\Option\Type\Factory $optionFactory,
         \Magento\Framework\Stdlib\String $string,
@@ -143,6 +147,8 @@ class Option extends AbstractModel implements \Magento\Catalog\Api\Data\ProductC
         parent::__construct(
             $context,
             $registry,
+            $extensionFactory,
+            $customAttributeFactory,
             $resource,
             $resourceCollection,
             $data
@@ -406,7 +412,7 @@ class Option extends AbstractModel implements \Magento\Catalog\Api\Data\ProductC
     }
 
     /**
-     * @return AbstractModel
+     * @return \Magento\Framework\Model\AbstractModel
      * @throws \Magento\Framework\Exception\LocalizedException
      */
     public function afterSave()
@@ -845,5 +851,27 @@ class Option extends AbstractModel implements \Magento\Catalog\Api\Data\ProductC
         $this->_values = $values;
         return $this;
     }
+
+    /**
+     * {@inheritdoc}
+     *
+     * @return \Magento\Catalog\Api\Data\ProductCustomOptionExtensionInterface|null
+     */
+    public function getExtensionAttributes()
+    {
+        return $this->_getExtensionAttributes();
+    }
+
+    /**
+     * {@inheritdoc}
+     *
+     * @param \Magento\Catalog\Api\Data\ProductCustomOptionExtensionInterface $extensionAttributes
+     * @return $this
+     */
+    public function setExtensionAttributes(
+        \Magento\Catalog\Api\Data\ProductCustomOptionExtensionInterface $extensionAttributes
+    ) {
+        return $this->_setExtensionAttributes($extensionAttributes);
+    }
     //@codeCoverageIgnoreEnd
 }
diff --git a/app/code/Magento/Catalog/Model/ProductRepository.php b/app/code/Magento/Catalog/Model/ProductRepository.php
index 79f26720fff4dd1adf6a8d4b5304e36804920174..33ef608575c92d502a064b88b6605b9cd235ed87 100644
--- a/app/code/Magento/Catalog/Model/ProductRepository.php
+++ b/app/code/Magento/Catalog/Model/ProductRepository.php
@@ -11,7 +11,6 @@ use Magento\Catalog\Model\Product\Gallery\MimeTypeExtensionMap;
 use Magento\Catalog\Model\Resource\Product\Collection;
 use Magento\Framework\Api\Data\ImageContentInterface;
 use Magento\Framework\Api\Data\ImageContentInterfaceFactory;
-use Magento\Framework\Api\ExtensionAttributesFactory;
 use Magento\Framework\Api\ImageContentValidatorInterface;
 use Magento\Framework\Api\ImageProcessorInterface;
 use Magento\Framework\Api\SearchCriteriaInterface;
@@ -137,9 +136,9 @@ class ProductRepository implements \Magento\Catalog\Api\ProductRepositoryInterfa
     protected $imageProcessor;
 
     /**
-     * @var ExtensionAttributesFactory
+     * @var \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface
      */
-    protected $extensionAttributesFactory;
+    protected $extensionAttributesJoinProcessor;
 
     /**
      * @param ProductFactory $productFactory
@@ -149,20 +148,20 @@ class ProductRepository implements \Magento\Catalog\Api\ProductRepositoryInterfa
      * @param \Magento\Framework\Api\SearchCriteriaBuilder $searchCriteriaBuilder
      * @param \Magento\Catalog\Api\ProductAttributeRepositoryInterface $attributeRepository
      * @param Resource\Product $resourceModel
-     * @param \Magento\Catalog\Model\Product\Initialization\Helper\ProductLinks $linkInitializer
-     * @param \Magento\Catalog\Model\Product\LinkTypeProvider $linkTypeProvider
-     * @param \Magento\Store\Model\StoreManagerInterface $storeManager ,
+     * @param Product\Initialization\Helper\ProductLinks $linkInitializer
+     * @param Product\LinkTypeProvider $linkTypeProvider
+     * @param \Magento\Store\Model\StoreManagerInterface $storeManager
      * @param \Magento\Framework\Api\FilterBuilder $filterBuilder
      * @param \Magento\Catalog\Api\ProductAttributeRepositoryInterface $metadataServiceInterface
      * @param \Magento\Framework\Api\ExtensibleDataObjectConverter $extensibleDataObjectConverter
-     * @param \Magento\Eav\Model\Config $eavConfig
-     * @param \Magento\Catalog\Model\Product\Option\Converter $optionConverter
+     * @param Product\Option\Converter $optionConverter
      * @param \Magento\Framework\Filesystem $fileSystem
      * @param ImageContentValidatorInterface $contentValidator
      * @param ImageContentInterfaceFactory $contentFactory
      * @param MimeTypeExtensionMap $mimeTypeExtensionMap
+     * @param \Magento\Eav\Model\Config $eavConfig
      * @param ImageProcessorInterface $imageProcessor
-     * @param ExtensionAttributesFactory $extensionAttributesFactory
+     * @param \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface $extensionAttributesJoinProcessor
      * @SuppressWarnings(PHPMD.ExcessiveParameterList)
      */
     public function __construct(
@@ -186,7 +185,7 @@ class ProductRepository implements \Magento\Catalog\Api\ProductRepositoryInterfa
         MimeTypeExtensionMap $mimeTypeExtensionMap,
         \Magento\Eav\Model\Config $eavConfig,
         ImageProcessorInterface $imageProcessor,
-        ExtensionAttributesFactory $extensionAttributesFactory
+        \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface $extensionAttributesJoinProcessor
     ) {
         $this->productFactory = $productFactory;
         $this->collectionFactory = $collectionFactory;
@@ -208,7 +207,7 @@ class ProductRepository implements \Magento\Catalog\Api\ProductRepositoryInterfa
         $this->mimeTypeExtensionMap = $mimeTypeExtensionMap;
         $this->eavConfig = $eavConfig;
         $this->imageProcessor = $imageProcessor;
-        $this->extensionAttributesFactory = $extensionAttributesFactory;
+        $this->extensionAttributesJoinProcessor = $extensionAttributesJoinProcessor;
     }
 
     /**
@@ -649,6 +648,7 @@ class ProductRepository implements \Magento\Catalog\Api\ProductRepositoryInterfa
     {
         /** @var \Magento\Catalog\Model\Resource\Product\Collection $collection */
         $collection = $this->collectionFactory->create();
+        $this->extensionAttributesJoinProcessor->process($collection);
         $defaultAttributeSetId = $this->eavConfig
             ->getEntityType(\Magento\Catalog\Api\Data\ProductAttributeInterface::ENTITY_TYPE_CODE)
             ->getDefaultAttributeSetId();
@@ -681,8 +681,6 @@ class ProductRepository implements \Magento\Catalog\Api\ProductRepositoryInterfa
         }
         $collection->setCurPage($searchCriteria->getCurrentPage());
         $collection->setPageSize($searchCriteria->getPageSize());
-        $productDataClass = 'Magento\Catalog\Model\Product';
-        $this->extensionAttributesFactory->process($collection, $productDataClass);
         $collection->load();
 
         $searchResult = $this->searchResultsFactory->create();
diff --git a/app/code/Magento/Catalog/Test/Unit/Model/ProductTest.php b/app/code/Magento/Catalog/Test/Unit/Model/ProductTest.php
index 545c8d990ed9580c42850b9aa45fdd9ee16f8951..da842214bbd80eaab75333079478b7f7b7e01352 100755
--- a/app/code/Magento/Catalog/Test/Unit/Model/ProductTest.php
+++ b/app/code/Magento/Catalog/Test/Unit/Model/ProductTest.php
@@ -1277,7 +1277,10 @@ class ProductTest extends \PHPUnit_Framework_TestCase
 
     public function testGetOptions()
     {
-        $optionInstanceMock = $this->getMockBuilder('\Magento\Catalog\Model\Product\Option')
+        $optionInstanceMock = $this->getMockBuilder('Magento\Catalog\Model\Product\Option')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $joinProcessorMock = $this->getMockBuilder('Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface')
             ->disableOriginalConstructor()
             ->getMock();
 
@@ -1286,6 +1289,7 @@ class ProductTest extends \PHPUnit_Framework_TestCase
             'Magento\Catalog\Model\Product',
             [
                 'catalogProductOption' => $optionInstanceMock,
+                'joinProcessor' => $joinProcessorMock
             ]
         );
         $productModel->setHasOptions(true);
@@ -1315,12 +1319,19 @@ class ProductTest extends \PHPUnit_Framework_TestCase
             ->method('setProduct')
             ->with($productModel)
             ->willReturn($option1Id);
-        $options = [$optionMock1, $optionMock2];
+        $optionColl = $this->objectManagerHelper->getCollectionMock(
+            'Magento\Catalog\Model\Resource\Product\Option\Collection',
+            [$optionMock1, $optionMock2]
+        );
 
         $optionInstanceMock->expects($this->once())
             ->method('getProductOptionCollection')
             ->with($productModel)
-            ->willReturn($options);
+            ->willReturn($optionColl);
+
+        $joinProcessorMock->expects($this->once())
+            ->method('process')
+            ->with($this->isInstanceOf('Magento\Catalog\Model\Resource\Product\Option\Collection'));
 
         $expectedOptions = [
             $option1Id => $optionMock1,
diff --git a/app/code/Magento/CheckoutAgreements/Api/Data/AgreementInterface.php b/app/code/Magento/CheckoutAgreements/Api/Data/AgreementInterface.php
index 90a67c71146c56b849a550bcb75f4b0cc1a5bd9e..299e027ac248a70210d49d65b400d0f7a6fa7d14 100644
--- a/app/code/Magento/CheckoutAgreements/Api/Data/AgreementInterface.php
+++ b/app/code/Magento/CheckoutAgreements/Api/Data/AgreementInterface.php
@@ -5,7 +5,7 @@
  */
 namespace Magento\CheckoutAgreements\Api\Data;
 
-interface AgreementInterface
+interface AgreementInterface extends \Magento\Framework\Api\ExtensibleDataInterface
 {
     /**#@+
      * Constants for keys of data array. Identical to the name of the getter in snake case
@@ -128,4 +128,21 @@ interface AgreementInterface
      * @return $this
      */
     public function setIsHtml($isHtml);
+
+    /**
+     * Retrieve existing extension attributes object or create a new one.
+     *
+     * @return \Magento\CheckoutAgreements\Api\Data\AgreementExtensionInterface|null
+     */
+    public function getExtensionAttributes();
+
+    /**
+     * Set an extension attributes object.
+     *
+     * @param \Magento\CheckoutAgreements\Api\Data\AgreementExtensionInterface $extensionAttributes
+     * @return $this
+     */
+    public function setExtensionAttributes(
+        \Magento\CheckoutAgreements\Api\Data\AgreementExtensionInterface $extensionAttributes
+    );
 }
diff --git a/app/code/Magento/CheckoutAgreements/Model/Agreement.php b/app/code/Magento/CheckoutAgreements/Model/Agreement.php
index 6f951c12d5b629bc304cb0d80933030654598d1b..98b1b36b153c100955c8d7d4dd71b1196f629fcd 100644
--- a/app/code/Magento/CheckoutAgreements/Model/Agreement.php
+++ b/app/code/Magento/CheckoutAgreements/Model/Agreement.php
@@ -8,7 +8,7 @@ namespace Magento\CheckoutAgreements\Model;
 use Magento\CheckoutAgreements\Api\Data\AgreementInterface;
 use Magento\Framework\Model\AbstractModel;
 
-class Agreement extends AbstractModel implements AgreementInterface
+class Agreement extends \Magento\Framework\Model\AbstractExtensibleModel implements AgreementInterface
 {
     /**
      * Allowed CSS units for height field
@@ -176,5 +176,27 @@ class Agreement extends AbstractModel implements AgreementInterface
     {
         return $this->setData(self::IS_HTML, $isHtml);
     }
+
+    /**
+     * {@inheritdoc}
+     *
+     * @return \Magento\CheckoutAgreements\Api\Data\AgreementExtensionInterface|null
+     */
+    public function getExtensionAttributes()
+    {
+        return $this->_getExtensionAttributes();
+    }
+
+    /**
+     * {@inheritdoc}
+     *
+     * @param \Magento\CheckoutAgreements\Api\Data\AgreementExtensionInterface $extensionAttributes
+     * @return $this
+     */
+    public function setExtensionAttributes(
+        \Magento\CheckoutAgreements\Api\Data\AgreementExtensionInterface $extensionAttributes
+    ) {
+        return $this->_setExtensionAttributes($extensionAttributes);
+    }
     //@codeCoverageIgnoreEnd
 }
diff --git a/app/code/Magento/CheckoutAgreements/Model/CheckoutAgreementsRepository.php b/app/code/Magento/CheckoutAgreements/Model/CheckoutAgreementsRepository.php
index eae3f09c667a9f825270ce9d87c23d8065ec788c..845bb2a9d2c742f1232e9a5ebfeb23ec9b85780f 100644
--- a/app/code/Magento/CheckoutAgreements/Model/CheckoutAgreementsRepository.php
+++ b/app/code/Magento/CheckoutAgreements/Model/CheckoutAgreementsRepository.php
@@ -10,6 +10,7 @@ namespace Magento\CheckoutAgreements\Model;
 
 use Magento\CheckoutAgreements\Model\Resource\Agreement\CollectionFactory as AgreementCollectionFactory;
 use Magento\CheckoutAgreements\Model\Resource\Agreement\Collection as AgreementCollection;
+use Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface;
 use Magento\Framework\App\Config\ScopeConfigInterface;
 use Magento\Store\Model\StoreManagerInterface;
 use Magento\Store\Model\ScopeInterface;
@@ -56,6 +57,11 @@ class CheckoutAgreementsRepository implements CheckoutAgreementsRepositoryInterf
      */
     private $agreementFactory;
 
+    /**
+     * @var JoinProcessorInterface
+     */
+    private $extensionAttributesJoinProcessor;
+
     /**
      * Constructs a checkout agreement data object.
      *
@@ -64,19 +70,22 @@ class CheckoutAgreementsRepository implements CheckoutAgreementsRepositoryInterf
      * @param ScopeConfigInterface $scopeConfig Scope config.
      * @param AgreementResource $agreementResource
      * @param AgreementFactory $agreementFactory
+     * @param JoinProcessorInterface $extensionAttributesJoinProcessor
      */
     public function __construct(
         AgreementCollectionFactory $collectionFactory,
         StoreManagerInterface $storeManager,
         ScopeConfigInterface $scopeConfig,
         AgreementResource $agreementResource,
-        AgreementFactory $agreementFactory
+        AgreementFactory $agreementFactory,
+        JoinProcessorInterface $extensionAttributesJoinProcessor
     ) {
         $this->collectionFactory = $collectionFactory;
         $this->storeManager = $storeManager;
         $this->scopeConfig = $scopeConfig;
         $this->resourceModel = $agreementResource;
         $this->agreementFactory = $agreementFactory;
+        $this->extensionAttributesJoinProcessor = $extensionAttributesJoinProcessor;
     }
 
     /**
@@ -92,9 +101,9 @@ class CheckoutAgreementsRepository implements CheckoutAgreementsRepositoryInterf
         $storeId = $this->storeManager->getStore()->getId();
         /** @var $agreementCollection AgreementCollection */
         $agreementCollection = $this->collectionFactory->create();
+        $this->extensionAttributesJoinProcessor->process($agreementCollection);
         $agreementCollection->addStoreFilter($storeId);
         $agreementCollection->addFieldToFilter('is_active', 1);
-
         $agreementDataObjects = [];
         foreach ($agreementCollection as $agreement) {
             $agreementDataObjects[] = $agreement;
diff --git a/app/code/Magento/CheckoutAgreements/Test/Unit/Model/CheckoutAgreementsRepositoryTest.php b/app/code/Magento/CheckoutAgreements/Test/Unit/Model/CheckoutAgreementsRepositoryTest.php
index 9d27e3e471e23e8825b6b557635e5ebd59d565cb..04543777e3470676e9406bf57f32e91fea02dfab 100644
--- a/app/code/Magento/CheckoutAgreements/Test/Unit/Model/CheckoutAgreementsRepositoryTest.php
+++ b/app/code/Magento/CheckoutAgreements/Test/Unit/Model/CheckoutAgreementsRepositoryTest.php
@@ -56,6 +56,11 @@ class CheckoutAgreementsRepositoryTest extends \PHPUnit_Framework_TestCase
      */
     private $storeMock;
 
+    /**
+     * @var \PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $extensionAttributesJoinProcessorMock;
+
     protected function setUp()
     {
         $this->objectManager = new ObjectManager($this);
@@ -81,17 +86,28 @@ class CheckoutAgreementsRepositoryTest extends \PHPUnit_Framework_TestCase
         $this->agreementMock =
             $this->getMock('\Magento\CheckoutAgreements\Model\Agreement', $methods, [], '', false);
         $this->storeMock = $this->getMock('Magento\Store\Model\Store', [], [], '', false);
+        $this->extensionAttributesJoinProcessorMock = $this->getMock(
+            '\Magento\Framework\Api\ExtensionAttribute\JoinProcessor',
+            ['process'],
+            [],
+            '',
+            false
+        );
+
         $this->model = new \Magento\CheckoutAgreements\Model\CheckoutAgreementsRepository(
             $this->factoryMock,
             $this->storeManagerMock,
             $this->scopeConfigMock,
             $this->resourceMock,
-            $this->agrFactoryMock
+            $this->agrFactoryMock,
+            $this->extensionAttributesJoinProcessorMock
         );
     }
 
     public function testGetListReturnsEmptyListIfCheckoutAgreementsAreDisabledOnFrontend()
     {
+        $this->extensionAttributesJoinProcessorMock->expects($this->never())
+            ->method('process');
         $this->scopeConfigMock->expects($this->once())
             ->method('isSetFlag')
             ->with('checkout/options/enable_agreements', ScopeInterface::SCOPE_STORE, null)
@@ -102,6 +118,10 @@ class CheckoutAgreementsRepositoryTest extends \PHPUnit_Framework_TestCase
 
     public function testGetListReturnsTheListOfActiveCheckoutAgreements()
     {
+        $this->extensionAttributesJoinProcessorMock->expects($this->once())
+            ->method('process')
+            ->with($this->isInstanceOf('Magento\CheckoutAgreements\Model\Resource\Agreement\Collection'));
+
         $this->scopeConfigMock->expects($this->once())
             ->method('isSetFlag')
             ->with('checkout/options/enable_agreements', ScopeInterface::SCOPE_STORE, null)
diff --git a/app/code/Magento/ConfigurableProduct/Model/Product/Type/Configurable.php b/app/code/Magento/ConfigurableProduct/Model/Product/Type/Configurable.php
index c1fb0b41ef427e758954ee9728084e67eb9c5bed..20d861e695135aabf4c445eea2d4bfdd0eaa0680 100644
--- a/app/code/Magento/ConfigurableProduct/Model/Product/Type/Configurable.php
+++ b/app/code/Magento/ConfigurableProduct/Model/Product/Type/Configurable.php
@@ -158,6 +158,11 @@ class Configurable extends \Magento\Catalog\Model\Product\Type\AbstractType
      */
     protected $jsonHelper;
 
+    /**
+     * @var \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface
+     */
+    protected $extensionAttributesJoinProcessor;
+
     /**
      * @codingStandardsIgnoreStart/End
      *
@@ -181,6 +186,7 @@ class Configurable extends \Magento\Catalog\Model\Product\Type\AbstractType
      * @param \Magento\ConfigurableProduct\Model\Resource\Product\Type\Configurable $catalogProductTypeConfigurable
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
      * @param \Magento\Catalog\Model\ProductFactory $productFactory
+     * @param \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface $extensionAttributesJoinProcessor
      *
      * @SuppressWarnings(PHPMD.ExcessiveParameterList)
      */
@@ -205,7 +211,8 @@ class Configurable extends \Magento\Catalog\Model\Product\Type\AbstractType
         \Magento\ConfigurableProduct\Model\Resource\Product\Type\Configurable $catalogProductTypeConfigurable,
         \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
         \Magento\CatalogInventory\Api\StockConfigurationInterface $stockConfiguration,
-        \Magento\Catalog\Model\ProductFactory $productFactory
+        \Magento\Catalog\Model\ProductFactory $productFactory,
+        \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface $extensionAttributesJoinProcessor
     ) {
         $this->_typeConfigurableFactory = $typeConfigurableFactory;
         $this->_entityFactory = $entityFactory;
@@ -218,6 +225,7 @@ class Configurable extends \Magento\Catalog\Model\Product\Type\AbstractType
         $this->_scopeConfig = $scopeConfig;
         $this->stockConfiguration = $stockConfiguration;
         $this->jsonHelper = $jsonHelper;
+        $this->extensionAttributesJoinProcessor = $extensionAttributesJoinProcessor;
         parent::__construct(
             $catalogProductOption,
             $eavConfig,
@@ -370,7 +378,9 @@ class Configurable extends \Magento\Catalog\Model\Product\Type\AbstractType
             ['group' => 'CONFIGURABLE', 'method' => __METHOD__]
         );
         if (!$product->hasData($this->_configurableAttributes)) {
-            $configurableAttributes = $this->getConfigurableAttributeCollection($product)->orderByPosition()->load();
+            $configurableAttributes = $this->getConfigurableAttributeCollection($product);
+            $this->extensionAttributesJoinProcessor->process($configurableAttributes);
+            $configurableAttributes->orderByPosition()->load();
             $product->setData($this->_configurableAttributes, $configurableAttributes);
         }
         \Magento\Framework\Profiler::stop('CONFIGURABLE:' . __METHOD__);
diff --git a/app/code/Magento/ConfigurableProduct/Test/Unit/Model/Product/Type/ConfigurableTest.php b/app/code/Magento/ConfigurableProduct/Test/Unit/Model/Product/Type/ConfigurableTest.php
index 4ca090adef44b5e3786bd066067c7c6aaa03ac53..a4fcb50da0362d438aa999dc67a57fd7c75ddad9 100644
--- a/app/code/Magento/ConfigurableProduct/Test/Unit/Model/Product/Type/ConfigurableTest.php
+++ b/app/code/Magento/ConfigurableProduct/Test/Unit/Model/Product/Type/ConfigurableTest.php
@@ -83,6 +83,11 @@ class ConfigurableTest extends \PHPUnit_Framework_TestCase
      */
     protected $_objectHelper;
 
+    /**
+     * @var JoinProcessorInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $extensionAttributesJoinProcessorMock;
+
     /**
      * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
      */
@@ -169,6 +174,14 @@ class ConfigurableTest extends \PHPUnit_Framework_TestCase
             '',
             false
         );
+        $this->extensionAttributesJoinProcessorMock = $this->getMock(
+            'Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface',
+            [],
+            [],
+            '',
+            false
+        );
+
         $this->_model = $this->_objectHelper->getObject(
             'Magento\ConfigurableProduct\Model\Product\Type\Configurable',
             [
@@ -186,7 +199,8 @@ class ConfigurableTest extends \PHPUnit_Framework_TestCase
                 'filesystem' => $filesystem,
                 'coreRegistry' => $coreRegistry,
                 'logger' => $logger,
-                'stockConfiguration' => $this->_stockConfiguration
+                'stockConfiguration' => $this->_stockConfiguration,
+                'extensionAttributesJoinProcessor' => $this->extensionAttributesJoinProcessorMock
             ]
         );
     }
@@ -202,9 +216,20 @@ class ConfigurableTest extends \PHPUnit_Framework_TestCase
     public function testSave()
     {
         $product = $this->getMockBuilder('\Magento\Catalog\Model\Product')
-            ->setMethods(['getIsDuplicate', 'dataHasChangedFor', 'getConfigurableAttributesData', 'getStoreId',
-                'getId', 'getData', 'hasData', 'getAssociatedProductIds', '__wakeup', '__sleep',
-            ])->disableOriginalConstructor()
+            ->setMethods(
+                [
+                    'getIsDuplicate',
+                    'dataHasChangedFor',
+                    'getConfigurableAttributesData',
+                    'getStoreId',
+                    'getId',
+                    'getData',
+                    'hasData',
+                    'getAssociatedProductIds',
+                    '__wakeup',
+                    '__sleep',
+                ]
+            )->disableOriginalConstructor()
             ->getMock();
         $product->expects($this->any())->method('dataHasChangedFor')->will($this->returnValue('false'));
         $product->expects($this->any())->method('getConfigurableAttributesData')
@@ -297,9 +322,19 @@ class ConfigurableTest extends \PHPUnit_Framework_TestCase
         $this->_attributeCollectionFactory->expects($this->any())->method('create')
             ->will($this->returnValue($attributeCollection));
         $product = $this->getMockBuilder('\Magento\Catalog\Model\Product')
-            ->setMethods(['dataHasChangedFor', 'getConfigurableAttributesData', 'getStoreId',
-                'getId', 'getData', 'hasData', 'getAssociatedProductIds', '__wakeup', '__sleep',
-            ])->disableOriginalConstructor()
+            ->setMethods(
+                [
+                    'dataHasChangedFor',
+                    'getConfigurableAttributesData',
+                    'getStoreId',
+                    'getId',
+                    'getData',
+                    'hasData',
+                    'getAssociatedProductIds',
+                    '__wakeup',
+                    '__sleep',
+                ]
+            )->disableOriginalConstructor()
             ->getMock();
         $product->expects($this->any())->method('getConfigurableAttributesData')
             ->will($this->returnValue($this->attributeData));
@@ -307,18 +342,28 @@ class ConfigurableTest extends \PHPUnit_Framework_TestCase
         $product->expects($this->any())->method('getId')->will($this->returnValue(1));
         $product->expects($this->any())->method('getAssociatedProductIds')->will($this->returnValue([2]));
         $product->expects($this->any())->method('hasData')
-            ->will($this->returnValueMap([
-                ['_cache_instance_used_product_attribute_ids', 1],
-                ['_cache_instance_products', 0],
-                ['_cache_instance_configurable_attributes', 1],
-            ]));
+            ->will(
+                $this->returnValueMap(
+                    [
+                        ['_cache_instance_used_product_attribute_ids', 1],
+                        ['_cache_instance_products', 0],
+                        ['_cache_instance_configurable_attributes', 1],
+                    ]
+                )
+            );
         $product->expects($this->any())->method('getData')
             ->will($this->returnValue(1));
         $productCollection = $this->getMockBuilder(
             'Magento\ConfigurableProduct\Model\Resource\Product\Type\Configurable\Product\Collection'
         )->setMethods(
-            ['setFlag', 'setProductFilter', 'addStoreFilter', 'addAttributeToSelect', 'addFilterByRequiredOptions',
-                'setStoreId', ]
+            [
+                'setFlag',
+                'setProductFilter',
+                'addStoreFilter',
+                'addAttributeToSelect',
+                'addFilterByRequiredOptions',
+                'setStoreId',
+            ]
         )->disableOriginalConstructor()
             ->getMock();
         $productCollection->expects($this->any())->method('addAttributeToSelect')->will($this->returnSelf());
@@ -385,13 +430,21 @@ class ConfigurableTest extends \PHPUnit_Framework_TestCase
             ->getMock();
         $product->expects($this->any())->method('getStoreId')->will($this->returnValue($productStore));
         $product->expects($this->any())->method('hasData')
-            ->will($this->returnValueMap([
-                ['_cache_instance_configurable_attributes', 1],
-            ]));
+            ->will(
+                $this->returnValueMap(
+                    [
+                        ['_cache_instance_configurable_attributes', 1],
+                    ]
+                )
+            );
         $product->expects($this->any())->method('getData')
-            ->will($this->returnValueMap([
-                ['_cache_instance_configurable_attributes', null, [$attribute]],
-            ]));
+            ->will(
+                $this->returnValueMap(
+                    [
+                        ['_cache_instance_configurable_attributes', null, [$attribute]],
+                    ]
+                )
+            );
 
         $result = $this->_model->getConfigurableAttributesAsArray($product);
         $this->assertCount(1, $result);
@@ -408,6 +461,41 @@ class ConfigurableTest extends \PHPUnit_Framework_TestCase
         ];
     }
 
+    public function testGetConfigurableAttributes()
+    {
+        $expectedData = [1];
+        $configurableAttributes = '_cache_instance_configurable_attributes';
+
+        /** @var \Magento\Catalog\Model\Product|\PHPUnit_Framework_MockObject_MockObject $product */
+        $product = $this->getMockBuilder('Magento\Catalog\Model\Product')
+            ->setMethods(['getData', 'hasData', 'setData'])
+            ->disableOriginalConstructor()
+            ->getMock();
+        $product->expects($this->once())->method('hasData')->with($configurableAttributes)->willReturn(false);
+        $product->expects($this->once())->method('setData')->willReturnSelf();
+        $product->expects($this->once())->method('getData')->with($configurableAttributes)->willReturn($expectedData);
+
+        $attributeCollection = $this->getMockBuilder(
+            'Magento\ConfigurableProduct\Model\Resource\Product\Type\Configurable\Attribute\Collection'
+        )
+            ->setMethods(['setProductFilter', 'orderByPosition', 'load'])
+            ->disableOriginalConstructor()
+            ->getMock();
+        $attributeCollection->expects($this->any())->method('setProductFilter')->will($this->returnSelf());
+        $attributeCollection->expects($this->any())->method('orderByPosition')->will($this->returnSelf());
+        $this->_attributeCollectionFactory->expects($this->any())->method('create')->willReturn($attributeCollection);
+
+        $this->extensionAttributesJoinProcessorMock->expects($this->once())
+            ->method('process')
+            ->with(
+                $this->isInstanceOf(
+                    'Magento\ConfigurableProduct\Model\Resource\Product\Type\Configurable\Attribute\Collection'
+                )
+            );
+
+        $this->assertEquals($expectedData, $this->_model->getConfigurableAttributes($product));
+    }
+
     public function testResetConfigurableAttributes()
     {
         $product = $this->getMockBuilder('\Magento\Catalog\Model\Product')
diff --git a/app/code/Magento/Customer/Model/Resource/AddressRepository.php b/app/code/Magento/Customer/Model/Resource/AddressRepository.php
index 1a97ba112fbcfc322511f704150bbf282b7327a5..833cf68fd70b8250e0e0a717d349f43b045620ac 100644
--- a/app/code/Magento/Customer/Model/Resource/AddressRepository.php
+++ b/app/code/Magento/Customer/Model/Resource/AddressRepository.php
@@ -56,6 +56,11 @@ class AddressRepository implements \Magento\Customer\Api\AddressRepositoryInterf
      */
     protected $addressCollectionFactory;
 
+    /**
+     * @var \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface
+     */
+    protected $extensionAttributesJoinProcessor;
+
     /**
      * @param \Magento\Customer\Model\AddressFactory $addressFactory
      * @param \Magento\Customer\Model\AddressRegistry $addressRegistry
@@ -64,6 +69,7 @@ class AddressRepository implements \Magento\Customer\Api\AddressRepositoryInterf
      * @param \Magento\Directory\Helper\Data $directoryData
      * @param \Magento\Customer\Api\Data\AddressSearchResultsInterfaceFactory $addressSearchResultsFactory
      * @param \Magento\Customer\Model\Resource\Address\CollectionFactory $addressCollectionFactory
+     * @param \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface $extensionAttributesJoinProcessor
      */
     public function __construct(
         \Magento\Customer\Model\AddressFactory $addressFactory,
@@ -72,7 +78,8 @@ class AddressRepository implements \Magento\Customer\Api\AddressRepositoryInterf
         \Magento\Customer\Model\Resource\Address $addressResourceModel,
         \Magento\Directory\Helper\Data $directoryData,
         \Magento\Customer\Api\Data\AddressSearchResultsInterfaceFactory $addressSearchResultsFactory,
-        \Magento\Customer\Model\Resource\Address\CollectionFactory $addressCollectionFactory
+        \Magento\Customer\Model\Resource\Address\CollectionFactory $addressCollectionFactory,
+        \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface $extensionAttributesJoinProcessor
     ) {
         $this->addressFactory = $addressFactory;
         $this->addressRegistry = $addressRegistry;
@@ -81,6 +88,7 @@ class AddressRepository implements \Magento\Customer\Api\AddressRepositoryInterf
         $this->directoryData = $directoryData;
         $this->addressSearchResultsFactory = $addressSearchResultsFactory;
         $this->addressCollectionFactory = $addressCollectionFactory;
+        $this->extensionAttributesJoinProcessor = $extensionAttributesJoinProcessor;
     }
 
     /**
@@ -146,6 +154,7 @@ class AddressRepository implements \Magento\Customer\Api\AddressRepositoryInterf
 
         /** @var Collection $collection */
         $collection = $this->addressCollectionFactory->create();
+        $this->extensionAttributesJoinProcessor->process($collection, 'Magento\Customer\Api\Data\AddressInterface');
         // Add filters from root filter group to the collection
         foreach ($searchCriteria->getFilterGroups() as $group) {
             $this->addFilterGroupToCollection($group, $collection);
diff --git a/app/code/Magento/Customer/Model/Resource/CustomerRepository.php b/app/code/Magento/Customer/Model/Resource/CustomerRepository.php
index b20ce2bb0d5994139764b85e4406050b39c05a46..bd3064d2f9317d00d62c974f03a899588b4ff180 100644
--- a/app/code/Magento/Customer/Model/Resource/CustomerRepository.php
+++ b/app/code/Magento/Customer/Model/Resource/CustomerRepository.php
@@ -13,7 +13,6 @@ use Magento\Framework\Api\ImageProcessorInterface;
 use Magento\Framework\Api\SearchCriteriaInterface;
 use Magento\Framework\Exception\InputException;
 use Magento\Framework\Exception\NoSuchEntityException;
-use Magento\Framework\Api\ExtensionAttributesFactory;
 
 /**
  * Customer repository.
@@ -82,9 +81,9 @@ class CustomerRepository implements \Magento\Customer\Api\CustomerRepositoryInte
     protected $imageProcessor;
 
     /**
-     * @var ExtensionAttributesFactory
+     * @var \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface
      */
-    protected $extensionAttributesFactory;
+    protected $extensionAttributesJoinProcessor;
 
     /**
      * @param \Magento\Customer\Model\CustomerFactory $customerFactory
@@ -99,7 +98,7 @@ class CustomerRepository implements \Magento\Customer\Api\CustomerRepositoryInte
      * @param \Magento\Framework\Api\ExtensibleDataObjectConverter $extensibleDataObjectConverter
      * @param DataObjectHelper $dataObjectHelper
      * @param ImageProcessorInterface $imageProcessor
-     * @param ExtensionAttributesFactory $extensionAttributesFactory
+     * @param \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface $extensionAttributesJoinProcessor
      * @SuppressWarnings(PHPMD.ExcessiveParameterList)
      */
     public function __construct(
@@ -115,7 +114,7 @@ class CustomerRepository implements \Magento\Customer\Api\CustomerRepositoryInte
         \Magento\Framework\Api\ExtensibleDataObjectConverter $extensibleDataObjectConverter,
         DataObjectHelper $dataObjectHelper,
         ImageProcessorInterface $imageProcessor,
-        ExtensionAttributesFactory $extensionAttributesFactory
+        \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface $extensionAttributesJoinProcessor
     ) {
         $this->customerFactory = $customerFactory;
         $this->customerSecureFactory = $customerSecureFactory;
@@ -129,7 +128,7 @@ class CustomerRepository implements \Magento\Customer\Api\CustomerRepositoryInte
         $this->extensibleDataObjectConverter = $extensibleDataObjectConverter;
         $this->dataObjectHelper = $dataObjectHelper;
         $this->imageProcessor = $imageProcessor;
-        $this->extensionAttributesFactory = $extensionAttributesFactory;
+        $this->extensionAttributesJoinProcessor = $extensionAttributesJoinProcessor;
     }
 
     /**
@@ -250,6 +249,7 @@ class CustomerRepository implements \Magento\Customer\Api\CustomerRepositoryInte
         $searchResults->setSearchCriteria($searchCriteria);
         /** @var \Magento\Customer\Model\Resource\Customer\Collection $collection */
         $collection = $this->customerFactory->create()->getCollection();
+        $this->extensionAttributesJoinProcessor->process($collection, 'Magento\Customer\Api\Data\CustomerInterface');
         // This is needed to make sure all the attributes are properly loaded
         foreach ($this->customerMetadata->getAllAttributesMetadata() as $metadata) {
             $collection->addAttributeToSelect($metadata->getAttributeCode());
@@ -279,7 +279,6 @@ class CustomerRepository implements \Magento\Customer\Api\CustomerRepositoryInte
         }
         $collection->setCurPage($searchCriteria->getCurrentPage());
         $collection->setPageSize($searchCriteria->getPageSize());
-        $this->extensionAttributesFactory->process($collection, 'Magento\Customer\Model\Data\Customer');
         $customers = [];
         /** @var \Magento\Customer\Model\Customer $customerModel */
         foreach ($collection as $customerModel) {
diff --git a/app/code/Magento/Customer/Model/Resource/GroupRepository.php b/app/code/Magento/Customer/Model/Resource/GroupRepository.php
index fe0d52ca471ef7a45f563a5529657d4a189a2b03..2b87df95a55bd9454e9c51bf81f013f535335c3c 100644
--- a/app/code/Magento/Customer/Model/Resource/GroupRepository.php
+++ b/app/code/Magento/Customer/Model/Resource/GroupRepository.php
@@ -14,6 +14,8 @@ use Magento\Framework\Exception\InputException;
 use Magento\Framework\Exception\State\InvalidTransitionException;
 use Magento\Tax\Api\Data\TaxClassInterface;
 use Magento\Tax\Api\TaxClassManagementInterface;
+use Magento\Framework\Api\ExtensibleDataInterface;
+use Magento\Customer\Api\Data\GroupExtensionInterface;
 
 /**
  * Customer group CRUD class
@@ -62,6 +64,11 @@ class GroupRepository implements \Magento\Customer\Api\GroupRepositoryInterface
      */
     private $taxClassRepository;
 
+    /**
+     * @var \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface
+     */
+    protected $extensionAttributesJoinProcessor;
+
     /**
      * @param \Magento\Customer\Model\GroupRegistry $groupRegistry
      * @param \Magento\Customer\Model\GroupFactory $groupFactory
@@ -70,6 +77,7 @@ class GroupRepository implements \Magento\Customer\Api\GroupRepositoryInterface
      * @param \Magento\Framework\Reflection\DataObjectProcessor $dataObjectProcessor
      * @param \Magento\Customer\Api\Data\GroupSearchResultsInterfaceFactory $searchResultsFactory
      * @param \Magento\Tax\Api\TaxClassRepositoryInterface $taxClassRepositoryInterface
+     * @param \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface $extensionAttributesJoinProcessor
      */
     public function __construct(
         \Magento\Customer\Model\GroupRegistry $groupRegistry,
@@ -78,7 +86,8 @@ class GroupRepository implements \Magento\Customer\Api\GroupRepositoryInterface
         \Magento\Customer\Model\Resource\Group $groupResourceModel,
         \Magento\Framework\Reflection\DataObjectProcessor $dataObjectProcessor,
         \Magento\Customer\Api\Data\GroupSearchResultsInterfaceFactory $searchResultsFactory,
-        \Magento\Tax\Api\TaxClassRepositoryInterface $taxClassRepositoryInterface
+        \Magento\Tax\Api\TaxClassRepositoryInterface $taxClassRepositoryInterface,
+        \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface $extensionAttributesJoinProcessor
     ) {
         $this->groupRegistry = $groupRegistry;
         $this->groupFactory = $groupFactory;
@@ -87,6 +96,7 @@ class GroupRepository implements \Magento\Customer\Api\GroupRepositoryInterface
         $this->dataObjectProcessor = $dataObjectProcessor;
         $this->searchResultsFactory = $searchResultsFactory;
         $this->taxClassRepository = $taxClassRepositoryInterface;
+        $this->extensionAttributesJoinProcessor = $extensionAttributesJoinProcessor;
     }
 
     /**
@@ -164,6 +174,8 @@ class GroupRepository implements \Magento\Customer\Api\GroupRepositoryInterface
 
         /** @var \Magento\Customer\Model\Resource\Group\Collection $collection */
         $collection = $this->groupFactory->create()->getCollection();
+        $groupInterfaceName = 'Magento\Customer\Api\Data\GroupInterface';
+        $this->extensionAttributesJoinProcessor->process($collection, $groupInterfaceName);
         $collection->addTaxClass();
 
         //Add filters from root filter group to the collection
@@ -171,7 +183,6 @@ class GroupRepository implements \Magento\Customer\Api\GroupRepositoryInterface
         foreach ($searchCriteria->getFilterGroups() as $group) {
             $this->addFilterGroupToCollection($group, $collection);
         }
-        $searchResults->setTotalCount($collection->getSize());
         $sortOrders = $searchCriteria->getSortOrders();
         /** @var \Magento\Framework\Api\SortOrder $sortOrder */
         if ($sortOrders) {
@@ -182,6 +193,11 @@ class GroupRepository implements \Magento\Customer\Api\GroupRepositoryInterface
                     ($sortOrder->getDirection() == SearchCriteriaInterface::SORT_ASC) ? 'ASC' : 'DESC'
                 );
             }
+        } else {
+            // set a default sorting order since this method is used constantly in many
+            // different blocks
+            $field = $this->translateField('id');
+            $collection->addOrder($field, 'ASC');
         }
         $collection->setCurPage($searchCriteria->getCurrentPage());
         $collection->setPageSize($searchCriteria->getPageSize());
@@ -190,13 +206,22 @@ class GroupRepository implements \Magento\Customer\Api\GroupRepositoryInterface
         $groups = [];
         /** @var \Magento\Customer\Model\Group $group */
         foreach ($collection as $group) {
+            /** @var \Magento\Customer\Api\Data\GroupInterface $groupDataObject */
             $groupDataObject = $this->groupDataFactory->create()
                 ->setId($group->getId())
                 ->setCode($group->getCode())
                 ->setTaxClassId($group->getTaxClassId())
                 ->setTaxClassName($group->getTaxClassName());
+            $data = $group->getData();
+            $data = $this->extensionAttributesJoinProcessor->extractExtensionAttributes($groupInterfaceName, $data);
+            if (isset($data[ExtensibleDataInterface::EXTENSION_ATTRIBUTES_KEY])
+                && ($data[ExtensibleDataInterface::EXTENSION_ATTRIBUTES_KEY] instanceof GroupExtensionInterface)
+            ) {
+                $groupDataObject->setExtensionAttributes($data[ExtensibleDataInterface::EXTENSION_ATTRIBUTES_KEY]);
+            }
             $groups[] = $groupDataObject;
         }
+        $searchResults->setTotalCount($collection->getSize());
         return $searchResults->setItems($groups);
     }
 
diff --git a/app/code/Magento/Downloadable/Model/Product/Type.php b/app/code/Magento/Downloadable/Model/Product/Type.php
index c25d6886e20abf83fa79d1274a475d7a65d611f1..e34c9bdf1b576e15bcca0db72e60b3485b1cdd62 100644
--- a/app/code/Magento/Downloadable/Model/Product/Type.php
+++ b/app/code/Magento/Downloadable/Model/Product/Type.php
@@ -6,6 +6,7 @@
 namespace Magento\Downloadable\Model\Product;
 
 use Magento\Catalog\Api\ProductRepositoryInterface;
+use Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface;
 
 /**
  * Downloadable product type model
@@ -59,6 +60,11 @@ class Type extends \Magento\Catalog\Model\Product\Type\Virtual
      */
     private $typeHandler;
 
+    /**
+     * @var JoinProcessorInterface
+     */
+    private $extensionAttributesJoinProcessor;
+
     /**
      * Construct
      *
@@ -78,6 +84,7 @@ class Type extends \Magento\Catalog\Model\Product\Type\Virtual
      * @param \Magento\Downloadable\Model\SampleFactory $sampleFactory
      * @param \Magento\Downloadable\Model\LinkFactory $linkFactory
      * @param TypeHandler\TypeHandlerInterface $typeHandler
+     * @param JoinProcessorInterface $extensionAttributesJoinProcessor
      * @SuppressWarnings(PHPMD.ExcessiveParameterList)
      */
     public function __construct(
@@ -96,7 +103,8 @@ class Type extends \Magento\Catalog\Model\Product\Type\Virtual
         \Magento\Downloadable\Model\Resource\Sample\CollectionFactory $samplesFactory,
         \Magento\Downloadable\Model\SampleFactory $sampleFactory,
         \Magento\Downloadable\Model\LinkFactory $linkFactory,
-        \Magento\Downloadable\Model\Product\TypeHandler\TypeHandlerInterface $typeHandler
+        \Magento\Downloadable\Model\Product\TypeHandler\TypeHandlerInterface $typeHandler,
+        JoinProcessorInterface $extensionAttributesJoinProcessor
     ) {
         $this->_sampleResFactory = $sampleResFactory;
         $this->_linkResource = $linkResource;
@@ -105,6 +113,7 @@ class Type extends \Magento\Catalog\Model\Product\Type\Virtual
         $this->_sampleFactory = $sampleFactory;
         $this->_linkFactory = $linkFactory;
         $this->typeHandler = $typeHandler;
+        $this->extensionAttributesJoinProcessor = $extensionAttributesJoinProcessor;
         parent::__construct(
             $catalogProductOption,
             $eavConfig,
@@ -127,17 +136,18 @@ class Type extends \Magento\Catalog\Model\Product\Type\Virtual
     public function getLinks($product)
     {
         if ($product->getDownloadableLinks() === null) {
-            $_linkCollection = $this->_linksFactory->create()->addProductToFilter(
+            /** @var \Magento\Downloadable\Model\Resource\Link\Collection $linkCollection */
+            $linkCollection = $this->_linksFactory->create()->addProductToFilter(
                 $product->getId()
             )->addTitleToResult(
                 $product->getStoreId()
             )->addPriceToResult(
                 $product->getStore()->getWebsiteId()
             );
+            $this->extensionAttributesJoinProcessor->process($linkCollection);
             $linksCollectionById = [];
-            foreach ($_linkCollection as $link) {
+            foreach ($linkCollection as $link) {
                 /* @var \Magento\Downloadable\Model\Link $link */
-
                 $link->setProduct($product);
                 $linksCollectionById[$link->getId()] = $link;
             }
@@ -203,12 +213,13 @@ class Type extends \Magento\Catalog\Model\Product\Type\Virtual
     public function getSamples($product)
     {
         if ($product->getDownloadableSamples() === null) {
-            $_sampleCollection = $this->_samplesFactory->create()->addProductToFilter(
+            $sampleCollection = $this->_samplesFactory->create()->addProductToFilter(
                 $product->getId()
             )->addTitleToResult(
                 $product->getStoreId()
             );
-            $product->setDownloadableSamples($_sampleCollection);
+            $this->extensionAttributesJoinProcessor->process($sampleCollection);
+            $product->setDownloadableSamples($sampleCollection);
         }
 
         return $product->getDownloadableSamples();
diff --git a/app/code/Magento/Eav/Model/Attribute/GroupRepository.php b/app/code/Magento/Eav/Model/Attribute/GroupRepository.php
index 5b1b7d539d930520b1c118b01f405cc07aa1c171..bfa5952bdbfc65104a21c4b4ed99b5234ab8d2d9 100644
--- a/app/code/Magento/Eav/Model/Attribute/GroupRepository.php
+++ b/app/code/Magento/Eav/Model/Attribute/GroupRepository.php
@@ -37,25 +37,33 @@ class GroupRepository implements \Magento\Eav\Api\AttributeGroupRepositoryInterf
      */
     protected $searchResultsFactory;
 
+    /**
+     * @var \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface
+     */
+    protected $joinProcessor;
+
     /**
      * @param \Magento\Eav\Model\Resource\Entity\Attribute\Group $groupResource
      * @param \Magento\Eav\Model\Resource\Entity\Attribute\Group\CollectionFactory $groupListFactory
      * @param \Magento\Eav\Model\Entity\Attribute\GroupFactory $groupFactory
      * @param \Magento\Eav\Api\AttributeSetRepositoryInterface $setRepository
      * @param \Magento\Eav\Api\Data\AttributeGroupSearchResultsInterfaceFactory $searchResultsFactory
+     * @param \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface $joinProcessor
      */
     public function __construct(
         \Magento\Eav\Model\Resource\Entity\Attribute\Group $groupResource,
         \Magento\Eav\Model\Resource\Entity\Attribute\Group\CollectionFactory $groupListFactory,
         \Magento\Eav\Model\Entity\Attribute\GroupFactory $groupFactory,
         \Magento\Eav\Api\AttributeSetRepositoryInterface $setRepository,
-        \Magento\Eav\Api\Data\AttributeGroupSearchResultsInterfaceFactory $searchResultsFactory
+        \Magento\Eav\Api\Data\AttributeGroupSearchResultsInterfaceFactory $searchResultsFactory,
+        \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface $joinProcessor
     ) {
         $this->groupResource = $groupResource;
         $this->groupListFactory = $groupListFactory;
         $this->groupFactory = $groupFactory;
         $this->setRepository = $setRepository;
         $this->searchResultsFactory = $searchResultsFactory;
+        $this->joinProcessor = $joinProcessor;
     }
 
     /**
@@ -108,6 +116,7 @@ class GroupRepository implements \Magento\Eav\Api\AttributeGroupRepositoryInterf
         }
 
         $collection = $this->groupListFactory->create();
+        $this->joinProcessor->process($collection);
         $collection->setAttributeSetFilter($attributeSetId);
         $collection->setSortOrder();
 
diff --git a/app/code/Magento/Eav/Model/AttributeRepository.php b/app/code/Magento/Eav/Model/AttributeRepository.php
index e325fea2f4717844fc93a076076fb13731b3407a..a308bcf630f49c7302d7133a69be447378ba923d 100644
--- a/app/code/Magento/Eav/Model/AttributeRepository.php
+++ b/app/code/Magento/Eav/Model/AttributeRepository.php
@@ -42,25 +42,33 @@ class AttributeRepository implements \Magento\Eav\Api\AttributeRepositoryInterfa
      */
     protected $attributeFactory;
 
+    /**
+     * @var \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface
+     */
+    protected $joinProcessor;
+
     /**
      * @param Config $eavConfig
      * @param Resource\Entity\Attribute $eavResource
      * @param Resource\Entity\Attribute\CollectionFactory $attributeCollectionFactory
      * @param \Magento\Eav\Api\Data\AttributeSearchResultsInterfaceFactory $searchResultsFactory
      * @param Entity\AttributeFactory $attributeFactory
+     * @param \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface $joinProcessor
      */
     public function __construct(
         \Magento\Eav\Model\Config $eavConfig,
         \Magento\Eav\Model\Resource\Entity\Attribute $eavResource,
         \Magento\Eav\Model\Resource\Entity\Attribute\CollectionFactory $attributeCollectionFactory,
         \Magento\Eav\Api\Data\AttributeSearchResultsInterfaceFactory $searchResultsFactory,
-        \Magento\Eav\Model\Entity\AttributeFactory $attributeFactory
+        \Magento\Eav\Model\Entity\AttributeFactory $attributeFactory,
+        \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface $joinProcessor
     ) {
         $this->eavConfig = $eavConfig;
         $this->eavResource = $eavResource;
         $this->attributeCollectionFactory = $attributeCollectionFactory;
         $this->searchResultsFactory = $searchResultsFactory;
         $this->attributeFactory = $attributeFactory;
+        $this->joinProcessor = $joinProcessor;
     }
 
     /**
@@ -87,6 +95,7 @@ class AttributeRepository implements \Magento\Eav\Api\AttributeRepositoryInterfa
 
         /** @var \Magento\Eav\Model\Resource\Entity\Attribute\Collection $attributeCollection */
         $attributeCollection = $this->attributeCollectionFactory->create();
+        $this->joinProcessor->process($attributeCollection);
         $attributeCollection->addFieldToFilter('entity_type_code', ['eq' => $entityTypeCode]);
         $attributeCollection->join(
             ['entity_type' => $attributeCollection->getTable('eav_entity_type')],
diff --git a/app/code/Magento/Eav/Model/AttributeSetRepository.php b/app/code/Magento/Eav/Model/AttributeSetRepository.php
index 2e0d4457eb293bc21e19fce8a9f94e19486f65f1..3cc9a46867910453e6499d82123b7afd76f9804e 100644
--- a/app/code/Magento/Eav/Model/AttributeSetRepository.php
+++ b/app/code/Magento/Eav/Model/AttributeSetRepository.php
@@ -46,25 +46,33 @@ class AttributeSetRepository implements AttributeSetRepositoryInterface
      */
     private $searchResultsFactory;
 
+    /**
+     * @var \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface
+     */
+    protected $joinProcessor;
+
     /**
      * @param AttributeSetResource $attributeSetResource
      * @param AttributeSetFactory $attributeSetFactory
      * @param CollectionFactory $collectionFactory
      * @param Config $eavConfig
      * @param \Magento\Eav\Api\Data\AttributeSetSearchResultsInterfaceFactory $searchResultFactory
+     * @param \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface $joinProcessor
      */
     public function __construct(
         AttributeSetResource $attributeSetResource,
         AttributeSetFactory $attributeSetFactory,
         CollectionFactory $collectionFactory,
         EavConfig $eavConfig,
-        \Magento\Eav\Api\Data\AttributeSetSearchResultsInterfaceFactory $searchResultFactory
+        \Magento\Eav\Api\Data\AttributeSetSearchResultsInterfaceFactory $searchResultFactory,
+        \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface $joinProcessor
     ) {
         $this->attributeSetResource = $attributeSetResource;
         $this->attributeSetFactory = $attributeSetFactory;
         $this->collectionFactory = $collectionFactory;
         $this->eavConfig = $eavConfig;
         $this->searchResultsFactory = $searchResultFactory;
+        $this->joinProcessor = $joinProcessor;
     }
 
     /**
@@ -87,6 +95,7 @@ class AttributeSetRepository implements AttributeSetRepositoryInterface
     {
         /** @var \Magento\Eav\Model\Resource\Entity\Attribute\Set\Collection $collection */
         $collection = $this->collectionFactory->create();
+        $this->joinProcessor->process($collection);
 
         /** The only possible/meaningful search criteria for attribute set is entity type code */
         $entityTypeCode = $this->getEntityTypeCode($searchCriteria);
diff --git a/app/code/Magento/Eav/Test/Unit/Model/AttributeSetRepositoryTest.php b/app/code/Magento/Eav/Test/Unit/Model/AttributeSetRepositoryTest.php
index 5975bf3b5f422e39a24faf4c58e8c4d3354bc50b..56d56b6035d2309134dbd9070f6bb2046ab7a6ee 100644
--- a/app/code/Magento/Eav/Test/Unit/Model/AttributeSetRepositoryTest.php
+++ b/app/code/Magento/Eav/Test/Unit/Model/AttributeSetRepositoryTest.php
@@ -42,6 +42,11 @@ class AttributeSetRepositoryTest extends \PHPUnit_Framework_TestCase
      */
     private $resultFactoryMock;
 
+    /**
+     * @var \PHPUnit_Framework_MockObject_MockObject
+     */
+    private $extensionAttributesJoinProcessorMock;
+
     /**
      * @return void
      */
@@ -76,12 +81,20 @@ class AttributeSetRepositoryTest extends \PHPUnit_Framework_TestCase
             '',
             false
         );
+        $this->extensionAttributesJoinProcessorMock = $this->getMock(
+            '\Magento\Framework\Api\ExtensionAttribute\JoinProcessor',
+            ['process'],
+            [],
+            '',
+            false
+        );
         $this->model = new \Magento\Eav\Model\AttributeSetRepository(
             $this->resourceMock,
             $this->setFactoryMock,
             $this->collectionFactoryMock,
             $this->eavConfigMock,
-            $this->resultFactoryMock
+            $this->resultFactoryMock,
+            $this->extensionAttributesJoinProcessorMock
         );
     }
 
diff --git a/app/code/Magento/Log/Model/Log.php b/app/code/Magento/Log/Model/Log.php
index 3ef8615027d8264d3d50ebe1673aaa24a2920193..6f744ba0f5ecfb33e636eb5982bf2dce09118872 100644
--- a/app/code/Magento/Log/Model/Log.php
+++ b/app/code/Magento/Log/Model/Log.php
@@ -81,6 +81,7 @@ class Log extends \Magento\Framework\Model\AbstractModel
      * Clean Logs
      *
      * @return $this
+     * @api
      */
     public function clean()
     {
diff --git a/app/code/Magento/Log/Model/Resource/Visitor/Collection.php b/app/code/Magento/Log/Model/Resource/Visitor/Collection.php
index f149fb739db213787702f779bd7a5b62df8baf13..662118f055731365066493dd5ed5f606abd577bd 100644
--- a/app/code/Magento/Log/Model/Resource/Visitor/Collection.php
+++ b/app/code/Magento/Log/Model/Resource/Visitor/Collection.php
@@ -111,6 +111,7 @@ class Collection extends \Magento\Framework\Model\Resource\Db\Collection\Abstrac
      * Filter for customers only
      *
      * @return $this
+     * @api
      */
     public function showCustomersOnly()
     {
@@ -174,6 +175,7 @@ class Collection extends \Magento\Framework\Model\Resource\Db\Collection\Abstrac
      *
      * @return bool
      * @SuppressWarnings(PHPMD.BooleanGetMethodName)
+     * @api
      */
     public function getIsOnlineFilterUsed()
     {
@@ -185,6 +187,7 @@ class Collection extends \Magento\Framework\Model\Resource\Db\Collection\Abstrac
      *
      * @param int[]|int $storeIds
      * @return void
+     * @api
      */
     public function addVisitorStoreFilter($storeIds)
     {
diff --git a/app/code/Magento/Log/Model/Resource/Visitor/Online/Collection.php b/app/code/Magento/Log/Model/Resource/Visitor/Online/Collection.php
index bb3fbe5d7a726dbfcd941b966e9b742b151f0e35..eb64fde9f3323ba90f8898177192740a6cdb4a97 100644
--- a/app/code/Magento/Log/Model/Resource/Visitor/Online/Collection.php
+++ b/app/code/Magento/Log/Model/Resource/Visitor/Online/Collection.php
@@ -87,6 +87,7 @@ class Collection extends \Magento\Framework\Model\Resource\Db\Collection\Abstrac
      *
      * @param int|int[] $websiteIds
      * @return $this
+     * @api
      */
     public function addWebsiteFilter($websiteIds)
     {
diff --git a/app/code/Magento/PageCache/Model/Config.php b/app/code/Magento/PageCache/Model/Config.php
index 56d46f7111fcc0cc2006e59aeaf3a72d20b05b65..7ffeeddbe18b9a55142e9ffbae899ac2483ec812 100644
--- a/app/code/Magento/PageCache/Model/Config.php
+++ b/app/code/Magento/PageCache/Model/Config.php
@@ -87,6 +87,7 @@ class Config
      * Return currently selected cache type: built in or varnish
      *
      * @return int
+     * @api
      */
     public function getType()
     {
@@ -97,6 +98,7 @@ class Config
      * Return page lifetime
      *
      * @return int
+     * @api
      */
     public function getTtl()
     {
@@ -108,6 +110,7 @@ class Config
      *
      * @param string $vclTemplatePath
      * @return string
+     * @api
      */
     public function getVclFile($vclTemplatePath)
     {
@@ -202,6 +205,7 @@ class Config
      * Whether a cache type is enabled in Cache Management Grid
      *
      * @return bool
+     * @api
      */
     public function isEnabled()
     {
diff --git a/app/code/Magento/PageCache/Model/DepersonalizeChecker.php b/app/code/Magento/PageCache/Model/DepersonalizeChecker.php
index 5837cccbc7d0924daf7185f0d428d0f0f6eabf2e..14b1ee4424aab3e07a8d6aa4e26cedc7a69b7517 100644
--- a/app/code/Magento/PageCache/Model/DepersonalizeChecker.php
+++ b/app/code/Magento/PageCache/Model/DepersonalizeChecker.php
@@ -51,6 +51,7 @@ class DepersonalizeChecker
      *
      * @param \Magento\Framework\View\LayoutInterface $subject
      * @return bool
+     * @api
      */
     public function checkIfDepersonalize(\Magento\Framework\View\LayoutInterface $subject)
     {
diff --git a/app/code/Magento/Quote/Model/Quote.php b/app/code/Magento/Quote/Model/Quote.php
index 9cc216d09012c88f121e7e80c35db7e165e505b5..95fa91f6c6c5c29de29ac69cdb491cacef11ee76 100644
--- a/app/code/Magento/Quote/Model/Quote.php
+++ b/app/code/Magento/Quote/Model/Quote.php
@@ -16,6 +16,7 @@ use Magento\Quote\Model\Quote\Address;
 use Magento\Sales\Model\Resource;
 use Magento\Sales\Model\Status;
 use Magento\Framework\Api\AttributeValueFactory;
+use Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface;
 
 /**
  * Quote model
@@ -322,6 +323,11 @@ class Quote extends AbstractExtensibleModel implements \Magento\Quote\Api\Data\C
      */
     protected $dataObjectHelper;
 
+    /**
+     * @var JoinProcessorInterface
+     */
+    protected $extensionAttributesJoinProcessor;
+
     /**
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
@@ -355,6 +361,7 @@ class Quote extends AbstractExtensibleModel implements \Magento\Quote\Api\Data\C
      * @param \Magento\Framework\Api\DataObjectHelper $dataObjectHelper
      * @param \Magento\Framework\Api\ExtensibleDataObjectConverter $extensibleDataObjectConverter
      * @param Cart\CurrencyFactory $currencyFactory
+     * @param JoinProcessorInterface $extensionAttributesJoinProcessor
      * @param \Magento\Framework\Model\Resource\AbstractResource $resource
      * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
      * @param array $data
@@ -393,6 +400,7 @@ class Quote extends AbstractExtensibleModel implements \Magento\Quote\Api\Data\C
         \Magento\Framework\Api\DataObjectHelper $dataObjectHelper,
         \Magento\Framework\Api\ExtensibleDataObjectConverter $extensibleDataObjectConverter,
         \Magento\Quote\Model\Cart\CurrencyFactory $currencyFactory,
+        JoinProcessorInterface $extensionAttributesJoinProcessor,
         \Magento\Framework\Model\Resource\AbstractResource $resource = null,
         \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
         array $data = []
@@ -425,6 +433,7 @@ class Quote extends AbstractExtensibleModel implements \Magento\Quote\Api\Data\C
         $this->dataObjectHelper = $dataObjectHelper;
         $this->extensibleDataObjectConverter = $extensibleDataObjectConverter;
         $this->currencyFactory = $currencyFactory;
+        $this->extensionAttributesJoinProcessor = $extensionAttributesJoinProcessor;
         parent::__construct(
             $context,
             $registry,
@@ -1323,6 +1332,7 @@ class Quote extends AbstractExtensibleModel implements \Magento\Quote\Api\Data\C
         }
         if (null === $this->_items) {
             $this->_items = $this->_quoteItemCollectionFactory->create();
+            $this->extensionAttributesJoinProcessor->process($this->_items);
             $this->_items->setQuote($this);
         }
         return $this->_items;
diff --git a/app/code/Magento/Quote/Model/QuoteRepository.php b/app/code/Magento/Quote/Model/QuoteRepository.php
index b54652e7fd8ed7e33d7c991ee9d1a1496f590ff6..6fa9bca5e4e3323a886ffda19833abf2262c098b 100644
--- a/app/code/Magento/Quote/Model/QuoteRepository.php
+++ b/app/code/Magento/Quote/Model/QuoteRepository.php
@@ -12,6 +12,7 @@ use Magento\Framework\Api\SearchCriteria;
 use Magento\Framework\Api\Search\FilterGroup;
 use Magento\Quote\Model\Resource\Quote\Collection as QuoteCollection;
 use Magento\Framework\Exception\InputException;
+use Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface;
 
 class QuoteRepository implements \Magento\Quote\Api\CartRepositoryInterface
 {
@@ -45,22 +46,30 @@ class QuoteRepository implements \Magento\Quote\Api\CartRepositoryInterface
      */
     protected $searchResultsDataFactory;
 
+    /**
+     * @var JoinProcessorInterface
+     */
+    private $extensionAttributesJoinProcessor;
+
     /**
      * @param QuoteFactory $quoteFactory
      * @param StoreManagerInterface $storeManager
      * @param \Magento\Quote\Model\Resource\Quote\Collection $quoteCollection
      * @param \Magento\Quote\Api\Data\CartSearchResultsInterfaceFactory $searchResultsDataFactory
+     * @param JoinProcessorInterface $extensionAttributesJoinProcessor
      */
     public function __construct(
         QuoteFactory $quoteFactory,
         StoreManagerInterface $storeManager,
         \Magento\Quote\Model\Resource\Quote\Collection $quoteCollection,
-        \Magento\Quote\Api\Data\CartSearchResultsInterfaceFactory $searchResultsDataFactory
+        \Magento\Quote\Api\Data\CartSearchResultsInterfaceFactory $searchResultsDataFactory,
+        JoinProcessorInterface $extensionAttributesJoinProcessor
     ) {
         $this->quoteFactory = $quoteFactory;
         $this->storeManager = $storeManager;
         $this->searchResultsDataFactory = $searchResultsDataFactory;
         $this->quoteCollection = $quoteCollection;
+        $this->extensionAttributesJoinProcessor = $extensionAttributesJoinProcessor;
     }
 
     /**
@@ -220,6 +229,7 @@ class QuoteRepository implements \Magento\Quote\Api\CartRepositoryInterface
         }
         $this->quoteCollection->setCurPage($searchCriteria->getCurrentPage());
         $this->quoteCollection->setPageSize($searchCriteria->getPageSize());
+        $this->extensionAttributesJoinProcessor->process($this->quoteCollection);
 
         $searchData->setItems($this->quoteCollection->getItems());
 
diff --git a/app/code/Magento/Quote/Test/Unit/Model/QuoteRepositoryTest.php b/app/code/Magento/Quote/Test/Unit/Model/QuoteRepositoryTest.php
index 3690aa6cbf310d91baac0599a3438a69748e3e81..872cfa989fbdaf24a559265014aa37c6f650de5b 100644
--- a/app/code/Magento/Quote/Test/Unit/Model/QuoteRepositoryTest.php
+++ b/app/code/Magento/Quote/Test/Unit/Model/QuoteRepositoryTest.php
@@ -10,6 +10,7 @@ namespace Magento\Quote\Test\Unit\Model;
 use \Magento\Quote\Model\QuoteRepository;
 
 use Magento\Framework\Api\SearchCriteria;
+use Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface;
 
 class QuoteRepositoryTest extends \PHPUnit_Framework_TestCase
 {
@@ -19,35 +20,40 @@ class QuoteRepositoryTest extends \PHPUnit_Framework_TestCase
     protected $model;
 
     /**
-     * @var \PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Quote\Model\QuoteFactory|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $quoteFactoryMock;
 
     /**
-     * @var \PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Store\Model\StoreManagerInterface|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $storeManagerMock;
 
     /**
-     * @var \PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Store\Model\Store|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $storeMock;
 
     /**
-     * @var \PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Quote\Model\Quote|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $quoteMock;
 
     /**
-     * @var \PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Quote\Api\Data\CartSearchResultsInterfaceFactory|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $searchResultsDataFactory;
 
     /**
-     * @var \PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Quote\Model\Resource\Quote\Collection|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $quoteCollectionMock;
 
+    /**
+     * @var JoinProcessorInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $extensionAttributesJoinProcessorMock;
+
     protected function setUp()
     {
         $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
@@ -56,8 +62,17 @@ class QuoteRepositoryTest extends \PHPUnit_Framework_TestCase
         $this->storeManagerMock = $this->getMock('\Magento\Store\Model\StoreManagerInterface');
         $this->quoteMock = $this->getMock(
             '\Magento\Quote\Model\Quote',
-            ['load', 'loadByCustomer', 'getIsActive', 'getId', '__wakeup', 'setSharedStoreIds', 'save', 'delete',
-                'getCustomerId'],
+            [
+                'load',
+                'loadByCustomer',
+                'getIsActive',
+                'getId',
+                '__wakeup',
+                'setSharedStoreIds',
+                'save',
+                'delete',
+                'getCustomerId'
+            ],
             [],
             '',
             false
@@ -73,6 +88,14 @@ class QuoteRepositoryTest extends \PHPUnit_Framework_TestCase
 
         $this->quoteCollectionMock = $this->getMock('Magento\Quote\Model\Resource\Quote\Collection', [], [], '', false);
 
+        $this->extensionAttributesJoinProcessorMock = $this->getMock(
+            'Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface',
+            [],
+            [],
+            '',
+            false
+        );
+
         $this->model = $objectManager->getObject(
             'Magento\Quote\Model\QuoteRepository',
             [
@@ -80,6 +103,7 @@ class QuoteRepositoryTest extends \PHPUnit_Framework_TestCase
                 'storeManager' => $this->storeManagerMock,
                 'searchResultsDataFactory' => $this->searchResultsDataFactory,
                 'quoteCollection' => $this->quoteCollectionMock,
+                'extensionAttributesJoinProcessor' => $this->extensionAttributesJoinProcessorMock
             ]
         );
     }
@@ -362,6 +386,11 @@ class QuoteRepositoryTest extends \PHPUnit_Framework_TestCase
         $this->quoteCollectionMock->expects($this->once())->method('setCurPage')->with(1);
         $this->quoteCollectionMock->expects($this->once())->method('setPageSize')->with(10);
 
+        $this->extensionAttributesJoinProcessorMock->expects($this->once())
+            ->method('process')
+            ->with(
+                $this->isInstanceOf('\Magento\Quote\Model\Resource\Quote\Collection')
+            );
 
         $this->quoteCollectionMock->expects($this->once())->method('getItems')->willReturn([$cartMock]);
         $searchResult->expects($this->once())->method('setItems')->with([$cartMock]);
diff --git a/app/code/Magento/Quote/Test/Unit/Model/QuoteTest.php b/app/code/Magento/Quote/Test/Unit/Model/QuoteTest.php
index 96815ef257fa1a8ea02280dd0043d0125ec74378..4412f8fc3669e409d7218fd2d1c297f3e738c0d3 100644
--- a/app/code/Magento/Quote/Test/Unit/Model/QuoteTest.php
+++ b/app/code/Magento/Quote/Test/Unit/Model/QuoteTest.php
@@ -12,6 +12,7 @@ use Magento\Quote\Model\Quote\Address;
 use Magento\Store\Model\ScopeInterface;
 use Magento\Quote\Api\Data\CartInterface;
 use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
+use Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface;
 
 /**
  * Test class for \Magento\Quote\Model
@@ -131,6 +132,11 @@ class QuoteTest extends \PHPUnit_Framework_TestCase
      */
     protected $objectCopyServiceMock;
 
+    /**
+     * @var JoinProcessorInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $extensionAttributesJoinProcessorMock;
+
     /**
      * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
      */
@@ -260,6 +266,14 @@ class QuoteTest extends \PHPUnit_Framework_TestCase
             ->disableOriginalConstructor()
             ->getMock();
 
+        $this->extensionAttributesJoinProcessorMock = $this->getMock(
+            'Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface',
+            [],
+            [],
+            '',
+            false
+        );
+
         $this->quote = (new ObjectManager($this))
             ->getObject(
                 'Magento\Quote\Model\Quote',
@@ -280,7 +294,8 @@ class QuoteTest extends \PHPUnit_Framework_TestCase
                     'scopeConfig' => $this->scopeConfig,
                     'extensibleDataObjectConverter' => $this->extensibleDataObjectConverterMock,
                     'customerRepository' => $this->customerRepositoryMock,
-                    'objectCopyService' => $this->objectCopyServiceMock
+                    'objectCopyService' => $this->objectCopyServiceMock,
+                    'extensionAttributesJoinProcessor' => $this->extensionAttributesJoinProcessorMock
                 ]
             );
     }
@@ -1123,7 +1138,6 @@ class QuoteTest extends \PHPUnit_Framework_TestCase
         $this->assertEquals($expected, $this->quote->getDataByKey(CartInterface::KEY_IS_VIRTUAL));
     }
 
-
     /**
      * @return array
      */
@@ -1137,4 +1151,24 @@ class QuoteTest extends \PHPUnit_Framework_TestCase
             [[false, false], 0]
         ];
     }
+
+    public function testGetItemsCollection()
+    {
+        $itemCollectionMock = $this->getMockBuilder('Magento\Quote\Model\Resource\Quote\Collection')
+            ->disableOriginalConstructor()
+            ->setMethods(['setQuote'])
+            ->getMock();
+        $this->quoteItemCollectionFactoryMock->expects($this->once())
+            ->method('create')
+            ->willReturn($itemCollectionMock);
+
+        $this->extensionAttributesJoinProcessorMock->expects($this->once())
+            ->method('process')
+            ->with(
+                $this->isInstanceOf('Magento\Quote\Model\Resource\Quote\Collection')
+            );
+        $itemCollectionMock->expects($this->once())->method('setQuote')->with($this->quote);
+
+        $this->quote->getItemsCollection();
+    }
 }
diff --git a/app/code/Magento/Sales/Api/Data/OrderSearchResultInterface.php b/app/code/Magento/Sales/Api/Data/OrderSearchResultInterface.php
index b11a2c04de8d3b776d732da083bc8521241a9b54..a7c67652dd7a427b2f3379b516699516a55eb28c 100644
--- a/app/code/Magento/Sales/Api/Data/OrderSearchResultInterface.php
+++ b/app/code/Magento/Sales/Api/Data/OrderSearchResultInterface.php
@@ -18,7 +18,7 @@ interface OrderSearchResultInterface
     /**
      * Gets collection items.
      *
-     * @return \Magento\Sales\Api\Data\OrderSearchResultInterface[] Array of collection items.
+     * @return \Magento\Sales\Api\Data\OrderInterface[] Array of collection items.
      */
     public function getItems();
 }
diff --git a/app/code/Magento/Sales/Api/InvoiceCommentRepositoryInterface.php b/app/code/Magento/Sales/Api/InvoiceCommentRepositoryInterface.php
index c7e2d8cfb759c7b9831a9becca5fa7fec54da83d..f256bb88af2ab2fd0f57dc8c7603c7eea67ebeda 100644
--- a/app/code/Magento/Sales/Api/InvoiceCommentRepositoryInterface.php
+++ b/app/code/Magento/Sales/Api/InvoiceCommentRepositoryInterface.php
@@ -18,7 +18,7 @@ interface InvoiceCommentRepositoryInterface
      * Lists invoice comments that match specified search criteria.
      *
      * @param \Magento\Framework\Api\SearchCriteria $criteria The search criteria.
-     * @return \Magento\Sales\Api\Data\InvoiceSearchResultInterface Invoice search result interface.
+     * @return \Magento\Sales\Api\Data\InvoiceCommentSearchResultInterface Invoice search result interface.
      */
     public function getList(\Magento\Framework\Api\SearchCriteria $criteria);
 
diff --git a/app/code/Magento/Tax/Model/Calculation/RateRepository.php b/app/code/Magento/Tax/Model/Calculation/RateRepository.php
index 6f099ea27ae35038fac754ea19d97066355c7b47..d124469768d16ba5a596c80e87a189f70cb94ce0 100644
--- a/app/code/Magento/Tax/Model/Calculation/RateRepository.php
+++ b/app/code/Magento/Tax/Model/Calculation/RateRepository.php
@@ -65,6 +65,11 @@ class RateRepository implements \Magento\Tax\Api\TaxRateRepositoryInterface
      */
     protected $resourceModel;
 
+    /**
+     * @var \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface
+     */
+    protected $joinProcessor;
+
     /**
      * @param Converter $converter
      * @param RateRegistry $rateRegistry
@@ -73,6 +78,7 @@ class RateRepository implements \Magento\Tax\Api\TaxRateRepositoryInterface
      * @param CountryFactory $countryFactory
      * @param RegionFactory $regionFactory
      * @param \Magento\Tax\Model\Resource\Calculation\Rate $rateResource
+     * @param \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface $joinProcessor
      */
     public function __construct(
         Converter $converter,
@@ -81,7 +87,8 @@ class RateRepository implements \Magento\Tax\Api\TaxRateRepositoryInterface
         RateFactory $rateFactory,
         CountryFactory $countryFactory,
         RegionFactory $regionFactory,
-        \Magento\Tax\Model\Resource\Calculation\Rate $rateResource
+        \Magento\Tax\Model\Resource\Calculation\Rate $rateResource,
+        \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface $joinProcessor
     ) {
         $this->converter = $converter;
         $this->rateRegistry = $rateRegistry;
@@ -90,6 +97,7 @@ class RateRepository implements \Magento\Tax\Api\TaxRateRepositoryInterface
         $this->countryFactory = $countryFactory;
         $this->regionFactory = $regionFactory;
         $this->resourceModel = $rateResource;
+        $this->joinProcessor = $joinProcessor;
     }
 
     /**
@@ -146,6 +154,7 @@ class RateRepository implements \Magento\Tax\Api\TaxRateRepositoryInterface
     {
         /** @var \Magento\Tax\Model\Resource\Calculation\Rate\Collection $collection */
         $collection = $this->rateFactory->create()->getCollection();
+        $this->joinProcessor->process($collection);
         $collection->joinRegionTable();
 
         //Add filters from root filter group to the collection
diff --git a/app/code/Magento/Tax/Model/TaxClass/Repository.php b/app/code/Magento/Tax/Model/TaxClass/Repository.php
index 01dd656b0d5e51d5b64e22c8fd4d80e937d19e2b..54b92c00c6633d82065d21e342ebe081eba192fc 100644
--- a/app/code/Magento/Tax/Model/TaxClass/Repository.php
+++ b/app/code/Magento/Tax/Model/TaxClass/Repository.php
@@ -62,6 +62,11 @@ class Repository implements \Magento\Tax\Api\TaxClassRepositoryInterface
      */
     protected $taxClassResource;
 
+    /**
+     * @var \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface
+     */
+    protected $joinProcessor;
+
     /**
      * @param SearchCriteriaBuilder $searchCriteriaBuilder
      * @param FilterBuilder $filterBuilder
@@ -69,6 +74,7 @@ class Repository implements \Magento\Tax\Api\TaxClassRepositoryInterface
      * @param \Magento\Tax\Api\Data\TaxClassSearchResultsInterfaceFactory $searchResultsFactory
      * @param ClassModelRegistry $classModelRegistry
      * @param \Magento\Tax\Model\Resource\TaxClass $taxClassResource
+     * @param \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface $joinProcessor
      */
     public function __construct(
         SearchCriteriaBuilder $searchCriteriaBuilder,
@@ -76,7 +82,8 @@ class Repository implements \Magento\Tax\Api\TaxClassRepositoryInterface
         TaxClassCollectionFactory $taxClassCollectionFactory,
         \Magento\Tax\Api\Data\TaxClassSearchResultsInterfaceFactory $searchResultsFactory,
         ClassModelRegistry $classModelRegistry,
-        \Magento\Tax\Model\Resource\TaxClass $taxClassResource
+        \Magento\Tax\Model\Resource\TaxClass $taxClassResource,
+        \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface $joinProcessor
     ) {
         $this->searchCriteriaBuilder = $searchCriteriaBuilder;
         $this->filterBuilder = $filterBuilder;
@@ -84,6 +91,7 @@ class Repository implements \Magento\Tax\Api\TaxClassRepositoryInterface
         $this->searchResultsFactory = $searchResultsFactory;
         $this->classModelRegistry = $classModelRegistry;
         $this->taxClassResource = $taxClassResource;
+        $this->joinProcessor = $joinProcessor;
     }
 
     /**
@@ -195,6 +203,7 @@ class Repository implements \Magento\Tax\Api\TaxClassRepositoryInterface
         $searchResults->setSearchCriteria($searchCriteria);
         /** @var TaxClassCollection $collection */
         $collection = $this->taxClassCollectionFactory->create();
+        $this->joinProcessor->process($collection);
         foreach ($searchCriteria->getFilterGroups() as $group) {
             $this->addFilterGroupToCollection($group, $collection);
         }
diff --git a/app/code/Magento/Tax/Model/TaxRuleRepository.php b/app/code/Magento/Tax/Model/TaxRuleRepository.php
index d186c79b562aa9e44c5e1a9a2f83bae2ee866ea4..28ff8015b9a66581f310fa30588f5195185fd5a6 100644
--- a/app/code/Magento/Tax/Model/TaxRuleRepository.php
+++ b/app/code/Magento/Tax/Model/TaxRuleRepository.php
@@ -52,25 +52,33 @@ class TaxRuleRepository implements TaxRuleRepositoryInterface
      */
     protected $resource;
 
+    /**
+     * @var \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface
+     */
+    protected $joinProcessor;
+
     /**
      * @param TaxRuleRegistry $taxRuleRegistry
      * @param TaxRuleSearchResultsInterfaceFactory $searchResultsFactory
      * @param RuleFactory $ruleFactory
      * @param CollectionFactory $collectionFactory
      * @param Resource $resource
+     * @param \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface $joinProcessor
      */
     public function __construct(
         TaxRuleRegistry $taxRuleRegistry,
         TaxRuleSearchResultsInterfaceFactory $searchResultsFactory,
         RuleFactory $ruleFactory,
         CollectionFactory $collectionFactory,
-        Resource $resource
+        Resource $resource,
+        \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface $joinProcessor
     ) {
         $this->taxRuleRegistry = $taxRuleRegistry;
         $this->taxRuleSearchResultsFactory = $searchResultsFactory;
         $this->taxRuleModelFactory = $ruleFactory;
         $this->collectionFactory = $collectionFactory;
         $this->resource = $resource;
+        $this->joinProcessor = $joinProcessor;
     }
 
     /**
@@ -133,6 +141,7 @@ class TaxRuleRepository implements TaxRuleRepositoryInterface
 
         $fields = [];
         $collection = $this->collectionFactory->create();
+        $this->joinProcessor->process($collection);
 
         //Add filters from root filter group to the collection
         foreach ($searchCriteria->getFilterGroups() as $group) {
diff --git a/app/code/Magento/Tax/Test/Unit/Model/Calculation/RateRepositoryTest.php b/app/code/Magento/Tax/Test/Unit/Model/Calculation/RateRepositoryTest.php
index 7feff54990150d92bc3806f1399109e9410d4145..f2d8b4b17d1646147e9143c797e83f8041f3102b 100644
--- a/app/code/Magento/Tax/Test/Unit/Model/Calculation/RateRepositoryTest.php
+++ b/app/code/Magento/Tax/Test/Unit/Model/Calculation/RateRepositoryTest.php
@@ -59,6 +59,11 @@ class RateRepositoryTest extends \PHPUnit_Framework_TestCase
      */
     private $rateResourceMock;
 
+    /**
+     * @var \PHPUnit_Framework_MockObject_MockObject
+     */
+    private $joinProcessorMock;
+
     public function setUp()
     {
         $this->rateConverterMock = $this->getMock(
@@ -117,6 +122,13 @@ class RateRepositoryTest extends \PHPUnit_Framework_TestCase
             '',
             false
         );
+        $this->joinProcessorMock = $this->getMock(
+            'Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface',
+            [],
+            [],
+            '',
+            false
+        );
         $this->model = new RateRepository(
             $this->rateConverterMock,
             $this->rateRegistryMock,
@@ -124,7 +136,8 @@ class RateRepositoryTest extends \PHPUnit_Framework_TestCase
             $this->rateFactoryMock,
             $this->countryFactoryMock,
             $this->regionFactoryMock,
-            $this->rateResourceMock
+            $this->rateResourceMock,
+            $this->joinProcessorMock
         );
     }
 
@@ -256,6 +269,8 @@ class RateRepositoryTest extends \PHPUnit_Framework_TestCase
             ->willReturnSelf();
         $this->searchResultFactory->expects($this->once())->method('create')->willReturn($this->searchResultMock);
 
+        $this->joinProcessorMock->expects($this->once())->method('process')->with($collectionMock);
+
         $this->model->getList($searchCriteriaMock);
     }
 
@@ -402,6 +417,8 @@ class RateRepositoryTest extends \PHPUnit_Framework_TestCase
             ->willReturnSelf();
         $this->searchResultFactory->expects($this->once())->method('create')->willReturn($this->searchResultMock);
 
+        $this->joinProcessorMock->expects($this->once())->method('process')->with($collectionMock);
+
         $this->model->getList($searchCriteriaMock);
     }
 
diff --git a/app/code/Magento/Tax/Test/Unit/Model/TaxClass/RepositoryTest.php b/app/code/Magento/Tax/Test/Unit/Model/TaxClass/RepositoryTest.php
index 80894cab62e2a22b77480e6f851031b07da9d144..bfab6b77acc7f50349e1dbd409a9c88512385da9 100644
--- a/app/code/Magento/Tax/Test/Unit/Model/TaxClass/RepositoryTest.php
+++ b/app/code/Magento/Tax/Test/Unit/Model/TaxClass/RepositoryTest.php
@@ -47,6 +47,11 @@ class RepositoryTest extends \PHPUnit_Framework_TestCase
      */
     protected $taxClassCollectionFactory;
 
+    /**
+     * @var \PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $extensionAttributesJoinProcessorMock;
+
     /**
      * @return void
      */
@@ -85,13 +90,23 @@ class RepositoryTest extends \PHPUnit_Framework_TestCase
         );
 
         $this->taxClassResourceMock = $this->getMock('\Magento\Tax\Model\Resource\TaxClass', [], [], '', false);
+
+        $this->extensionAttributesJoinProcessorMock = $this->getMock(
+            '\Magento\Framework\Api\ExtensionAttribute\JoinProcessor',
+            ['process'],
+            [],
+            '',
+            false
+        );
+
         $this->model = $this->objectManager->getObject(
             'Magento\Tax\Model\TaxClass\Repository',
             [
                 'classModelRegistry' => $this->classModelRegistryMock,
                 'taxClassResource' => $this->taxClassResourceMock,
                 'searchResultsFactory' => $this->searchResultFactory,
-                'taxClassCollectionFactory' => $this->taxClassCollectionFactory
+                'taxClassCollectionFactory' => $this->taxClassCollectionFactory,
+                'joinProcessor' => $this->extensionAttributesJoinProcessorMock
             ]
         );
     }
@@ -187,6 +202,10 @@ class RepositoryTest extends \PHPUnit_Framework_TestCase
         $collection = $this->getMock('\Magento\Tax\Model\Resource\TaxClass\Collection', [], [], '', false);
         $sortOrder = $this->getMock('\Magento\Framework\Api\SortOrder', [], [], '', false);
 
+        $this->extensionAttributesJoinProcessorMock->expects($this->once())
+            ->method('process')
+            ->with($collection);
+
         $searchCriteria->expects($this->once())->method('getFilterGroups')->willReturn([$filterGroup]);
         $filterGroup->expects($this->once())->method('getFilters')->willReturn([$filter]);
         $filter->expects($this->atLeastOnce())->method('getConditionType')->willReturn('eq');
diff --git a/app/code/Magento/Tax/Test/Unit/Model/TaxRuleRepositoryTest.php b/app/code/Magento/Tax/Test/Unit/Model/TaxRuleRepositoryTest.php
index 435fa82bbe9e41c33f6fc7779bdca58eb418eb89..3225be5242f8ace8b4e4bece353df61c02a8bb78 100644
--- a/app/code/Magento/Tax/Test/Unit/Model/TaxRuleRepositoryTest.php
+++ b/app/code/Magento/Tax/Test/Unit/Model/TaxRuleRepositoryTest.php
@@ -46,6 +46,11 @@ class TaxRuleRepositoryTest extends \PHPUnit_Framework_TestCase
      */
     protected $resource;
 
+    /**
+     * @var \PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $extensionAttributesJoinProcessorMock;
+
     /**
      * @var \Magento\Framework\TestFramework\Unit\Helper\ObjectManager
      */
@@ -78,13 +83,21 @@ class TaxRuleRepositoryTest extends \PHPUnit_Framework_TestCase
             false
         );
         $this->resource = $this->getMock('\Magento\Tax\Model\Resource\Calculation\Rule', [], [], '', false);
+        $this->extensionAttributesJoinProcessorMock = $this->getMock(
+            '\Magento\Framework\Api\ExtensionAttribute\JoinProcessor',
+            ['process'],
+            [],
+            '',
+            false
+        );
 
         $this->model = new TaxRuleRepository(
             $this->taxRuleRegistry,
             $this->searchResultFactory,
             $this->ruleFactory,
             $this->collectionFactory,
-            $this->resource
+            $this->resource,
+            $this->extensionAttributesJoinProcessorMock
         );
     }
 
@@ -181,6 +194,10 @@ class TaxRuleRepositoryTest extends \PHPUnit_Framework_TestCase
         $filterMock = $this->getMock('\Magento\Framework\Api\Filter', [], [], '', false);
         $sortOrderMock = $this->getMock('\Magento\Framework\Api\SortOrder', [], [], '', false);
 
+        $this->extensionAttributesJoinProcessorMock->expects($this->once())
+            ->method('process')
+            ->with($collectionMock);
+
         $this->searchResultsMock->expects($this->once())->method('setSearchCriteria')->with($searchCriteriaMock);
         $this->collectionFactory->expects($this->once())->method('create')->willReturn($collectionMock);
         $searchCriteriaMock->expects($this->once())->method('getFilterGroups')->willReturn([$filterGroupMock]);
diff --git a/app/code/Magento/Theme/Console/Command/ThemeUninstallCommand.php b/app/code/Magento/Theme/Console/Command/ThemeUninstallCommand.php
new file mode 100644
index 0000000000000000000000000000000000000000..2f62bc394b3b3e7ccdd0926c90b84843a7e958c9
--- /dev/null
+++ b/app/code/Magento/Theme/Console/Command/ThemeUninstallCommand.php
@@ -0,0 +1,407 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\Theme\Console\Command;
+
+use Magento\Framework\App\Area;
+use Magento\Framework\App\Cache;
+use Magento\Framework\App\MaintenanceMode;
+use Magento\Framework\App\State\CleanupFiles;
+use Magento\Framework\Composer\ComposerInformation;
+use Magento\Framework\Composer\DependencyChecker;
+use Magento\Framework\Composer\Remove;
+use Magento\Framework\Filesystem;
+use Magento\Theme\Model\Theme\Data\Collection;
+use Magento\Theme\Model\Theme\ThemeProvider;
+use Symfony\Component\Console\Command\Command;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+use Symfony\Component\Console\Input\InputOption;
+use Symfony\Component\Console\Input\InputArgument;
+use Magento\Framework\Setup\BackupRollbackFactory;
+use Magento\Framework\App\Filesystem\DirectoryList;
+use Magento\Framework\Exception\LocalizedException;
+use Magento\Theme\Model\ThemeValidator;
+
+/**
+ * Command for uninstalling theme and backup-code feature
+ *
+ * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
+ * @SuppressWarnings(PHPMD.ExcessiveParameterList)
+ */
+class ThemeUninstallCommand extends Command
+{
+    /**
+     * Names of input arguments or options
+     */
+    const INPUT_KEY_BACKUP_CODE = 'backup-code';
+    const INPUT_KEY_THEMES = 'theme';
+    const INPUT_KEY_CLEAR_STATIC_CONTENT = 'clear-static-content';
+
+    /**
+     * Maintenance Mode
+     *
+     * @var MaintenanceMode
+     */
+    private $maintenanceMode;
+
+    /**
+     * Composer general dependency checker
+     *
+     * @var DependencyChecker
+     */
+    private $dependencyChecker;
+
+    /**
+     * Root composer.json information
+     *
+     * @var ComposerInformation
+     */
+    private $composer;
+
+    /**
+     * File operation to read theme directory
+     *
+     * @var Filesystem
+     */
+    private $filesystem;
+
+    /**
+     * Code remover
+     *
+     * @var Remove
+     */
+    private $remove;
+
+    /**
+     * Theme collection in filesystem
+     *
+     * @var Collection
+     */
+    private $themeCollection;
+
+    /**
+     * Provider for themes registered in db
+     *
+     * @var ThemeProvider
+     */
+    private $themeProvider;
+
+    /**
+     * System cache model
+     *
+     * @var Cache
+     */
+    private $cache;
+
+    /**
+     * Cleaning up application state service
+     *
+     * @var CleanupFiles
+     */
+    private $cleanupFiles;
+
+    /**
+     * BackupRollback factory
+     *
+     * @var BackupRollbackFactory
+     */
+    private $backupRollbackFactory;
+
+    /**
+     * Theme Validator
+     *
+     * @var ThemeValidator
+     */
+    private $themeValidator;
+
+    /**
+     * Constructor
+     *
+     * @param Cache $cache
+     * @param CleanupFiles $cleanupFiles
+     * @param ComposerInformation $composer
+     * @param MaintenanceMode $maintenanceMode
+     * @param Filesystem $filesystem
+     * @param DependencyChecker $dependencyChecker
+     * @param Collection $themeCollection
+     * @param ThemeProvider $themeProvider
+     * @param Remove $remove
+     * @param BackupRollbackFactory $backupRollbackFactory
+     * @param ThemeValidator $themeValidator
+     * @throws LocalizedException
+     */
+    public function __construct(
+        Cache $cache,
+        CleanupFiles $cleanupFiles,
+        ComposerInformation $composer,
+        MaintenanceMode $maintenanceMode,
+        Filesystem $filesystem,
+        DependencyChecker $dependencyChecker,
+        Collection $themeCollection,
+        ThemeProvider $themeProvider,
+        Remove $remove,
+        BackupRollbackFactory $backupRollbackFactory,
+        ThemeValidator $themeValidator
+    ) {
+        $this->cache = $cache;
+        $this->cleanupFiles = $cleanupFiles;
+        $this->composer = $composer;
+        $this->maintenanceMode = $maintenanceMode;
+        $this->filesystem = $filesystem;
+        $this->dependencyChecker = $dependencyChecker;
+        $this->remove = $remove;
+        $this->themeCollection = $themeCollection;
+        $this->themeProvider = $themeProvider;
+        $this->backupRollbackFactory = $backupRollbackFactory;
+        $this->themeValidator = $themeValidator;
+        parent::__construct();
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function configure()
+    {
+        $this->setName('theme:uninstall');
+        $this->setDescription('Uninstalls theme');
+        $this->addOption(
+            self::INPUT_KEY_BACKUP_CODE,
+            null,
+            InputOption::VALUE_NONE,
+            'Take code backup (excluding temporary files)'
+        );
+        $this->addArgument(
+            self::INPUT_KEY_THEMES,
+            InputArgument::IS_ARRAY | InputArgument::REQUIRED,
+            'Path of the theme. Theme path should be specified as full path which is area/vendor/name.'
+            . ' For example, frontend/Magento/blank'
+        );
+        $this->addOption(
+            self::INPUT_KEY_CLEAR_STATIC_CONTENT,
+            'c',
+            InputOption::VALUE_NONE,
+            'Clear generated static view files.'
+        );
+        parent::configure();
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function execute(InputInterface $input, OutputInterface $output)
+    {
+        $themePaths = $input->getArgument(self::INPUT_KEY_THEMES);
+        $validationMessages = $this->validate($themePaths);
+        if (!empty($validationMessages)) {
+            $output->writeln($validationMessages);
+            return;
+        }
+        $isThemeInUseMessages = $this->themeValidator->validateIsThemeInUse($themePaths);
+        if (!empty($isThemeInUseMessages)) {
+            $output->writeln($isThemeInUseMessages);
+            return;
+        }
+        $childThemeCheckMessages = $this->checkChildTheme($themePaths);
+        if (!empty($childThemeCheckMessages)) {
+            $output->writeln($childThemeCheckMessages);
+            return;
+        }
+        $dependencyMessages = $this->checkDependencies($themePaths);
+        if (!empty($dependencyMessages)) {
+            $output->writeln($dependencyMessages);
+            return;
+        }
+
+        try {
+            $output->writeln('<info>Enabling maintenance mode</info>');
+            $this->maintenanceMode->set(true);
+            if ($input->getOption(self::INPUT_KEY_BACKUP_CODE)) {
+                $time = time();
+                $codeBackup = $this->backupRollbackFactory->create($output);
+                $codeBackup->codeBackup($time);
+            }
+            $output->writeln('<info>Removing ' . implode(', ', $themePaths) . ' from database');
+            $this->removeFromDb($themePaths);
+            $output->writeln('<info>Removing ' . implode(', ', $themePaths) . ' from Magento codebase');
+            $themePackages = [];
+            foreach ($themePaths as $themePath) {
+                $themePackages[] = $this->getPackageName($themePath);
+            }
+            $this->remove->remove($themePackages);
+            $this->cleanup($input, $output);
+            $output->writeln('<info>Disabling maintenance mode</info>');
+            $this->maintenanceMode->set(false);
+        } catch (\Exception $e) {
+            $output->writeln('<error>' . $e->getMessage() . '</error>');
+            $output->writeln('<error>Please disable maintenance mode after you resolved above issues</error>');
+        }
+    }
+
+    /**
+     * Validate given full theme paths
+     *
+     * @param string[] $themePaths
+     * @return string[]
+     */
+    private function validate($themePaths)
+    {
+        $messages = [];
+        $unknownPackages = [];
+        $unknownThemes = [];
+        $installedPackages = $this->composer->getRootRequiredPackages();
+        foreach ($themePaths as $themePath) {
+            if (array_search($this->getPackageName($themePath), $installedPackages) === false) {
+                $unknownPackages[] = $themePath;
+            }
+            if (!$this->themeCollection->hasTheme($this->themeCollection->getThemeByFullPath($themePath))) {
+                $unknownThemes[] = $themePath;
+            }
+        }
+        $unknownPackages = array_diff($unknownPackages, $unknownThemes);
+        if (!empty($unknownPackages)) {
+            $text = count($unknownPackages) > 1 ?
+                ' are not installed Composer packages' : ' is not an installed Composer package';
+            $messages[] = '<error>' . implode(', ', $unknownPackages) . $text . '</error>';
+        }
+        if (!empty($unknownThemes)) {
+            $messages[] = '<error>Unknown theme(s): ' . implode(', ', $unknownThemes) . '</error>';
+        }
+        return $messages;
+    }
+
+    /**
+     * Check dependencies to given full theme paths
+     *
+     * @param string[] $themePaths
+     * @return string[]
+     */
+    private function checkDependencies($themePaths)
+    {
+        $messages = [];
+        $packageToPath = [];
+        foreach ($themePaths as $themePath) {
+            $packageToPath[$this->getPackageName($themePath)] = $themePath;
+        }
+        $dependencies = $this->dependencyChecker->checkDependencies(array_keys($packageToPath), true);
+        foreach ($dependencies as $package => $dependingPackages) {
+            if (!empty($dependingPackages)) {
+                $messages[] =
+                    '<error>Cannot uninstall ' . $packageToPath[$package] .
+                    " because the following package(s) depend on it:</error>" .
+                    PHP_EOL . "\t<error>" . implode('</error>' . PHP_EOL . "\t<error>", $dependingPackages)
+                    . "</error>";
+            }
+        }
+        return $messages;
+    }
+
+    /**
+     * Check theme if has child virtual and physical theme
+     *
+     * @param string[] $themePaths
+     * @return string[] $messages
+     */
+    private function checkChildTheme($themePaths)
+    {
+        $messages = [];
+        $themeHasVirtualChildren = [];
+        $themeHasPhysicalChildren = [];
+        $parentChildMap = $this->getParentChildThemeMap();
+        foreach ($themePaths as $themePath) {
+            $theme = $this->themeProvider->getThemeByFullPath($themePath);
+            if ($theme->hasChildThemes()) {
+                $themeHasVirtualChildren[] = $themePath;
+            }
+            if (isset($parentChildMap[$themePath])) {
+                $themeHasPhysicalChildren[] = $themePath;
+            }
+        }
+        if (!empty($themeHasVirtualChildren)) {
+            $text = count($themeHasVirtualChildren) > 1 ? ' are parents of' : ' is a parent of';
+            $messages[] = '<error>Unable to uninstall. '
+                . implode(', ', $themeHasVirtualChildren) . $text . ' virtual theme</error>';
+        }
+        if (!empty($themeHasPhysicalChildren)) {
+            $text = count($themeHasPhysicalChildren) > 1 ? ' are parents of' : ' is a parent of';
+            $messages[] = '<error>Unable to uninstall. '
+                . implode(', ', $themeHasPhysicalChildren) . $text . ' physical theme</error>';
+        }
+        return $messages;
+    }
+
+    /**
+     * Obtain a parent theme -> children themes map from the filesystem
+     *
+     * @return array
+     */
+    private function getParentChildThemeMap()
+    {
+        $map = [];
+        $this->themeCollection->addDefaultPattern('*');
+        /** @var \Magento\Theme\Model\Theme\Data $theme */
+        foreach ($this->themeCollection as $theme) {
+            if ($theme->getParentTheme()) {
+                $map[$theme->getParentTheme()->getFullPath()][] = $theme->getFullPath();
+            }
+        }
+        return $map;
+    }
+
+    /**
+     * Get package name of a theme by its full theme path
+     *
+     * @param string $themePath
+     * @return string
+     * @throws \Zend_Json_Exception
+     */
+    private function getPackageName($themePath)
+    {
+        $themesDirRead = $this->filesystem->getDirectoryRead(DirectoryList::THEMES);
+        if ($themesDirRead->isExist($themePath . '/composer.json')) {
+            $rawData = \Zend_Json::decode($themesDirRead->readFile($themePath . '/composer.json'));
+            return isset($rawData['name']) ? $rawData['name'] : '';
+        }
+        return '';
+    }
+
+    /**
+     * Cleanup after updated modules status
+     *
+     * @param InputInterface $input
+     * @param OutputInterface $output
+     * @return void
+     */
+    private function cleanup(InputInterface $input, OutputInterface $output)
+    {
+        $this->cache->clean();
+        $output->writeln('<info>Cache cleared successfully.</info>');
+
+        if ($input->getOption(self::INPUT_KEY_CLEAR_STATIC_CONTENT)) {
+            $this->cleanupFiles->clearMaterializedViewFiles();
+            $output->writeln('<info>Generated static view files cleared successfully.</info>');
+        } else {
+            $output->writeln(
+                '<error>Alert: Generated static view files were not cleared.'
+                . ' You can clear them using the --' . self::INPUT_KEY_CLEAR_STATIC_CONTENT . ' option.'
+                . ' Failure to clear static view files might cause display issues in the Admin and storefront.</error>'
+            );
+        }
+    }
+
+    /**
+     * Remove all records related to the theme(s) in the database
+     *
+     * @param string[] $themePaths
+     * @return void
+     */
+    private function removeFromDb(array $themePaths)
+    {
+        foreach ($themePaths as $themePath) {
+            $this->themeProvider->getThemeByFullPath($themePath)->delete();
+        }
+    }
+}
diff --git a/app/code/Magento/Theme/Model/ThemeValidator.php b/app/code/Magento/Theme/Model/ThemeValidator.php
new file mode 100644
index 0000000000000000000000000000000000000000..6f8b0ddda264fec695f8a03d194eaed3fb6a5899
--- /dev/null
+++ b/app/code/Magento/Theme/Model/ThemeValidator.php
@@ -0,0 +1,92 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Theme\Model;
+
+use Magento\Store\Model\StoreManagerInterface;
+use Magento\Framework\View\DesignInterface;
+use Magento\Framework\View\Design\Theme\ThemeProviderInterface;
+use Magento\Framework\App\Config\ValueInterface;
+use Magento\Store\Model\ScopeInterface;
+
+/**
+ * Class ThemeValidator
+ */
+class ThemeValidator
+{
+
+    /**
+     * Store Manager
+     *
+     * @var StoreManagerInterface $storeManager
+     */
+    private $storeManager;
+
+    /**
+     * Provider for themes registered in db
+     *
+     * @var ThemeProviderInterface $themeProvider
+     */
+    private $themeProvider;
+
+    /**
+     * Configuration Data
+     *
+     * @var ValueInterface $configData
+     */
+    private $configData;
+
+
+    /**
+     * @param StoreManagerInterface $storeManager
+     * @param ThemeProviderInterface $themeProvider
+     * @param ValueInterface $configData
+     */
+    public function __construct(
+        StoreManagerInterface $storeManager,
+        ThemeProviderInterface $themeProvider,
+        ValueInterface $configData
+    ) {
+        $this->storeManager = $storeManager;
+        $this->themeProvider = $themeProvider;
+        $this->configData = $configData;
+    }
+
+    /**
+     * Validate the theme if being in use in default, website, or store.
+     *
+     * @param string[] $themePaths
+     * @return array
+     */
+    public function validateIsThemeInUse($themePaths)
+    {
+        $messages = [];
+        $themesById = [];
+        foreach ($themePaths as $themePath) {
+            $theme = $this->themeProvider->getThemeByFullPath($themePath);
+            $themesById[$theme->getId()] = $themePath;
+        }
+        $configData = $this->configData
+            ->getCollection()
+            ->addFieldToFilter('path', DesignInterface::XML_PATH_THEME_ID)
+            ->addFieldToFilter('value', ['in' => array_keys($themesById)]);
+        foreach ($configData as $row) {
+            switch($row['scope']) {
+                case 'default':
+                    $messages[] = $themesById[$row['value']] . ' is in use in default config';
+                    break;
+                case ScopeInterface::SCOPE_WEBSITES:
+                    $messages[] = $themesById[$row['value']] . ' is in use in website '
+                        . $this->storeManager->getWebsite($row['scope_id'])->getName();
+                    break;
+                case ScopeInterface::SCOPE_STORES:
+                    $messages[] = $themesById[$row['value']] . ' is in use in store '
+                        . $this->storeManager->getStore($row['scope_id'])->getName();
+                    break;
+            }
+        }
+        return $messages;
+    }
+}
diff --git a/app/code/Magento/Theme/Test/Unit/Console/Command/ThemeUninstallCommandTest.php b/app/code/Magento/Theme/Test/Unit/Console/Command/ThemeUninstallCommandTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..c8c8f92a1b6c0b218a217e1aa7897410559a72a5
--- /dev/null
+++ b/app/code/Magento/Theme/Test/Unit/Console/Command/ThemeUninstallCommandTest.php
@@ -0,0 +1,409 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\Theme\Test\Unit\Console\Command;
+
+use Magento\Framework\App\Filesystem\DirectoryList;
+use Magento\Theme\Console\Command\ThemeUninstallCommand;
+use Symfony\Component\Console\Tester\CommandTester;
+use Magento\Framework\Setup\BackupRollbackFactory;
+
+/**
+ * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
+ */
+class ThemeUninstallCommandTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var \Magento\Framework\App\MaintenanceMode|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $maintenanceMode;
+
+    /**
+     * @var \Magento\Framework\Filesystem|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $filesystem;
+
+    /**
+     * @var \Magento\Framework\Composer\DependencyChecker|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $dependencyChecker;
+
+    /**
+     * @var \Magento\Theme\Model\Theme\Data\Collection|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $collection;
+
+    /**
+     * @var \Magento\Framework\Composer\Remove|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $remove;
+
+    /**
+     * @var \Magento\Framework\App\Cache|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $cache;
+
+    /**
+     * @var \Magento\Framework\App\State\CleanupFiles|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $cleanupFiles;
+
+    /**
+     * @var \Magento\Theme\Model\Theme\ThemeProvider|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $themeProvider;
+
+    /**
+     * @var ThemeUninstallCommand
+     */
+    private $command;
+
+    /**
+     * @var BackupRollbackFactory|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $backupRollbackFactory;
+
+    /**
+     * Theme Validator
+     *
+     * @var ThemeValidator|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $themeValidator;
+
+    /**
+     * @var CommandTester
+     */
+    private $tester;
+
+    public function setUp()
+    {
+        $this->maintenanceMode = $this->getMock('Magento\Framework\App\MaintenanceMode', [], [], '', false);
+        $composerInformation = $this->getMock('Magento\Framework\Composer\ComposerInformation', [], [], '', false);
+        $composerInformation->expects($this->any())
+            ->method('getRootRequiredPackages')
+            ->willReturn(['magento/theme-a', 'magento/theme-b', 'magento/theme-c']);
+        $this->filesystem = $this->getMock('Magento\Framework\Filesystem', [], [], '', false);
+        $this->dependencyChecker = $this->getMock(
+            'Magento\Framework\Composer\DependencyChecker',
+            [],
+            [],
+            '',
+            false
+        );
+        $this->collection = $this->getMock('Magento\Theme\Model\Theme\Data\Collection', [], [], '', false);
+        $this->remove = $this->getMock('Magento\Framework\Composer\Remove', [], [], '', false);
+        $this->cache = $this->getMock('Magento\Framework\App\Cache', [], [], '', false);
+        $this->cleanupFiles = $this->getMock('Magento\Framework\App\State\CleanupFiles', [], [], '', false);
+        $this->themeProvider = $this->getMock('Magento\Theme\Model\Theme\ThemeProvider', [], [], '', false);
+        $this->backupRollbackFactory = $this->getMock(
+            'Magento\Framework\Setup\BackupRollbackFactory',
+            [],
+            [],
+            '',
+            false
+        );
+        $this->themeValidator = $this->getMock('Magento\Theme\Model\ThemeValidator', [], [], '', false);
+        $this->command = new ThemeUninstallCommand(
+            $this->cache,
+            $this->cleanupFiles,
+            $composerInformation,
+            $this->maintenanceMode,
+            $this->filesystem,
+            $this->dependencyChecker,
+            $this->collection,
+            $this->themeProvider,
+            $this->remove,
+            $this->backupRollbackFactory,
+            $this->themeValidator
+        );
+        $this->tester = new CommandTester($this->command);
+    }
+
+    public function testExecuteFailedValidationNotPackage()
+    {
+        $dirRead = $this->getMock('Magento\Framework\Filesystem\Directory\Read', [], [], '', false);
+        // package name "dummy" is not in root composer.json file
+        $dirRead->expects($this->any())
+            ->method('readFile')
+            ->will($this->returnValueMap(
+                [
+                    ['test1/composer.json', null, null, '{"name": "dummy"}'],
+                    ['test2/composer.json', null, null, '{"name": "magento/theme-a"}']
+                ]
+            ));
+        $dirRead->expects($this->any())->method('isExist')->willReturn(true);
+        $this->filesystem->expects($this->any())
+            ->method('getDirectoryRead')
+            ->with(DirectoryList::THEMES)
+            ->willReturn($dirRead);
+        $this->collection->expects($this->any())
+            ->method('getThemeByFullPath')
+            ->willReturn($this->getMockForAbstractClass('Magento\Framework\View\Design\ThemeInterface', [], '', false));
+        $this->collection->expects($this->any())->method('hasTheme')->willReturn(true);
+        $this->tester->execute(['theme' => ['test1', 'test2']]);
+        $this->assertContains(
+            'test1 is not an installed Composer package',
+            $this->tester->getDisplay()
+        );
+        $this->assertNotContains(
+            'test2 is not an installed Composer package',
+            $this->tester->getDisplay()
+        );
+    }
+
+    public function testExecuteFailedValidationNotTheme()
+    {
+        $dirRead = $this->getMock('Magento\Framework\Filesystem\Directory\Read', [], [], '', false);
+        $dirRead->expects($this->any())->method('isExist')->willReturn(false);
+        $this->filesystem->expects($this->any())
+            ->method('getDirectoryRead')
+            ->with(DirectoryList::THEMES)
+            ->willReturn($dirRead);
+        $this->collection->expects($this->any())
+            ->method('getThemeByFullPath')
+            ->willReturn($this->getMockForAbstractClass('Magento\Framework\View\Design\ThemeInterface', [], '', false));
+        $this->collection->expects($this->any())->method('hasTheme')->willReturn(false);
+        $this->tester->execute(['theme' => ['test1', 'test2']]);
+        $this->assertContains(
+            'Unknown theme(s): test1, test2' . PHP_EOL,
+            $this->tester->getDisplay()
+        );
+    }
+
+    public function testExecuteFailedValidationMixed()
+    {
+        $dirRead = $this->getMock('Magento\Framework\Filesystem\Directory\Read', [], [], '', false);
+        // package name "dummy" is not in root composer.json file
+        $dirRead->expects($this->any())
+            ->method('readFile')
+            ->will($this->returnValueMap(
+                [
+                    ['test1/composer.json', null, null, '{"name": "dummy1"}'],
+                    ['test2/composer.json', null, null, '{"name": "magento/theme-b"}'],
+                    ['test4/composer.json', null, null, '{"name": "dummy2"}']
+                ]
+            ));
+        $dirRead->expects($this->any())
+            ->method('isExist')
+            ->will($this->returnValueMap(
+                [
+                    ['test1/composer.json', true],
+                    ['test2/composer.json', true],
+                    ['test3/composer.json', false],
+                    ['test4/composer.json', true]
+                ]
+            ));
+        $this->collection->expects($this->any())
+            ->method('getThemeByFullPath')
+            ->willReturn($this->getMockForAbstractClass('Magento\Framework\View\Design\ThemeInterface', [], '', false));
+        $this->collection->expects($this->at(1))->method('hasTheme')->willReturn(true);
+        $this->collection->expects($this->at(3))->method('hasTheme')->willReturn(true);
+        $this->collection->expects($this->at(5))->method('hasTheme')->willReturn(false);
+        $this->collection->expects($this->at(7))->method('hasTheme')->willReturn(true);
+        $this->filesystem->expects($this->any())
+            ->method('getDirectoryRead')
+            ->with(DirectoryList::THEMES)
+            ->willReturn($dirRead);
+        $this->tester->execute(['theme' => ['test1', 'test2', 'test3', 'test4']]);
+        $this->assertContains(
+            'test1, test4 are not installed Composer packages',
+            $this->tester->getDisplay()
+        );
+        $this->assertNotContains(
+            'test2 is not an installed Composer package',
+            $this->tester->getDisplay()
+        );
+        $this->assertContains(
+            'Unknown theme(s): test3' . PHP_EOL,
+            $this->tester->getDisplay()
+        );
+    }
+
+    public function setUpPassValidation()
+    {
+        $dirRead = $this->getMock('Magento\Framework\Filesystem\Directory\Read', [], [], '', false);
+        // package name "dummy" is not in root composer.json file
+        $dirRead->expects($this->any())
+            ->method('readFile')
+            ->willReturn('{"name": "magento/theme-a"}');
+        $dirRead->expects($this->any())
+            ->method('isExist')
+            ->willReturn(true);
+        $this->filesystem->expects($this->any())
+            ->method('getDirectoryRead')
+            ->with(DirectoryList::THEMES)
+            ->willReturn($dirRead);
+        $this->collection->expects($this->any())
+            ->method('getThemeByFullPath')
+            ->willReturn($this->getMockForAbstractClass('Magento\Framework\View\Design\ThemeInterface', [], '', false));
+        $this->collection->expects($this->any())->method('hasTheme')->willReturn(true);
+    }
+
+    public function setupPassChildThemeCheck()
+    {
+        $theme = $this->getMock('Magento\Theme\Model\Theme', [], [], '', false);
+        $theme->expects($this->any())->method('hasChildThemes')->willReturn(false);
+        $this->themeProvider->expects($this->any())->method('getThemeByFullPath')->willReturn($theme);
+        $this->collection->expects($this->any())->method('getIterator')->willReturn(new \ArrayIterator([]));
+    }
+
+    /**
+     * @dataProvider executeFailedChildThemeCheckDataProvider
+     * @param bool $hasVirtual
+     * @param bool $hasPhysical
+     * @param array $input
+     * @param string $expected
+     * @return void
+     */
+    public function testExecuteFailedChildThemeCheck($hasVirtual, $hasPhysical, array $input, $expected)
+    {
+        $this->setUpPassValidation();
+        $theme = $this->getMock('Magento\Theme\Model\Theme', [], [], '', false);
+        $theme->expects($this->any())->method('hasChildThemes')->willReturn($hasVirtual);
+        $parentThemeA = $this->getMock('Magento\Theme\Model\Theme', [], [], '', false);
+        $parentThemeA->expects($this->any())->method('getFullPath')->willReturn('frontend/Magento/a');
+        $parentThemeB = $this->getMock('Magento\Theme\Model\Theme', [], [], '', false);
+        $parentThemeB->expects($this->any())->method('getFullPath')->willReturn('frontend/Magento/b');
+        $childThemeC = $this->getMock('Magento\Theme\Model\Theme', [], [], '', false);
+        $childThemeC->expects($this->any())->method('getFullPath')->willReturn('frontend/Magento/c');
+        $childThemeD = $this->getMock('Magento\Theme\Model\Theme', [], [], '', false);
+        $childThemeD->expects($this->any())->method('getFullPath')->willReturn('frontend/Magento/d');
+
+        if ($hasPhysical) {
+            $childThemeC->expects($this->any())->method('getParentTheme')->willReturn($parentThemeA);
+            $childThemeD->expects($this->any())->method('getParentTheme')->willReturn($parentThemeB);
+        }
+
+        $this->themeProvider->expects($this->any())->method('getThemeByFullPath')->willReturn($theme);
+        $this->collection->expects($this->any())
+            ->method('getIterator')
+            ->willReturn(new \ArrayIterator([$childThemeC, $childThemeD]));
+        $this->tester->execute($input);
+        $this->assertContains(
+            $expected,
+            $this->tester->getDisplay()
+        );
+    }
+
+    /**
+     * @return array
+     */
+    public function executeFailedChildThemeCheckDataProvider()
+    {
+        return [
+            [
+                true,
+                false,
+                ['theme' => ['frontend/Magento/a']],
+                'Unable to uninstall. frontend/Magento/a is a parent of virtual theme'
+            ],
+            [
+                true,
+                false,
+                ['theme' => ['frontend/Magento/a', 'frontend/Magento/b']],
+                'Unable to uninstall. frontend/Magento/a, frontend/Magento/b are parents of virtual theme'
+            ],
+            [
+                false,
+                true,
+                ['theme' => ['frontend/Magento/a']],
+                'Unable to uninstall. frontend/Magento/a is a parent of physical theme'
+            ],
+            [
+                false,
+                true,
+                ['theme' => ['frontend/Magento/a', 'frontend/Magento/b']],
+                'Unable to uninstall. frontend/Magento/a, frontend/Magento/b are parents of physical theme'
+            ],
+            [
+                true,
+                true,
+                ['theme' => ['frontend/Magento/a']],
+                'Unable to uninstall. frontend/Magento/a is a parent of virtual theme' . PHP_EOL .
+                'Unable to uninstall. frontend/Magento/a is a parent of physical theme'
+            ],
+            [
+                true,
+                true,
+                ['theme' => ['frontend/Magento/a', 'frontend/Magento/b']],
+                'Unable to uninstall. frontend/Magento/a, frontend/Magento/b are parents of virtual theme' . PHP_EOL .
+                'Unable to uninstall. frontend/Magento/a, frontend/Magento/b are parents of physical theme'
+            ],
+        ];
+    }
+
+    public function testExecuteFailedThemeInUseCheck()
+    {
+        $this->setUpPassValidation();
+        $this->themeValidator
+            ->expects($this->once())
+            ->method('validateIsThemeInUse')
+            ->willReturn(['frontend/Magento/a is in use in default config']);
+        $this->tester->execute(['theme' => ['frontend/Magento/a']]);
+        $this->assertEquals('frontend/Magento/a is in use in default config' . PHP_EOL, $this->tester->getDisplay());
+    }
+
+    public function testExecuteFailedDependencyCheck()
+    {
+        $this->setUpPassValidation();
+        $this->setupPassChildThemeCheck();
+        $this->dependencyChecker->expects($this->once())
+            ->method('checkDependencies')
+            ->willReturn(['magento/theme-a' => ['magento/theme-b', 'magento/theme-c']]);
+        $this->tester->execute(['theme' => ['frontend/Magento/a']]);
+        $this->assertContains(
+            'Cannot uninstall frontend/Magento/a because the following package(s) ' .
+            'depend on it:' . PHP_EOL . "\tmagento/theme-b" . PHP_EOL . "\tmagento/theme-c",
+            $this->tester->getDisplay()
+        );
+    }
+
+    public function setUpExecute()
+    {
+        $this->setUpPassValidation();
+        $this->setupPassChildThemeCheck();
+        $this->dependencyChecker->expects($this->once())->method('checkDependencies')->willReturn([]);
+        $this->remove->expects($this->once())->method('remove');
+        $this->cache->expects($this->once())->method('clean');
+        $theme = $this->getMock('Magento\Theme\Model\Theme', [], [], '', false);
+        $this->themeProvider->expects($this->any())
+            ->method('getThemeByFullPath')
+            ->willReturn($theme);
+    }
+
+    public function testExecuteWithBackupCode()
+    {
+        $this->setUpExecute();
+        $backupRollback = $this->getMock('Magento\Framework\Setup\BackupRollback', [], [], '', false);
+        $this->backupRollbackFactory->expects($this->once())
+            ->method('create')
+            ->willReturn($backupRollback);
+        $this->tester->execute(['theme' => ['test'], '--backup-code' => true]);
+        $this->tester->getDisplay();
+    }
+
+    public function testExecute()
+    {
+        $this->setUpExecute();
+        $this->cleanupFiles->expects($this->never())->method('clearMaterializedViewFiles');
+        $this->tester->execute(['theme' => ['test']]);
+        $this->assertContains('Enabling maintenance mode', $this->tester->getDisplay());
+        $this->assertContains('Disabling maintenance mode', $this->tester->getDisplay());
+        $this->assertContains('Alert: Generated static view files were not cleared.', $this->tester->getDisplay());
+        $this->assertNotContains('Generated static view files cleared successfully', $this->tester->getDisplay());
+    }
+
+    public function testExecuteCleanStaticFiles()
+    {
+        $this->setUpExecute();
+        $this->cleanupFiles->expects($this->once())->method('clearMaterializedViewFiles');
+        $this->tester->execute(['theme' => ['test'], '-c' => true]);
+        $this->assertContains('Enabling maintenance mode', $this->tester->getDisplay());
+        $this->assertContains('Disabling maintenance mode', $this->tester->getDisplay());
+        $this->assertNotContains('Alert: Generated static view files were not cleared.', $this->tester->getDisplay());
+        $this->assertContains('Generated static view files cleared successfully', $this->tester->getDisplay());
+    }
+}
diff --git a/app/code/Magento/Theme/Test/Unit/Model/ThemeValidatorTest.php b/app/code/Magento/Theme/Test/Unit/Model/ThemeValidatorTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..d6fc5f272f5315d71f74bbb896e187ce90b53cbc
--- /dev/null
+++ b/app/code/Magento/Theme/Test/Unit/Model/ThemeValidatorTest.php
@@ -0,0 +1,91 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+/**
+ * Test theme model
+ */
+namespace Magento\Theme\Test\Unit\Model;
+
+class ThemeValidatorTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var \Magento\Theme\Model\ThemeValidator
+     */
+    protected $themeValidator;
+
+    /**
+     * @var \Magento\Store\Model\StoreManagerInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $storeManager;
+
+    /**
+     * @var \Magento\Framework\View\Design\Theme\ThemeProviderInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $themeProvider;
+
+    /**
+     * @var \Magento\Framework\App\Config\Value|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $configData;
+
+    protected function setUp()
+    {
+        $this->storeManager = $this->getMock('Magento\Store\Model\StoreManagerInterface', [], [], '', false);
+        $this->themeProvider = $this->getMock(
+            'Magento\Framework\View\Design\Theme\ThemeProviderInterface',
+            [],
+            [],
+            '',
+            false
+        );
+        $this->configData = $this->getMock(
+            'Magento\Framework\App\Config\Value',
+            ['getCollection', 'addFieldToFilter'],
+            [],
+            '',
+            false
+        );
+        $this->themeValidator = new \Magento\Theme\Model\ThemeValidator(
+            $this->storeManager,
+            $this->themeProvider,
+            $this->configData
+        );
+    }
+
+    public function testValidateIsThemeInUse()
+    {
+        $theme = $this->getMock('Magento\Theme\Model\Theme', [], [], '', false);
+        $theme->expects($this->once())->method('getId')->willReturn(6);
+        $defaultEntity = new \Magento\Framework\Object(['value' => 6, 'scope' => 'default', 'scope_id' => 8]);
+        $websitesEntity = new \Magento\Framework\Object(['value' => 6, 'scope' => 'websites', 'scope_id' => 8]);
+        $storesEntity = new \Magento\Framework\Object(['value' => 6, 'scope' => 'stores', 'scope_id' => 8]);
+        $this->themeProvider->expects($this->once())->method('getThemeByFullPath')->willReturn($theme);
+        $this->configData->expects($this->once())->method('getCollection')->willReturn($this->configData);
+        $this->configData
+            ->expects($this->at(1))
+            ->method('addFieldToFilter')
+            ->willReturn($this->configData);
+        $this->configData
+            ->expects($this->at(2))
+            ->method('addFieldToFilter')
+            ->willReturn([$defaultEntity, $websitesEntity, $storesEntity]);
+        $website = $this->getMock('Magento\Store\Model\Website', ['getName'], [], '', false);
+        $website->expects($this->once())->method('getName')->willReturn('websiteA');
+        $store = $this->getMock('Magento\Store\Model\Store', ['getName'], [], '', false);
+        $store->expects($this->once())->method('getName')->willReturn('storeA');
+        $this->storeManager->expects($this->once())->method('getWebsite')->willReturn($website);
+        $this->storeManager->expects($this->once())->method('getStore')->willReturn($store);
+        $result = $this->themeValidator->validateIsThemeInUse(['frontend/Magento/a']);
+        $this->assertEquals(
+            [
+                'frontend/Magento/a is in use in default config',
+                'frontend/Magento/a is in use in website websiteA',
+                'frontend/Magento/a is in use in store storeA'
+            ],
+            $result
+        );
+    }
+}
diff --git a/app/code/Magento/Theme/etc/di.xml b/app/code/Magento/Theme/etc/di.xml
index e93a6426de508c617f91f4f0e2ed24045fe94096..dd4bbed76b7a9b6f06e298651b6b785fdbb7743b 100644
--- a/app/code/Magento/Theme/etc/di.xml
+++ b/app/code/Magento/Theme/etc/di.xml
@@ -75,5 +75,12 @@
             <argument name="design" xsi:type="object">Magento\Theme\Model\Design\Proxy</argument>
         </arguments>
     </type>
+    <type name="Magento\Framework\Console\CommandList">
+        <arguments>
+            <argument name="commands" xsi:type="array">
+                <item name="theme_uninstall" xsi:type="object">Magento\Theme\Console\Command\ThemeUninstallCommand</item>
+            </argument>
+        </arguments>
+    </type>
     <preference for="Magento\Framework\View\Model\PageLayout\Config\BuilderInterface" type="Magento\Theme\Model\PageLayout\Config\Builder"/>
 </config>
diff --git a/app/code/Magento/Translation/Console/Command/UninstallLanguageCommand.php b/app/code/Magento/Translation/Console/Command/UninstallLanguageCommand.php
new file mode 100644
index 0000000000000000000000000000000000000000..b84237bb2cd32233a96cabb23f16ebf6ea0d06b4
--- /dev/null
+++ b/app/code/Magento/Translation/Console/Command/UninstallLanguageCommand.php
@@ -0,0 +1,162 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\Translation\Console\Command;
+
+use Symfony\Component\Console\Command\Command;
+use Symfony\Component\Console\Input\InputArgument;
+use Symfony\Component\Console\Input\InputOption;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+use Magento\Framework\Composer\DependencyChecker;
+use Magento\Framework\Composer\Remove;
+use Magento\Framework\Composer\ComposerInformation;
+use Magento\Framework\App\Cache;
+use Magento\Framework\Setup\BackupRollbackFactory;
+
+/**
+ * Command for uninstalling language and backup-code feature
+ */
+class UninstallLanguageCommand extends Command
+{
+    /**
+     * Language code argument name
+     */
+    const PACKAGE_ARGUMENT = 'package';
+
+    /**
+     * Backup-code option name
+     */
+    const BACKUP_CODE_OPTION = 'backup-code';
+
+    /**
+     * @var DependencyChecker
+     */
+    private $dependencyChecker;
+
+    /**
+     * @var Remove
+     */
+    private $remove;
+
+    /**
+     * @var ComposerInformation
+     */
+    private $composerInfo;
+
+    /**
+     * @var Cache
+     */
+    private $cache;
+
+    /**
+     * @var BackupRollbackFactory
+     */
+    private $backupRollbackFactory;
+
+    /**
+     * Inject dependencies
+     *
+     * @param DependencyChecker $dependencyChecker
+     * @param Remove $remove
+     * @param ComposerInformation $composerInfo
+     * @param Cache $cache
+     * @param BackupRollbackFactory $backupRollbackFactory
+     */
+    public function __construct(
+        DependencyChecker $dependencyChecker,
+        Remove $remove,
+        ComposerInformation $composerInfo,
+        Cache $cache,
+        BackupRollbackFactory $backupRollbackFactory
+    ) {
+        $this->dependencyChecker = $dependencyChecker;
+        $this->remove = $remove;
+        $this->composerInfo = $composerInfo;
+        $this->cache = $cache;
+        $this->backupRollbackFactory = $backupRollbackFactory;
+
+        parent::__construct();
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function configure()
+    {
+        $this->setName('i18n:uninstall')
+            ->setDescription('Uninstalls language packages')
+            ->setDefinition([
+                new InputArgument(
+                    self::PACKAGE_ARGUMENT,
+                    InputArgument::IS_ARRAY | InputArgument::REQUIRED,
+                    'Language package name'
+                ),
+                new InputOption(
+                    self::BACKUP_CODE_OPTION,
+                    '-b',
+                    InputOption::VALUE_NONE,
+                    'Take code and configuration files backup (excluding temporary files)'
+                ),
+            ]);
+
+        parent::configure();
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function execute(InputInterface $input, OutputInterface $output)
+    {
+        $languages = $input->getArgument(self::PACKAGE_ARGUMENT);
+        $packagesToRemove = [];
+        $dependencies = $this->dependencyChecker->checkDependencies($languages, true);
+
+        foreach ($languages as $package) {
+            if (!$this->validate($package)) {
+                $output->writeln("<info>Package $package is not a Magento language and will be skipped.</info>");
+            } else {
+                if (sizeof($dependencies[$package]) > 0) {
+                    $output->writeln("<info>Package $package has dependencies and will be skipped.</info>");
+                } else {
+                    $packagesToRemove[] = $package;
+                }
+            }
+        }
+
+        if ($packagesToRemove !== []) {
+            if ($input->getOption(self::BACKUP_CODE_OPTION)) {
+                $backupRestore = $this->backupRollbackFactory->create($output);
+                $backupRestore->codeBackup(time());
+            } else {
+                $output->writeln('<info>You are removing language package without a code backup.</info>');
+            }
+
+            $this->remove->remove($packagesToRemove);
+            $this->cache->clean();
+        } else {
+            $output->writeln('<info>Nothing is removed.</info>');
+        }
+    }
+
+    /**
+     * Validates user input
+     *
+     * @param string $package
+     *
+     * @return bool
+     */
+    private function validate($package)
+    {
+        $installedPackages = $this->composerInfo->getRootRequiredPackagesAndTypes();
+
+        if (isset($installedPackages[$package]) && $installedPackages[$package] === 'magento2-language') {
+            return true;
+        }
+
+        return false;
+    }
+}
diff --git a/app/code/Magento/Translation/Test/Unit/Console/Command/UninstallLanguageCommandTest.php b/app/code/Magento/Translation/Test/Unit/Console/Command/UninstallLanguageCommandTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..2f0cd02c6c9ea0f0e58128c6a999c6d86136fdf7
--- /dev/null
+++ b/app/code/Magento/Translation/Test/Unit/Console/Command/UninstallLanguageCommandTest.php
@@ -0,0 +1,198 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\Translation\Test\Unit\Console\Command;
+
+use Magento\Framework\Composer\DependencyChecker;
+use Magento\Framework\Composer\Remove;
+use Magento\Framework\Composer\ComposerInformation;
+use Magento\Framework\App\Cache;
+use Symfony\Component\Console\Tester\CommandTester;
+use Magento\Translation\Console\Command\UninstallLanguageCommand;
+use Magento\Framework\Setup\BackupRollbackFactory;
+
+class UninstallLanguageCommandTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var DependencyChecker|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $dependencyChecker;
+
+    /**
+     * @var Remove|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $remove;
+
+    /**
+     * @var ComposerInformation|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $composerInfo;
+
+    /**
+     * @var Cache|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $cache;
+
+    /**
+     * @var BackupRollbackFactory|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $backupRollbackFactory;
+
+    /**
+     * @var UninstallLanguageCommand
+     */
+    private $command;
+
+    /**
+     * @var CommandTester
+     */
+    private $tester;
+
+    public function setUp()
+    {
+        $this->dependencyChecker = $this->getMock(
+            'Magento\Framework\Composer\DependencyChecker',
+            [],
+            [],
+            '',
+            false
+        );
+        $this->remove = $this->getMock('Magento\Framework\Composer\Remove', [], [], '', false);
+        $this->composerInfo = $this->getMock('Magento\Framework\Composer\ComposerInformation', [], [], '', false);
+        $this->cache = $this->getMock('Magento\Framework\App\Cache', [], [], '', false);
+        $this->backupRollbackFactory = $this->getMock(
+            'Magento\Framework\Setup\BackupRollbackFactory',
+            [],
+            [],
+            '',
+            false
+        );
+
+
+        $this->command = new UninstallLanguageCommand(
+            $this->dependencyChecker,
+            $this->remove,
+            $this->composerInfo,
+            $this->cache,
+            $this->backupRollbackFactory
+        );
+
+        $this->tester = new CommandTester($this->command);
+    }
+
+    public function testExecute()
+    {
+        $dependencies['vendor/language-ua_ua'] = [];
+
+        $this->dependencyChecker->expects($this->once())
+            ->method('checkDependencies')
+            ->with(['vendor/language-ua_ua'])
+            ->willReturn($dependencies);
+
+        $this->composerInfo->expects($this->once())
+            ->method('getRootRequiredPackagesAndTypes')
+            ->willReturn(
+                [
+                    'vendor/language-ua_ua' => 'magento2-language'
+                ]
+            );
+
+        $backupRollback = $this->getMock('Magento\Framework\Setup\BackupRollback', [], [], '', false);
+        $backupRollback->expects($this->once())->method('codeBackup');
+
+        $this->backupRollbackFactory->expects($this->once())
+            ->method('create')
+            ->willReturn($backupRollback);
+
+        $this->remove->expects($this->once())->method('remove');
+        $this->cache->expects($this->once())->method('clean');
+
+        $this->tester->execute(['package' => ['vendor/language-ua_ua'], '--backup-code' => true]);
+    }
+
+    public function testExecuteNoBackupOption()
+    {
+        $dependencies['vendor/language-ua_ua'] = [];
+
+        $this->dependencyChecker->expects($this->once())
+            ->method('checkDependencies')
+            ->with(['vendor/language-ua_ua'])
+            ->willReturn($dependencies);
+
+        $this->composerInfo->expects($this->once())
+            ->method('getRootRequiredPackagesAndTypes')
+            ->willReturn(
+                [
+                    'vendor/language-ua_ua' => 'magento2-language'
+                ]
+            );
+
+        $this->backupRollbackFactory->expects($this->never())->method('create');
+        $this->remove->expects($this->once())->method('remove');
+        $this->cache->expects($this->once())->method('clean');
+
+        $this->tester->execute(['package' => ['vendor/language-ua_ua']]);
+        $this->assertContains('You are removing language package without a code backup.', $this->tester->getDisplay());
+    }
+
+    public function testExecutePackageHasDependency()
+    {
+        $dependencies['vendor/language-ua_ua'] = ['some/dependency'];
+
+        $this->dependencyChecker->expects($this->once())
+            ->method('checkDependencies')
+            ->with(['vendor/language-ua_ua'])
+            ->willReturn($dependencies);
+
+        $this->composerInfo->expects($this->once())
+            ->method('getRootRequiredPackagesAndTypes')
+            ->willReturn(
+                [
+                    'vendor/language-ua_ua' => 'magento2-language'
+                ]
+            );
+
+        $this->remove->expects($this->never())->method('remove');
+        $this->cache->expects($this->never())->method('clean');
+
+        $this->tester->execute(['package' => ['vendor/language-ua_ua']]);
+        $this->assertContains(
+            'Package vendor/language-ua_ua has dependencies and will be skipped',
+            $this->tester->getDisplay()
+        );
+        $this->assertContains('Nothing is removed.', $this->tester->getDisplay());
+    }
+
+
+
+    public function testExecutePackageNoLanguage()
+    {
+        $dependencies['vendor/language-ua_ua'] = [];
+
+        $this->dependencyChecker->expects($this->once())
+            ->method('checkDependencies')
+            ->with(['vendor/language-ua_ua'])
+            ->willReturn($dependencies);
+
+        $this->composerInfo->expects($this->once())
+            ->method('getRootRequiredPackagesAndTypes')
+            ->willReturn(
+                [
+                    'vendor/language-ua_ua' => 'library'
+                ]
+            );
+
+        $this->remove->expects($this->never())->method('remove');
+        $this->cache->expects($this->never())->method('clean');
+
+        $this->tester->execute(['package' => ['vendor/language-ua_ua']]);
+        $this->assertContains(
+            'Package vendor/language-ua_ua is not a Magento language and will be skipped',
+            $this->tester->getDisplay()
+        );
+        $this->assertContains('Nothing is removed.', $this->tester->getDisplay());
+    }
+}
diff --git a/app/code/Magento/Translation/etc/di.xml b/app/code/Magento/Translation/etc/di.xml
index c411e653425d197cc7fc4096d6426113ccd94aa1..0c1b01ddd6a136c8c0e3a0b1116891f958fd2165 100644
--- a/app/code/Magento/Translation/etc/di.xml
+++ b/app/code/Magento/Translation/etc/di.xml
@@ -77,4 +77,11 @@
             </argument>
         </arguments>
     </type>
+    <type name="Magento\Framework\Console\CommandList">
+        <arguments>
+            <argument name="commands" xsi:type="array">
+                <item name="uninstall_language" xsi:type="object">Magento\Translation\Console\Command\UninstallLanguageCommand</item>
+            </argument>
+        </arguments>
+    </type>
 </config>
diff --git a/app/code/Magento/User/Model/UserInterface.php b/app/code/Magento/User/Api/Data/UserInterface.php
similarity index 91%
rename from app/code/Magento/User/Model/UserInterface.php
rename to app/code/Magento/User/Api/Data/UserInterface.php
index 4b4cecf569a0141995307e21b9afcda647383e2e..c5de7bd1bc5e8b6b24b9ea2c4fcfb1e4c6167bb9 100644
--- a/app/code/Magento/User/Model/UserInterface.php
+++ b/app/code/Magento/User/Api/Data/UserInterface.php
@@ -3,7 +3,7 @@
  * Copyright © 2015 Magento. All rights reserved.
  * See COPYING.txt for license details.
  */
-namespace Magento\User\Model;
+namespace Magento\User\Api\Data;
 
 /**
  * Admin user interface.
@@ -14,119 +14,119 @@ interface UserInterface
 {
     /**
      * Get ID.
-     * 
+     *
      * @return int
      */
     public function getId();
-    
+
     /**
      * Set ID.
-     * 
+     *
      * @param int $id
      * @return $this
      */
     public function setId($id);
-    
+
     /**
      * Get first name.
-     * 
+     *
      * @return string
      */
     public function getFirstName();
-    
+
     /**
      * Set first name.
-     * 
+     *
      * @param string $firstName
      * @return $this
      */
     public function setFirstName($firstName);
-    
+
     /**
      * Get last name.
-     * 
+     *
      * @return string
      */
     public function getLastName();
-    
+
     /**
      * Set last name.
-     * 
+     *
      * @param string $lastName
      * @return $this
      */
     public function setLastName($lastName);
-    
+
     /**
      * Get email.
-     * 
+     *
      * @return string
      */
     public function getEmail();
-    
+
     /**
      * Set email.
-     * 
+     *
      * @param string $email
      * @return $this
      */
     public function setEmail($email);
-    
+
     /**
      * Get user name.
-     * 
+     *
      * @return string
      */
     public function getUserName();
-    
+
     /**
      * Set user name.
-     * 
+     *
      * @param string $userName
      * @return $this
      */
     public function setUserName($userName);
-    
+
     /**
      * Get password or password hash.
-     * 
+     *
      * @return string
      */
     public function getPassword();
-    
+
     /**
      * Set password or password hash.
-     * 
+     *
      * @param string $password
      * @return $this
      */
     public function setPassword($password);
-    
+
     /**
      * Get user record creation date.
-     * 
+     *
      * @return string
      */
     public function getCreated();
-    
+
     /**
      * Set user record creation date.
-     * 
+     *
      * @param string $created
      * @return $this
      */
     public function setCreated($created);
-    
+
     /**
      * Get user record modification date.
-     * 
+     *
      * @return string
      */
     public function getModified();
-    
+
     /**
      * Set user record modification date.
-     * 
+     *
      * @param string $modified
      * @return $this
      */
diff --git a/app/code/Magento/User/Model/User.php b/app/code/Magento/User/Model/User.php
index 9ab8a1039fcfba15ddc0e486a674098a6435878a..b152509226ddb7602511f4c53240ccddb7008e95 100644
--- a/app/code/Magento/User/Model/User.php
+++ b/app/code/Magento/User/Model/User.php
@@ -8,6 +8,7 @@ namespace Magento\User\Model;
 use Magento\Backend\Model\Auth\Credential\StorageInterface;
 use Magento\Framework\Model\AbstractModel;
 use Magento\Framework\Exception\AuthenticationException;
+use Magento\User\Api\Data\UserInterface;
 
 /**
  * Admin user model
diff --git a/app/code/Magento/User/etc/di.xml b/app/code/Magento/User/etc/di.xml
index f76198da27e609b2a67a8542713ca1f3d1db275a..962ccc2aa632a968ec83f007587c661eb81447cd 100644
--- a/app/code/Magento/User/etc/di.xml
+++ b/app/code/Magento/User/etc/di.xml
@@ -14,5 +14,5 @@
     <type name="Magento\Authorization\Model\Role">
         <plugin name="updateRoleUsersAcl" type="Magento\User\Model\Plugin\AuthorizationRole" sortOrder="20"/>
     </type>
-    <preference for="Magento\User\Model\UserInterface" type="Magento\User\Model\User" />
+    <preference for="Magento\User\Api\Data\UserInterface" type="Magento\User\Model\User" />
 </config>
diff --git a/app/etc/di.xml b/app/etc/di.xml
index 02cd1c358cb7e8dc35047c83454ac62ef6ff0e59..87986caa2ba5a6c7d4ef52c9de211d4b269ab96c 100644
--- a/app/etc/di.xml
+++ b/app/etc/di.xml
@@ -34,6 +34,8 @@
             <argument name="currencyInstalled" xsi:type="string">system/currency/installed</argument>
         </arguments>
     </type>
+    <preference for="Magento\Framework\Api\ExtensionAttribute\JoinDataInterface" type="Magento\Framework\Api\ExtensionAttribute\JoinData" />
+    <preference for="Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface" type="Magento\Framework\Api\ExtensionAttribute\JoinProcessor" />
     <preference for="Magento\Framework\Locale\ConfigInterface" type="Magento\Framework\Locale\Config" />
     <preference for="Magento\Framework\Notification\NotifierInterface" type="Magento\Framework\Notification\NotifierPool" />
     <preference for="Magento\Framework\UrlInterface" type="Magento\Framework\Url" />
diff --git a/composer.json b/composer.json
index 1879c7e9d60a5286dc36cb420766b99cd5c9b492..a62e8ac4890d7f482ea330efd803bc451ea1ed8f 100644
--- a/composer.json
+++ b/composer.json
@@ -36,7 +36,7 @@
         "oyejorge/less.php": "1.7.0.3",
         "tubalmartin/cssmin": "2.4.8-p4",
         "magento/magento-composer-installer": "*",
-        "symfony/console": "~2.3"
+        "symfony/console": "~2.3 <2.7"
     },
     "require-dev": {
         "phpunit/phpunit": "4.1.0",
diff --git a/composer.lock b/composer.lock
index 2436cff71f1c366b3f281cc5a8c44a59a25762f5..beefd078b4aef16f33d39fdb819c7bb8aa06aef3 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
         "This file is @generated automatically"
     ],
-    "hash": "55186e4b1650ca5f2ad865799800f636",
+    "hash": "a62e70bed8efa22bebb0fedf63b51925",
     "packages": [
         {
             "name": "composer/composer",
@@ -49,7 +49,7 @@
                     "Composer": "src/"
                 }
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "MIT"
             ],
@@ -76,20 +76,20 @@
         },
         {
             "name": "justinrainbow/json-schema",
-            "version": "1.4.1",
+            "version": "1.4.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/justinrainbow/json-schema.git",
-                "reference": "2465fe486c864e30badaa4d005ebdf89dbc503f3"
+                "reference": "7dfe4f1db8a62be3dd35710efce663537d515653"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/2465fe486c864e30badaa4d005ebdf89dbc503f3",
-                "reference": "2465fe486c864e30badaa4d005ebdf89dbc503f3",
+                "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/7dfe4f1db8a62be3dd35710efce663537d515653",
+                "reference": "7dfe4f1db8a62be3dd35710efce663537d515653",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.3.0"
+                "php": ">=5.3.2"
             },
             "require-dev": {
                 "json-schema/json-schema-test-suite": "1.1.0",
@@ -110,7 +110,7 @@
                     "JsonSchema": "src/"
                 }
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
@@ -138,7 +138,7 @@
                 "json",
                 "schema"
             ],
-            "time": "2015-03-27 16:41:39"
+            "time": "2015-06-14 20:01:28"
         },
         {
             "name": "magento/magento-composer-installer",
@@ -178,7 +178,7 @@
                     "MagentoHackathon\\Composer\\Magento": "src/"
                 }
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "OSL-3.0"
             ],
@@ -248,7 +248,7 @@
                     "Zend_": "library/"
                 }
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "include-path": [
                 "library/"
             ],
@@ -315,7 +315,7 @@
                     "Monolog\\": "src/Monolog"
                 }
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "MIT"
             ],
@@ -364,7 +364,7 @@
                     "lessc.inc.php"
                 ]
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "Apache-2.0"
             ],
@@ -414,7 +414,7 @@
                     "Psr\\Log\\": ""
                 }
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "MIT"
             ],
@@ -458,7 +458,7 @@
                     "Seld\\JsonLint\\": "src/Seld/JsonLint/"
                 }
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "MIT"
             ],
@@ -480,20 +480,21 @@
         },
         {
             "name": "symfony/console",
-            "version": "v2.7.1",
+            "version": "v2.6.9",
+            "target-dir": "Symfony/Component/Console",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/Console.git",
-                "reference": "564398bc1f33faf92fc2ec86859983d30eb81806"
+                "reference": "b5ec0c11a204718f2b656357f5505a8e578f30dd"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/Console/zipball/564398bc1f33faf92fc2ec86859983d30eb81806",
-                "reference": "564398bc1f33faf92fc2ec86859983d30eb81806",
+                "url": "https://api.github.com/repos/symfony/Console/zipball/b5ec0c11a204718f2b656357f5505a8e578f30dd",
+                "reference": "b5ec0c11a204718f2b656357f5505a8e578f30dd",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.3.9"
+                "php": ">=5.3.3"
             },
             "require-dev": {
                 "psr/log": "~1.0",
@@ -509,15 +510,15 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "2.7-dev"
+                    "dev-master": "2.6-dev"
                 }
             },
             "autoload": {
-                "psr-4": {
+                "psr-0": {
                     "Symfony\\Component\\Console\\": ""
                 }
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "MIT"
             ],
@@ -533,7 +534,7 @@
             ],
             "description": "Symfony Console Component",
             "homepage": "https://symfony.com",
-            "time": "2015-06-10 15:30:22"
+            "time": "2015-05-29 14:42:58"
         },
         {
             "name": "symfony/finder",
@@ -566,7 +567,7 @@
                     "Symfony\\Component\\Finder\\": ""
                 }
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "MIT"
             ],
@@ -615,7 +616,7 @@
                     "Symfony\\Component\\Process\\": ""
                 }
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "MIT"
             ],
@@ -656,7 +657,7 @@
                     "cssmin.php"
                 ]
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
@@ -683,12 +684,12 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-code.git",
-                "reference": "0ed94f842ba60cdc900c46a61bdbd7ac95a3e140"
+                "reference": "cfd5951ff4348e4430850560416c7ddb755f95d3"
             },
             "dist": {
                 "type": "zip",
                 "url": "https://api.github.com/repos/zendframework/zend-code/zipball/0ed94f842ba60cdc900c46a61bdbd7ac95a3e140",
-                "reference": "0ed94f842ba60cdc900c46a61bdbd7ac95a3e140",
+                "reference": "cfd5951ff4348e4430850560416c7ddb755f95d3",
                 "shasum": ""
             },
             "require": {
@@ -697,9 +698,6 @@
             },
             "require-dev": {
                 "doctrine/common": ">=2.1",
-                "fabpot/php-cs-fixer": "1.7.*",
-                "phpunit/phpunit": "~4.0",
-                "satooshi/php-coveralls": "dev-master",
                 "zendframework/zend-stdlib": "self.version"
             },
             "suggest": {
@@ -715,20 +713,20 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Zend\\Code\\": "src/"
+                    "Zend\\Code\\": ""
                 }
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
             "description": "provides facilities to generate arbitrary code using an object oriented interface",
-            "homepage": "https://github.com/zendframework/zend-code",
+            "homepage": "https://github.com/zendframework/zf2",
             "keywords": [
                 "code",
                 "zf2"
             ],
-            "time": "2015-03-31 15:39:14"
+            "time": "2015-04-01 17:59:08"
         },
         {
             "name": "zendframework/zend-config",
@@ -736,12 +734,12 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-config.git",
-                "reference": "95f3a4b3fa85d49e6f060183122de4596fa6d29d"
+                "reference": "8682fe4e2923b383bb6472fc84b5796a07589163"
             },
             "dist": {
                 "type": "zip",
                 "url": "https://api.github.com/repos/zendframework/zend-config/zipball/95f3a4b3fa85d49e6f060183122de4596fa6d29d",
-                "reference": "95f3a4b3fa85d49e6f060183122de4596fa6d29d",
+                "reference": "8682fe4e2923b383bb6472fc84b5796a07589163",
                 "shasum": ""
             },
             "require": {
@@ -749,9 +747,6 @@
                 "zendframework/zend-stdlib": "self.version"
             },
             "require-dev": {
-                "fabpot/php-cs-fixer": "1.7.*",
-                "phpunit/phpunit": "~4.0",
-                "satooshi/php-coveralls": "dev-master",
                 "zendframework/zend-filter": "self.version",
                 "zendframework/zend-i18n": "self.version",
                 "zendframework/zend-json": "self.version",
@@ -772,20 +767,20 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Zend\\Config\\": "src/"
+                    "Zend\\Config\\": ""
                 }
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
             "description": "provides a nested object property based user interface for accessing this configuration data within application code",
-            "homepage": "https://github.com/zendframework/zend-config",
+            "homepage": "https://github.com/zendframework/zf2",
             "keywords": [
                 "config",
                 "zf2"
             ],
-            "time": "2015-03-25 20:55:48"
+            "time": "2015-04-01 17:59:31"
         },
         {
             "name": "zendframework/zend-console",
@@ -793,23 +788,18 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-console.git",
-                "reference": "54823d9ba6f8ce39046384ee5a043b5b3d5f56d7"
+                "reference": "94ab6663b07e19f20b3319ecf317bd72b6a72dca"
             },
             "dist": {
                 "type": "zip",
                 "url": "https://api.github.com/repos/zendframework/zend-console/zipball/54823d9ba6f8ce39046384ee5a043b5b3d5f56d7",
-                "reference": "54823d9ba6f8ce39046384ee5a043b5b3d5f56d7",
+                "reference": "94ab6663b07e19f20b3319ecf317bd72b6a72dca",
                 "shasum": ""
             },
             "require": {
                 "php": ">=5.3.23",
                 "zendframework/zend-stdlib": "self.version"
             },
-            "require-dev": {
-                "fabpot/php-cs-fixer": "1.7.*",
-                "phpunit/phpunit": "~4.0",
-                "satooshi/php-coveralls": "dev-master"
-            },
             "suggest": {
                 "zendframework/zend-filter": "To support DefaultRouteMatcher usage",
                 "zendframework/zend-validator": "To support DefaultRouteMatcher usage"
@@ -823,19 +813,19 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Zend\\Console\\": "src/"
+                    "Zend\\Console\\": ""
                 }
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
-            "homepage": "https://github.com/zendframework/zend-console",
+            "homepage": "https://github.com/zendframework/zf2",
             "keywords": [
                 "console",
                 "zf2"
             ],
-            "time": "2015-03-25 20:55:48"
+            "time": "2015-04-01 17:59:48"
         },
         {
             "name": "zendframework/zend-di",
@@ -843,12 +833,12 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-di.git",
-                "reference": "b9f8de081adecf71a003a569e9ba76c0a4c00bf2"
+                "reference": "0811f2a67ad0b50dfb8d602ed67cde0b82249190"
             },
             "dist": {
                 "type": "zip",
                 "url": "https://api.github.com/repos/zendframework/zend-di/zipball/b9f8de081adecf71a003a569e9ba76c0a4c00bf2",
-                "reference": "b9f8de081adecf71a003a569e9ba76c0a4c00bf2",
+                "reference": "0811f2a67ad0b50dfb8d602ed67cde0b82249190",
                 "shasum": ""
             },
             "require": {
@@ -857,9 +847,6 @@
                 "zendframework/zend-stdlib": "self.version"
             },
             "require-dev": {
-                "fabpot/php-cs-fixer": "1.7.*",
-                "phpunit/phpunit": "~4.0",
-                "satooshi/php-coveralls": "dev-master",
                 "zendframework/zend-servicemanager": "self.version"
             },
             "suggest": {
@@ -874,19 +861,19 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Zend\\Di\\": "src/"
+                    "Zend\\Di\\": ""
                 }
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
-            "homepage": "https://github.com/zendframework/zend-di",
+            "homepage": "https://github.com/zendframework/zf2",
             "keywords": [
                 "di",
                 "zf2"
             ],
-            "time": "2015-03-25 20:55:48"
+            "time": "2015-04-01 18:01:30"
         },
         {
             "name": "zendframework/zend-escaper",
@@ -894,22 +881,17 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-escaper.git",
-                "reference": "15e5769e4fcdb4bf07ebd76500810e7070e23a97"
+                "reference": "65b3328627362b0be1d5e9067bc846511d1fbc96"
             },
             "dist": {
                 "type": "zip",
                 "url": "https://api.github.com/repos/zendframework/zend-escaper/zipball/15e5769e4fcdb4bf07ebd76500810e7070e23a97",
-                "reference": "15e5769e4fcdb4bf07ebd76500810e7070e23a97",
+                "reference": "65b3328627362b0be1d5e9067bc846511d1fbc96",
                 "shasum": ""
             },
             "require": {
                 "php": ">=5.3.23"
             },
-            "require-dev": {
-                "fabpot/php-cs-fixer": "1.7.*",
-                "phpunit/phpunit": "~4.0",
-                "satooshi/php-coveralls": "dev-master"
-            },
             "type": "library",
             "extra": {
                 "branch-alias": {
@@ -919,19 +901,19 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Zend\\Escaper\\": "src/"
+                    "Zend\\Escaper\\": ""
                 }
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
-            "homepage": "https://github.com/zendframework/zend-escaper",
+            "homepage": "https://github.com/zendframework/zf2",
             "keywords": [
                 "escaper",
                 "zf2"
             ],
-            "time": "2015-03-23 18:29:14"
+            "time": "2015-04-01 18:02:07"
         },
         {
             "name": "zendframework/zend-eventmanager",
@@ -939,23 +921,18 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-eventmanager.git",
-                "reference": "58d21c95c7005a527262fd536499195f104e83f9"
+                "reference": "38df5b567d4ff4d22144745c503ba0502d0d5695"
             },
             "dist": {
                 "type": "zip",
                 "url": "https://api.github.com/repos/zendframework/zend-eventmanager/zipball/58d21c95c7005a527262fd536499195f104e83f9",
-                "reference": "58d21c95c7005a527262fd536499195f104e83f9",
+                "reference": "38df5b567d4ff4d22144745c503ba0502d0d5695",
                 "shasum": ""
             },
             "require": {
                 "php": ">=5.3.23",
                 "zendframework/zend-stdlib": "self.version"
             },
-            "require-dev": {
-                "fabpot/php-cs-fixer": "1.7.*",
-                "phpunit/phpunit": "~4.0",
-                "satooshi/php-coveralls": "dev-master"
-            },
             "type": "library",
             "extra": {
                 "branch-alias": {
@@ -965,19 +942,19 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Zend\\EventManager\\": "src/"
+                    "Zend\\EventManager\\": ""
                 }
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
-            "homepage": "https://github.com/zendframework/zend-event-manager",
+            "homepage": "https://github.com/zendframework/zf2",
             "keywords": [
                 "eventmanager",
                 "zf2"
             ],
-            "time": "2015-03-23 18:29:14"
+            "time": "2015-04-01 18:05:26"
         },
         {
             "name": "zendframework/zend-filter",
@@ -985,12 +962,12 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-filter.git",
-                "reference": "6d8aed2da81b62a04747346c4370562cdbe34595"
+                "reference": "b13741a88553351fc52472de529b57b580b8f6f1"
             },
             "dist": {
                 "type": "zip",
                 "url": "https://api.github.com/repos/zendframework/zend-filter/zipball/6d8aed2da81b62a04747346c4370562cdbe34595",
-                "reference": "6d8aed2da81b62a04747346c4370562cdbe34595",
+                "reference": "b13741a88553351fc52472de529b57b580b8f6f1",
                 "shasum": ""
             },
             "require": {
@@ -998,9 +975,6 @@
                 "zendframework/zend-stdlib": "self.version"
             },
             "require-dev": {
-                "fabpot/php-cs-fixer": "1.7.*",
-                "phpunit/phpunit": "~4.0",
-                "satooshi/php-coveralls": "dev-master",
                 "zendframework/zend-crypt": "self.version",
                 "zendframework/zend-servicemanager": "self.version",
                 "zendframework/zend-uri": "self.version"
@@ -1020,20 +994,20 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Zend\\Filter\\": "src/"
+                    "Zend\\Filter\\": ""
                 }
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
             "description": "provides a set of commonly needed data filters",
-            "homepage": "https://github.com/zendframework/zend-filter",
+            "homepage": "https://github.com/zendframework/zf2",
             "keywords": [
                 "filter",
                 "zf2"
             ],
-            "time": "2015-03-25 20:55:48"
+            "time": "2015-04-01 18:09:25"
         },
         {
             "name": "zendframework/zend-form",
@@ -1041,12 +1015,12 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-form.git",
-                "reference": "bca0db55718355d25c2c10fdd41a83561f1c94b3"
+                "reference": "09f5bd46ffbf783df22281898e2175b291bd43a3"
             },
             "dist": {
                 "type": "zip",
                 "url": "https://api.github.com/repos/zendframework/zend-form/zipball/bca0db55718355d25c2c10fdd41a83561f1c94b3",
-                "reference": "bca0db55718355d25c2c10fdd41a83561f1c94b3",
+                "reference": "09f5bd46ffbf783df22281898e2175b291bd43a3",
                 "shasum": ""
             },
             "require": {
@@ -1055,9 +1029,6 @@
                 "zendframework/zend-stdlib": "self.version"
             },
             "require-dev": {
-                "fabpot/php-cs-fixer": "1.7.*",
-                "phpunit/phpunit": "~4.0",
-                "satooshi/php-coveralls": "dev-master",
                 "zendframework/zend-captcha": "self.version",
                 "zendframework/zend-code": "self.version",
                 "zendframework/zend-eventmanager": "self.version",
@@ -1088,19 +1059,19 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Zend\\Form\\": "src/"
+                    "Zend\\Form\\": ""
                 }
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
-            "homepage": "https://github.com/zendframework/zend-form",
+            "homepage": "https://github.com/zendframework/zf2",
             "keywords": [
                 "form",
                 "zf2"
             ],
-            "time": "2015-03-28 20:29:18"
+            "time": "2015-04-01 18:09:25"
         },
         {
             "name": "zendframework/zend-http",
@@ -1108,12 +1079,12 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-http.git",
-                "reference": "9c6047a0bdb3094d3ea07a215ff929cc47de4deb"
+                "reference": "ee6220609845b32d1b2873c9ac694aef56d508f5"
             },
             "dist": {
                 "type": "zip",
                 "url": "https://api.github.com/repos/zendframework/zend-http/zipball/9c6047a0bdb3094d3ea07a215ff929cc47de4deb",
-                "reference": "9c6047a0bdb3094d3ea07a215ff929cc47de4deb",
+                "reference": "ee6220609845b32d1b2873c9ac694aef56d508f5",
                 "shasum": ""
             },
             "require": {
@@ -1123,11 +1094,6 @@
                 "zendframework/zend-uri": "self.version",
                 "zendframework/zend-validator": "self.version"
             },
-            "require-dev": {
-                "fabpot/php-cs-fixer": "1.7.*",
-                "phpunit/phpunit": "~4.0",
-                "satooshi/php-coveralls": "dev-master"
-            },
             "type": "library",
             "extra": {
                 "branch-alias": {
@@ -1137,20 +1103,20 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Zend\\Http\\": "src/"
+                    "Zend\\Http\\": ""
                 }
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
             "description": "provides an easy interface for performing Hyper-Text Transfer Protocol (HTTP) requests",
-            "homepage": "https://github.com/zendframework/zend-http",
+            "homepage": "https://github.com/zendframework/zf2",
             "keywords": [
                 "http",
                 "zf2"
             ],
-            "time": "2015-03-27 15:46:30"
+            "time": "2015-04-01 18:09:25"
         },
         {
             "name": "zendframework/zend-i18n",
@@ -1158,12 +1124,12 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-i18n.git",
-                "reference": "9aebc5287373a802540d75fe5508417f866c2e52"
+                "reference": "33051775d9a8c341fe3b77d1f3daa0e921e2f4bd"
             },
             "dist": {
                 "type": "zip",
                 "url": "https://api.github.com/repos/zendframework/zend-i18n/zipball/9aebc5287373a802540d75fe5508417f866c2e52",
-                "reference": "9aebc5287373a802540d75fe5508417f866c2e52",
+                "reference": "33051775d9a8c341fe3b77d1f3daa0e921e2f4bd",
                 "shasum": ""
             },
             "require": {
@@ -1171,9 +1137,6 @@
                 "zendframework/zend-stdlib": "self.version"
             },
             "require-dev": {
-                "fabpot/php-cs-fixer": "1.7.*",
-                "phpunit/phpunit": "~4.0",
-                "satooshi/php-coveralls": "dev-master",
                 "zendframework/zend-cache": "self.version",
                 "zendframework/zend-config": "self.version",
                 "zendframework/zend-eventmanager": "self.version",
@@ -1202,19 +1165,19 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Zend\\I18n\\": "src/"
+                    "Zend\\I18n\\": ""
                 }
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
-            "homepage": "https://github.com/zendframework/zend-i18n",
+            "homepage": "https://github.com/zendframework/zf2",
             "keywords": [
                 "i18n",
                 "zf2"
             ],
-            "time": "2015-03-25 20:55:48"
+            "time": "2015-04-01 18:09:26"
         },
         {
             "name": "zendframework/zend-inputfilter",
@@ -1222,12 +1185,12 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-inputfilter.git",
-                "reference": "4b1398f3635fae3cc5e873c5bb067274f3d10a93"
+                "reference": "16856fec61f285e41e5492235220a4dec06ab90f"
             },
             "dist": {
                 "type": "zip",
                 "url": "https://api.github.com/repos/zendframework/zend-inputfilter/zipball/4b1398f3635fae3cc5e873c5bb067274f3d10a93",
-                "reference": "4b1398f3635fae3cc5e873c5bb067274f3d10a93",
+                "reference": "16856fec61f285e41e5492235220a4dec06ab90f",
                 "shasum": ""
             },
             "require": {
@@ -1237,9 +1200,6 @@
                 "zendframework/zend-validator": "self.version"
             },
             "require-dev": {
-                "fabpot/php-cs-fixer": "1.7.*",
-                "phpunit/phpunit": "~4.0",
-                "satooshi/php-coveralls": "dev-master",
                 "zendframework/zend-servicemanager": "self.version"
             },
             "suggest": {
@@ -1254,19 +1214,19 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Zend\\InputFilter\\": "src/"
+                    "Zend\\InputFilter\\": ""
                 }
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
-            "homepage": "https://github.com/zendframework/zend-input-filter",
+            "homepage": "https://github.com/zendframework/zf2",
             "keywords": [
                 "inputfilter",
                 "zf2"
             ],
-            "time": "2015-03-23 18:29:14"
+            "time": "2015-04-01 18:09:26"
         },
         {
             "name": "zendframework/zend-json",
@@ -1274,12 +1234,12 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-json.git",
-                "reference": "2d845e151c1b9a237cf1899ac31e17fb10bd1e3f"
+                "reference": "76aeb27e4baf39799e5ca3cf6f2fdd6748ee930c"
             },
             "dist": {
                 "type": "zip",
                 "url": "https://api.github.com/repos/zendframework/zend-json/zipball/2d845e151c1b9a237cf1899ac31e17fb10bd1e3f",
-                "reference": "2d845e151c1b9a237cf1899ac31e17fb10bd1e3f",
+                "reference": "76aeb27e4baf39799e5ca3cf6f2fdd6748ee930c",
                 "shasum": ""
             },
             "require": {
@@ -1287,9 +1247,6 @@
                 "zendframework/zend-stdlib": "self.version"
             },
             "require-dev": {
-                "fabpot/php-cs-fixer": "1.7.*",
-                "phpunit/phpunit": "~4.0",
-                "satooshi/php-coveralls": "dev-master",
                 "zendframework/zend-http": "self.version",
                 "zendframework/zend-server": "self.version"
             },
@@ -1307,20 +1264,20 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Zend\\Json\\": "src/"
+                    "Zend\\Json\\": ""
                 }
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
             "description": "provides convenience methods for serializing native PHP to JSON and decoding JSON to native PHP",
-            "homepage": "https://github.com/zendframework/zend-json",
+            "homepage": "https://github.com/zendframework/zf2",
             "keywords": [
                 "json",
                 "zf2"
             ],
-            "time": "2015-03-25 20:55:48"
+            "time": "2015-04-01 18:09:26"
         },
         {
             "name": "zendframework/zend-loader",
@@ -1328,22 +1285,17 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-loader.git",
-                "reference": "65de2c7a56f8eee633c6bf1cfab73e45648880d4"
+                "reference": "6868b8a0c346f17fb97724c3a63aa2cbf6b94865"
             },
             "dist": {
                 "type": "zip",
                 "url": "https://api.github.com/repos/zendframework/zend-loader/zipball/65de2c7a56f8eee633c6bf1cfab73e45648880d4",
-                "reference": "65de2c7a56f8eee633c6bf1cfab73e45648880d4",
+                "reference": "6868b8a0c346f17fb97724c3a63aa2cbf6b94865",
                 "shasum": ""
             },
             "require": {
                 "php": ">=5.3.23"
             },
-            "require-dev": {
-                "fabpot/php-cs-fixer": "1.7.*",
-                "phpunit/phpunit": "~4.0",
-                "satooshi/php-coveralls": "dev-master"
-            },
             "type": "library",
             "extra": {
                 "branch-alias": {
@@ -1353,19 +1305,19 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Zend\\Loader\\": "src/"
+                    "Zend\\Loader\\": ""
                 }
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
-            "homepage": "https://github.com/zendframework/zend-loader",
+            "homepage": "https://github.com/zendframework/zf2",
             "keywords": [
                 "loader",
                 "zf2"
             ],
-            "time": "2015-03-23 18:29:14"
+            "time": "2015-04-01 18:09:26"
         },
         {
             "name": "zendframework/zend-log",
@@ -1373,12 +1325,12 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-log.git",
-                "reference": "002e3c810cad7e31e51c9895e9e3cb6fbd312cdd"
+                "reference": "2d5d20fd45470506bdaff727c46dc25fe953146e"
             },
             "dist": {
                 "type": "zip",
                 "url": "https://api.github.com/repos/zendframework/zend-log/zipball/002e3c810cad7e31e51c9895e9e3cb6fbd312cdd",
-                "reference": "002e3c810cad7e31e51c9895e9e3cb6fbd312cdd",
+                "reference": "2d5d20fd45470506bdaff727c46dc25fe953146e",
                 "shasum": ""
             },
             "require": {
@@ -1387,9 +1339,6 @@
                 "zendframework/zend-stdlib": "self.version"
             },
             "require-dev": {
-                "fabpot/php-cs-fixer": "1.7.*",
-                "phpunit/phpunit": "~4.0",
-                "satooshi/php-coveralls": "dev-master",
                 "zendframework/zend-console": "self.version",
                 "zendframework/zend-db": "self.version",
                 "zendframework/zend-escaper": "self.version",
@@ -1413,21 +1362,21 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Zend\\Log\\": "src/"
+                    "Zend\\Log\\": ""
                 }
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
             "description": "component for general purpose logging",
-            "homepage": "https://github.com/zendframework/zend-log",
+            "homepage": "https://github.com/zendframework/zf2",
             "keywords": [
                 "log",
                 "logging",
                 "zf2"
             ],
-            "time": "2015-03-25 20:55:48"
+            "time": "2015-04-01 18:09:26"
         },
         {
             "name": "zendframework/zend-math",
@@ -1435,22 +1384,17 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-math.git",
-                "reference": "f41fe4acfd809c14f2a802d1aa45dec8fcd2cc73"
+                "reference": "634123f83ca90b6613f132d0d100e6b5e9890a29"
             },
             "dist": {
                 "type": "zip",
                 "url": "https://api.github.com/repos/zendframework/zend-math/zipball/f41fe4acfd809c14f2a802d1aa45dec8fcd2cc73",
-                "reference": "f41fe4acfd809c14f2a802d1aa45dec8fcd2cc73",
+                "reference": "634123f83ca90b6613f132d0d100e6b5e9890a29",
                 "shasum": ""
             },
             "require": {
                 "php": ">=5.3.23"
             },
-            "require-dev": {
-                "fabpot/php-cs-fixer": "1.7.*",
-                "phpunit/phpunit": "~4.0",
-                "satooshi/php-coveralls": "dev-master"
-            },
             "suggest": {
                 "ext-bcmath": "If using the bcmath functionality",
                 "ext-gmp": "If using the gmp functionality",
@@ -1466,19 +1410,19 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Zend\\Math\\": "src/"
+                    "Zend\\Math\\": ""
                 }
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
-            "homepage": "https://github.com/zendframework/zend-math",
+            "homepage": "https://github.com/zendframework/zf2",
             "keywords": [
                 "math",
                 "zf2"
             ],
-            "time": "2015-03-23 18:29:14"
+            "time": "2015-04-01 18:09:27"
         },
         {
             "name": "zendframework/zend-modulemanager",
@@ -1486,12 +1430,12 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-modulemanager.git",
-                "reference": "af7ae3cd29a1efb73cc66ae1081e606039d5c20f"
+                "reference": "cbe16b0eafe734a062ed0182381e64b9c953dccf"
             },
             "dist": {
                 "type": "zip",
                 "url": "https://api.github.com/repos/zendframework/zend-modulemanager/zipball/af7ae3cd29a1efb73cc66ae1081e606039d5c20f",
-                "reference": "af7ae3cd29a1efb73cc66ae1081e606039d5c20f",
+                "reference": "cbe16b0eafe734a062ed0182381e64b9c953dccf",
                 "shasum": ""
             },
             "require": {
@@ -1500,9 +1444,6 @@
                 "zendframework/zend-stdlib": "self.version"
             },
             "require-dev": {
-                "fabpot/php-cs-fixer": "1.7.*",
-                "phpunit/phpunit": "~4.0",
-                "satooshi/php-coveralls": "dev-master",
                 "zendframework/zend-config": "self.version",
                 "zendframework/zend-console": "self.version",
                 "zendframework/zend-loader": "self.version",
@@ -1524,19 +1465,19 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Zend\\ModuleManager\\": "src/"
+                    "Zend\\ModuleManager\\": ""
                 }
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
-            "homepage": "https://github.com/zendframework/zend-module-manager",
+            "homepage": "https://github.com/zendframework/zf2",
             "keywords": [
                 "modulemanager",
                 "zf2"
             ],
-            "time": "2015-03-23 18:29:14"
+            "time": "2015-04-01 18:09:27"
         },
         {
             "name": "zendframework/zend-mvc",
@@ -1544,12 +1485,12 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-mvc.git",
-                "reference": "0b4a4a829b30be510a3f215c4ff00c703ee8b431"
+                "reference": "bfff0f5f9e4d925ee13b8c159c9d6ae7e0db5412"
             },
             "dist": {
                 "type": "zip",
                 "url": "https://api.github.com/repos/zendframework/zend-mvc/zipball/0b4a4a829b30be510a3f215c4ff00c703ee8b431",
-                "reference": "0b4a4a829b30be510a3f215c4ff00c703ee8b431",
+                "reference": "bfff0f5f9e4d925ee13b8c159c9d6ae7e0db5412",
                 "shasum": ""
             },
             "require": {
@@ -1560,9 +1501,6 @@
                 "zendframework/zend-stdlib": "self.version"
             },
             "require-dev": {
-                "fabpot/php-cs-fixer": "1.7.*",
-                "phpunit/phpunit": "~4.0",
-                "satooshi/php-coveralls": "dev-master",
                 "zendframework/zend-authentication": "self.version",
                 "zendframework/zend-console": "self.version",
                 "zendframework/zend-di": "self.version",
@@ -1611,19 +1549,19 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Zend\\Mvc\\": "src/"
+                    "Zend\\Mvc\\": ""
                 }
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
-            "homepage": "https://github.com/zendframework/zend-mvc",
+            "homepage": "https://github.com/zendframework/zf2",
             "keywords": [
                 "mvc",
                 "zf2"
             ],
-            "time": "2015-03-26 18:55:14"
+            "time": "2015-04-01 18:09:27"
         },
         {
             "name": "zendframework/zend-serializer",
@@ -1631,12 +1569,12 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-serializer.git",
-                "reference": "3c531789a9882a5deb721356a7bd2642b65d4b09"
+                "reference": "a46960854d6326f0036d98c9abc7a79e36e25928"
             },
             "dist": {
                 "type": "zip",
                 "url": "https://api.github.com/repos/zendframework/zend-serializer/zipball/3c531789a9882a5deb721356a7bd2642b65d4b09",
-                "reference": "3c531789a9882a5deb721356a7bd2642b65d4b09",
+                "reference": "a46960854d6326f0036d98c9abc7a79e36e25928",
                 "shasum": ""
             },
             "require": {
@@ -1646,9 +1584,6 @@
                 "zendframework/zend-stdlib": "self.version"
             },
             "require-dev": {
-                "fabpot/php-cs-fixer": "1.7.*",
-                "phpunit/phpunit": "~4.0",
-                "satooshi/php-coveralls": "dev-master",
                 "zendframework/zend-servicemanager": "self.version"
             },
             "suggest": {
@@ -1663,20 +1598,20 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Zend\\Serializer\\": "src/"
+                    "Zend\\Serializer\\": ""
                 }
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
             "description": "provides an adapter based interface to simply generate storable representation of PHP types by different facilities, and recover",
-            "homepage": "https://github.com/zendframework/zend-serializer",
+            "homepage": "https://github.com/zendframework/zf2",
             "keywords": [
                 "serializer",
                 "zf2"
             ],
-            "time": "2015-03-25 20:55:48"
+            "time": "2015-04-01 18:09:28"
         },
         {
             "name": "zendframework/zend-server",
@@ -1684,12 +1619,12 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-server.git",
-                "reference": "d11ff0bd529d202022823d4accf5983cbd50fc49"
+                "reference": "fc73c34490908ba143af3c57c7e166b40c4b9f8e"
             },
             "dist": {
                 "type": "zip",
                 "url": "https://api.github.com/repos/zendframework/zend-server/zipball/d11ff0bd529d202022823d4accf5983cbd50fc49",
-                "reference": "d11ff0bd529d202022823d4accf5983cbd50fc49",
+                "reference": "fc73c34490908ba143af3c57c7e166b40c4b9f8e",
                 "shasum": ""
             },
             "require": {
@@ -1697,11 +1632,6 @@
                 "zendframework/zend-code": "self.version",
                 "zendframework/zend-stdlib": "self.version"
             },
-            "require-dev": {
-                "fabpot/php-cs-fixer": "1.7.*",
-                "phpunit/phpunit": "~4.0",
-                "satooshi/php-coveralls": "dev-master"
-            },
             "type": "library",
             "extra": {
                 "branch-alias": {
@@ -1711,19 +1641,19 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Zend\\Server\\": "src/"
+                    "Zend\\Server\\": ""
                 }
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
-            "homepage": "https://github.com/zendframework/zend-server",
+            "homepage": "https://github.com/zendframework/zf2",
             "keywords": [
                 "server",
                 "zf2"
             ],
-            "time": "2015-03-25 20:55:48"
+            "time": "2015-04-01 18:09:28"
         },
         {
             "name": "zendframework/zend-servicemanager",
@@ -1731,21 +1661,18 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-servicemanager.git",
-                "reference": "57cf99fa5ac08c05a135a8d0d676c52a5e450083"
+                "reference": "d3c27c708a148a30608f313a5b7a61a531bd9cb9"
             },
             "dist": {
                 "type": "zip",
                 "url": "https://api.github.com/repos/zendframework/zend-servicemanager/zipball/57cf99fa5ac08c05a135a8d0d676c52a5e450083",
-                "reference": "57cf99fa5ac08c05a135a8d0d676c52a5e450083",
+                "reference": "d3c27c708a148a30608f313a5b7a61a531bd9cb9",
                 "shasum": ""
             },
             "require": {
                 "php": ">=5.3.23"
             },
             "require-dev": {
-                "fabpot/php-cs-fixer": "1.7.*",
-                "phpunit/phpunit": "~4.0",
-                "satooshi/php-coveralls": "dev-master",
                 "zendframework/zend-di": "self.version"
             },
             "suggest": {
@@ -1761,19 +1688,19 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Zend\\ServiceManager\\": "src/"
+                    "Zend\\ServiceManager\\": ""
                 }
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
-            "homepage": "https://github.com/zendframework/zend-service-manager",
+            "homepage": "https://github.com/zendframework/zf2",
             "keywords": [
                 "servicemanager",
                 "zf2"
             ],
-            "time": "2015-03-23 18:29:14"
+            "time": "2015-04-01 18:09:28"
         },
         {
             "name": "zendframework/zend-soap",
@@ -1781,12 +1708,12 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-soap.git",
-                "reference": "a599463aba97ce247faf3fb443e3c7858b46449b"
+                "reference": "e42b900798ea95a9063fa4922da976d8b3a8ab6f"
             },
             "dist": {
                 "type": "zip",
                 "url": "https://api.github.com/repos/zendframework/zend-soap/zipball/a599463aba97ce247faf3fb443e3c7858b46449b",
-                "reference": "a599463aba97ce247faf3fb443e3c7858b46449b",
+                "reference": "e42b900798ea95a9063fa4922da976d8b3a8ab6f",
                 "shasum": ""
             },
             "require": {
@@ -1796,9 +1723,6 @@
                 "zendframework/zend-uri": "self.version"
             },
             "require-dev": {
-                "fabpot/php-cs-fixer": "1.7.*",
-                "phpunit/phpunit": "~4.0",
-                "satooshi/php-coveralls": "dev-master",
                 "zendframework/zend-http": "self.version"
             },
             "suggest": {
@@ -1813,19 +1737,19 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Zend\\Soap\\": "src/"
+                    "Zend\\Soap\\": ""
                 }
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
-            "homepage": "https://github.com/zendframework/zend-soap",
+            "homepage": "https://github.com/zendframework/zf2",
             "keywords": [
                 "soap",
                 "zf2"
             ],
-            "time": "2015-03-25 20:55:48"
+            "time": "2015-04-01 18:09:29"
         },
         {
             "name": "zendframework/zend-stdlib",
@@ -1833,21 +1757,18 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-stdlib.git",
-                "reference": "cf05c5ba75606e47ffee91cedc72778da46f74c3"
+                "reference": "eab586f4c18af3fa63c977611939f1f4a3cf1030"
             },
             "dist": {
                 "type": "zip",
                 "url": "https://api.github.com/repos/zendframework/zend-stdlib/zipball/cf05c5ba75606e47ffee91cedc72778da46f74c3",
-                "reference": "cf05c5ba75606e47ffee91cedc72778da46f74c3",
+                "reference": "eab586f4c18af3fa63c977611939f1f4a3cf1030",
                 "shasum": ""
             },
             "require": {
                 "php": ">=5.3.23"
             },
             "require-dev": {
-                "fabpot/php-cs-fixer": "1.7.*",
-                "phpunit/phpunit": "~4.0",
-                "satooshi/php-coveralls": "dev-master",
                 "zendframework/zend-eventmanager": "self.version",
                 "zendframework/zend-filter": "self.version",
                 "zendframework/zend-serializer": "self.version",
@@ -1868,19 +1789,19 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Zend\\Stdlib\\": "src/"
+                    "Zend\\Stdlib\\": ""
                 }
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
-            "homepage": "https://github.com/zendframework/zend-stdlib",
+            "homepage": "https://github.com/zendframework/zf2",
             "keywords": [
                 "stdlib",
                 "zf2"
             ],
-            "time": "2015-03-25 20:55:48"
+            "time": "2015-04-01 18:09:29"
         },
         {
             "name": "zendframework/zend-text",
@@ -1888,12 +1809,12 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-text.git",
-                "reference": "d962ea25647b20527f3ca34ae225bbc885dabfc7"
+                "reference": "35f519e20e575a331c2ee554e5a555a59ce4b9e2"
             },
             "dist": {
                 "type": "zip",
                 "url": "https://api.github.com/repos/zendframework/zend-text/zipball/d962ea25647b20527f3ca34ae225bbc885dabfc7",
-                "reference": "d962ea25647b20527f3ca34ae225bbc885dabfc7",
+                "reference": "35f519e20e575a331c2ee554e5a555a59ce4b9e2",
                 "shasum": ""
             },
             "require": {
@@ -1901,11 +1822,6 @@
                 "zendframework/zend-servicemanager": "self.version",
                 "zendframework/zend-stdlib": "self.version"
             },
-            "require-dev": {
-                "fabpot/php-cs-fixer": "1.7.*",
-                "phpunit/phpunit": "~4.0",
-                "satooshi/php-coveralls": "dev-master"
-            },
             "type": "library",
             "extra": {
                 "branch-alias": {
@@ -1915,19 +1831,19 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Zend\\Text\\": "src/"
+                    "Zend\\Text\\": ""
                 }
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
-            "homepage": "https://github.com/zendframework/zend-text",
+            "homepage": "https://github.com/zendframework/zf2",
             "keywords": [
                 "text",
                 "zf2"
             ],
-            "time": "2015-03-25 20:55:48"
+            "time": "2015-04-01 18:09:29"
         },
         {
             "name": "zendframework/zend-uri",
@@ -1935,12 +1851,12 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-uri.git",
-                "reference": "bd9e625639415376f6a82551c73328448d7bc7d1"
+                "reference": "53f5b162b293f80de8b951eece8e08be83c4fe16"
             },
             "dist": {
                 "type": "zip",
                 "url": "https://api.github.com/repos/zendframework/zend-uri/zipball/bd9e625639415376f6a82551c73328448d7bc7d1",
-                "reference": "bd9e625639415376f6a82551c73328448d7bc7d1",
+                "reference": "53f5b162b293f80de8b951eece8e08be83c4fe16",
                 "shasum": ""
             },
             "require": {
@@ -1948,11 +1864,6 @@
                 "zendframework/zend-escaper": "self.version",
                 "zendframework/zend-validator": "self.version"
             },
-            "require-dev": {
-                "fabpot/php-cs-fixer": "1.7.*",
-                "phpunit/phpunit": "~4.0",
-                "satooshi/php-coveralls": "dev-master"
-            },
             "type": "library",
             "extra": {
                 "branch-alias": {
@@ -1962,20 +1873,20 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Zend\\Uri\\": "src/"
+                    "Zend\\Uri\\": ""
                 }
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
             "description": "a component that aids in manipulating and validating » Uniform Resource Identifiers (URIs)",
-            "homepage": "https://github.com/zendframework/zend-uri",
+            "homepage": "https://github.com/zendframework/zf2",
             "keywords": [
                 "uri",
                 "zf2"
             ],
-            "time": "2015-03-25 20:55:48"
+            "time": "2015-04-01 18:09:29"
         },
         {
             "name": "zendframework/zend-validator",
@@ -1983,12 +1894,12 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-validator.git",
-                "reference": "45fac2545a0f2eb66d71cb7966feee481e7c475f"
+                "reference": "eb678d20256f120a72ca27276bbb2875841701ab"
             },
             "dist": {
                 "type": "zip",
                 "url": "https://api.github.com/repos/zendframework/zend-validator/zipball/45fac2545a0f2eb66d71cb7966feee481e7c475f",
-                "reference": "45fac2545a0f2eb66d71cb7966feee481e7c475f",
+                "reference": "eb678d20256f120a72ca27276bbb2875841701ab",
                 "shasum": ""
             },
             "require": {
@@ -1996,9 +1907,6 @@
                 "zendframework/zend-stdlib": "self.version"
             },
             "require-dev": {
-                "fabpot/php-cs-fixer": "1.7.*",
-                "phpunit/phpunit": "~4.0",
-                "satooshi/php-coveralls": "dev-master",
                 "zendframework/zend-db": "self.version",
                 "zendframework/zend-filter": "self.version",
                 "zendframework/zend-i18n": "self.version",
@@ -2026,20 +1934,20 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Zend\\Validator\\": "src/"
+                    "Zend\\Validator\\": ""
                 }
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
             "description": "provides a set of commonly needed validators",
-            "homepage": "https://github.com/zendframework/zend-validator",
+            "homepage": "https://github.com/zendframework/zf2",
             "keywords": [
                 "validator",
                 "zf2"
             ],
-            "time": "2015-03-25 20:55:48"
+            "time": "2015-04-01 18:09:30"
         },
         {
             "name": "zendframework/zend-view",
@@ -2047,12 +1955,12 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-view.git",
-                "reference": "37beb1ad46e530f627b4b6c3716efd728e976ba9"
+                "reference": "e119b4b5f082af58a96eb206e782b62c193227bf"
             },
             "dist": {
                 "type": "zip",
                 "url": "https://api.github.com/repos/zendframework/zend-view/zipball/37beb1ad46e530f627b4b6c3716efd728e976ba9",
-                "reference": "37beb1ad46e530f627b4b6c3716efd728e976ba9",
+                "reference": "e119b4b5f082af58a96eb206e782b62c193227bf",
                 "shasum": ""
             },
             "require": {
@@ -2062,9 +1970,6 @@
                 "zendframework/zend-stdlib": "self.version"
             },
             "require-dev": {
-                "fabpot/php-cs-fixer": "1.7.*",
-                "phpunit/phpunit": "~4.0",
-                "satooshi/php-coveralls": "dev-master",
                 "zendframework/zend-authentication": "self.version",
                 "zendframework/zend-escaper": "self.version",
                 "zendframework/zend-feed": "self.version",
@@ -2103,35 +2008,35 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Zend\\View\\": "src/"
+                    "Zend\\View\\": ""
                 }
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
             "description": "provides a system of helpers, output filters, and variable escaping",
-            "homepage": "https://github.com/zendframework/zend-view",
+            "homepage": "https://github.com/zendframework/zf2",
             "keywords": [
                 "view",
                 "zf2"
             ],
-            "time": "2015-03-25 20:55:48"
+            "time": "2015-04-01 18:09:30"
         }
     ],
     "packages-dev": [
         {
             "name": "doctrine/instantiator",
-            "version": "1.0.4",
+            "version": "1.0.5",
             "source": {
                 "type": "git",
                 "url": "https://github.com/doctrine/instantiator.git",
-                "reference": "f976e5de371104877ebc89bd8fecb0019ed9c119"
+                "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/instantiator/zipball/f976e5de371104877ebc89bd8fecb0019ed9c119",
-                "reference": "f976e5de371104877ebc89bd8fecb0019ed9c119",
+                "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d",
+                "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d",
                 "shasum": ""
             },
             "require": {
@@ -2142,7 +2047,7 @@
                 "ext-pdo": "*",
                 "ext-phar": "*",
                 "phpunit/phpunit": "~4.0",
-                "squizlabs/php_codesniffer": "2.0.*@ALPHA"
+                "squizlabs/php_codesniffer": "~2.0"
             },
             "type": "library",
             "extra": {
@@ -2151,11 +2056,11 @@
                 }
             },
             "autoload": {
-                "psr-0": {
-                    "Doctrine\\Instantiator\\": "src"
+                "psr-4": {
+                    "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
                 }
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "MIT"
             ],
@@ -2172,20 +2077,20 @@
                 "constructor",
                 "instantiate"
             ],
-            "time": "2014-10-13 12:58:55"
+            "time": "2015-06-14 21:17:01"
         },
         {
             "name": "fabpot/php-cs-fixer",
-            "version": "v1.8.1",
+            "version": "v1.9",
             "source": {
                 "type": "git",
                 "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git",
-                "reference": "c1e28e95a978e967dade5469a4bf88162faa67bf"
+                "reference": "ef528b9d3f1dd66197baabf8f77c8402c62bb9fc"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/c1e28e95a978e967dade5469a4bf88162faa67bf",
-                "reference": "c1e28e95a978e967dade5469a4bf88162faa67bf",
+                "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/ef528b9d3f1dd66197baabf8f77c8402c62bb9fc",
+                "reference": "ef528b9d3f1dd66197baabf8f77c8402c62bb9fc",
                 "shasum": ""
             },
             "require": {
@@ -2211,7 +2116,7 @@
                     "Symfony\\CS\\": "Symfony/CS/"
                 }
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "MIT"
             ],
@@ -2226,7 +2131,7 @@
                 }
             ],
             "description": "A tool to automatically fix PHP code style",
-            "time": "2015-05-29 06:10:12"
+            "time": "2015-06-13 09:30:19"
         },
         {
             "name": "league/climate",
@@ -2255,7 +2160,7 @@
                     "League\\CLImate\\": "src/"
                 }
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "MIT"
             ],
@@ -2316,7 +2221,7 @@
                     "OAuth\\Unit": "tests"
                 }
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "MIT"
             ],
@@ -2371,7 +2276,7 @@
                     "PDepend\\": "src/main/php/"
                 }
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
@@ -2412,7 +2317,7 @@
                     "PHPMD\\": "src/main/php"
                 }
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
@@ -2482,7 +2387,7 @@
                     "src/"
                 ]
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
@@ -2525,7 +2430,7 @@
                     "File/"
                 ]
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "include-path": [
                 ""
             ],
@@ -2570,7 +2475,7 @@
                     "Text/"
                 ]
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "include-path": [
                 ""
             ],
@@ -2593,16 +2498,16 @@
         },
         {
             "name": "phpunit/php-timer",
-            "version": "1.0.5",
+            "version": "1.0.6",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/php-timer.git",
-                "reference": "19689d4354b295ee3d8c54b4f42c3efb69cbc17c"
+                "reference": "83fe1bdc5d47658b727595c14da140da92b3d66d"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/19689d4354b295ee3d8c54b4f42c3efb69cbc17c",
-                "reference": "19689d4354b295ee3d8c54b4f42c3efb69cbc17c",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/83fe1bdc5d47658b727595c14da140da92b3d66d",
+                "reference": "83fe1bdc5d47658b727595c14da140da92b3d66d",
                 "shasum": ""
             },
             "require": {
@@ -2611,13 +2516,10 @@
             "type": "library",
             "autoload": {
                 "classmap": [
-                    "PHP/"
+                    "src/"
                 ]
             },
-            "notification-url": "http://packagist.org/downloads/",
-            "include-path": [
-                ""
-            ],
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
@@ -2633,7 +2535,7 @@
             "keywords": [
                 "timer"
             ],
-            "time": "2013-08-02 07:42:54"
+            "time": "2015-06-13 07:35:30"
         },
         {
             "name": "phpunit/php-token-stream",
@@ -2667,7 +2569,7 @@
                     "src/"
                 ]
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
@@ -2734,7 +2636,7 @@
                     "src/"
                 ]
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "include-path": [
                 "",
                 "../../symfony/yaml/"
@@ -2794,7 +2696,7 @@
                     "src/"
                 ]
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
@@ -2846,7 +2748,7 @@
                     "src/"
                 ]
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
@@ -2908,7 +2810,7 @@
                     "src/"
                 ]
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
@@ -2960,7 +2862,7 @@
                     "src/"
                 ]
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
@@ -3011,7 +2913,7 @@
                     "src/"
                 ]
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
@@ -3076,7 +2978,7 @@
                     "src/"
                 ]
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
@@ -3118,7 +3020,7 @@
                     "src/"
                 ]
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
@@ -3172,7 +3074,7 @@
                     "StaticReview\\": "src/"
                 }
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "MIT"
             ],
@@ -3243,7 +3145,7 @@
                     "CodeSniffer/Standards/Zend/Sniffs/"
                 ]
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
@@ -3293,7 +3195,7 @@
                     "Symfony\\Component\\Config\\": ""
                 }
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "MIT"
             ],
@@ -3353,7 +3255,7 @@
                     "Symfony\\Component\\DependencyInjection\\": ""
                 }
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "MIT"
             ],
@@ -3411,7 +3313,7 @@
                     "Symfony\\Component\\EventDispatcher\\": ""
                 }
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "MIT"
             ],
@@ -3460,7 +3362,7 @@
                     "Symfony\\Component\\Filesystem\\": ""
                 }
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "MIT"
             ],
@@ -3509,7 +3411,7 @@
                     "Symfony\\Component\\Stopwatch\\": ""
                 }
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "MIT"
             ],
@@ -3558,7 +3460,7 @@
                     "Symfony\\Component\\Yaml\\": ""
                 }
             },
-            "notification-url": "http://packagist.org/downloads/",
+            "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "MIT"
             ],
diff --git a/dev/tests/api-functional/_files/Magento/TestJoinDirectives/Api/TestRepositoryInterface.php b/dev/tests/api-functional/_files/Magento/TestJoinDirectives/Api/TestRepositoryInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..fd70ae4b5fb01e60282b453577e62af448eff641
--- /dev/null
+++ b/dev/tests/api-functional/_files/Magento/TestJoinDirectives/Api/TestRepositoryInterface.php
@@ -0,0 +1,20 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\TestJoinDirectives\Api;
+
+/**
+ * Interface TestRepositoryInterface
+ */
+interface TestRepositoryInterface
+{
+    /**
+     * Get list of quotes
+     *
+     * @param \Magento\Framework\Api\SearchCriteria $searchCriteria
+     * @return \Magento\Quote\Api\Data\CartSearchResultsInterface
+     */
+    public function getList(\Magento\Framework\Api\SearchCriteria $searchCriteria);
+}
diff --git a/dev/tests/api-functional/_files/Magento/TestJoinDirectives/Model/TestRepository.php b/dev/tests/api-functional/_files/Magento/TestJoinDirectives/Model/TestRepository.php
new file mode 100644
index 0000000000000000000000000000000000000000..42cedf2108dfa5bd2d2107de43f25988a9c57ee4
--- /dev/null
+++ b/dev/tests/api-functional/_files/Magento/TestJoinDirectives/Model/TestRepository.php
@@ -0,0 +1,58 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\TestJoinDirectives\Model;
+
+use Magento\TestJoinDirectives\Api\TestRepositoryInterface;
+use Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface;
+
+/**
+ * Model TestRepository
+ */
+class TestRepository implements TestRepositoryInterface
+{
+    /**
+     * @var \Magento\Quote\Model\Resource\Quote\CollectionFactory
+     */
+    private $quoteCollectionFactory;
+
+    /**
+     * @var \Magento\Quote\Api\Data\CartSearchResultsInterfaceFactory
+     */
+    private $searchResultsDataFactory;
+
+    /**
+     * @var JoinProcessorInterface
+     */
+    private $extensionAttributesJoinProcessor;
+
+    /**
+     * @param \Magento\Quote\Model\Resource\Quote\CollectionFactory $quoteCollectionFactory
+     * @param \Magento\Quote\Api\Data\CartSearchResultsInterfaceFactory $searchResultsDataFactory
+     * @param JoinProcessorInterface $extensionAttributesJoinProcessor
+     */
+    public function __construct(
+        \Magento\Quote\Model\Resource\Quote\CollectionFactory $quoteCollectionFactory,
+        \Magento\Quote\Api\Data\CartSearchResultsInterfaceFactory $searchResultsDataFactory,
+        JoinProcessorInterface $extensionAttributesJoinProcessor
+    ) {
+        $this->quoteCollectionFactory = $quoteCollectionFactory;
+        $this->searchResultsDataFactory = $searchResultsDataFactory;
+        $this->extensionAttributesJoinProcessor = $extensionAttributesJoinProcessor;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getList(\Magento\Framework\Api\SearchCriteria $searchCriteria)
+    {
+        $quoteCollection = $this->quoteCollectionFactory->create();
+        $this->extensionAttributesJoinProcessor->process($quoteCollection);
+        $searchData = $this->searchResultsDataFactory->create();
+        $searchData->setSearchCriteria($searchCriteria);
+        $searchData->setItems($quoteCollection->getItems());
+        return $searchData;
+    }
+}
diff --git a/dev/tests/api-functional/_files/Magento/TestJoinDirectives/composer.json b/dev/tests/api-functional/_files/Magento/TestJoinDirectives/composer.json
new file mode 100644
index 0000000000000000000000000000000000000000..72d19bcf34cfb159198b4addc55a41eeda55fa04
--- /dev/null
+++ b/dev/tests/api-functional/_files/Magento/TestJoinDirectives/composer.json
@@ -0,0 +1,20 @@
+{
+  "name": "magento/module-test-join-directives",
+  "description": "test integration for join directives",
+  "require": {
+    "php": "~5.5.0|~5.6.0",
+    "magento/framework": "0.42.0-beta8",
+    "magento/module-sales": "0.42.0-beta8",
+    "magento/magento-composer-installer": "*"
+  },
+  "type": "magento2-module",
+  "version": "1.0",
+  "extra": {
+    "map": [
+      [
+        "*",
+        "Magento/TestModuleJoinDirectives"
+      ]
+    ]
+  }
+}
diff --git a/dev/tests/api-functional/_files/Magento/TestJoinDirectives/etc/acl.xml b/dev/tests/api-functional/_files/Magento/TestJoinDirectives/etc/acl.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ad548566ba7d1dc2cb7be0ce6a07b619708810f4
--- /dev/null
+++ b/dev/tests/api-functional/_files/Magento/TestJoinDirectives/etc/acl.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<!--
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+-->
+<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/Acl/etc/acl.xsd">
+    <acl>
+        <resources>
+            <resource id="Magento_Backend::admin">
+                <resource id="Magento_TestJoinDirectives::all" title="TestJoinDirectives" sortOrder="1">
+                    <resource id="Magento_TestJoinDirectives::getList" title="GetList" sortOrder="10"/>
+                </resource>
+            </resource>
+        </resources>
+    </acl>
+</config>
diff --git a/dev/tests/api-functional/_files/Magento/TestJoinDirectives/etc/di.xml b/dev/tests/api-functional/_files/Magento/TestJoinDirectives/etc/di.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a3633a8adf41f671a28221295746a2ad7ddb38d6
--- /dev/null
+++ b/dev/tests/api-functional/_files/Magento/TestJoinDirectives/etc/di.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!--
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+-->
+<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/ObjectManager/etc/config.xsd">
+    <preference for="Magento\TestJoinDirectives\Api\TestRepositoryInterface" type="Magento\TestJoinDirectives\Model\TestRepository" />
+</config>
diff --git a/dev/tests/api-functional/_files/Magento/TestJoinDirectives/etc/extension_attributes.xml b/dev/tests/api-functional/_files/Magento/TestJoinDirectives/etc/extension_attributes.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e20f73c0d237f691ad9717431637d4388abc218c
--- /dev/null
+++ b/dev/tests/api-functional/_files/Magento/TestJoinDirectives/etc/extension_attributes.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0"?>
+<!--
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+-->
+<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        xsi:noNamespaceSchemaLocation="../../../../../../../../lib/internal/Magento/Framework/Api/etc/extension_attributes.xsd">
+    <extension_attributes for="Magento\Quote\Api\Data\CartInterface">
+        <attribute code="quoteApiTestAttribute" type="Magento\User\Api\Data\UserInterface">
+            <join reference_table="admin_user"
+                  join_on_field="store_id"
+                  reference_field="user_id"
+                    >
+                <field>firstname</field>
+                <field>lastname</field>
+                <field>email</field>
+            </join>
+        </attribute>
+    </extension_attributes>
+    <extension_attributes for="Magento\Sales\Api\Data\InvoiceInterface">
+        <attribute code="invoiceApiTestAttribute" type="Magento\User\Api\Data\UserInterface">
+            <join reference_table="admin_user"
+                  join_on_field="store_id"
+                  reference_field="user_id"
+                    >
+                <field>firstname</field>
+                <field>lastname</field>
+                <field>email</field>
+            </join>
+        </attribute>
+    </extension_attributes>
+</config>
diff --git a/dev/tests/api-functional/_files/Magento/TestJoinDirectives/etc/module.xml b/dev/tests/api-functional/_files/Magento/TestJoinDirectives/etc/module.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7f91223ddc7d201017fb2dd85efdd0a6051c8730
--- /dev/null
+++ b/dev/tests/api-functional/_files/Magento/TestJoinDirectives/etc/module.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!--
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+-->
+<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/Module/etc/module.xsd">
+    <module name="Magento_TestJoinDirectives" setup_version="1.0"/>
+</config>
diff --git a/dev/tests/api-functional/_files/Magento/TestJoinDirectives/etc/webapi.xml b/dev/tests/api-functional/_files/Magento/TestJoinDirectives/etc/webapi.xml
new file mode 100644
index 0000000000000000000000000000000000000000..741e134c76d7eae7662bbbdef8b3053533a06c4e
--- /dev/null
+++ b/dev/tests/api-functional/_files/Magento/TestJoinDirectives/etc/webapi.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!--
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+-->
+<routes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        xsi:noNamespaceSchemaLocation="../../../../../app/code/Magento/Webapi/etc/webapi.xsd">
+
+    <route url="/V1/TestJoinDirectives" method="GET">
+        <service class="Magento\TestJoinDirectives\Api\TestRepositoryInterface" method="getList"/>
+        <resources>
+            <resource ref="Magento_TestJoinDirectives::getList" />
+        </resources>
+    </route>
+</routes>
diff --git a/dev/tests/api-functional/testsuite/Magento/Customer/Api/GroupRepositoryTest.php b/dev/tests/api-functional/testsuite/Magento/Customer/Api/GroupRepositoryTest.php
index fa8be5fc2dcc26815bb7e56ea942d2ce0ee9d271..722dfb6770135178cce323e37506cb19ce9cb650 100644
--- a/dev/tests/api-functional/testsuite/Magento/Customer/Api/GroupRepositoryTest.php
+++ b/dev/tests/api-functional/testsuite/Magento/Customer/Api/GroupRepositoryTest.php
@@ -863,16 +863,16 @@ class GroupRepositoryTest extends WebapiAbstract
     public function testSearchGroupsDataProvider()
     {
         return [
-            ['tax_class_id', '3', []],
-            ['tax_class_id', '0', null],
+            ['tax_class_id', 3, []],
+            ['tax_class_id', 0, null],
             ['code', md5(mt_rand(0, 10000000000) . time()), null],
             [
                 'id',
-                '0',
+                0,
                 [
-                    'id' => '0',
+                    'id' => 0,
                     'code' => 'NOT LOGGED IN',
-                    'tax_class_id' => '3',
+                    'tax_class_id' => 3,
                     'tax_class_name' => 'Retail Customer'
                 ]
             ],
@@ -880,19 +880,19 @@ class GroupRepositoryTest extends WebapiAbstract
                 'code',
                 'General',
                 [
-                    'id' => '1',
+                    'id' => 1,
                     'code' => 'General',
-                    'tax_class_id' => '3',
+                    'tax_class_id' => 3,
                     'tax_class_name' => 'Retail Customer'
                 ]
             ],
             [
                 'id',
-                '2',
+                2,
                 [
-                    'id' => '2',
+                    'id' => 2,
                     'code' => 'Wholesale',
-                    'tax_class_id' => '3',
+                    'tax_class_id' => 3,
                     'tax_class_name' => 'Retail Customer'
                 ]
             ],
@@ -900,9 +900,9 @@ class GroupRepositoryTest extends WebapiAbstract
                 'code',
                 'Retailer',
                 [
-                    'id' => '3',
+                    'id' => 3,
                     'code' => 'Retailer',
-                    'tax_class_id' => '3',
+                    'tax_class_id' => 3,
                     'tax_class_name' => 'Retail Customer'
                 ]
             ]
diff --git a/dev/tests/api-functional/testsuite/Magento/Webapi/JoinDirectivesTest.php b/dev/tests/api-functional/testsuite/Magento/Webapi/JoinDirectivesTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..142283fa8ac3509d81fbe04e9121872975f4d3eb
--- /dev/null
+++ b/dev/tests/api-functional/testsuite/Magento/Webapi/JoinDirectivesTest.php
@@ -0,0 +1,136 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\Webapi;
+
+use Magento\Framework\Api\SearchCriteriaBuilder;
+use Magento\Framework\Api\SortOrderBuilder;
+use Magento\Framework\Api\SortOrder;
+use Magento\Framework\Api\SearchCriteria;
+use Magento\Framework\Api\FilterBuilder;
+
+class JoinDirectivesTest extends \Magento\TestFramework\TestCase\WebapiAbstract
+{
+    /**
+     * @var SearchCriteriaBuilder
+     */
+    private $searchBuilder;
+
+    /**
+     * @var SortOrderBuilder
+     */
+    private $sortOrderBuilder;
+
+    /**
+     * @var FilterBuilder
+     */
+    private $filterBuilder;
+
+    /**
+     * @var \Magento\User\Model\User
+     */
+    private $user;
+
+    protected function setUp()
+    {
+        $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
+        $this->searchBuilder = $objectManager->create('Magento\Framework\Api\SearchCriteriaBuilder');
+        $this->sortOrderBuilder = $objectManager->create('Magento\Framework\Api\SortOrderBuilder');
+        $this->filterBuilder = $objectManager->create('Magento\Framework\Api\FilterBuilder');
+        $this->user = $objectManager->create('Magento\User\Model\User');
+    }
+
+    /**
+     * @magentoApiDataFixture Magento/Sales/_files/quote.php
+     */
+    public function testGetList()
+    {
+        /** @var SortOrder $sortOrder */
+        $sortOrder = $this->sortOrderBuilder->setField('store_id')->setDirection(SearchCriteria::SORT_ASC)->create();
+        $this->searchBuilder->setSortOrders([$sortOrder]);
+        $searchCriteria = $this->searchBuilder->create()->__toArray();
+        $requestData = ['searchCriteria' => $searchCriteria];
+
+        $restResourcePath = '/V1/TestJoinDirectives/';
+        $soapService = 'testJoinDirectivesTestRepositoryV1';
+        $expectedExtensionAttributes = $this->getExpectedExtensionAttributes();
+
+        $serviceInfo = [
+            'rest' => [
+                'resourcePath' => $restResourcePath . '?' . http_build_query($requestData),
+                'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET,
+            ],
+            'soap' => [
+                'service' => $soapService,
+                'operation' => $soapService . 'GetList',
+            ],
+        ];
+        $searchResult = $this->_webApiCall($serviceInfo, $requestData);
+
+        $this->assertArrayHasKey('items', $searchResult);
+        $itemData = array_pop($searchResult['items']);
+        $this->assertArrayHasKey('extension_attributes', $itemData);
+        $this->assertArrayHasKey('quote_api_test_attribute', $itemData['extension_attributes']);
+        $testAttribute = $itemData['extension_attributes']['quote_api_test_attribute'];
+        $this->assertEquals($expectedExtensionAttributes['firstname'], $testAttribute['first_name']);
+        $this->assertEquals($expectedExtensionAttributes['lastname'], $testAttribute['last_name']);
+        $this->assertEquals($expectedExtensionAttributes['email'], $testAttribute['email']);
+    }
+
+    /**
+     * @magentoApiDataFixture Magento/Sales/_files/invoice.php
+     */
+    public function testAutoGeneratedGetList()
+    {
+        $this->getExpectedExtensionAttributes();
+        /** @var SortOrder $sortOrder */
+        $sortOrder = $this->sortOrderBuilder->setField('store_id')->setDirection(SearchCriteria::SORT_ASC)->create();
+        $this->searchBuilder->setSortOrders([$sortOrder]);
+        $this->searchBuilder->addFilter([$this->filterBuilder->setField('state')->setValue(2)->create()]);
+        $searchCriteria = $this->searchBuilder->create()->__toArray();
+        $requestData = ['criteria' => $searchCriteria];
+
+        $restResourcePath = '/V1/invoices/';
+        $soapService = 'salesInvoiceRepositoryV1';
+        $expectedExtensionAttributes = $this->getExpectedExtensionAttributes();
+
+        $serviceInfo = [
+            'rest' => [
+                'resourcePath' => $restResourcePath . '?' . http_build_query($requestData),
+                'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET,
+            ],
+            'soap' => [
+                'service' => $soapService,
+                'operation' => $soapService . 'GetList',
+            ],
+        ];
+        $searchResult = $this->_webApiCall($serviceInfo, $requestData);
+
+        $this->assertArrayHasKey('items', $searchResult);
+        $itemData = array_pop($searchResult['items']);
+        $this->assertArrayHasKey('extension_attributes', $itemData);
+        $this->assertArrayHasKey('invoice_api_test_attribute', $itemData['extension_attributes']);
+        $testAttribute = $itemData['extension_attributes']['invoice_api_test_attribute'];
+        $this->assertEquals($expectedExtensionAttributes['firstname'], $testAttribute['first_name']);
+        $this->assertEquals($expectedExtensionAttributes['lastname'], $testAttribute['last_name']);
+        $this->assertEquals($expectedExtensionAttributes['email'], $testAttribute['email']);
+    }
+
+    /**
+     * Retrieve the admin user's information.
+     *
+     * @return array
+     */
+    private function getExpectedExtensionAttributes()
+    {
+        $this->user->load(1);
+        return [
+            'firstname' => $this->user->getFirstname(),
+            'lastname' => $this->user->getLastname(),
+            'email' => $this->user->getEmail()
+        ];
+    }
+}
diff --git a/dev/tests/integration/framework/Magento/TestFramework/Application.php b/dev/tests/integration/framework/Magento/TestFramework/Application.php
index dc457df4db0f0f9fdcd5c7cb13f1ff6f6afe4e6f..e5d71b3055b8f647c0df99e00dac71dc998b3c11 100644
--- a/dev/tests/integration/framework/Magento/TestFramework/Application.php
+++ b/dev/tests/integration/framework/Magento/TestFramework/Application.php
@@ -122,6 +122,13 @@ class Application
      */
     private $globalConfigFile;
 
+    /**
+     * Defines whether load test extension attributes or not
+     *
+     * @var bool
+     */
+    private $loadTestExtensionAttributes;
+
     /**
      * Constructor
      *
@@ -132,6 +139,7 @@ class Application
      * @param string $globalConfigDir
      * @param string $appMode
      * @param AutoloaderInterface $autoloadWrapper
+     * @param bool|null $loadTestExtensionAttributes
      */
     public function __construct(
         \Magento\Framework\Shell $shell,
@@ -140,13 +148,18 @@ class Application
         $globalConfigFile,
         $globalConfigDir,
         $appMode,
-        AutoloaderInterface $autoloadWrapper
+        AutoloaderInterface $autoloadWrapper,
+        $loadTestExtensionAttributes = false
     ) {
+        if (getcwd() != BP . '/dev/tests/integration') {
+            chdir(BP . '/dev/tests/integration');
+        }
         $this->_shell = $shell;
         $this->installConfigFile = $installConfigFile;
         $this->_globalConfigDir = realpath($globalConfigDir);
         $this->_appMode = $appMode;
         $this->installDir = $installDir;
+        $this->loadTestExtensionAttributes = $loadTestExtensionAttributes;
 
         $customDirs = $this->getCustomDirs();
         $this->dirList = new \Magento\Framework\App\Filesystem\DirectoryList(BP, $customDirs);
@@ -320,25 +333,28 @@ class Application
         $objectManager->addSharedInstance($logger, 'Magento\Framework\Logger\Monolog');
         $sequenceBuilder = $objectManager->get('\Magento\TestFramework\Db\Sequence\Builder');
         $objectManager->addSharedInstance($sequenceBuilder, 'Magento\SalesSequence\Model\Builder');
-
         Helper\Bootstrap::setObjectManager($objectManager);
-
-        $objectManager->configure(
-            [
-                'preferences' => [
-                    'Magento\Framework\App\State' => 'Magento\TestFramework\App\State',
-                    'Magento\Framework\Mail\TransportInterface' => 'Magento\TestFramework\Mail\TransportInterfaceMock',
-                    'Magento\Framework\Mail\Template\TransportBuilder'
-                        => 'Magento\TestFramework\Mail\Template\TransportBuilderMock',
-                ],
-                'Magento\Framework\Api\ExtensionAttribute\Config\Reader' => [
-                    'arguments' => [
-                        'fileResolver' => ['instance' => 'Magento\TestFramework\Api\Config\Reader\FileResolver'],
-                    ],
-                ],
+        $objectManagerConfiguration = [
+            'preferences' => [
+                'Magento\Framework\App\State' => 'Magento\TestFramework\App\State',
+                'Magento\Framework\Mail\TransportInterface' => 'Magento\TestFramework\Mail\TransportInterfaceMock',
+                'Magento\Framework\Mail\Template\TransportBuilder'
+                    => 'Magento\TestFramework\Mail\Template\TransportBuilderMock',
             ]
-        );
-
+        ];
+        if ($this->loadTestExtensionAttributes) {
+            $objectManagerConfiguration = array_merge(
+                $objectManagerConfiguration,
+                [
+                    'Magento\Framework\Api\ExtensionAttribute\Config\Reader' => [
+                        'arguments' => [
+                            'fileResolver' => ['instance' => 'Magento\TestFramework\Api\Config\Reader\FileResolver'],
+                        ],
+                    ],
+                ]
+            );
+        }
+        $objectManager->configure($objectManagerConfiguration);
         /** Register event observer of Integration Framework */
         /** @var \Magento\Framework\Event\Config\Data $eventConfigData */
         $eventConfigData = $objectManager->get('Magento\Framework\Event\Config\Data');
@@ -353,7 +369,6 @@ class Application
                 ]
             ]
         );
-
         $this->loadArea(\Magento\TestFramework\Application::DEFAULT_APP_AREA);
         \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->configure(
             $objectManager->get('Magento\Framework\ObjectManager\DynamicConfigInterface')->getConfiguration()
@@ -472,7 +487,7 @@ class Application
     private function copyAppConfigFiles()
     {
         $globalConfigFiles = glob(
-            $this->_globalConfigDir . '/{di.xml}',
+            $this->_globalConfigDir . '/{di.xml,vendor_path.php}',
             GLOB_BRACE
         );
         foreach ($globalConfigFiles as $file) {
diff --git a/dev/tests/integration/framework/bootstrap.php b/dev/tests/integration/framework/bootstrap.php
index 2f607671fe7736eac1da2fb0f704f2b52b8eb5fc..e39836e58dd5bf7b8126a89422acfeea813b9592 100644
--- a/dev/tests/integration/framework/bootstrap.php
+++ b/dev/tests/integration/framework/bootstrap.php
@@ -52,7 +52,8 @@ try {
         $globalConfigFile,
         $settings->get('TESTS_GLOBAL_CONFIG_DIR'),
         $settings->get('TESTS_MAGENTO_MODE'),
-        AutoloaderRegistry::getAutoloader()
+        AutoloaderRegistry::getAutoloader(),
+        true
     );
 
     $bootstrap = new \Magento\TestFramework\Bootstrap(
@@ -71,7 +72,7 @@ try {
     if (!$application->isInstalled()) {
         $application->install();
     }
-    $application->initialize();
+    $application->initialize([]);
 
     \Magento\TestFramework\Helper\Bootstrap::setInstance(new \Magento\TestFramework\Helper\Bootstrap($bootstrap));
 
diff --git a/dev/tests/integration/testsuite/Magento/Bundle/Model/Product/OptionListTest.php b/dev/tests/integration/testsuite/Magento/Bundle/Model/Product/OptionListTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..62f5cff1ff52e5001f6445042aa1ea1dd43961d1
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/Bundle/Model/Product/OptionListTest.php
@@ -0,0 +1,44 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\Bundle\Model\Product;
+
+/**
+ * Integration test for Magento\Bundle\Model\OptionList
+ */
+class OptionListTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var \Magento\Catalog\Model\Product
+     */
+    protected $product;
+
+    /**
+     * @var \Magento\Framework\ObjectManagerInterface
+     */
+    protected $objectManager;
+
+    protected function setUp()
+    {
+        $this->objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
+    }
+
+    /**
+     * @magentoDataFixture Magento/Bundle/_files/product.php
+     */
+    public function testGetItems()
+    {
+        $this->product = $this->objectManager->get('Magento\Catalog\Model\Product');
+        $this->product->load(3);
+        /**
+         * @var \Magento\Bundle\Model\Product\OptionList $optionList
+         */
+        $optionList = $this->objectManager->create('\Magento\Bundle\Model\Product\OptionList');
+        $options = $optionList->getItems($this->product);
+        $this->assertEquals(1, count($options));
+        $this->assertEquals('Bundle Product Items', $options[0]->getTitle());
+    }
+}
diff --git a/dev/tests/integration/testsuite/Magento/Catalog/Model/ProductTest.php b/dev/tests/integration/testsuite/Magento/Catalog/Model/ProductTest.php
index db9cfaa872bdad22de26acce3d13936390b3dafb..cbd558ed2f3e05246874897a4a91bea66c899b93 100644
--- a/dev/tests/integration/testsuite/Magento/Catalog/Model/ProductTest.php
+++ b/dev/tests/integration/testsuite/Magento/Catalog/Model/ProductTest.php
@@ -419,4 +419,15 @@ class ProductTest extends \PHPUnit_Framework_TestCase
             $this->assertTrue($error);
         }
     }
+
+    /**
+     * @magentoDataFixture Magento/Catalog/_files/product_simple.php
+     * @magentoAppIsolation enabled
+     */
+    public function testGetOptions()
+    {
+        $this->_model->load(1);
+        $options = $this->_model->getOptions();
+        $this->assertEquals(4, count($options));
+    }
 }
diff --git a/dev/tests/integration/testsuite/Magento/ConfigurableProduct/Model/OptionRepositoryTest.php b/dev/tests/integration/testsuite/Magento/ConfigurableProduct/Model/OptionRepositoryTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..dfe06c0deefe3286a2ae84bfd387dde606c0d82d
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/ConfigurableProduct/Model/OptionRepositoryTest.php
@@ -0,0 +1,33 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\ConfigurableProduct\Model;
+
+class OptionRepositoryTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @magentoDataFixture Magento/ConfigurableProduct/_files/product_configurable.php
+     */
+    public function testGetListWithExtensionAttributes()
+    {
+        $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
+        $productSku = 'configurable';
+        /** @var \Magento\ConfigurableProduct\Api\OptionRepositoryInterface $optionRepository */
+        $optionRepository = $objectManager->create('Magento\ConfigurableProduct\Api\OptionRepositoryInterface');
+
+        $options = $optionRepository->getList($productSku);
+        $this->assertCount(1, $options, "Invalid number of option.");
+        $this->assertNotNull($options[0]->getExtensionAttributes(), "Extension attributes not loaded");
+        /** @var \Magento\Eav\Model\Entity\Attribute $joinedEntity */
+        $joinedEntity = $objectManager->create('Magento\Eav\Model\Entity\Attribute');
+        $joinedEntity->load($options[0]->getId());
+        $joinedExtensionAttributeValue = $joinedEntity->getAttributeCode();
+        $this->assertEquals(
+            $joinedExtensionAttributeValue,
+            $options[0]->getExtensionAttributes()->getTestDummyAttribute(),
+            "Extension attributes were not loaded correctly"
+        );
+    }
+}
diff --git a/dev/tests/integration/testsuite/Magento/ConfigurableProduct/etc/extension_attributes.xml b/dev/tests/integration/testsuite/Magento/ConfigurableProduct/etc/extension_attributes.xml
new file mode 100644
index 0000000000000000000000000000000000000000..dbf00dbc8c5b037eced4bcfb499ff5ea15fd6c1a
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/ConfigurableProduct/etc/extension_attributes.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+-->
+<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/Api/etc/extension_attributes.xsd">
+    <extension_attributes for="Magento\ConfigurableProduct\Api\Data\OptionInterface">
+        <attribute code="test_dummy_attribute" type="string">
+            <join reference_table="eav_attribute"
+                  reference_field="attribute_id"
+                  join_on_field="product_super_attribute_id"
+                    >
+                <field>attribute_code</field>
+            </join>
+        </attribute>
+    </extension_attributes>
+</config>
diff --git a/dev/tests/integration/testsuite/Magento/Customer/Api/AddressRepositoryTest.php b/dev/tests/integration/testsuite/Magento/Customer/Api/AddressRepositoryTest.php
index 16cfa26b08873cc1ff6bd46d29f871fe0713e1c1..438de55ed11d1307e94b3869a8e16b6f127fc1f8 100644
--- a/dev/tests/integration/testsuite/Magento/Customer/Api/AddressRepositoryTest.php
+++ b/dev/tests/integration/testsuite/Magento/Customer/Api/AddressRepositoryTest.php
@@ -316,7 +316,7 @@ class AddressRepositoryTest extends \PHPUnit_Framework_TestCase
 
         $this->assertEquals(count($expectedResult), $searchResults->getTotalCount());
 
-        /** @var \Magento\Customer\Api\Data\AddressInterface $item*/
+        /** @var \Magento\Customer\Api\Data\AddressInterface $item */
         foreach ($searchResults->getItems() as $item) {
             $this->assertEquals(
                 $expectedResult[$item->getId()]['city'],
diff --git a/dev/tests/integration/testsuite/Magento/Customer/etc/extension_attributes.xml b/dev/tests/integration/testsuite/Magento/Customer/etc/extension_attributes.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6c210f6f4125f5cfe513f4fb5c81f9c4da540cfd
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/Customer/etc/extension_attributes.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<!--
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+-->
+<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/Api/etc/extension_attributes.xsd">
+    <extension_attributes for="Magento\Customer\Api\Data\AddressInterface">
+        <attribute code="test_customer_group_id" type="int">
+            <join reference_table="customer_entity"
+                  reference_field="entity_id"
+                  join_on_field="parent_id"
+                    >
+                <field>group_id</field>
+            </join>
+        </attribute>
+    </extension_attributes>
+</config>
diff --git a/dev/tests/integration/testsuite/Magento/Downloadable/Model/Product/TypeTest.php b/dev/tests/integration/testsuite/Magento/Downloadable/Model/Product/TypeTest.php
index 2628c9c0e2880e4ed685fa19f9f8e1a1e9fdf93b..cb06602f2c2a58cb6a4c1ed8341dd932529045dd 100644
--- a/dev/tests/integration/testsuite/Magento/Downloadable/Model/Product/TypeTest.php
+++ b/dev/tests/integration/testsuite/Magento/Downloadable/Model/Product/TypeTest.php
@@ -69,6 +69,7 @@ class TypeTest extends \PHPUnit_Framework_TestCase
     /**
      * @magentoDataFixture Magento/Downloadable/_files/product_downloadable_with_files.php
      * @magentoAppArea adminhtml
+     * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
      */
     public function testSaveTypeSpecificData()
     {
@@ -129,12 +130,21 @@ class TypeTest extends \PHPUnit_Framework_TestCase
             'title' => 'Updated downloadable link #1',
             'website_price' => '15.0000',
         ];
-
-
+        $expectedExtensionAttributes = [
+            'firstname' => 'firstname',
+            'lastname' => 'lastname',
+            'email' => 'admin@example.com'
+        ];
         $links = $this->_model->getLinks($product);
         $this->assertNotEmpty($links);
         $this->assertCount(1, $links);
+        /** @var \Magento\Downloadable\Model\Link $link */
         $link = reset($links);
+        /** @var \Magento\User\Api\Data\UserInterface $testAttribute */
+        $testAttribute = $link->getExtensionAttributes()->getTestAttribute();
+        $this->assertEquals($expectedExtensionAttributes['firstname'], $testAttribute->getFirstName());
+        $this->assertEquals($expectedExtensionAttributes['lastname'], $testAttribute->getLastName());
+        $this->assertEquals($expectedExtensionAttributes['email'], $testAttribute->getEmail());
         foreach ($expectedLink as $key => $value) {
             $this->assertTrue($link->hasData($key), 'Key ' . $key . ' not exist!');
             $this->assertArrayHasKey($key, $link);
@@ -157,6 +167,11 @@ class TypeTest extends \PHPUnit_Framework_TestCase
         $this->assertEquals(1, $samples->count());
         /** @var \Magento\Downloadable\Model\Sample $sample */
         $sample = $samples->getFirstItem()->getData();
+        /** @var \Magento\User\Api\Data\UserInterface $testAttribute */
+        $testAttribute = $sample['extension_attributes']->getTestAttribute();
+        $this->assertEquals($expectedExtensionAttributes['firstname'], $testAttribute->getFirstName());
+        $this->assertEquals($expectedExtensionAttributes['lastname'], $testAttribute->getLastName());
+        $this->assertEquals($expectedExtensionAttributes['email'], $testAttribute->getEmail());
         foreach ($expectedSample as $key => $value) {
             $this->assertArrayHasKey($key, $sample);
             $this->assertEquals($value, $sample[$key]);
diff --git a/dev/tests/integration/testsuite/Magento/Downloadable/etc/extension_attributes.xml b/dev/tests/integration/testsuite/Magento/Downloadable/etc/extension_attributes.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e120bbea99bcf355d3a3adce99925d13a40fd19c
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/Downloadable/etc/extension_attributes.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0"?>
+<!--
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+-->
+<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/Api/etc/extension_attributes.xsd">
+    <extension_attributes for="Magento\Downloadable\Api\Data\LinkInterface">
+        <attribute code="testAttribute" type="Magento\User\Api\Data\UserInterface">
+            <join reference_table="admin_user"
+                  join_on_field="product_id"
+                  reference_field="user_id"
+                    >
+                <field>firstname</field>
+                <field>lastname</field>
+                <field>email</field>
+            </join>
+        </attribute>
+    </extension_attributes>
+    <extension_attributes for="Magento\Downloadable\Api\Data\SampleInterface">
+        <attribute code="testAttribute" type="Magento\User\Api\Data\UserInterface">
+            <join reference_table="admin_user"
+                  join_on_field="product_id"
+                  reference_field="user_id"
+                    >
+                <field>firstname</field>
+                <field>lastname</field>
+                <field>email</field>
+            </join>
+        </attribute>
+    </extension_attributes>
+</config>
diff --git a/dev/tests/integration/testsuite/Magento/Framework/Api/ExtensionAttribute/JoinProcessorTest.php b/dev/tests/integration/testsuite/Magento/Framework/Api/ExtensionAttribute/JoinProcessorTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..10be075426201115e32332f8818e6274c5cdd928
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/Framework/Api/ExtensionAttribute/JoinProcessorTest.php
@@ -0,0 +1,404 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Framework\Api\ExtensionAttribute;
+
+use Magento\Framework\Api\ExtensionAttribute\Config\Converter;
+use Magento\Framework\Api\ExtensionAttribute\Config\Reader;
+use Magento\Framework\Api\ExtensionAttribute\JoinData;
+use Magento\Framework\Api\ExtensionAttribute\JoinDataInterfaceFactory;
+use Magento\Framework\Reflection\TypeProcessor;
+use Magento\Framework\App\Resource as AppResource;
+
+class JoinProcessorTest extends \PHPUnit_Framework_TestCase
+{
+
+    /** @var \Magento\Framework\Api\ExtensionAttribute\JoinProcessor */
+    private $joinProcessor;
+
+    /**
+     * @var Reader|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $config;
+
+    /**
+     * @var JoinDataInterfaceFactory|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $extensionAttributeJoinDataFactory;
+
+    /**
+     * @var TypeProcessor|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $typeProcessor;
+
+    /**
+     * @var AppResource|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $appResource;
+
+    protected function setUp()
+    {
+        $this->config = $this->getMockBuilder('Magento\Framework\Api\ExtensionAttribute\Config')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->extensionAttributeJoinDataFactory = $this
+            ->getMockBuilder('Magento\Framework\Api\ExtensionAttribute\JoinDataInterfaceFactory')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->extensionAttributeJoinDataFactory = $this
+            ->getMockBuilder('Magento\Framework\Api\ExtensionAttribute\JoinDataInterfaceFactory')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->typeProcessor = $this->getMockBuilder('Magento\Framework\Reflection\TypeProcessor')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        /** @var \Magento\Framework\ObjectManagerInterface */
+        $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
+
+        $this->appResource = $objectManager->get('Magento\Framework\App\Resource');
+
+        $this->joinProcessor = $objectManager->create(
+            'Magento\Framework\Api\ExtensionAttribute\JoinProcessor',
+            [
+                'objectManager' => $objectManager,
+                'config' => $this->config,
+                'extensionAttributeJoinDataFactory' => $this->extensionAttributeJoinDataFactory,
+                'typeProcessor' => $this->typeProcessor
+            ]
+        );
+    }
+
+    /**
+     * Test the processing of the join config for a particular type
+     */
+    public function testProcess()
+    {
+        $this->config->expects($this->once())
+            ->method('get')
+            ->will($this->returnValue($this->getConfig()));
+
+        $collection = $this->getMockBuilder('Magento\Framework\Data\Collection\AbstractDb')
+            ->setMethods(['joinExtensionAttribute'])
+            ->disableOriginalConstructor()
+            ->getMockForAbstractClass();
+
+        $extensionAttributeJoinData = new JoinData();
+        $this->extensionAttributeJoinDataFactory
+            ->expects($this->once())
+            ->method('create')
+            ->willReturn($extensionAttributeJoinData);
+
+        $collection->expects($this->once())->method('joinExtensionAttribute')->with($extensionAttributeJoinData);
+
+        $this->joinProcessor->process($collection, 'Magento\Catalog\Api\Data\ProductInterface');
+        $expectedTableName = 'reviews';
+        $this->assertEquals($expectedTableName, $extensionAttributeJoinData->getReferenceTable());
+        $this->assertEquals('extension_attribute_review_id', $extensionAttributeJoinData->getReferenceTableAlias());
+        $this->assertEquals('product_id', $extensionAttributeJoinData->getReferenceField());
+        $this->assertEquals('id', $extensionAttributeJoinData->getJoinField());
+        $this->assertEquals(
+            [
+                [
+                    'external_alias' => 'review_id',
+                    'internal_alias' => 'extension_attribute_review_id_db_review_id',
+                    'with_db_prefix' => 'extension_attribute_review_id.db_review_id',
+                    'setter' => 'setReviewId',
+                ]
+            ],
+            $extensionAttributeJoinData->getSelectFields()
+        );
+    }
+
+    private function getConfig()
+    {
+        return [
+            'Magento\Catalog\Api\Data\ProductInterface' => [
+                'review_id' => [
+                    Converter::DATA_TYPE => 'string',
+                    Converter::RESOURCE_PERMISSIONS => [],
+                    Converter::JOIN_DIRECTIVE => [
+                        Converter::JOIN_REFERENCE_TABLE => "reviews",
+                        Converter::JOIN_REFERENCE_FIELD => "product_id",
+                        Converter::JOIN_FIELDS => [
+                            [
+                                Converter::JOIN_FIELD => "review_id",
+                                Converter::JOIN_FIELD_COLUMN => "db_review_id",
+                            ],
+                        ],
+                        Converter::JOIN_ON_FIELD => "id",
+                    ],
+                ],
+            ],
+            'Magento\Customer\Api\Data\CustomerInterface' => [
+                'library_card_id' => [
+                    Converter::DATA_TYPE => 'string',
+                    Converter::RESOURCE_PERMISSIONS => [],
+                    Converter::JOIN_DIRECTIVE => [
+                        Converter::JOIN_REFERENCE_TABLE => "library_account",
+                        Converter::JOIN_FIELDS => [
+                            [
+                                Converter::JOIN_FIELD => "library_card_id",
+                                Converter::JOIN_FIELD_COLUMN => "",
+                            ],
+                        ],
+                        Converter::JOIN_ON_FIELD => "customer_id",
+                    ],
+                ],
+                'reviews' => [
+                    Converter::DATA_TYPE => 'Magento\Reviews\Api\Data\Reviews[]',
+                    Converter::RESOURCE_PERMISSIONS => [],
+                    Converter::JOIN_DIRECTIVE => [
+                        Converter::JOIN_REFERENCE_TABLE => "reviews",
+                        Converter::JOIN_FIELDS => [
+                            [
+                                Converter::JOIN_FIELD => "comment",
+                                Converter::JOIN_FIELD_COLUMN => "",
+                            ],
+                            [
+                                Converter::JOIN_FIELD => "rating",
+                                Converter::JOIN_FIELD_COLUMN => "",
+                            ],
+                        ],
+                        Converter::JOIN_ON_FIELD => "customer_id",
+                    ],
+                ],
+            ],
+        ];
+    }
+
+    public function testProcessSqlSelectVerification()
+    {
+        /** @var \Magento\Framework\ObjectManagerInterface */
+        $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
+        /** @var \Magento\Framework\Api\ExtensionAttribute\Config $config */
+        $config = $objectManager->get('Magento\Framework\Api\ExtensionAttribute\Config');
+        $config->reset();
+
+        $extensionConfigFileResolverMock = $this->getMockBuilder('Magento\Framework\Config\FileResolverInterface')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $extensionConfigFilePath = __DIR__ . '/../_files/extension_attributes.xml';
+        $extensionConfigFileContent = file_get_contents($extensionConfigFilePath);
+        $extensionConfigFileResolverMock->expects($this->any())
+            ->method('get')
+            ->willReturn([$extensionConfigFilePath => $extensionConfigFileContent]);
+        $configReader = $objectManager->create(
+            'Magento\Framework\Api\ExtensionAttribute\Config\Reader',
+            ['fileResolver' => $extensionConfigFileResolverMock]
+        );
+        /** @var \Magento\Framework\Api\ExtensionAttribute\Config $config */
+        $config = $objectManager->create(
+            'Magento\Framework\Api\ExtensionAttribute\Config',
+            ['reader' => $configReader]
+        );
+        /** @var \Magento\Framework\Api\ExtensionAttribute\JoinProcessor $extensionAttributesProcessor */
+        $extensionAttributesProcessor = $objectManager->create(
+            'Magento\Framework\Api\ExtensionAttribute\JoinProcessor',
+            ['config' => $config]
+        );
+        /** @var \Magento\Catalog\Model\Resource\Product\Collection $collection */
+        $collection = $objectManager->create('Magento\Catalog\Model\Resource\Product\Collection');
+        $extensionAttributesProcessor->process($collection);
+        $config->reset();
+
+        $catalogProductEntity = $this->appResource->getTableName('catalog_product_entity');
+        $catalogInventoryStockItem = $this->appResource->getTableName('cataloginventory_stock_item');
+        $reviews = $this->appResource->getTableName('reviews');
+        $expectedSql = <<<EXPECTED_SQL
+SELECT `e`.*,
+     `extension_attribute_stock_item`.`qty` AS `extension_attribute_stock_item_qty`,
+     `extension_attribute_reviews`.`comment` AS `extension_attribute_reviews_comment`,
+     `extension_attribute_reviews`.`rating` AS `extension_attribute_reviews_rating`,
+     `extension_attribute_reviews`.`date` AS `extension_attribute_reviews_date` FROM `$catalogProductEntity` AS `e`
+ LEFT JOIN `$catalogInventoryStockItem` AS `extension_attribute_stock_item` ON e.id = extension_attribute_stock_item.id
+ LEFT JOIN `$reviews` AS `extension_attribute_reviews` ON e.id = extension_attribute_reviews.product_id
+EXPECTED_SQL;
+        $resultSql = $collection->getSelectSql(true);
+        $formattedResultSql = str_replace(',', ",\n    ", $resultSql);
+        $this->assertEquals($expectedSql, $formattedResultSql);
+    }
+
+    /**
+     * @magentoDataFixture Magento/Catalog/_files/products.php
+     */
+    public function testGetListWithExtensionAttributesAbstractModel()
+    {
+        $firstProductId = 1;
+        $firstProductQty = 11;
+        $secondProductId = 2;
+        $secondProductQty = 22;
+        /** @var \Magento\Framework\ObjectManagerInterface */
+        $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
+        /** @var \Magento\Catalog\Api\ProductRepositoryInterface $productRepository */
+        $productRepository = $objectManager->create('Magento\Catalog\Api\ProductRepositoryInterface');
+        /** @var \Magento\CatalogInventory\Api\StockItemRepositoryInterface $stockItemRepository */
+        $stockItemRepository = $objectManager->get('Magento\CatalogInventory\Api\StockItemRepositoryInterface');
+
+        /** Prepare stock items */
+        $firstStockItem = $productRepository->getById($firstProductId)->getExtensionAttributes()->getStockItem();
+        $firstStockItem->setQty($firstProductQty);
+        $stockItemRepository->save($firstStockItem);
+        $this->assertEquals(
+            $firstProductQty,
+            $productRepository->getById($firstProductId)->getExtensionAttributes()->getStockItem()->getQty(),
+            'Precondition failed.'
+        );
+        $secondStockItem = $productRepository->getById($secondProductId)->getExtensionAttributes()->getStockItem();
+        $secondStockItem->setQty($secondProductQty);
+        $stockItemRepository->save($secondStockItem);
+        $this->assertEquals(
+            $secondProductQty,
+            $productRepository->getById($secondProductId)->getExtensionAttributes()->getStockItem()->getQty(),
+            'Precondition failed.'
+        );
+
+        /** @var \Magento\Framework\Api\Search\FilterGroup $searchCriteriaGroup */
+        $searchCriteriaGroup = $objectManager->create('Magento\Framework\Api\Search\FilterGroup');
+        /** @var \Magento\Framework\Api\SearchCriteriaInterface $searchCriteria */
+        $searchCriteria = $objectManager->create('Magento\Framework\Api\SearchCriteriaInterface');
+        $searchCriteria->setFilterGroups([$searchCriteriaGroup]);
+        $products = $productRepository->getList($searchCriteria)->getItems();
+
+        /** Ensure that simple extension attributes were populated correctly */
+        $this->assertEquals(
+            $firstProductQty,
+            $products[$firstProductId]->getExtensionAttributes()->getTestStockItemQty()
+        );
+        $this->assertEquals(
+            $secondProductQty,
+            $products[$secondProductId]->getExtensionAttributes()->getTestStockItemQty()
+        );
+
+        /** Check population of complex extension attributes */
+        $this->assertEquals(
+            $firstProductQty,
+            $products[$firstProductId]->getExtensionAttributes()->getTestStockItem()->getQty()
+        );
+        $this->assertNotEmpty($products[$firstProductId]->getExtensionAttributes()->getTestStockItem()->getItemId());
+
+        $this->assertArrayNotHasKey(
+            'extension_attribute_test_stock_item_qty_qty',
+            $products[$firstProductId]->getData(),
+            "Selected extension field should be unset after it is added to extension attributes object."
+        );
+    }
+
+    /**
+     * @magentoDataFixture Magento/Customer/_files/customer.php
+     * @magentoDataFixture Magento/Customer/_files/customer_group.php
+     */
+    public function testGetListWithExtensionAttributesAbstractObject()
+    {
+        $customerId = 1;
+        $customerGroupName = 'General';
+        $taxClassId = 3;
+        /** @var \Magento\Framework\ObjectManagerInterface */
+        $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
+
+        /** @var \Magento\Customer\Api\CustomerRepositoryInterface $customerRepository */
+        $customerRepository = $objectManager->get('Magento\Customer\Api\CustomerRepositoryInterface');
+        /** @var \Magento\Framework\Api\Search\FilterGroup $searchCriteriaGroup */
+        $searchCriteriaGroup = $objectManager->create('Magento\Framework\Api\Search\FilterGroup');
+        /** @var \Magento\Framework\Api\SearchCriteriaInterface $searchCriteria */
+        $searchCriteria = $objectManager->create('Magento\Framework\Api\SearchCriteriaInterface');
+        $searchCriteria->setFilterGroups([$searchCriteriaGroup]);
+        $customers = $customerRepository->getList($searchCriteria)->getItems();
+
+        /** Ensure that simple extension attributes were populated correctly */
+        $customer = $customers[0];
+        $this->assertEquals($customerId, $customer->getId(), 'Precondition failed');
+        $this->assertEquals($customerGroupName, $customer->getExtensionAttributes()->getTestGroupCode());
+
+        /** Check population of complex extension attributes */
+        $this->assertEquals($taxClassId, $customer->getExtensionAttributes()->getTestGroup()->getTaxClassId());
+        $this->assertEquals($customerGroupName, $customer->getExtensionAttributes()->getTestGroup()->getCode());
+    }
+
+    public function testGetListWithFilterBySimpleDummyAttributeWithMapping()
+    {
+        $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
+        $groupRepository = $objectManager->create('Magento\Customer\Api\GroupRepositoryInterface');
+        $searchCriteriaBuilder = $objectManager->create('Magento\Framework\Api\SearchCriteriaBuilder');
+        $builder = $objectManager->create('Magento\Framework\Api\FilterBuilder');
+        $joinedExtensionAttribute = 'test_dummy_attribute';
+        $joinedExtensionAttributeValue = 'website_id';
+        $filter = $builder->setField($joinedExtensionAttribute)
+            ->setValue($joinedExtensionAttributeValue)
+            ->create();
+        $searchCriteriaBuilder->addFilter([$filter]);
+        $searchResults = $groupRepository->getList($searchCriteriaBuilder->create());
+        $items = $searchResults->getItems();
+        $this->assertCount(1, $items, 'Filtration by extension attribute does not work.');
+        $expectedGroupCode = 'General';
+        $this->assertEquals($expectedGroupCode, $items[0]->getCode(), 'Invalid group loaded.');
+        $this->assertNotNull($items[0]->getExtensionAttributes(), "Extension attributes not loaded");
+        $this->assertEquals(
+            $joinedExtensionAttributeValue,
+            $items[0]->getExtensionAttributes()->getTestDummyAttribute(),
+            "Extension attributes were not loaded correctly"
+        );
+    }
+
+    public function testGetListWithFilterByComplexDummyAttributeWithSetterMapping()
+    {
+        $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
+        $groupRepository = $objectManager->create('Magento\Customer\Api\GroupRepositoryInterface');
+        $searchCriteriaBuilder = $objectManager->create('Magento\Framework\Api\SearchCriteriaBuilder');
+        $builder = $objectManager->create('Magento\Framework\Api\FilterBuilder');
+        $joinedExtensionAttribute = 'test_complex_dummy_attribute.frontend_label';
+        $joinedExtensionAttributeValue = 'firstname';
+        $filter = $builder->setField($joinedExtensionAttribute)
+            ->setValue($joinedExtensionAttributeValue)
+            ->create();
+        $searchCriteriaBuilder->addFilter([$filter]);
+        $searchResults = $groupRepository->getList($searchCriteriaBuilder->create());
+        $items = $searchResults->getItems();
+        $this->assertCount(1, $items, 'Filtration by extension attribute does not work.');
+        $expectedGroupCode = 'General';
+        $this->assertEquals($expectedGroupCode, $items[0]->getCode(), 'Invalid group loaded.');
+        $this->assertNotNull($items[0]->getExtensionAttributes(), "Extension attributes not loaded");
+        $this->assertNotNull(
+            $items[0]->getExtensionAttributes()->getTestComplexDummyAttribute(),
+            "Complex extension attribute not loaded"
+        );
+        $this->assertEquals(
+            'user',
+            $items[0]->getExtensionAttributes()->getTestComplexDummyAttribute()->getAttributeCode(),
+            "Extension attributes were not loaded correctly"
+        );
+        $this->assertEquals(
+            $joinedExtensionAttributeValue,
+            $items[0]->getExtensionAttributes()->getTestComplexDummyAttribute()->getFrontendLabel(),
+            "Extension attributes were not loaded correctly"
+        );
+    }
+
+    /**
+     * @magentoDataFixture Magento/Sales/_files/invoice.php
+     */
+    public function testGetListWithExtensionAttributesAutoGeneratedRepository()
+    {
+        $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
+        $searchCriteriaBuilder = $objectManager->create('Magento\Framework\Api\SearchCriteriaBuilder');
+        /** @var \Magento\Sales\Api\InvoiceRepositoryInterface $invoiceRepository */
+        $invoiceRepository = $objectManager->create('Magento\Sales\Api\InvoiceRepositoryInterface');
+        $invoices = $invoiceRepository->getList($searchCriteriaBuilder->create())->getItems();
+        $this->assertCount(1, $invoices, "Invalid number of loaded invoices.");
+        $invoice = reset($invoices);
+
+        /** @var \Magento\Eav\Model\Entity\Attribute $joinedEntity */
+        $joinedEntity = $objectManager->create('Magento\Eav\Model\Entity\Attribute');
+        $joinedEntity->load($invoice->getId());
+        $joinedExtensionAttributeValue = $joinedEntity->getAttributeCode();
+
+        $this->assertNotNull($invoice->getExtensionAttributes(), "Extension attributes not loaded");
+        $this->assertEquals(
+            $joinedExtensionAttributeValue,
+            $invoice->getExtensionAttributes()->getTestDummyAttribute(),
+            "Extension attributes were not loaded correctly"
+        );
+    }
+}
diff --git a/dev/tests/integration/testsuite/Magento/Framework/Api/ExtensionAttributesFactoryTest.php b/dev/tests/integration/testsuite/Magento/Framework/Api/ExtensionAttributesFactoryTest.php
index 674fc1432f0ef7e6d0eb0ee177f9ac9e25f5e87c..faec140dbdab7612e0563bda9d71be2897dbbe45 100644
--- a/dev/tests/integration/testsuite/Magento/Framework/Api/ExtensionAttributesFactoryTest.php
+++ b/dev/tests/integration/testsuite/Magento/Framework/Api/ExtensionAttributesFactoryTest.php
@@ -5,70 +5,21 @@
  */
 namespace Magento\Framework\Api;
 
-use Magento\Framework\Api\ExtensionAttribute\Config\Converter;
-use Magento\Framework\Api\ExtensionAttribute\Config\Reader;
-use Magento\Framework\Api\ExtensionAttribute\JoinData;
-use Magento\Framework\Api\ExtensionAttribute\JoinDataFactory;
-use Magento\Framework\Reflection\TypeProcessor;
-use Magento\Framework\App\Resource;
-
 class ExtensionAttributesFactoryTest extends \PHPUnit_Framework_TestCase
 {
     /** @var \Magento\Framework\Api\ExtensionAttributesFactory */
     private $factory;
 
-    /**
-     * @var Reader|\PHPUnit_Framework_MockObject_MockObject
-     */
-    private $config;
-
-    /**
-     * @var JoinDataFactory|\PHPUnit_Framework_MockObject_MockObject
-     */
-    private $extensionAttributeJoinDataFactory;
-
-    /**
-     * @var TypeProcessor|\PHPUnit_Framework_MockObject_MockObject
-     */
-    private $typeProcessor;
-
-    /**
-     * @var AppResource|\PHPUnit_Framework_MockObject_MockObject
-     */
-    private $appResource;
-
     protected function setUp()
     {
-        $this->config = $this->getMockBuilder('Magento\Framework\Api\ExtensionAttribute\Config')
-            ->disableOriginalConstructor()
-            ->getMock();
-        $this->extensionAttributeJoinDataFactory = $this
-            ->getMockBuilder('Magento\Framework\Api\ExtensionAttribute\JoinDataFactory')
-            ->disableOriginalConstructor()
-            ->getMock();
-        $this->extensionAttributeJoinDataFactory = $this
-            ->getMockBuilder('Magento\Framework\Api\ExtensionAttribute\JoinDataFactory')
-            ->disableOriginalConstructor()
-            ->getMock();
-        $this->typeProcessor = $this->getMockBuilder('Magento\Framework\Reflection\TypeProcessor')
-            ->disableOriginalConstructor()
-            ->getMock();
-
         $autoloadWrapper = \Magento\Framework\Autoload\AutoloaderRegistry::getAutoloader();
         $autoloadWrapper->addPsr4('Magento\\Wonderland\\', realpath(__DIR__ . '/_files/Magento/Wonderland'));
         /** @var \Magento\Framework\ObjectManagerInterface */
         $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
 
-        $this->appResource = $objectManager->get('Magento\Framework\App\Resource');
-
         $this->factory = $objectManager->create(
             'Magento\Framework\Api\ExtensionAttributesFactory',
-            [
-                'objectManager' => $objectManager,
-                'config' => $this->config,
-                'extensionAttributeJoinDataFactory' => $this->extensionAttributeJoinDataFactory,
-                'typeProcessor' => $this->typeProcessor
-            ]
+            ['objectManager' => $objectManager]
         );
     }
 
@@ -104,240 +55,6 @@ class ExtensionAttributesFactoryTest extends \PHPUnit_Framework_TestCase
         );
     }
 
-    /**
-     * Test the processing of the join config for a particular type
-     */
-    public function testProcess()
-    {
-        $this->config->expects($this->once())
-            ->method('get')
-            ->will($this->returnValue($this->getConfig()));
-
-        $collection = $this->getMockBuilder('Magento\Framework\Data\Collection\AbstractDb')
-            ->setMethods(['joinExtensionAttribute'])
-            ->disableOriginalConstructor()
-            ->getMockForAbstractClass();
-
-        $extensionAttributeJoinData = new JoinData();
-        $this->extensionAttributeJoinDataFactory
-            ->expects($this->once())
-            ->method('create')
-            ->willReturn($extensionAttributeJoinData);
-
-        $collection->expects($this->once())->method('joinExtensionAttribute')->with($extensionAttributeJoinData);
-
-        $this->factory->process($collection, 'Magento\Catalog\Api\Data\ProductInterface');
-        $expectedTableName = 'reviews';
-        $this->assertEquals($expectedTableName, $extensionAttributeJoinData->getReferenceTable());
-        $this->assertEquals('extension_attribute_review_id', $extensionAttributeJoinData->getReferenceTableAlias());
-        $this->assertEquals('product_id', $extensionAttributeJoinData->getReferenceField());
-        $this->assertEquals('id', $extensionAttributeJoinData->getJoinField());
-        $this->assertEquals(['review_id'], $extensionAttributeJoinData->getSelectFields());
-    }
-
-    private function getConfig()
-    {
-        return [
-            'Magento\Catalog\Api\Data\ProductInterface' => [
-                'review_id' => [
-                    Converter::DATA_TYPE => 'string',
-                    Converter::RESOURCE_PERMISSIONS => [],
-                    Converter::JOIN_DIRECTIVE => [
-                        Converter::JOIN_REFERENCE_TABLE => "reviews",
-                        Converter::JOIN_REFERENCE_FIELD => "product_id",
-                        Converter::JOIN_SELECT_FIELDS => [
-                            [
-                                Converter::JOIN_SELECT_FIELD => "review_id",
-                            ],
-                        ],
-                        Converter::JOIN_JOIN_ON_FIELD => "id",
-                    ],
-                ],
-            ],
-            'Magento\Customer\Api\Data\CustomerInterface' => [
-                'library_card_id' => [
-                    Converter::DATA_TYPE => 'string',
-                    Converter::RESOURCE_PERMISSIONS => [],
-                    Converter::JOIN_DIRECTIVE => [
-                        Converter::JOIN_REFERENCE_TABLE => "library_account",
-                        Converter::JOIN_SELECT_FIELDS => [
-                            [
-                                Converter::JOIN_SELECT_FIELD => "library_card_id",
-                            ],
-                        ],
-                        Converter::JOIN_JOIN_ON_FIELD => "customer_id",
-                    ],
-                ],
-                'reviews' => [
-                    Converter::DATA_TYPE => 'Magento\Reviews\Api\Data\Reviews[]',
-                    Converter::RESOURCE_PERMISSIONS => [],
-                    Converter::JOIN_DIRECTIVE => [
-                        Converter::JOIN_REFERENCE_TABLE => "reviews",
-                        Converter::JOIN_SELECT_FIELDS => [
-                            [
-                                Converter::JOIN_SELECT_FIELD => "comment",
-                            ],
-                            [
-                                Converter::JOIN_SELECT_FIELD => "rating",
-                            ],
-                        ],
-                        Converter::JOIN_JOIN_ON_FIELD => "customer_id",
-                    ],
-                ],
-            ],
-        ];
-    }
-
-    public function testProcessSqlSelectVerification()
-    {
-        /** @var \Magento\Framework\ObjectManagerInterface */
-        $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
-        /** @var \Magento\Framework\Api\ExtensionAttribute\Config $config */
-        $config = $objectManager->get('Magento\Framework\Api\ExtensionAttribute\Config');
-        $config->reset();
-
-        $extensionConfigFileResolverMock = $this->getMockBuilder('Magento\Framework\Config\FileResolverInterface')
-            ->disableOriginalConstructor()
-            ->getMock();
-        $extensionConfigFilePath = __DIR__ . '/_files/extension_attributes.xml';
-        $extensionConfigFileContent = file_get_contents($extensionConfigFilePath);
-        $extensionConfigFileResolverMock->expects($this->any())
-            ->method('get')
-            ->willReturn([$extensionConfigFilePath => $extensionConfigFileContent]);
-        $configReader = $objectManager->create(
-            'Magento\Framework\Api\ExtensionAttribute\Config\Reader',
-            ['fileResolver' => $extensionConfigFileResolverMock]
-        );
-        /** @var \Magento\Framework\Api\ExtensionAttribute\Config $config */
-        $config = $objectManager->create(
-            'Magento\Framework\Api\ExtensionAttribute\Config',
-            ['reader' => $configReader]
-        );
-        /** @var \Magento\Framework\Api\ExtensionAttributesFactory $extensionAttributesFactory */
-        $extensionAttributesFactory = $objectManager->create(
-            'Magento\Framework\Api\ExtensionAttributesFactory',
-            ['config' => $config]
-        );
-        $productClassName = 'Magento\Catalog\Model\Product';
-        /** @var \Magento\Catalog\Model\Resource\Product\Collection $collection */
-        $collection = $objectManager->create('Magento\Catalog\Model\Resource\Product\Collection');
-
-        $extensionAttributesFactory->process($collection, $productClassName);
-        $config->reset();
-
-        $catalogProductEntity = $this->appResource->getTableName('catalog_product_entity');
-        $catalogInventoryStockItem = $this->appResource->getTableName('cataloginventory_stock_item');
-        $reviews = $this->appResource->getTableName('reviews');
-        $expectedSql = <<<EXPECTED_SQL
-SELECT `e`.*,
-     `extension_attribute_stock_item`.`qty` AS `extension_attribute_stock_item_qty`,
-     `extension_attribute_reviews`.`comment` AS `extension_attribute_reviews_comment`,
-     `extension_attribute_reviews`.`rating` AS `extension_attribute_reviews_rating`,
-     `extension_attribute_reviews`.`date` AS `extension_attribute_reviews_date` FROM `$catalogProductEntity` AS `e`
- LEFT JOIN `$catalogInventoryStockItem` AS `extension_attribute_stock_item` ON e.id = extension_attribute_stock_item.id
- LEFT JOIN `$reviews` AS `extension_attribute_reviews` ON e.id = extension_attribute_reviews.product_id
-EXPECTED_SQL;
-        $resultSql = $collection->getSelectSql(true);
-        $formattedResultSql = str_replace(',', ",\n    ", $resultSql);
-        $this->assertEquals($expectedSql, $formattedResultSql);
-    }
-
-    /**
-     * @magentoDataFixture Magento/Catalog/_files/products.php
-     */
-    public function testGetListWithExtensionAttributesAbstractModel()
-    {
-        $firstProductId = 1;
-        $firstProductQty = 11;
-        $secondProductId = 2;
-        $secondProductQty = 22;
-        /** @var \Magento\Framework\ObjectManagerInterface */
-        $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
-        /** @var \Magento\Catalog\Api\ProductRepositoryInterface $productRepository */
-        $productRepository = $objectManager->create('Magento\Catalog\Api\ProductRepositoryInterface');
-        /** @var \Magento\CatalogInventory\Api\StockItemRepositoryInterface $stockItemRepository */
-        $stockItemRepository = $objectManager->get('Magento\CatalogInventory\Api\StockItemRepositoryInterface');
-
-        /** Prepare stock items */
-        $firstStockItem = $productRepository->getById($firstProductId)->getExtensionAttributes()->getStockItem();
-        $firstStockItem->setQty($firstProductQty);
-        $stockItemRepository->save($firstStockItem);
-        $this->assertEquals(
-            $firstProductQty,
-            $productRepository->getById($firstProductId)->getExtensionAttributes()->getStockItem()->getQty(),
-            'Precondition failed.'
-        );
-        $secondStockItem = $productRepository->getById($secondProductId)->getExtensionAttributes()->getStockItem();
-        $secondStockItem->setQty($secondProductQty);
-        $stockItemRepository->save($secondStockItem);
-        $this->assertEquals(
-            $secondProductQty,
-            $productRepository->getById($secondProductId)->getExtensionAttributes()->getStockItem()->getQty(),
-            'Precondition failed.'
-        );
-
-        /** @var \Magento\Framework\Api\Search\FilterGroup $searchCriteriaGroup */
-        $searchCriteriaGroup = $objectManager->create('Magento\Framework\Api\Search\FilterGroup');
-        /** @var \Magento\Framework\Api\SearchCriteriaInterface $searchCriteria */
-        $searchCriteria = $objectManager->create('Magento\Framework\Api\SearchCriteriaInterface');
-        $searchCriteria->setFilterGroups([$searchCriteriaGroup]);
-        $products = $productRepository->getList($searchCriteria)->getItems();
-
-        /** Ensure that simple extension attributes were populated correctly */
-        $this->assertEquals(
-            $firstProductQty,
-            $products[$firstProductId]->getExtensionAttributes()->getTestStockItemQty()
-        );
-        $this->assertEquals(
-            $secondProductQty,
-            $products[$secondProductId]->getExtensionAttributes()->getTestStockItemQty()
-        );
-
-        /** Check population of complex extension attributes */
-        $this->assertEquals(
-            $firstProductQty,
-            $products[$firstProductId]->getExtensionAttributes()->getTestStockItem()->getQty()
-        );
-        $this->assertNotEmpty($products[$firstProductId]->getExtensionAttributes()->getTestStockItem()->getItemId());
-
-        $this->assertArrayNotHasKey(
-            'extension_attribute_test_stock_item_qty_qty',
-            $products[$firstProductId]->getData(),
-            "Selected extension field should be unset after it is added to extension attributes object."
-        );
-    }
-
-    /**
-     * @magentoDataFixture Magento/Customer/_files/customer.php
-     * @magentoDataFixture Magento/Customer/_files/customer_group.php
-     */
-    public function testGetListWithExtensionAttributesAbstractObject()
-    {
-        $customerId = 1;
-        $customerGroupName = 'General';
-        $taxClassId = 3;
-        /** @var \Magento\Framework\ObjectManagerInterface */
-        $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
-
-        /** @var \Magento\Customer\Api\CustomerRepositoryInterface $customerRepository */
-        $customerRepository = $objectManager->get('Magento\Customer\Api\CustomerRepositoryInterface');
-        /** @var \Magento\Framework\Api\Search\FilterGroup $searchCriteriaGroup */
-        $searchCriteriaGroup = $objectManager->create('Magento\Framework\Api\Search\FilterGroup');
-        /** @var \Magento\Framework\Api\SearchCriteriaInterface $searchCriteria */
-        $searchCriteria = $objectManager->create('Magento\Framework\Api\SearchCriteriaInterface');
-        $searchCriteria->setFilterGroups([$searchCriteriaGroup]);
-        $customers = $customerRepository->getList($searchCriteria)->getItems();
-
-        /** Ensure that simple extension attributes were populated correctly */
-        $customer = $customers[0];
-        $this->assertEquals($customerId, $customer->getId(), 'Precondition failed');
-        $this->assertEquals($customerGroupName, $customer->getExtensionAttributes()->getTestGroupCode());
-
-        /** Check population of complex extension attributes */
-        $this->assertEquals($taxClassId, $customer->getExtensionAttributes()->getTestGroup()->getTaxClassId());
-        $this->assertEquals($customerGroupName, $customer->getExtensionAttributes()->getTestGroup()->getCode());
-    }
-
     public function testCreateWithLogicException()
     {
         $this->setExpectedException(
diff --git a/dev/tests/integration/testsuite/Magento/Framework/Api/_files/extension_attributes.xml b/dev/tests/integration/testsuite/Magento/Framework/Api/_files/extension_attributes.xml
index 4b47d317898abda10226f72f7dac4a04004a6ad3..6b79d122ab83670e6d5e2e47294d1ceef395d61d 100644
--- a/dev/tests/integration/testsuite/Magento/Framework/Api/_files/extension_attributes.xml
+++ b/dev/tests/integration/testsuite/Magento/Framework/Api/_files/extension_attributes.xml
@@ -16,7 +16,7 @@
                   join_on_field="id"
                   reference_field="id"
                     >
-                <select_field>qty</select_field>
+                <field>qty</field>
             </join>
         </attribute>
         <attribute code="reviews" type="Magento\Reviews\Api\Data\Reviews[]">
@@ -24,9 +24,9 @@
                   reference_field="product_id"
                   join_on_field="id"
                     >
-                <select_field>comment</select_field>
-                <select_field>rating</select_field>
-                <select_field>date</select_field>
+                <field>comment</field>
+                <field>rating</field>
+                <field>date</field>
             </join>
         </attribute>
     </extension_attributes>
diff --git a/dev/tests/integration/testsuite/Magento/Framework/Api/etc/extension_attributes.xml b/dev/tests/integration/testsuite/Magento/Framework/Api/etc/extension_attributes.xml
index 68bc09b6590be6fd3617d210af26a150151363d6..6f5910737fe4709c4a62599fc3264fdda84d4e2d 100644
--- a/dev/tests/integration/testsuite/Magento/Framework/Api/etc/extension_attributes.xml
+++ b/dev/tests/integration/testsuite/Magento/Framework/Api/etc/extension_attributes.xml
@@ -16,8 +16,8 @@
                   join_on_field="entity_id"
                   reference_field="product_id"
                     >
-                <select_field>qty</select_field>
-                <select_field>item_id</select_field>
+                <field>qty</field>
+                <field>item_id</field>
             </join>
         </attribute>
         <attribute code="test_stock_item_qty" type="string">
@@ -28,17 +28,18 @@
                   join_on_field="entity_id"
                   reference_field="product_id"
                     >
-                <select_field>qty</select_field>
+                <field>qty</field>
             </join>
         </attribute>
     </extension_attributes>
+
     <extension_attributes for="Magento\Customer\Api\Data\CustomerInterface">
         <attribute code="test_group_code" type="string">
             <join reference_table="customer_group"
                   join_on_field="group_id"
                   reference_field="customer_group_id"
                     >
-                <select_field>customer_group_code</select_field>
+                <field>customer_group_code</field>
             </join>
         </attribute>
         <attribute code="test_group" type="Magento\Customer\Api\Data\GroupInterface">
@@ -46,8 +47,39 @@
                   join_on_field="group_id"
                   reference_field="customer_group_id"
                     >
-                <select_field>tax_class_id</select_field>
-                <select_field setter_name="setCode">customer_group_code</select_field>
+                <field>tax_class_id</field>
+                <field column="customer_group_code">code</field>
+            </join>
+        </attribute>
+    </extension_attributes>
+
+    <extension_attributes for="Magento\Customer\Api\Data\GroupInterface">
+        <attribute code="test_dummy_attribute" type="string">
+            <join reference_table="eav_attribute"
+                  reference_field="attribute_id"
+                  join_on_field="customer_group_id"
+                    >
+                <field>attribute_code</field>
+            </join>
+        </attribute>
+        <attribute code="test_complex_dummy_attribute" type="Magento\Catalog\Api\Data\ProductAttributeInterface">
+            <join reference_table="admin_user"
+                  reference_field="user_id"
+                  join_on_field="customer_group_id"
+                    >
+                <field column="username">attribute_code</field>
+                <field column="firstname">frontend_label</field>
+            </join>
+        </attribute>
+    </extension_attributes>
+
+    <extension_attributes for="Magento\Sales\Api\Data\InvoiceInterface">
+        <attribute code="test_dummy_attribute" type="string">
+            <join reference_table="eav_attribute"
+                  reference_field="attribute_id"
+                  join_on_field="entity_id"
+                    >
+                <field>attribute_code</field>
             </join>
         </attribute>
     </extension_attributes>
diff --git a/dev/tests/integration/testsuite/Magento/Framework/Composer/RemoveTest.php b/dev/tests/integration/testsuite/Magento/Framework/Composer/RemoveTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..bd9f8528bc1d761260c03317e0bfc8c255d0cbae
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/Framework/Composer/RemoveTest.php
@@ -0,0 +1,32 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Framework\Composer;
+
+use Magento\Framework\App\Filesystem\DirectoryList;
+
+class RemoveTest extends \PHPUnit_Framework_TestCase
+{
+    public function testRemove()
+    {
+        $composerApp = $this->getMock(
+            'Composer\Console\Application',
+            ['setAutoExit', 'resetComposer', 'run'],
+            [],
+            '',
+            false
+        );
+        $directoryList = $this->getMock('Magento\Framework\App\Filesystem\DirectoryList', [], [], '', false);
+        $directoryList->expects($this->once())->method('getRoot');
+        $directoryList->expects($this->once())
+            ->method('getPath')
+            ->with(DirectoryList::CONFIG)
+            ->willReturn(BP . '/app/etc');
+        $composerApp->expects($this->once())->method('setAutoExit')->with(false);
+        $composerApp->expects($this->once())->method('run');
+        $remove = new Remove($composerApp, $directoryList);
+        $remove->remove(['magento/package-a', 'magento/package-b']);
+    }
+}
diff --git a/dev/tests/integration/testsuite/Magento/Quote/Model/Quote/Item/RepositoryTest.php b/dev/tests/integration/testsuite/Magento/Quote/Model/Quote/Item/RepositoryTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..b7e78e977191f0567e6766321b3628c0c506ac4b
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/Quote/Model/Quote/Item/RepositoryTest.php
@@ -0,0 +1,40 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Quote\Model\Quote\Item;
+
+use Magento\TestFramework\Helper\Bootstrap;
+
+class RepositoryTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @magentoDataFixture Magento/Sales/_files/quote.php
+     */
+    public function testGetList()
+    {
+        $expectedExtensionAttributes = [
+            'firstname' => 'firstname',
+            'lastname' => 'lastname',
+            'email' => 'admin@example.com'
+        ];
+
+        /** @var \Magento\Quote\Model\Quote\Item\Repository $quoteItemRepository */
+        $quoteItemRepository = Bootstrap::getObjectManager()->create('Magento\Quote\Model\Quote\Item\Repository');
+        /** @var \Magento\Quote\Model\Quote $quote */
+        $quote = Bootstrap::getObjectManager()->create('Magento\Quote\Model\Quote');
+        $quoteId = $quote->load('test01', 'reserved_order_id')->getId();
+
+        /** @var \Magento\Quote\Api\Data\CartItemInterface[] $quoteItems */
+        $quoteItems = $quoteItemRepository->getList($quoteId);
+        /** @var \Magento\Quote\Api\Data\CartItemInterface $actualQuoteItem */
+        $actualQuoteItem = array_pop($quoteItems);
+        $this->assertInstanceOf('Magento\Quote\Api\Data\CartItemInterface', $actualQuoteItem);
+        /** @var \Magento\User\Api\Data\UserInterface $testAttribute */
+        $testAttribute = $actualQuoteItem->getExtensionAttributes()->getQuoteItemTestAttribute();
+        $this->assertEquals($expectedExtensionAttributes['firstname'], $testAttribute->getFirstName());
+        $this->assertEquals($expectedExtensionAttributes['lastname'], $testAttribute->getLastName());
+        $this->assertEquals($expectedExtensionAttributes['email'], $testAttribute->getEmail());
+    }
+}
diff --git a/dev/tests/integration/testsuite/Magento/Quote/Model/QuoteRepositoryTest.php b/dev/tests/integration/testsuite/Magento/Quote/Model/QuoteRepositoryTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..0d7b1ea35f3b7ca356ea0e36875f68e454ebd040
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/Quote/Model/QuoteRepositoryTest.php
@@ -0,0 +1,40 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Quote\Model;
+
+use Magento\TestFramework\Helper\Bootstrap;
+
+class QuoteRepositoryTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @magentoDataFixture Magento/Sales/_files/quote.php
+     */
+    public function testGetList()
+    {
+        $expectedExtensionAttributes = [
+            'firstname' => 'firstname',
+            'lastname' => 'lastname',
+            'email' => 'admin@example.com'
+        ];
+
+        /** @var \Magento\Framework\Api\SearchCriteriaBuilder $searchCriteriaBuilder */
+        $searchCriteriaBuilder = Bootstrap::getObjectManager()->create('Magento\Framework\Api\SearchCriteriaBuilder');
+
+        /** @var \Magento\Quote\Model\QuoteRepository $quoteRepository */
+        $quoteRepository = Bootstrap::getObjectManager()->create('Magento\Quote\Model\QuoteRepository');
+        $searchResult = $quoteRepository->getList($searchCriteriaBuilder->create());
+        $items = $searchResult->getItems();
+        /** @var \Magento\Quote\Api\Data\CartInterface $actualQuote */
+        $actualQuote = array_pop($items);
+        $this->assertInstanceOf('Magento\Quote\Api\Data\CartInterface', $actualQuote);
+        $this->assertEquals('test01', $actualQuote->getReservedOrderId());
+        /** @var \Magento\User\Api\Data\UserInterface $testAttribute */
+        $testAttribute = $actualQuote->getExtensionAttributes()->getQuoteTestAttribute();
+        $this->assertEquals($expectedExtensionAttributes['firstname'], $testAttribute->getFirstName());
+        $this->assertEquals($expectedExtensionAttributes['lastname'], $testAttribute->getLastName());
+        $this->assertEquals($expectedExtensionAttributes['email'], $testAttribute->getEmail());
+    }
+}
diff --git a/dev/tests/integration/testsuite/Magento/Quote/etc/extension_attributes.xml b/dev/tests/integration/testsuite/Magento/Quote/etc/extension_attributes.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b71757a71adde3e42c6f2aa1ef22b3b439bb4807
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/Quote/etc/extension_attributes.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0"?>
+<!--
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+-->
+<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/Api/etc/extension_attributes.xsd">
+    <extension_attributes for="Magento\Quote\Api\Data\CartInterface">
+        <attribute code="quoteTestAttribute" type="Magento\User\Api\Data\UserInterface">
+            <join reference_table="admin_user"
+                  join_on_field="store_id"
+                  reference_field="user_id"
+                    >
+                <field>firstname</field>
+                <field>lastname</field>
+                <field>email</field>
+            </join>
+        </attribute>
+    </extension_attributes>
+    <extension_attributes for="Magento\Quote\Api\Data\CartItemInterface">
+        <attribute code="quoteItemTestAttribute" type="Magento\User\Api\Data\UserInterface">
+            <join reference_table="admin_user"
+                  join_on_field="store_id"
+                  reference_field="user_id"
+                    >
+                <field>firstname</field>
+                <field>lastname</field>
+                <field>email</field>
+            </join>
+        </attribute>
+    </extension_attributes>
+</config>
diff --git a/dev/tests/integration/testsuite/Magento/Setup/Model/ComposerInformationTest.php b/dev/tests/integration/testsuite/Magento/Setup/Model/ComposerInformationTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..cdcf2ca0817ffc06a9d5fc2793344ca3b535dacf
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/Setup/Model/ComposerInformationTest.php
@@ -0,0 +1,110 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\Setup\Model;
+
+/**
+ * Tests Magento\Setup\Model\ComposerInformation
+ */
+class ComposerInformationTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var \PHPUnit_Framework_MockObject_MockObject|\Magento\Framework\Filesystem\Directory\Read
+     */
+    private $directoryReadMock;
+
+    /**
+     * @var \PHPUnit_Framework_MockObject_MockObject|\Magento\Framework\Filesystem
+     */
+    private $filesystemMock;
+
+    /**
+     * @var \PHPUnit_Framework_MockObject_MockObject|\Composer\IO\BufferIO
+     */
+    private $ioMock;
+
+    public function setUp()
+    {
+        $this->directoryReadMock = $this->getMock('Magento\Framework\Filesystem\Directory\Read', [], [], '', false);
+        $this->filesystemMock = $this->getMock('Magento\Framework\Filesystem', [], [], '', false);
+        $this->filesystemMock
+            ->expects($this->any())
+            ->method('getDirectoryRead')
+            ->will($this->returnValue($this->directoryReadMock));
+        $this->ioMock = $this->getMock('Composer\IO\BufferIO', [], [], '', false);
+    }
+
+    /**
+     * Setup DirectoryReadMock to use a specified directory for reading composer files
+     *
+     * @param $composerDir string Directory under _files that contains composer files
+     */
+    private function setupDirectoryMock($composerDir)
+    {
+        $valueMap =                 [
+            ['vendor_path.php', null, __DIR__ . '/_files/vendor_path.php'],
+            [null, null,  __DIR__ . '/_files/' . $composerDir],
+        ];
+
+        $this->directoryReadMock
+            ->expects($this->any())
+            ->method('getAbsolutePath')
+            ->will($this->returnValueMap($valueMap));
+    }
+
+    /**
+     * @param $composerDir string Directory under _files that contains composer files
+     *
+     * @dataProvider getRequiredPhpVersionDataProvider
+     */
+    public function testGetRequiredPhpVersion($composerDir)
+    {
+        $this->setupDirectoryMock($composerDir);
+        $composerInfo = new ComposerInformation($this->filesystemMock, $this->ioMock);
+        $this->assertEquals("~5.5.0|~5.6.0", $composerInfo->getRequiredPhpVersion());
+    }
+
+    /**
+     * @param $composerDir string Directory under _files that contains composer files
+     *
+     * @dataProvider getRequiredPhpVersionDataProvider
+     */
+    public function testGetRequiredExtensions($composerDir)
+    {
+        $this->setupDirectoryMock($composerDir);
+        $composerInfo = new ComposerInformation($this->filesystemMock, $this->ioMock);
+        $expectedExtensions = ['ctype', 'gd', 'spl', 'dom', 'simplexml', 'mcrypt', 'hash', 'curl', 'iconv', 'intl'];
+
+        $actualRequiredExtensions = $composerInfo->getRequiredExtensions();
+        foreach ($expectedExtensions as $expectedExtension) {
+            $this->assertContains($expectedExtension, $actualRequiredExtensions);
+        }
+    }
+
+    /**
+     * Data provider that returns directories containing different types of composer files.
+     *
+     * @return array
+     */
+    public function getRequiredPhpVersionDataProvider()
+    {
+        return [
+            'Skeleton Composer' => ['testSkeleton'],
+            'Composer.json from git clone' => ['testFromClone'],
+            'Composer.json from git create project' => ['testFromCreateProject'],
+        ];
+    }
+
+    /**
+     * @expectedException \Exception
+     * @expectedExceptionMessage Composer file not found:
+     */
+    public function testNoLock()
+    {
+        $this->setupDirectoryMock('notARealDirectory');
+        new ComposerInformation($this->filesystemMock, $this->ioMock);
+    }
+}
diff --git a/dev/tests/integration/testsuite/Magento/Setup/Model/_files/testFromClone/composer.json b/dev/tests/integration/testsuite/Magento/Setup/Model/_files/testFromClone/composer.json
new file mode 100644
index 0000000000000000000000000000000000000000..4f3e3fd09aa9f3a1e3c193cd60f213a5bf917c97
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/Setup/Model/_files/testFromClone/composer.json
@@ -0,0 +1,215 @@
+{
+    "name": "magento/magento2ce",
+    "description": "Magento 2 (Community Edition)",
+    "type": "project",
+    "version": "0.74.0-beta9",
+    "license": [
+        "OSL-3.0",
+        "AFL-3.0"
+    ],
+    "require": {
+        "php": "~5.5.0|~5.6.0",
+        "zendframework/zend-stdlib": "2.4.0",
+        "zendframework/zend-code": "2.4.0",
+        "zendframework/zend-server": "2.4.0",
+        "zendframework/zend-soap": "2.4.0",
+        "zendframework/zend-uri": "2.4.0",
+        "zendframework/zend-validator": "2.4.0",
+        "zendframework/zend-console": "2.4.0",
+        "zendframework/zend-modulemanager": "2.4.0",
+        "zendframework/zend-mvc": "2.4.0",
+        "zendframework/zend-text": "2.4.0",
+        "zendframework/zend-i18n": "2.4.0",
+        "zendframework/zend-eventmanager": "2.4.0",
+        "zendframework/zend-view": "2.4.0",
+        "zendframework/zend-servicemanager": "2.4.0",
+        "zendframework/zend-json": "2.4.0",
+        "zendframework/zend-config": "2.4.0",
+        "zendframework/zend-form": "2.4.0",
+        "zendframework/zend-di": "2.4.0",
+        "zendframework/zend-serializer": "2.4.0",
+        "zendframework/zend-log": "2.4.0",
+        "zendframework/zend-http": "2.4.0",
+        "magento/zendframework1": "1.12.10",
+        "composer/composer": "1.0.0-alpha9",
+        "monolog/monolog": "1.11.0",
+        "oyejorge/less.php": "1.7.0.3",
+        "tubalmartin/cssmin": "2.4.8-p4",
+        "magento/magento-composer-installer": "*",
+        "symfony/console": "~2.3"
+    },
+    "require-dev": {
+        "phpunit/phpunit": "4.1.0",
+        "squizlabs/php_codesniffer": "1.5.3",
+        "phpmd/phpmd": "@stable",
+        "pdepend/pdepend": "2.0.6",
+        "lib-libxml": "*",
+        "ext-ctype": "*",
+        "ext-gd": "*",
+        "ext-spl": "*",
+        "ext-dom": "*",
+        "ext-simplexml": "*",
+        "ext-mcrypt": "*",
+        "ext-hash": "*",
+        "ext-curl": "*",
+        "ext-iconv": "*",
+        "ext-intl": "*",
+        "sjparkinson/static-review": "~4.1",
+        "fabpot/php-cs-fixer": "~1.2",
+        "lusitanian/oauth": "~0.3"
+    },
+    "replace": {
+        "magento/module-admin-notification": "self.version",
+        "magento/module-authorization": "self.version",
+        "magento/module-backend": "self.version",
+        "magento/module-backup": "self.version",
+        "magento/module-bundle": "self.version",
+        "magento/module-cache-invalidate": "self.version",
+        "magento/module-captcha": "self.version",
+        "magento/module-catalog": "self.version",
+        "magento/module-catalog-import-export": "self.version",
+        "magento/module-catalog-inventory": "self.version",
+        "magento/module-catalog-rule": "self.version",
+        "magento/module-catalog-search": "self.version",
+        "magento/module-catalog-url-rewrite": "self.version",
+        "magento/module-catalog-widget": "self.version",
+        "magento/module-centinel": "self.version",
+        "magento/module-checkout": "self.version",
+        "magento/module-checkout-agreements": "self.version",
+        "magento/module-cms": "self.version",
+        "magento/module-cms-url-rewrite": "self.version",
+        "magento/module-config": "self.version",
+        "magento/module-configurable-import-export": "self.version",
+        "magento/module-configurable-product": "self.version",
+        "magento/module-contact": "self.version",
+        "magento/module-cookie": "self.version",
+        "magento/module-cron": "self.version",
+        "magento/module-currency-symbol": "self.version",
+        "magento/module-customer": "self.version",
+        "magento/module-customer-import-export": "self.version",
+        "magento/module-design-editor": "self.version",
+        "magento/module-developer": "self.version",
+        "magento/module-dhl": "self.version",
+        "magento/module-directory": "self.version",
+        "magento/module-downloadable": "self.version",
+        "magento/module-eav": "self.version",
+        "magento/module-email": "self.version",
+        "magento/module-fedex": "self.version",
+        "magento/module-gift-message": "self.version",
+        "magento/module-google-adwords": "self.version",
+        "magento/module-google-analytics": "self.version",
+        "magento/module-google-optimizer": "self.version",
+        "magento/module-google-shopping": "self.version",
+        "magento/module-grouped-import-export": "self.version",
+        "magento/module-grouped-product": "self.version",
+        "magento/module-import-export": "self.version",
+        "magento/module-indexer": "self.version",
+        "magento/module-integration": "self.version",
+        "magento/module-layered-navigation": "self.version",
+        "magento/module-log": "self.version",
+        "magento/module-media-storage": "self.version",
+        "magento/module-msrp": "self.version",
+        "magento/module-multishipping": "self.version",
+        "magento/module-newsletter": "self.version",
+        "magento/module-offline-payments": "self.version",
+        "magento/module-offline-shipping": "self.version",
+        "magento/module-page-cache": "self.version",
+        "magento/module-payment": "self.version",
+        "magento/module-persistent": "self.version",
+        "magento/module-product-alert": "self.version",
+        "magento/module-quote": "self.version",
+        "magento/module-reports": "self.version",
+        "magento/module-require-js": "self.version",
+        "magento/module-review": "self.version",
+        "magento/module-rss": "self.version",
+        "magento/module-rule": "self.version",
+        "magento/module-sales": "self.version",
+        "magento/module-sales-rule": "self.version",
+        "magento/module-sales-sequence": "self.version",
+        "magento/module-search": "self.version",
+        "magento/module-sendfriend": "self.version",
+        "magento/module-shipping": "self.version",
+        "magento/module-sitemap": "self.version",
+        "magento/module-store": "self.version",
+        "magento/module-tax": "self.version",
+        "magento/module-tax-import-export": "self.version",
+        "magento/module-theme": "self.version",
+        "magento/module-translation": "self.version",
+        "magento/module-ui": "self.version",
+        "magento/module-ups": "self.version",
+        "magento/module-url-rewrite": "self.version",
+        "magento/module-user": "self.version",
+        "magento/module-usps": "self.version",
+        "magento/module-variable": "self.version",
+        "magento/module-version": "self.version",
+        "magento/module-webapi": "self.version",
+        "magento/module-weee": "self.version",
+        "magento/module-widget": "self.version",
+        "magento/module-wishlist": "self.version",
+        "magento/theme-adminhtml-backend": "self.version",
+        "magento/theme-frontend-blank": "self.version",
+        "magento/theme-frontend-luma": "self.version",
+        "magento/language-de_de": "self.version",
+        "magento/language-en_us": "self.version",
+        "magento/language-es_es": "self.version",
+        "magento/language-fr_fr": "self.version",
+        "magento/language-nl_nl": "self.version",
+        "magento/language-pt_br": "self.version",
+        "magento/language-zh_cn": "self.version",
+        "magento/framework": "self.version",
+        "trentrichardson/jquery-timepicker-addon": "1.4.3",
+        "colinmollenhour/cache-backend-redis": "dev-master#193d377b7fb2e88595578b282fa01a62d1185abc",
+        "colinmollenhour/credis": "dev-master#f07bbfd4117294f462f0fb19c49221d350bf396f",
+        "linkorb/jsmin-php": "1.1.2",
+        "phpseclib/phpseclib": "0.2.1",
+        "components/jquery": "1.11.0",
+        "blueimp/jquery-file-upload": "5.6.14",
+        "components/jqueryui": "1.10.4",
+        "twbs/bootstrap": "3.1.0",
+        "tinymce/tinymce": "3.4.7"
+    },
+    "extra": {
+        "component_paths": {
+            "trentrichardson/jquery-timepicker-addon": "lib/web/jquery/jquery-ui-timepicker-addon.js",
+            "colinmollenhour/cache-backend-redis": "lib/internal/Cm/Cache/Backend/Redis.php",
+            "colinmollenhour/credis": "lib/internal/Credis",
+            "linkorb/jsmin-php": "lib/internal/JSMin",
+            "phpseclib/phpseclib": "lib/internal/phpseclib",
+            "components/jquery": [
+                "lib/web/jquery.js",
+                "lib/web/jquery/jquery.min.js",
+                "lib/web/jquery/jquery-migrate.js",
+                "lib/web/jquery/jquery-migrate.min.js"
+            ],
+            "blueimp/jquery-file-upload": "lib/web/jquery/fileUploader",
+            "components/jqueryui": [
+                "lib/web/jquery/jquery-ui.js",
+                "lib/web/jquery/jquery-ui.min.js"
+            ],
+            "twbs/bootstrap": [
+                "lib/web/jquery/jquery.tabs.js"
+            ],
+            "tinymce/tinymce": "lib/web/tiny_mce"
+        }
+    },
+    "config": {
+        "use-include-path": true
+    },
+    "autoload": {
+        "psr-4": {
+            "Magento\\Framework\\": "lib/internal/Magento/Framework/",
+            "Magento\\Setup\\": "setup/src/Magento/Setup/"
+        }
+    },
+    "autoload-dev": {
+        "psr-4": {
+            "Magento\\Sniffs\\": "dev/tests/static/framework/Magento/Sniffs/",
+            "Magento\\Tools\\": "dev/tools/Magento/Tools/",
+            "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/"
+        }
+    },
+    "minimum-stability": "alpha",
+    "prefer-stable": true
+}
diff --git a/dev/tests/integration/testsuite/Magento/Setup/Model/_files/testFromClone/composer.lock b/dev/tests/integration/testsuite/Magento/Setup/Model/_files/testFromClone/composer.lock
new file mode 100644
index 0000000000000000000000000000000000000000..821b8b89ce17c63fdf6db5e167b6261eba24e45a
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/Setup/Model/_files/testFromClone/composer.lock
@@ -0,0 +1,3517 @@
+{
+    "_readme": [
+        "This file locks the dependencies of your project to a known state",
+        "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
+        "This file is @generated automatically"
+    ],
+    "hash": "b84fdfc407c466b5a784bc2991459388",
+    "packages": [
+        {
+            "name": "composer/composer",
+            "version": "1.0.0-alpha9",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/composer/composer.git",
+                "reference": "eb1ce550ca51134ee619ad3e37f5a0b7e980dd24"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/composer/composer/zipball/eb1ce550ca51134ee619ad3e37f5a0b7e980dd24",
+                "reference": "eb1ce550ca51134ee619ad3e37f5a0b7e980dd24",
+                "shasum": ""
+            },
+            "require": {
+                "justinrainbow/json-schema": "~1.1",
+                "php": ">=5.3.2",
+                "seld/jsonlint": "~1.0",
+                "symfony/console": "~2.3",
+                "symfony/finder": "~2.2",
+                "symfony/process": "~2.1"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~4.0"
+            },
+            "suggest": {
+                "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages",
+                "ext-zip": "Enabling the zip extension allows you to unzip archives, and allows gzip compression of all internet traffic"
+            },
+            "bin": [
+                "bin/composer"
+            ],
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Composer": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nils Adermann",
+                    "email": "naderman@naderman.de",
+                    "homepage": "http://www.naderman.de"
+                },
+                {
+                    "name": "Jordi Boggiano",
+                    "email": "j.boggiano@seld.be",
+                    "homepage": "http://seld.be"
+                }
+            ],
+            "description": "Composer helps you declare, manage and install dependencies of PHP projects, ensuring you have the right stack everywhere.",
+            "homepage": "http://getcomposer.org/",
+            "keywords": [
+                "autoload",
+                "dependency",
+                "package"
+            ],
+            "time": "2014-12-07 17:15:20"
+        },
+        {
+            "name": "justinrainbow/json-schema",
+            "version": "1.4.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/justinrainbow/json-schema.git",
+                "reference": "2465fe486c864e30badaa4d005ebdf89dbc503f3"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/2465fe486c864e30badaa4d005ebdf89dbc503f3",
+                "reference": "2465fe486c864e30badaa4d005ebdf89dbc503f3",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.0"
+            },
+            "require-dev": {
+                "json-schema/json-schema-test-suite": "1.1.0",
+                "phpdocumentor/phpdocumentor": "~2",
+                "phpunit/phpunit": "~3.7"
+            },
+            "bin": [
+                "bin/validate-json"
+            ],
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.4.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "JsonSchema": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Bruno Prieto Reis",
+                    "email": "bruno.p.reis@gmail.com"
+                },
+                {
+                    "name": "Justin Rainbow",
+                    "email": "justin.rainbow@gmail.com"
+                },
+                {
+                    "name": "Igor Wiedler",
+                    "email": "igor@wiedler.ch"
+                },
+                {
+                    "name": "Robert Schönthal",
+                    "email": "seroscho@googlemail.com"
+                }
+            ],
+            "description": "A library to validate a json schema.",
+            "homepage": "https://github.com/justinrainbow/json-schema",
+            "keywords": [
+                "json",
+                "schema"
+            ],
+            "time": "2015-03-27 16:41:39"
+        },
+        {
+            "name": "magento/magento-composer-installer",
+            "version": "0.1.4",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/magento/magento-composer-installer.git",
+                "reference": "7f03451f71e55d52c2bb07325d56a4e6df322f30"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/magento/magento-composer-installer/zipball/7f03451f71e55d52c2bb07325d56a4e6df322f30",
+                "reference": "7f03451f71e55d52c2bb07325d56a4e6df322f30",
+                "shasum": ""
+            },
+            "require": {
+                "composer-plugin-api": "1.0.0"
+            },
+            "require-dev": {
+                "composer/composer": "*@dev",
+                "firegento/phpcs": "dev-patch-1",
+                "mikey179/vfsstream": "*",
+                "phpunit/phpunit": "*",
+                "phpunit/phpunit-mock-objects": "dev-master",
+                "squizlabs/php_codesniffer": "1.4.7",
+                "symfony/process": "*"
+            },
+            "type": "composer-plugin",
+            "extra": {
+                "composer-command-registry": [
+                    "MagentoHackathon\\Composer\\Magento\\Command\\DeployCommand"
+                ],
+                "class": "MagentoHackathon\\Composer\\Magento\\Plugin"
+            },
+            "autoload": {
+                "psr-0": {
+                    "MagentoHackathon\\Composer\\Magento": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "OSL-3.0"
+            ],
+            "authors": [
+                {
+                    "name": "Vinai Kopp",
+                    "email": "vinai@netzarbeiter.com"
+                },
+                {
+                    "name": "Daniel Fahlke aka Flyingmana",
+                    "email": "flyingmana@googlemail.com"
+                },
+                {
+                    "name": "Jörg Weller",
+                    "email": "weller@flagbit.de"
+                },
+                {
+                    "name": "Karl Spies",
+                    "email": "karl.spies@gmx.net"
+                },
+                {
+                    "name": "Tobias Vogt",
+                    "email": "tobi@webguys.de"
+                },
+                {
+                    "name": "David Fuhr",
+                    "email": "fuhr@flagbit.de"
+                }
+            ],
+            "description": "Composer installer for Magento modules",
+            "homepage": "https://github.com/magento/magento-composer-installer",
+            "keywords": [
+                "composer-installer",
+                "magento"
+            ],
+            "time": "2015-03-05 21:40:30"
+        },
+        {
+            "name": "magento/zendframework1",
+            "version": "1.12.10",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/magento/zf1.git",
+                "reference": "d1e5cd8c9f83229bcdd9bb485c3ce25259c77884"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/magento/zf1/zipball/d1e5cd8c9f83229bcdd9bb485c3ce25259c77884",
+                "reference": "d1e5cd8c9f83229bcdd9bb485c3ce25259c77884",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.2.11"
+            },
+            "require-dev": {
+                "phpunit/dbunit": "1.3.*",
+                "phpunit/phpunit": "3.7.*"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.12.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Zend_": "library/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "include-path": [
+                "library/"
+            ],
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "description": "Magento Zend Framework 1",
+            "homepage": "http://framework.zend.com/",
+            "keywords": [
+                "ZF1",
+                "framework"
+            ],
+            "time": "2015-02-06 17:25:45"
+        },
+        {
+            "name": "monolog/monolog",
+            "version": "1.11.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/Seldaek/monolog.git",
+                "reference": "ec3961874c43840e96da3a8a1ed20d8c73d7e5aa"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/Seldaek/monolog/zipball/ec3961874c43840e96da3a8a1ed20d8c73d7e5aa",
+                "reference": "ec3961874c43840e96da3a8a1ed20d8c73d7e5aa",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.0",
+                "psr/log": "~1.0"
+            },
+            "provide": {
+                "psr/log-implementation": "1.0.0"
+            },
+            "require-dev": {
+                "aws/aws-sdk-php": "~2.4, >2.4.8",
+                "doctrine/couchdb": "~1.0@dev",
+                "graylog2/gelf-php": "~1.0",
+                "phpunit/phpunit": "~3.7.0",
+                "raven/raven": "~0.5",
+                "ruflin/elastica": "0.90.*",
+                "videlalvaro/php-amqplib": "~2.4"
+            },
+            "suggest": {
+                "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
+                "doctrine/couchdb": "Allow sending log messages to a CouchDB server",
+                "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
+                "ext-mongo": "Allow sending log messages to a MongoDB server",
+                "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
+                "raven/raven": "Allow sending log messages to a Sentry server",
+                "rollbar/rollbar": "Allow sending log messages to Rollbar",
+                "ruflin/elastica": "Allow sending log messages to an Elastic Search server",
+                "videlalvaro/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.11.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Monolog\\": "src/Monolog"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Jordi Boggiano",
+                    "email": "j.boggiano@seld.be",
+                    "homepage": "http://seld.be"
+                }
+            ],
+            "description": "Sends your logs to files, sockets, inboxes, databases and various web services",
+            "homepage": "http://github.com/Seldaek/monolog",
+            "keywords": [
+                "log",
+                "logging",
+                "psr-3"
+            ],
+            "time": "2014-09-30 13:30:58"
+        },
+        {
+            "name": "oyejorge/less.php",
+            "version": "v1.7.0.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/oyejorge/less.php.git",
+                "reference": "6e08ecb07e6f6d9170c23e8744c58fdd822ad0de"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/oyejorge/less.php/zipball/6e08ecb07e6f6d9170c23e8744c58fdd822ad0de",
+                "reference": "6e08ecb07e6f6d9170c23e8744c58fdd822ad0de",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.2"
+            },
+            "bin": [
+                "bin/lessc"
+            ],
+            "type": "library",
+            "autoload": {
+                "psr-0": {
+                    "Less": "lib/"
+                },
+                "classmap": [
+                    "lessc.inc.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "Apache-2.0"
+            ],
+            "authors": [
+                {
+                    "name": "Matt Agar",
+                    "homepage": "https://github.com/agar"
+                },
+                {
+                    "name": "Martin Jantošovič",
+                    "homepage": "https://github.com/Mordred"
+                },
+                {
+                    "name": "Josh Schmidt",
+                    "homepage": "https://github.com/oyejorge"
+                }
+            ],
+            "description": "PHP port of the Javascript version of LESS http://lesscss.org",
+            "homepage": "http://lessphp.gpeasy.com",
+            "keywords": [
+                "css",
+                "less",
+                "less.js",
+                "lesscss",
+                "php",
+                "stylesheet"
+            ],
+            "time": "2015-03-10 18:12:59"
+        },
+        {
+            "name": "psr/log",
+            "version": "1.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-fig/log.git",
+                "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b",
+                "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b",
+                "shasum": ""
+            },
+            "type": "library",
+            "autoload": {
+                "psr-0": {
+                    "Psr\\Log\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "PHP-FIG",
+                    "homepage": "http://www.php-fig.org/"
+                }
+            ],
+            "description": "Common interface for logging libraries",
+            "keywords": [
+                "log",
+                "psr",
+                "psr-3"
+            ],
+            "time": "2012-12-21 11:40:51"
+        },
+        {
+            "name": "seld/jsonlint",
+            "version": "1.3.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/Seldaek/jsonlint.git",
+                "reference": "863ae85c6d3ef60ca49cb12bd051c4a0648c40c4"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/863ae85c6d3ef60ca49cb12bd051c4a0648c40c4",
+                "reference": "863ae85c6d3ef60ca49cb12bd051c4a0648c40c4",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.0"
+            },
+            "bin": [
+                "bin/jsonlint"
+            ],
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Seld\\JsonLint\\": "src/Seld/JsonLint/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Jordi Boggiano",
+                    "email": "j.boggiano@seld.be",
+                    "homepage": "http://seld.be"
+                }
+            ],
+            "description": "JSON Linter",
+            "keywords": [
+                "json",
+                "linter",
+                "parser",
+                "validator"
+            ],
+            "time": "2015-01-04 21:18:15"
+        },
+        {
+            "name": "symfony/console",
+            "version": "v2.6.7",
+            "target-dir": "Symfony/Component/Console",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/Console.git",
+                "reference": "ebc5679854aa24ed7d65062e9e3ab0b18a917272"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/Console/zipball/ebc5679854aa24ed7d65062e9e3ab0b18a917272",
+                "reference": "ebc5679854aa24ed7d65062e9e3ab0b18a917272",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "psr/log": "~1.0",
+                "symfony/event-dispatcher": "~2.1",
+                "symfony/phpunit-bridge": "~2.7",
+                "symfony/process": "~2.1"
+            },
+            "suggest": {
+                "psr/log": "For using the console logger",
+                "symfony/event-dispatcher": "",
+                "symfony/process": ""
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.6-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Symfony\\Component\\Console\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony Console Component",
+            "homepage": "https://symfony.com",
+            "time": "2015-05-02 15:18:45"
+        },
+        {
+            "name": "symfony/finder",
+            "version": "v2.6.7",
+            "target-dir": "Symfony/Component/Finder",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/Finder.git",
+                "reference": "704c64c8b12c8882640d5c0330a8414b1e06dc99"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/Finder/zipball/704c64c8b12c8882640d5c0330a8414b1e06dc99",
+                "reference": "704c64c8b12c8882640d5c0330a8414b1e06dc99",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "symfony/phpunit-bridge": "~2.7"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.6-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Symfony\\Component\\Finder\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony Finder Component",
+            "homepage": "https://symfony.com",
+            "time": "2015-05-02 15:18:45"
+        },
+        {
+            "name": "symfony/process",
+            "version": "v2.6.7",
+            "target-dir": "Symfony/Component/Process",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/Process.git",
+                "reference": "9f3c4baaf840ed849e1b1f7bfd5ae246e8509562"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/Process/zipball/9f3c4baaf840ed849e1b1f7bfd5ae246e8509562",
+                "reference": "9f3c4baaf840ed849e1b1f7bfd5ae246e8509562",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "symfony/phpunit-bridge": "~2.7"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.6-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Symfony\\Component\\Process\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony Process Component",
+            "homepage": "https://symfony.com",
+            "time": "2015-05-02 15:18:45"
+        },
+        {
+            "name": "tubalmartin/cssmin",
+            "version": "v2.4.8-p4",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/tubalmartin/YUI-CSS-compressor-PHP-port.git",
+                "reference": "fe84d71e8420243544c0ce3bd0f5d7c1936b0f90"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/tubalmartin/YUI-CSS-compressor-PHP-port/zipball/fe84d71e8420243544c0ce3bd0f5d7c1936b0f90",
+                "reference": "fe84d71e8420243544c0ce3bd0f5d7c1936b0f90",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.0.0"
+            },
+            "type": "library",
+            "autoload": {
+                "classmap": [
+                    "cssmin.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Túbal Martín",
+                    "homepage": "http://tubalmartin.me/"
+                }
+            ],
+            "description": "A PHP port of the YUI CSS compressor",
+            "homepage": "https://github.com/tubalmartin/YUI-CSS-compressor-PHP-port",
+            "keywords": [
+                "compress",
+                "compressor",
+                "css",
+                "minify",
+                "yui"
+            ],
+            "time": "2014-09-22 08:08:50"
+        },
+        {
+            "name": "zendframework/zend-code",
+            "version": "2.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/Component_ZendCode.git",
+                "reference": "cfd5951ff4348e4430850560416c7ddb755f95d3"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/Component_ZendCode/zipball/cfd5951ff4348e4430850560416c7ddb755f95d3",
+                "reference": "cfd5951ff4348e4430850560416c7ddb755f95d3",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-eventmanager": "self.version"
+            },
+            "require-dev": {
+                "doctrine/common": ">=2.1",
+                "zendframework/zend-stdlib": "self.version"
+            },
+            "suggest": {
+                "doctrine/common": "Doctrine\\Common >=2.1 for annotation features",
+                "zendframework/zend-stdlib": "Zend\\Stdlib component"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Code\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "description": "provides facilities to generate arbitrary code using an object oriented interface",
+            "homepage": "https://github.com/zendframework/zf2",
+            "keywords": [
+                "code",
+                "zf2"
+            ],
+            "time": "2015-04-01 17:59:08"
+        },
+        {
+            "name": "zendframework/zend-config",
+            "version": "2.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/Component_ZendConfig.git",
+                "reference": "8682fe4e2923b383bb6472fc84b5796a07589163"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/Component_ZendConfig/zipball/8682fe4e2923b383bb6472fc84b5796a07589163",
+                "reference": "8682fe4e2923b383bb6472fc84b5796a07589163",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-stdlib": "self.version"
+            },
+            "require-dev": {
+                "zendframework/zend-filter": "self.version",
+                "zendframework/zend-i18n": "self.version",
+                "zendframework/zend-json": "self.version",
+                "zendframework/zend-servicemanager": "self.version"
+            },
+            "suggest": {
+                "zendframework/zend-filter": "Zend\\Filter component",
+                "zendframework/zend-i18n": "Zend\\I18n component",
+                "zendframework/zend-json": "Zend\\Json to use the Json reader or writer classes",
+                "zendframework/zend-servicemanager": "Zend\\ServiceManager for use with the Config Factory to retrieve reader and writer instances"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Config\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "description": "provides a nested object property based user interface for accessing this configuration data within application code",
+            "homepage": "https://github.com/zendframework/zf2",
+            "keywords": [
+                "config",
+                "zf2"
+            ],
+            "time": "2015-04-01 17:59:31"
+        },
+        {
+            "name": "zendframework/zend-console",
+            "version": "2.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/Component_ZendConsole.git",
+                "reference": "94ab6663b07e19f20b3319ecf317bd72b6a72dca"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/Component_ZendConsole/zipball/94ab6663b07e19f20b3319ecf317bd72b6a72dca",
+                "reference": "94ab6663b07e19f20b3319ecf317bd72b6a72dca",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-stdlib": "self.version"
+            },
+            "suggest": {
+                "zendframework/zend-filter": "To support DefaultRouteMatcher usage",
+                "zendframework/zend-validator": "To support DefaultRouteMatcher usage"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Console\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "homepage": "https://github.com/zendframework/zf2",
+            "keywords": [
+                "console",
+                "zf2"
+            ],
+            "time": "2015-04-01 17:59:48"
+        },
+        {
+            "name": "zendframework/zend-di",
+            "version": "2.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/Component_ZendDi.git",
+                "reference": "0811f2a67ad0b50dfb8d602ed67cde0b82249190"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/Component_ZendDi/zipball/0811f2a67ad0b50dfb8d602ed67cde0b82249190",
+                "reference": "0811f2a67ad0b50dfb8d602ed67cde0b82249190",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-code": "self.version",
+                "zendframework/zend-stdlib": "self.version"
+            },
+            "require-dev": {
+                "zendframework/zend-servicemanager": "self.version"
+            },
+            "suggest": {
+                "zendframework/zend-servicemanager": "Zend\\ServiceManager component"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Di\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "homepage": "https://github.com/zendframework/zf2",
+            "keywords": [
+                "di",
+                "zf2"
+            ],
+            "time": "2015-04-01 18:01:30"
+        },
+        {
+            "name": "zendframework/zend-escaper",
+            "version": "2.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/Component_ZendEscaper.git",
+                "reference": "65b3328627362b0be1d5e9067bc846511d1fbc96"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/Component_ZendEscaper/zipball/65b3328627362b0be1d5e9067bc846511d1fbc96",
+                "reference": "65b3328627362b0be1d5e9067bc846511d1fbc96",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Escaper\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "homepage": "https://github.com/zendframework/zf2",
+            "keywords": [
+                "escaper",
+                "zf2"
+            ],
+            "time": "2015-04-01 18:02:07"
+        },
+        {
+            "name": "zendframework/zend-eventmanager",
+            "version": "2.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/Component_ZendEventManager.git",
+                "reference": "38df5b567d4ff4d22144745c503ba0502d0d5695"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/Component_ZendEventManager/zipball/38df5b567d4ff4d22144745c503ba0502d0d5695",
+                "reference": "38df5b567d4ff4d22144745c503ba0502d0d5695",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-stdlib": "self.version"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\EventManager\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "homepage": "https://github.com/zendframework/zf2",
+            "keywords": [
+                "eventmanager",
+                "zf2"
+            ],
+            "time": "2015-04-01 18:05:26"
+        },
+        {
+            "name": "zendframework/zend-filter",
+            "version": "2.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/Component_ZendFilter.git",
+                "reference": "b13741a88553351fc52472de529b57b580b8f6f1"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/Component_ZendFilter/zipball/b13741a88553351fc52472de529b57b580b8f6f1",
+                "reference": "b13741a88553351fc52472de529b57b580b8f6f1",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-stdlib": "self.version"
+            },
+            "require-dev": {
+                "zendframework/zend-crypt": "self.version",
+                "zendframework/zend-servicemanager": "self.version",
+                "zendframework/zend-uri": "self.version"
+            },
+            "suggest": {
+                "zendframework/zend-crypt": "Zend\\Crypt component",
+                "zendframework/zend-i18n": "Zend\\I18n component",
+                "zendframework/zend-servicemanager": "Zend\\ServiceManager component",
+                "zendframework/zend-uri": "Zend\\Uri component for UriNormalize filter"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Filter\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "description": "provides a set of commonly needed data filters",
+            "homepage": "https://github.com/zendframework/zf2",
+            "keywords": [
+                "filter",
+                "zf2"
+            ],
+            "time": "2015-04-01 18:09:25"
+        },
+        {
+            "name": "zendframework/zend-form",
+            "version": "2.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/Component_ZendForm.git",
+                "reference": "09f5bd46ffbf783df22281898e2175b291bd43a3"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/Component_ZendForm/zipball/09f5bd46ffbf783df22281898e2175b291bd43a3",
+                "reference": "09f5bd46ffbf783df22281898e2175b291bd43a3",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-inputfilter": "self.version",
+                "zendframework/zend-stdlib": "self.version"
+            },
+            "require-dev": {
+                "zendframework/zend-captcha": "self.version",
+                "zendframework/zend-code": "self.version",
+                "zendframework/zend-eventmanager": "self.version",
+                "zendframework/zend-filter": "self.version",
+                "zendframework/zend-i18n": "self.version",
+                "zendframework/zend-servicemanager": "self.version",
+                "zendframework/zend-validator": "self.version",
+                "zendframework/zend-view": "self.version",
+                "zendframework/zendservice-recaptcha": "*"
+            },
+            "suggest": {
+                "zendframework/zend-captcha": "Zend\\Captcha component",
+                "zendframework/zend-code": "Zend\\Code component",
+                "zendframework/zend-eventmanager": "Zend\\EventManager component",
+                "zendframework/zend-filter": "Zend\\Filter component",
+                "zendframework/zend-i18n": "Zend\\I18n component",
+                "zendframework/zend-servicemanager": "Zend\\ServiceManager component",
+                "zendframework/zend-validator": "Zend\\Validator component",
+                "zendframework/zend-view": "Zend\\View component",
+                "zendframework/zendservice-recaptcha": "ZendService\\ReCaptcha component"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Form\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "homepage": "https://github.com/zendframework/zf2",
+            "keywords": [
+                "form",
+                "zf2"
+            ],
+            "time": "2015-04-01 18:09:25"
+        },
+        {
+            "name": "zendframework/zend-http",
+            "version": "2.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/Component_ZendHttp.git",
+                "reference": "ee6220609845b32d1b2873c9ac694aef56d508f5"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/Component_ZendHttp/zipball/ee6220609845b32d1b2873c9ac694aef56d508f5",
+                "reference": "ee6220609845b32d1b2873c9ac694aef56d508f5",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-loader": "self.version",
+                "zendframework/zend-stdlib": "self.version",
+                "zendframework/zend-uri": "self.version",
+                "zendframework/zend-validator": "self.version"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Http\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "description": "provides an easy interface for performing Hyper-Text Transfer Protocol (HTTP) requests",
+            "homepage": "https://github.com/zendframework/zf2",
+            "keywords": [
+                "http",
+                "zf2"
+            ],
+            "time": "2015-04-01 18:09:25"
+        },
+        {
+            "name": "zendframework/zend-i18n",
+            "version": "2.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/Component_ZendI18n.git",
+                "reference": "33051775d9a8c341fe3b77d1f3daa0e921e2f4bd"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/Component_ZendI18n/zipball/33051775d9a8c341fe3b77d1f3daa0e921e2f4bd",
+                "reference": "33051775d9a8c341fe3b77d1f3daa0e921e2f4bd",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-stdlib": "self.version"
+            },
+            "require-dev": {
+                "zendframework/zend-cache": "self.version",
+                "zendframework/zend-config": "self.version",
+                "zendframework/zend-eventmanager": "self.version",
+                "zendframework/zend-filter": "self.version",
+                "zendframework/zend-servicemanager": "self.version",
+                "zendframework/zend-validator": "self.version",
+                "zendframework/zend-view": "self.version"
+            },
+            "suggest": {
+                "ext-intl": "Required for most features of Zend\\I18n; included in default builds of PHP",
+                "zendframework/zend-cache": "Zend\\Cache component",
+                "zendframework/zend-config": "Zend\\Config component",
+                "zendframework/zend-eventmanager": "You should install this package to use the events in the translator",
+                "zendframework/zend-filter": "You should install this package to use the provided filters",
+                "zendframework/zend-resources": "Translation resources",
+                "zendframework/zend-servicemanager": "Zend\\ServiceManager component",
+                "zendframework/zend-validator": "You should install this package to use the provided validators",
+                "zendframework/zend-view": "You should install this package to use the provided view helpers"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\I18n\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "homepage": "https://github.com/zendframework/zf2",
+            "keywords": [
+                "i18n",
+                "zf2"
+            ],
+            "time": "2015-04-01 18:09:26"
+        },
+        {
+            "name": "zendframework/zend-inputfilter",
+            "version": "2.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/Component_ZendInputFilter.git",
+                "reference": "16856fec61f285e41e5492235220a4dec06ab90f"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/Component_ZendInputFilter/zipball/16856fec61f285e41e5492235220a4dec06ab90f",
+                "reference": "16856fec61f285e41e5492235220a4dec06ab90f",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-filter": "self.version",
+                "zendframework/zend-stdlib": "self.version",
+                "zendframework/zend-validator": "self.version"
+            },
+            "require-dev": {
+                "zendframework/zend-servicemanager": "self.version"
+            },
+            "suggest": {
+                "zendframework/zend-servicemanager": "To support plugin manager support"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\InputFilter\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "homepage": "https://github.com/zendframework/zf2",
+            "keywords": [
+                "inputfilter",
+                "zf2"
+            ],
+            "time": "2015-04-01 18:09:26"
+        },
+        {
+            "name": "zendframework/zend-json",
+            "version": "2.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/Component_ZendJson.git",
+                "reference": "76aeb27e4baf39799e5ca3cf6f2fdd6748ee930c"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/Component_ZendJson/zipball/76aeb27e4baf39799e5ca3cf6f2fdd6748ee930c",
+                "reference": "76aeb27e4baf39799e5ca3cf6f2fdd6748ee930c",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-stdlib": "self.version"
+            },
+            "require-dev": {
+                "zendframework/zend-http": "self.version",
+                "zendframework/zend-server": "self.version"
+            },
+            "suggest": {
+                "zendframework/zend-http": "Zend\\Http component",
+                "zendframework/zend-server": "Zend\\Server component",
+                "zendframework/zendxml": "To support Zend\\Json\\Json::fromXml() usage"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Json\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "description": "provides convenience methods for serializing native PHP to JSON and decoding JSON to native PHP",
+            "homepage": "https://github.com/zendframework/zf2",
+            "keywords": [
+                "json",
+                "zf2"
+            ],
+            "time": "2015-04-01 18:09:26"
+        },
+        {
+            "name": "zendframework/zend-loader",
+            "version": "2.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/Component_ZendLoader.git",
+                "reference": "6868b8a0c346f17fb97724c3a63aa2cbf6b94865"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/Component_ZendLoader/zipball/6868b8a0c346f17fb97724c3a63aa2cbf6b94865",
+                "reference": "6868b8a0c346f17fb97724c3a63aa2cbf6b94865",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Loader\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "homepage": "https://github.com/zendframework/zf2",
+            "keywords": [
+                "loader",
+                "zf2"
+            ],
+            "time": "2015-04-01 18:09:26"
+        },
+        {
+            "name": "zendframework/zend-log",
+            "version": "2.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/Component_ZendLog.git",
+                "reference": "2d5d20fd45470506bdaff727c46dc25fe953146e"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/Component_ZendLog/zipball/2d5d20fd45470506bdaff727c46dc25fe953146e",
+                "reference": "2d5d20fd45470506bdaff727c46dc25fe953146e",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-servicemanager": "self.version",
+                "zendframework/zend-stdlib": "self.version"
+            },
+            "require-dev": {
+                "zendframework/zend-console": "self.version",
+                "zendframework/zend-db": "self.version",
+                "zendframework/zend-escaper": "self.version",
+                "zendframework/zend-mail": "self.version",
+                "zendframework/zend-validator": "self.version"
+            },
+            "suggest": {
+                "ext-mongo": "*",
+                "zendframework/zend-console": "Zend\\Console component",
+                "zendframework/zend-db": "Zend\\Db component",
+                "zendframework/zend-escaper": "Zend\\Escaper component, for use in the XML formatter",
+                "zendframework/zend-mail": "Zend\\Mail component",
+                "zendframework/zend-validator": "Zend\\Validator component"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Log\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "description": "component for general purpose logging",
+            "homepage": "https://github.com/zendframework/zf2",
+            "keywords": [
+                "log",
+                "logging",
+                "zf2"
+            ],
+            "time": "2015-04-01 18:09:26"
+        },
+        {
+            "name": "zendframework/zend-math",
+            "version": "2.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/Component_ZendMath.git",
+                "reference": "634123f83ca90b6613f132d0d100e6b5e9890a29"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/Component_ZendMath/zipball/634123f83ca90b6613f132d0d100e6b5e9890a29",
+                "reference": "634123f83ca90b6613f132d0d100e6b5e9890a29",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23"
+            },
+            "suggest": {
+                "ext-bcmath": "If using the bcmath functionality",
+                "ext-gmp": "If using the gmp functionality",
+                "ircmaxell/random-lib": "Fallback random byte generator for Zend\\Math\\Rand if OpenSSL/Mcrypt extensions are unavailable",
+                "zendframework/zend-servicemanager": ">= current version, if using the BigInteger::factory functionality"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Math\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "homepage": "https://github.com/zendframework/zf2",
+            "keywords": [
+                "math",
+                "zf2"
+            ],
+            "time": "2015-04-01 18:09:27"
+        },
+        {
+            "name": "zendframework/zend-modulemanager",
+            "version": "2.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/Component_ZendModuleManager.git",
+                "reference": "cbe16b0eafe734a062ed0182381e64b9c953dccf"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/Component_ZendModuleManager/zipball/cbe16b0eafe734a062ed0182381e64b9c953dccf",
+                "reference": "cbe16b0eafe734a062ed0182381e64b9c953dccf",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-eventmanager": "self.version",
+                "zendframework/zend-stdlib": "self.version"
+            },
+            "require-dev": {
+                "zendframework/zend-config": "self.version",
+                "zendframework/zend-console": "self.version",
+                "zendframework/zend-loader": "self.version",
+                "zendframework/zend-servicemanager": "self.version"
+            },
+            "suggest": {
+                "zendframework/zend-config": "Zend\\Config component",
+                "zendframework/zend-console": "Zend\\Console component",
+                "zendframework/zend-loader": "Zend\\Loader component",
+                "zendframework/zend-mvc": "Zend\\Mvc component",
+                "zendframework/zend-servicemanager": "Zend\\ServiceManager component"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\ModuleManager\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "homepage": "https://github.com/zendframework/zf2",
+            "keywords": [
+                "modulemanager",
+                "zf2"
+            ],
+            "time": "2015-04-01 18:09:27"
+        },
+        {
+            "name": "zendframework/zend-mvc",
+            "version": "2.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/Component_ZendMvc.git",
+                "reference": "bfff0f5f9e4d925ee13b8c159c9d6ae7e0db5412"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/Component_ZendMvc/zipball/bfff0f5f9e4d925ee13b8c159c9d6ae7e0db5412",
+                "reference": "bfff0f5f9e4d925ee13b8c159c9d6ae7e0db5412",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-eventmanager": "self.version",
+                "zendframework/zend-form": "self.version",
+                "zendframework/zend-servicemanager": "self.version",
+                "zendframework/zend-stdlib": "self.version"
+            },
+            "require-dev": {
+                "zendframework/zend-authentication": "self.version",
+                "zendframework/zend-console": "self.version",
+                "zendframework/zend-di": "self.version",
+                "zendframework/zend-filter": "self.version",
+                "zendframework/zend-http": "self.version",
+                "zendframework/zend-i18n": "self.version",
+                "zendframework/zend-inputfilter": "self.version",
+                "zendframework/zend-json": "self.version",
+                "zendframework/zend-log": "self.version",
+                "zendframework/zend-modulemanager": "self.version",
+                "zendframework/zend-serializer": "self.version",
+                "zendframework/zend-session": "self.version",
+                "zendframework/zend-text": "self.version",
+                "zendframework/zend-uri": "self.version",
+                "zendframework/zend-validator": "self.version",
+                "zendframework/zend-version": "self.version",
+                "zendframework/zend-view": "self.version"
+            },
+            "suggest": {
+                "zendframework/zend-authentication": "Zend\\Authentication component for Identity plugin",
+                "zendframework/zend-config": "Zend\\Config component",
+                "zendframework/zend-console": "Zend\\Console component",
+                "zendframework/zend-di": "Zend\\Di component",
+                "zendframework/zend-filter": "Zend\\Filter component",
+                "zendframework/zend-http": "Zend\\Http component",
+                "zendframework/zend-i18n": "Zend\\I18n component for translatable segments",
+                "zendframework/zend-inputfilter": "Zend\\Inputfilter component",
+                "zendframework/zend-json": "Zend\\Json component",
+                "zendframework/zend-log": "Zend\\Log component",
+                "zendframework/zend-modulemanager": "Zend\\ModuleManager component",
+                "zendframework/zend-serializer": "Zend\\Serializer component",
+                "zendframework/zend-session": "Zend\\Session component for FlashMessenger, PRG, and FPRG plugins",
+                "zendframework/zend-stdlib": "Zend\\Stdlib component",
+                "zendframework/zend-text": "Zend\\Text component",
+                "zendframework/zend-uri": "Zend\\Uri component",
+                "zendframework/zend-validator": "Zend\\Validator component",
+                "zendframework/zend-version": "Zend\\Version component",
+                "zendframework/zend-view": "Zend\\View component"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Mvc\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "homepage": "https://github.com/zendframework/zf2",
+            "keywords": [
+                "mvc",
+                "zf2"
+            ],
+            "time": "2015-04-01 18:09:27"
+        },
+        {
+            "name": "zendframework/zend-serializer",
+            "version": "2.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/Component_ZendSerializer.git",
+                "reference": "a46960854d6326f0036d98c9abc7a79e36e25928"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/Component_ZendSerializer/zipball/a46960854d6326f0036d98c9abc7a79e36e25928",
+                "reference": "a46960854d6326f0036d98c9abc7a79e36e25928",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-json": "self.version",
+                "zendframework/zend-math": "self.version",
+                "zendframework/zend-stdlib": "self.version"
+            },
+            "require-dev": {
+                "zendframework/zend-servicemanager": "self.version"
+            },
+            "suggest": {
+                "zendframework/zend-servicemanager": "To support plugin manager support"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Serializer\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "description": "provides an adapter based interface to simply generate storable representation of PHP types by different facilities, and recover",
+            "homepage": "https://github.com/zendframework/zf2",
+            "keywords": [
+                "serializer",
+                "zf2"
+            ],
+            "time": "2015-04-01 18:09:28"
+        },
+        {
+            "name": "zendframework/zend-server",
+            "version": "2.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/Component_ZendServer.git",
+                "reference": "fc73c34490908ba143af3c57c7e166b40c4b9f8e"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/Component_ZendServer/zipball/fc73c34490908ba143af3c57c7e166b40c4b9f8e",
+                "reference": "fc73c34490908ba143af3c57c7e166b40c4b9f8e",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-code": "self.version",
+                "zendframework/zend-stdlib": "self.version"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Server\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "homepage": "https://github.com/zendframework/zf2",
+            "keywords": [
+                "server",
+                "zf2"
+            ],
+            "time": "2015-04-01 18:09:28"
+        },
+        {
+            "name": "zendframework/zend-servicemanager",
+            "version": "2.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/Component_ZendServiceManager.git",
+                "reference": "d3c27c708a148a30608f313a5b7a61a531bd9cb9"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/Component_ZendServiceManager/zipball/d3c27c708a148a30608f313a5b7a61a531bd9cb9",
+                "reference": "d3c27c708a148a30608f313a5b7a61a531bd9cb9",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23"
+            },
+            "require-dev": {
+                "zendframework/zend-di": "self.version"
+            },
+            "suggest": {
+                "ocramius/proxy-manager": "ProxyManager 0.5.* to handle lazy initialization of services",
+                "zendframework/zend-di": "Zend\\Di component"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\ServiceManager\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "homepage": "https://github.com/zendframework/zf2",
+            "keywords": [
+                "servicemanager",
+                "zf2"
+            ],
+            "time": "2015-04-01 18:09:28"
+        },
+        {
+            "name": "zendframework/zend-soap",
+            "version": "2.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/Component_ZendSoap.git",
+                "reference": "e42b900798ea95a9063fa4922da976d8b3a8ab6f"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/Component_ZendSoap/zipball/e42b900798ea95a9063fa4922da976d8b3a8ab6f",
+                "reference": "e42b900798ea95a9063fa4922da976d8b3a8ab6f",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-server": "self.version",
+                "zendframework/zend-stdlib": "self.version",
+                "zendframework/zend-uri": "self.version"
+            },
+            "require-dev": {
+                "zendframework/zend-http": "self.version"
+            },
+            "suggest": {
+                "zendframework/zend-http": "Zend\\Http component"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Soap\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "homepage": "https://github.com/zendframework/zf2",
+            "keywords": [
+                "soap",
+                "zf2"
+            ],
+            "time": "2015-04-01 18:09:29"
+        },
+        {
+            "name": "zendframework/zend-stdlib",
+            "version": "2.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/Component_ZendStdlib.git",
+                "reference": "eab586f4c18af3fa63c977611939f1f4a3cf1030"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/Component_ZendStdlib/zipball/eab586f4c18af3fa63c977611939f1f4a3cf1030",
+                "reference": "eab586f4c18af3fa63c977611939f1f4a3cf1030",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23"
+            },
+            "require-dev": {
+                "zendframework/zend-eventmanager": "self.version",
+                "zendframework/zend-filter": "self.version",
+                "zendframework/zend-serializer": "self.version",
+                "zendframework/zend-servicemanager": "self.version"
+            },
+            "suggest": {
+                "zendframework/zend-eventmanager": "To support aggregate hydrator usage",
+                "zendframework/zend-filter": "To support naming strategy hydrator usage",
+                "zendframework/zend-serializer": "Zend\\Serializer component",
+                "zendframework/zend-servicemanager": "To support hydrator plugin manager usage"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Stdlib\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "homepage": "https://github.com/zendframework/zf2",
+            "keywords": [
+                "stdlib",
+                "zf2"
+            ],
+            "time": "2015-04-01 18:09:29"
+        },
+        {
+            "name": "zendframework/zend-text",
+            "version": "2.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/Component_ZendText.git",
+                "reference": "35f519e20e575a331c2ee554e5a555a59ce4b9e2"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/Component_ZendText/zipball/35f519e20e575a331c2ee554e5a555a59ce4b9e2",
+                "reference": "35f519e20e575a331c2ee554e5a555a59ce4b9e2",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-servicemanager": "self.version",
+                "zendframework/zend-stdlib": "self.version"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Text\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "homepage": "https://github.com/zendframework/zf2",
+            "keywords": [
+                "text",
+                "zf2"
+            ],
+            "time": "2015-04-01 18:09:29"
+        },
+        {
+            "name": "zendframework/zend-uri",
+            "version": "2.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/Component_ZendUri.git",
+                "reference": "53f5b162b293f80de8b951eece8e08be83c4fe16"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/Component_ZendUri/zipball/53f5b162b293f80de8b951eece8e08be83c4fe16",
+                "reference": "53f5b162b293f80de8b951eece8e08be83c4fe16",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-escaper": "self.version",
+                "zendframework/zend-validator": "self.version"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Uri\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "description": "a component that aids in manipulating and validating » Uniform Resource Identifiers (URIs)",
+            "homepage": "https://github.com/zendframework/zf2",
+            "keywords": [
+                "uri",
+                "zf2"
+            ],
+            "time": "2015-04-01 18:09:29"
+        },
+        {
+            "name": "zendframework/zend-validator",
+            "version": "2.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/Component_ZendValidator.git",
+                "reference": "eb678d20256f120a72ca27276bbb2875841701ab"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/Component_ZendValidator/zipball/eb678d20256f120a72ca27276bbb2875841701ab",
+                "reference": "eb678d20256f120a72ca27276bbb2875841701ab",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-stdlib": "self.version"
+            },
+            "require-dev": {
+                "zendframework/zend-db": "self.version",
+                "zendframework/zend-filter": "self.version",
+                "zendframework/zend-i18n": "self.version",
+                "zendframework/zend-math": "self.version",
+                "zendframework/zend-servicemanager": "self.version",
+                "zendframework/zend-session": "self.version",
+                "zendframework/zend-uri": "self.version"
+            },
+            "suggest": {
+                "zendframework/zend-db": "Zend\\Db component",
+                "zendframework/zend-filter": "Zend\\Filter component, required by the Digits validator",
+                "zendframework/zend-i18n": "Zend\\I18n component to allow translation of validation error messages as well as to use the various Date validators",
+                "zendframework/zend-math": "Zend\\Math component",
+                "zendframework/zend-resources": "Translations of validator messages",
+                "zendframework/zend-servicemanager": "Zend\\ServiceManager component to allow using the ValidatorPluginManager and validator chains",
+                "zendframework/zend-session": "Zend\\Session component",
+                "zendframework/zend-uri": "Zend\\Uri component, required by the Uri and Sitemap\\Loc validators"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Validator\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "description": "provides a set of commonly needed validators",
+            "homepage": "https://github.com/zendframework/zf2",
+            "keywords": [
+                "validator",
+                "zf2"
+            ],
+            "time": "2015-04-01 18:09:30"
+        },
+        {
+            "name": "zendframework/zend-view",
+            "version": "2.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/Component_ZendView.git",
+                "reference": "e119b4b5f082af58a96eb206e782b62c193227bf"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/Component_ZendView/zipball/e119b4b5f082af58a96eb206e782b62c193227bf",
+                "reference": "e119b4b5f082af58a96eb206e782b62c193227bf",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-eventmanager": "self.version",
+                "zendframework/zend-loader": "self.version",
+                "zendframework/zend-stdlib": "self.version"
+            },
+            "require-dev": {
+                "zendframework/zend-authentication": "self.version",
+                "zendframework/zend-escaper": "self.version",
+                "zendframework/zend-feed": "self.version",
+                "zendframework/zend-filter": "self.version",
+                "zendframework/zend-http": "self.version",
+                "zendframework/zend-i18n": "self.version",
+                "zendframework/zend-json": "self.version",
+                "zendframework/zend-mvc": "self.version",
+                "zendframework/zend-navigation": "self.version",
+                "zendframework/zend-paginator": "self.version",
+                "zendframework/zend-permissions-acl": "self.version",
+                "zendframework/zend-servicemanager": "self.version",
+                "zendframework/zend-uri": "self.version"
+            },
+            "suggest": {
+                "zendframework/zend-authentication": "Zend\\Authentication component",
+                "zendframework/zend-escaper": "Zend\\Escaper component",
+                "zendframework/zend-feed": "Zend\\Feed component",
+                "zendframework/zend-filter": "Zend\\Filter component",
+                "zendframework/zend-http": "Zend\\Http component",
+                "zendframework/zend-i18n": "Zend\\I18n component",
+                "zendframework/zend-json": "Zend\\Json component",
+                "zendframework/zend-mvc": "Zend\\Mvc component",
+                "zendframework/zend-navigation": "Zend\\Navigation component",
+                "zendframework/zend-paginator": "Zend\\Paginator component",
+                "zendframework/zend-permissions-acl": "Zend\\Permissions\\Acl component",
+                "zendframework/zend-servicemanager": "Zend\\ServiceManager component",
+                "zendframework/zend-uri": "Zend\\Uri component"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\View\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "description": "provides a system of helpers, output filters, and variable escaping",
+            "homepage": "https://github.com/zendframework/zf2",
+            "keywords": [
+                "view",
+                "zf2"
+            ],
+            "time": "2015-04-01 18:09:30"
+        }
+    ],
+    "packages-dev": [
+        {
+            "name": "doctrine/instantiator",
+            "version": "1.0.4",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/doctrine/instantiator.git",
+                "reference": "f976e5de371104877ebc89bd8fecb0019ed9c119"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/doctrine/instantiator/zipball/f976e5de371104877ebc89bd8fecb0019ed9c119",
+                "reference": "f976e5de371104877ebc89bd8fecb0019ed9c119",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3,<8.0-DEV"
+            },
+            "require-dev": {
+                "athletic/athletic": "~0.1.8",
+                "ext-pdo": "*",
+                "ext-phar": "*",
+                "phpunit/phpunit": "~4.0",
+                "squizlabs/php_codesniffer": "2.0.*@ALPHA"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Doctrine\\Instantiator\\": "src"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Marco Pivetta",
+                    "email": "ocramius@gmail.com",
+                    "homepage": "http://ocramius.github.com/"
+                }
+            ],
+            "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
+            "homepage": "https://github.com/doctrine/instantiator",
+            "keywords": [
+                "constructor",
+                "instantiate"
+            ],
+            "time": "2014-10-13 12:58:55"
+        },
+        {
+            "name": "fabpot/php-cs-fixer",
+            "version": "v1.8",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git",
+                "reference": "93c723fe0c50ed54292006e7249a4c1173cf5847"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/93c723fe0c50ed54292006e7249a4c1173cf5847",
+                "reference": "93c723fe0c50ed54292006e7249a4c1173cf5847",
+                "shasum": ""
+            },
+            "require": {
+                "ext-tokenizer": "*",
+                "php": ">=5.3.6",
+                "sebastian/diff": "~1.1",
+                "symfony/console": "~2.3",
+                "symfony/event-dispatcher": "~2.1",
+                "symfony/filesystem": "~2.1",
+                "symfony/finder": "~2.1",
+                "symfony/process": "~2.3",
+                "symfony/stopwatch": "~2.5"
+            },
+            "require-dev": {
+                "satooshi/php-coveralls": "0.7.*@dev"
+            },
+            "bin": [
+                "php-cs-fixer"
+            ],
+            "type": "application",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\CS\\": "Symfony/CS/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Dariusz Rumiński",
+                    "email": "dariusz.ruminski@gmail.com"
+                },
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                }
+            ],
+            "description": "A tool to automatically fix PHP code style",
+            "time": "2015-05-04 17:06:20"
+        },
+        {
+            "name": "league/climate",
+            "version": "2.6.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/thephpleague/climate.git",
+                "reference": "28851c909017424f61cc6a62089316313c645d1c"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/thephpleague/climate/zipball/28851c909017424f61cc6a62089316313c645d1c",
+                "reference": "28851c909017424f61cc6a62089316313c645d1c",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.4.0"
+            },
+            "require-dev": {
+                "mockery/mockery": "dev-master",
+                "phpunit/phpunit": "4.1.*"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "League\\CLImate\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Joe Tannenbaum",
+                    "email": "hey@joe.codes",
+                    "homepage": "http://joe.codes/",
+                    "role": "Developer"
+                }
+            ],
+            "description": "PHP's best friend for the terminal. CLImate allows you to easily output colored text, special formats, and more.",
+            "keywords": [
+                "cli",
+                "colors",
+                "command",
+                "php",
+                "terminal"
+            ],
+            "time": "2015-01-18 14:31:58"
+        },
+        {
+            "name": "lusitanian/oauth",
+            "version": "v0.3.5",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/Lusitanian/PHPoAuthLib.git",
+                "reference": "ac5a1cd5a4519143728dce2213936eea302edf8a"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/Lusitanian/PHPoAuthLib/zipball/ac5a1cd5a4519143728dce2213936eea302edf8a",
+                "reference": "ac5a1cd5a4519143728dce2213936eea302edf8a",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "3.7.*",
+                "predis/predis": "0.8.*@dev",
+                "symfony/http-foundation": "~2.1"
+            },
+            "suggest": {
+                "ext-openssl": "Allows for usage of secure connections with the stream-based HTTP client.",
+                "predis/predis": "Allows using the Redis storage backend.",
+                "symfony/http-foundation": "Allows using the Symfony Session storage backend."
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "0.1-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "OAuth": "src",
+                    "OAuth\\Unit": "tests"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "David Desberg",
+                    "email": "david@daviddesberg.com"
+                },
+                {
+                    "name": "Pieter Hordijk",
+                    "email": "info@pieterhordijk.com"
+                }
+            ],
+            "description": "PHP 5.3+ oAuth 1/2 Library",
+            "keywords": [
+                "Authentication",
+                "authorization",
+                "oauth",
+                "security"
+            ],
+            "time": "2014-09-05 15:19:58"
+        },
+        {
+            "name": "pdepend/pdepend",
+            "version": "2.0.6",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/pdepend/pdepend.git",
+                "reference": "a15ffcbfbcc4570d4a733ca7b76e9cac0a56c3f4"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/pdepend/pdepend/zipball/a15ffcbfbcc4570d4a733ca7b76e9cac0a56c3f4",
+                "reference": "a15ffcbfbcc4570d4a733ca7b76e9cac0a56c3f4",
+                "shasum": ""
+            },
+            "require": {
+                "symfony/config": ">=2.4",
+                "symfony/dependency-injection": ">=2.4",
+                "symfony/filesystem": ">=2.4"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "4.*@stable",
+                "squizlabs/php_codesniffer": "@stable"
+            },
+            "bin": [
+                "src/bin/pdepend"
+            ],
+            "type": "library",
+            "autoload": {
+                "psr-0": {
+                    "PDepend\\": "src/main/php/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "description": "Official version of pdepend to be handled with Composer",
+            "time": "2015-03-02 08:06:43"
+        },
+        {
+            "name": "phpmd/phpmd",
+            "version": "2.2.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/phpmd/phpmd.git",
+                "reference": "7dc4a6b5c07b119ab5da7960b56303fa6855eb84"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/phpmd/phpmd/zipball/7dc4a6b5c07b119ab5da7960b56303fa6855eb84",
+                "reference": "7dc4a6b5c07b119ab5da7960b56303fa6855eb84",
+                "shasum": ""
+            },
+            "require": {
+                "pdepend/pdepend": "2.0.*",
+                "php": ">=5.3.0",
+                "symfony/config": ">=2.4",
+                "symfony/dependency-injection": ">=2.4",
+                "symfony/filesystem": ">=2.4"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "*",
+                "squizlabs/php_codesniffer": "*"
+            },
+            "bin": [
+                "src/bin/phpmd"
+            ],
+            "type": "project",
+            "autoload": {
+                "psr-0": {
+                    "PHPMD\\": "src/main/php"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Manuel Pichler",
+                    "email": "github@manuel-pichler.de",
+                    "homepage": "https://github.com/manuelpichler",
+                    "role": "Project founder"
+                },
+                {
+                    "name": "Other contributors",
+                    "homepage": "https://github.com/phpmd/phpmd/graphs/contributors",
+                    "role": "Contributors"
+                }
+            ],
+            "description": "PHPMD is a spin-off project of PHP Depend and aims to be a PHP equivalent of the well known Java tool PMD.",
+            "homepage": "http://phpmd.org/",
+            "keywords": [
+                "mess detection",
+                "mess detector",
+                "pdepend",
+                "phpmd",
+                "pmd"
+            ],
+            "time": "2015-03-26 07:47:05"
+        },
+        {
+            "name": "phpunit/php-code-coverage",
+            "version": "2.0.16",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
+                "reference": "934fd03eb6840508231a7f73eb8940cf32c3b66c"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/934fd03eb6840508231a7f73eb8940cf32c3b66c",
+                "reference": "934fd03eb6840508231a7f73eb8940cf32c3b66c",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3",
+                "phpunit/php-file-iterator": "~1.3",
+                "phpunit/php-text-template": "~1.2",
+                "phpunit/php-token-stream": "~1.3",
+                "sebastian/environment": "~1.0",
+                "sebastian/version": "~1.0"
+            },
+            "require-dev": {
+                "ext-xdebug": ">=2.1.4",
+                "phpunit/phpunit": "~4"
+            },
+            "suggest": {
+                "ext-dom": "*",
+                "ext-xdebug": ">=2.2.1",
+                "ext-xmlwriter": "*"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.0.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sb@sebastian-bergmann.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
+            "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
+            "keywords": [
+                "coverage",
+                "testing",
+                "xunit"
+            ],
+            "time": "2015-04-11 04:35:00"
+        },
+        {
+            "name": "phpunit/php-file-iterator",
+            "version": "1.3.4",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
+                "reference": "acd690379117b042d1c8af1fafd61bde001bf6bb"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/acd690379117b042d1c8af1fafd61bde001bf6bb",
+                "reference": "acd690379117b042d1c8af1fafd61bde001bf6bb",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "type": "library",
+            "autoload": {
+                "classmap": [
+                    "File/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "include-path": [
+                ""
+            ],
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sb@sebastian-bergmann.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "FilterIterator implementation that filters files based on a list of suffixes.",
+            "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
+            "keywords": [
+                "filesystem",
+                "iterator"
+            ],
+            "time": "2013-10-10 15:34:57"
+        },
+        {
+            "name": "phpunit/php-text-template",
+            "version": "1.2.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-text-template.git",
+                "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/206dfefc0ffe9cebf65c413e3d0e809c82fbf00a",
+                "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "type": "library",
+            "autoload": {
+                "classmap": [
+                    "Text/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "include-path": [
+                ""
+            ],
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sb@sebastian-bergmann.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Simple template engine.",
+            "homepage": "https://github.com/sebastianbergmann/php-text-template/",
+            "keywords": [
+                "template"
+            ],
+            "time": "2014-01-30 17:20:04"
+        },
+        {
+            "name": "phpunit/php-timer",
+            "version": "1.0.5",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-timer.git",
+                "reference": "19689d4354b295ee3d8c54b4f42c3efb69cbc17c"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/19689d4354b295ee3d8c54b4f42c3efb69cbc17c",
+                "reference": "19689d4354b295ee3d8c54b4f42c3efb69cbc17c",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "type": "library",
+            "autoload": {
+                "classmap": [
+                    "PHP/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "include-path": [
+                ""
+            ],
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sb@sebastian-bergmann.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Utility class for timing",
+            "homepage": "https://github.com/sebastianbergmann/php-timer/",
+            "keywords": [
+                "timer"
+            ],
+            "time": "2013-08-02 07:42:54"
+        },
+        {
+            "name": "phpunit/php-token-stream",
+            "version": "1.4.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-token-stream.git",
+                "reference": "eab81d02569310739373308137284e0158424330"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/eab81d02569310739373308137284e0158424330",
+                "reference": "eab81d02569310739373308137284e0158424330",
+                "shasum": ""
+            },
+            "require": {
+                "ext-tokenizer": "*",
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~4.2"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.4-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Wrapper around PHP's tokenizer extension.",
+            "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
+            "keywords": [
+                "tokenizer"
+            ],
+            "time": "2015-04-08 04:46:07"
+        },
+        {
+            "name": "phpunit/phpunit",
+            "version": "4.1.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/phpunit.git",
+                "reference": "efb1b1334605594417a3bd466477772d06d460a8"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/efb1b1334605594417a3bd466477772d06d460a8",
+                "reference": "efb1b1334605594417a3bd466477772d06d460a8",
+                "shasum": ""
+            },
+            "require": {
+                "ext-dom": "*",
+                "ext-json": "*",
+                "ext-pcre": "*",
+                "ext-reflection": "*",
+                "ext-spl": "*",
+                "php": ">=5.3.3",
+                "phpunit/php-code-coverage": "~2.0",
+                "phpunit/php-file-iterator": "~1.3.1",
+                "phpunit/php-text-template": "~1.2",
+                "phpunit/php-timer": "~1.0.2",
+                "phpunit/phpunit-mock-objects": "~2.1",
+                "sebastian/comparator": "~1.0",
+                "sebastian/diff": "~1.1",
+                "sebastian/environment": "~1.0",
+                "sebastian/exporter": "~1.0",
+                "sebastian/version": "~1.0",
+                "symfony/yaml": "~2.0"
+            },
+            "suggest": {
+                "phpunit/php-invoker": "~1.1"
+            },
+            "bin": [
+                "phpunit"
+            ],
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "4.1.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "include-path": [
+                "",
+                "../../symfony/yaml/"
+            ],
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "The PHP Unit Testing framework.",
+            "homepage": "http://www.phpunit.de/",
+            "keywords": [
+                "phpunit",
+                "testing",
+                "xunit"
+            ],
+            "time": "2014-05-02 07:13:40"
+        },
+        {
+            "name": "phpunit/phpunit-mock-objects",
+            "version": "2.3.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
+                "reference": "74ffb87f527f24616f72460e54b595f508dccb5c"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/74ffb87f527f24616f72460e54b595f508dccb5c",
+                "reference": "74ffb87f527f24616f72460e54b595f508dccb5c",
+                "shasum": ""
+            },
+            "require": {
+                "doctrine/instantiator": "~1.0,>=1.0.2",
+                "php": ">=5.3.3",
+                "phpunit/php-text-template": "~1.2"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~4.4"
+            },
+            "suggest": {
+                "ext-soap": "*"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sb@sebastian-bergmann.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Mock Object library for PHPUnit",
+            "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
+            "keywords": [
+                "mock",
+                "xunit"
+            ],
+            "time": "2015-04-02 05:36:41"
+        },
+        {
+            "name": "sebastian/comparator",
+            "version": "1.1.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/comparator.git",
+                "reference": "1dd8869519a225f7f2b9eb663e225298fade819e"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1dd8869519a225f7f2b9eb663e225298fade819e",
+                "reference": "1dd8869519a225f7f2b9eb663e225298fade819e",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3",
+                "sebastian/diff": "~1.2",
+                "sebastian/exporter": "~1.2"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~4.4"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.1.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Jeff Welch",
+                    "email": "whatthejeff@gmail.com"
+                },
+                {
+                    "name": "Volker Dusch",
+                    "email": "github@wallbash.com"
+                },
+                {
+                    "name": "Bernhard Schussek",
+                    "email": "bschussek@2bepublished.at"
+                },
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Provides the functionality to compare PHP values for equality",
+            "homepage": "http://www.github.com/sebastianbergmann/comparator",
+            "keywords": [
+                "comparator",
+                "compare",
+                "equality"
+            ],
+            "time": "2015-01-29 16:28:08"
+        },
+        {
+            "name": "sebastian/diff",
+            "version": "1.3.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/diff.git",
+                "reference": "863df9687835c62aa423a22412d26fa2ebde3fd3"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/863df9687835c62aa423a22412d26fa2ebde3fd3",
+                "reference": "863df9687835c62aa423a22412d26fa2ebde3fd3",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~4.2"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.3-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Kore Nordmann",
+                    "email": "mail@kore-nordmann.de"
+                },
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Diff implementation",
+            "homepage": "http://www.github.com/sebastianbergmann/diff",
+            "keywords": [
+                "diff"
+            ],
+            "time": "2015-02-22 15:13:53"
+        },
+        {
+            "name": "sebastian/environment",
+            "version": "1.2.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/environment.git",
+                "reference": "5a8c7d31914337b69923db26c4221b81ff5a196e"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5a8c7d31914337b69923db26c4221b81ff5a196e",
+                "reference": "5a8c7d31914337b69923db26c4221b81ff5a196e",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~4.4"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.3.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Provides functionality to handle HHVM/PHP environments",
+            "homepage": "http://www.github.com/sebastianbergmann/environment",
+            "keywords": [
+                "Xdebug",
+                "environment",
+                "hhvm"
+            ],
+            "time": "2015-01-01 10:01:08"
+        },
+        {
+            "name": "sebastian/exporter",
+            "version": "1.2.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/exporter.git",
+                "reference": "84839970d05254c73cde183a721c7af13aede943"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/84839970d05254c73cde183a721c7af13aede943",
+                "reference": "84839970d05254c73cde183a721c7af13aede943",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3",
+                "sebastian/recursion-context": "~1.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~4.4"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.2.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Jeff Welch",
+                    "email": "whatthejeff@gmail.com"
+                },
+                {
+                    "name": "Volker Dusch",
+                    "email": "github@wallbash.com"
+                },
+                {
+                    "name": "Bernhard Schussek",
+                    "email": "bschussek@2bepublished.at"
+                },
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                },
+                {
+                    "name": "Adam Harvey",
+                    "email": "aharvey@php.net"
+                }
+            ],
+            "description": "Provides the functionality to export PHP variables for visualization",
+            "homepage": "http://www.github.com/sebastianbergmann/exporter",
+            "keywords": [
+                "export",
+                "exporter"
+            ],
+            "time": "2015-01-27 07:23:06"
+        },
+        {
+            "name": "sebastian/recursion-context",
+            "version": "1.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/recursion-context.git",
+                "reference": "3989662bbb30a29d20d9faa04a846af79b276252"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/3989662bbb30a29d20d9faa04a846af79b276252",
+                "reference": "3989662bbb30a29d20d9faa04a846af79b276252",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~4.4"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Jeff Welch",
+                    "email": "whatthejeff@gmail.com"
+                },
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                },
+                {
+                    "name": "Adam Harvey",
+                    "email": "aharvey@php.net"
+                }
+            ],
+            "description": "Provides functionality to recursively process PHP variables",
+            "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
+            "time": "2015-01-24 09:48:32"
+        },
+        {
+            "name": "sebastian/version",
+            "version": "1.0.5",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/version.git",
+                "reference": "ab931d46cd0d3204a91e1b9a40c4bc13032b58e4"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/ab931d46cd0d3204a91e1b9a40c4bc13032b58e4",
+                "reference": "ab931d46cd0d3204a91e1b9a40c4bc13032b58e4",
+                "shasum": ""
+            },
+            "type": "library",
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Library that helps with managing the version number of Git-hosted PHP projects",
+            "homepage": "https://github.com/sebastianbergmann/version",
+            "time": "2015-02-24 06:35:25"
+        },
+        {
+            "name": "sjparkinson/static-review",
+            "version": "4.1.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sjparkinson/static-review.git",
+                "reference": "493c3410cf146a12fca84209bad126c494e125f0"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sjparkinson/static-review/zipball/493c3410cf146a12fca84209bad126c494e125f0",
+                "reference": "493c3410cf146a12fca84209bad126c494e125f0",
+                "shasum": ""
+            },
+            "require": {
+                "league/climate": "~2.0",
+                "php": ">=5.4.0",
+                "symfony/console": "~2.0",
+                "symfony/process": "~2.0"
+            },
+            "require-dev": {
+                "mockery/mockery": "~0.9",
+                "phpunit/phpunit": "~4.0",
+                "sensiolabs/security-checker": "~2.0",
+                "squizlabs/php_codesniffer": "~1.0"
+            },
+            "suggest": {
+                "sensiolabs/security-checker": "Required for ComposerSecurityReview.",
+                "squizlabs/php_codesniffer": "Required for PhpCodeSnifferReview."
+            },
+            "bin": [
+                "bin/static-review.php"
+            ],
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "StaticReview\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Samuel Parkinson",
+                    "email": "sam.james.parkinson@gmail.com",
+                    "homepage": "http://samp.im"
+                }
+            ],
+            "description": "An extendable framework for version control hooks.",
+            "time": "2014-09-22 08:40:36"
+        },
+        {
+            "name": "squizlabs/php_codesniffer",
+            "version": "1.5.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
+                "reference": "396178ada8499ec492363587f037125bf7b07fcc"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/396178ada8499ec492363587f037125bf7b07fcc",
+                "reference": "396178ada8499ec492363587f037125bf7b07fcc",
+                "shasum": ""
+            },
+            "require": {
+                "ext-tokenizer": "*",
+                "php": ">=5.1.2"
+            },
+            "suggest": {
+                "phpunit/php-timer": "dev-master"
+            },
+            "bin": [
+                "scripts/phpcs"
+            ],
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-phpcs-fixer": "2.0.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "CodeSniffer.php",
+                    "CodeSniffer/CLI.php",
+                    "CodeSniffer/Exception.php",
+                    "CodeSniffer/File.php",
+                    "CodeSniffer/Report.php",
+                    "CodeSniffer/Reporting.php",
+                    "CodeSniffer/Sniff.php",
+                    "CodeSniffer/Tokens.php",
+                    "CodeSniffer/Reports/",
+                    "CodeSniffer/CommentParser/",
+                    "CodeSniffer/Tokenizers/",
+                    "CodeSniffer/DocGenerators/",
+                    "CodeSniffer/Standards/AbstractPatternSniff.php",
+                    "CodeSniffer/Standards/AbstractScopeSniff.php",
+                    "CodeSniffer/Standards/AbstractVariableSniff.php",
+                    "CodeSniffer/Standards/IncorrectPatternException.php",
+                    "CodeSniffer/Standards/Generic/Sniffs/",
+                    "CodeSniffer/Standards/MySource/Sniffs/",
+                    "CodeSniffer/Standards/PEAR/Sniffs/",
+                    "CodeSniffer/Standards/PSR1/Sniffs/",
+                    "CodeSniffer/Standards/PSR2/Sniffs/",
+                    "CodeSniffer/Standards/Squiz/Sniffs/",
+                    "CodeSniffer/Standards/Zend/Sniffs/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Greg Sherwood",
+                    "role": "lead"
+                }
+            ],
+            "description": "PHP_CodeSniffer tokenises PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
+            "homepage": "http://www.squizlabs.com/php-codesniffer",
+            "keywords": [
+                "phpcs",
+                "standards"
+            ],
+            "time": "2014-05-01 03:07:07"
+        },
+        {
+            "name": "symfony/config",
+            "version": "v2.6.7",
+            "target-dir": "Symfony/Component/Config",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/Config.git",
+                "reference": "b6fddb4aa2daaa2b06f0040071ac131b4a1ecf25"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/Config/zipball/b6fddb4aa2daaa2b06f0040071ac131b4a1ecf25",
+                "reference": "b6fddb4aa2daaa2b06f0040071ac131b4a1ecf25",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3",
+                "symfony/filesystem": "~2.3"
+            },
+            "require-dev": {
+                "symfony/phpunit-bridge": "~2.7"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.6-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Symfony\\Component\\Config\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony Config Component",
+            "homepage": "https://symfony.com",
+            "time": "2015-05-02 15:18:45"
+        },
+        {
+            "name": "symfony/dependency-injection",
+            "version": "v2.6.7",
+            "target-dir": "Symfony/Component/DependencyInjection",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/DependencyInjection.git",
+                "reference": "b575c160af001d3525ee733085bcc4ec7c8e1b51"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/DependencyInjection/zipball/b575c160af001d3525ee733085bcc4ec7c8e1b51",
+                "reference": "b575c160af001d3525ee733085bcc4ec7c8e1b51",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "conflict": {
+                "symfony/expression-language": "<2.6"
+            },
+            "require-dev": {
+                "symfony/config": "~2.2",
+                "symfony/expression-language": "~2.6",
+                "symfony/phpunit-bridge": "~2.7",
+                "symfony/yaml": "~2.1"
+            },
+            "suggest": {
+                "symfony/config": "",
+                "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them",
+                "symfony/yaml": ""
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.6-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Symfony\\Component\\DependencyInjection\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony DependencyInjection Component",
+            "homepage": "https://symfony.com",
+            "time": "2015-05-02 15:18:45"
+        },
+        {
+            "name": "symfony/event-dispatcher",
+            "version": "v2.6.7",
+            "target-dir": "Symfony/Component/EventDispatcher",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/EventDispatcher.git",
+                "reference": "672593bc4b0043a0acf91903bb75a1c82d8f2e02"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/672593bc4b0043a0acf91903bb75a1c82d8f2e02",
+                "reference": "672593bc4b0043a0acf91903bb75a1c82d8f2e02",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "psr/log": "~1.0",
+                "symfony/config": "~2.0,>=2.0.5",
+                "symfony/dependency-injection": "~2.6",
+                "symfony/expression-language": "~2.6",
+                "symfony/phpunit-bridge": "~2.7",
+                "symfony/stopwatch": "~2.3"
+            },
+            "suggest": {
+                "symfony/dependency-injection": "",
+                "symfony/http-kernel": ""
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.6-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Symfony\\Component\\EventDispatcher\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony EventDispatcher Component",
+            "homepage": "https://symfony.com",
+            "time": "2015-05-02 15:18:45"
+        },
+        {
+            "name": "symfony/filesystem",
+            "version": "v2.6.7",
+            "target-dir": "Symfony/Component/Filesystem",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/Filesystem.git",
+                "reference": "f73904bd2dae525c42ea1f0340c7c98480ecacde"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/Filesystem/zipball/f73904bd2dae525c42ea1f0340c7c98480ecacde",
+                "reference": "f73904bd2dae525c42ea1f0340c7c98480ecacde",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "symfony/phpunit-bridge": "~2.7"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.6-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Symfony\\Component\\Filesystem\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony Filesystem Component",
+            "homepage": "https://symfony.com",
+            "time": "2015-05-08 00:09:07"
+        },
+        {
+            "name": "symfony/stopwatch",
+            "version": "v2.6.7",
+            "target-dir": "Symfony/Component/Stopwatch",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/Stopwatch.git",
+                "reference": "b470f87c69837cb71115f1fa720388bb19b63635"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/Stopwatch/zipball/b470f87c69837cb71115f1fa720388bb19b63635",
+                "reference": "b470f87c69837cb71115f1fa720388bb19b63635",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "symfony/phpunit-bridge": "~2.7"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.6-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Symfony\\Component\\Stopwatch\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony Stopwatch Component",
+            "homepage": "https://symfony.com",
+            "time": "2015-05-02 15:18:45"
+        },
+        {
+            "name": "symfony/yaml",
+            "version": "v2.6.7",
+            "target-dir": "Symfony/Component/Yaml",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/Yaml.git",
+                "reference": "f157ab074e453ecd4c0fa775f721f6e67a99d9e2"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/Yaml/zipball/f157ab074e453ecd4c0fa775f721f6e67a99d9e2",
+                "reference": "f157ab074e453ecd4c0fa775f721f6e67a99d9e2",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "symfony/phpunit-bridge": "~2.7"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.6-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Symfony\\Component\\Yaml\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony Yaml Component",
+            "homepage": "https://symfony.com",
+            "time": "2015-05-02 15:18:45"
+        }
+    ],
+    "aliases": [],
+    "minimum-stability": "alpha",
+    "stability-flags": {
+        "composer/composer": 15,
+        "phpmd/phpmd": 0
+    },
+    "prefer-stable": true,
+    "prefer-lowest": false,
+    "platform": {
+        "php": "~5.5.0|~5.6.0"
+    },
+    "platform-dev": {
+        "lib-libxml": "*",
+        "ext-ctype": "*",
+        "ext-gd": "*",
+        "ext-spl": "*",
+        "ext-dom": "*",
+        "ext-simplexml": "*",
+        "ext-mcrypt": "*",
+        "ext-hash": "*",
+        "ext-curl": "*",
+        "ext-iconv": "*",
+        "ext-intl": "*"
+    }
+}
diff --git a/dev/tests/integration/testsuite/Magento/Setup/Model/_files/testFromClone/vendor/README b/dev/tests/integration/testsuite/Magento/Setup/Model/_files/testFromClone/vendor/README
new file mode 100644
index 0000000000000000000000000000000000000000..4ff7f39bd61163e93b753517020434e907c3d8bd
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/Setup/Model/_files/testFromClone/vendor/README
@@ -0,0 +1,5 @@
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+ This file is to create a vendor directory for testing
\ No newline at end of file
diff --git a/dev/tests/integration/testsuite/Magento/Setup/Model/_files/testFromCreateProject/composer.json b/dev/tests/integration/testsuite/Magento/Setup/Model/_files/testFromCreateProject/composer.json
new file mode 100644
index 0000000000000000000000000000000000000000..e7403b54be9c387bbdac395b49136ac004ff2c89
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/Setup/Model/_files/testFromCreateProject/composer.json
@@ -0,0 +1,60 @@
+{
+    "name": "magento/project-community-edition",
+    "description": "eCommerce Platform for Growth (Community Edition)",
+    "type": "project",
+    "version": "0.74.0-beta9",
+    "license": [
+        "OSL-3.0",
+        "AFL-3.0"
+    ],
+    "require": {
+        "magento/product-community-edition": "0.74.0-beta9"
+    },
+    "require-dev": {
+        "phpunit/phpunit": "4.1.0",
+        "squizlabs/php_codesniffer": "1.5.3",
+        "phpmd/phpmd": "@stable",
+        "pdepend/pdepend": "2.0.6",
+        "lib-libxml": "*",
+        "ext-ctype": "*",
+        "ext-gd": "*",
+        "ext-spl": "*",
+        "ext-dom": "*",
+        "ext-simplexml": "*",
+        "ext-mcrypt": "*",
+        "ext-hash": "*",
+        "ext-curl": "*",
+        "ext-iconv": "*",
+        "ext-intl": "*",
+        "sjparkinson/static-review": "~4.1",
+        "fabpot/php-cs-fixer": "~1.2",
+        "lusitanian/oauth": "~0.3"
+    },
+    "config": {
+        "use-include-path": true
+    },
+    "autoload": {
+        "psr-4": {
+            "Magento\\Framework\\": "lib/internal/Magento/Framework/",
+            "Magento\\Setup\\": "setup/src/Magento/Setup/"
+        }
+    },
+    "autoload-dev": {
+        "psr-4": {
+            "Magento\\Sniffs\\": "dev/tests/static/framework/Magento/Sniffs/",
+            "Magento\\Tools\\": "dev/tools/Magento/Tools/",
+            "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/"
+        }
+    },
+    "minimum-stability": "alpha",
+    "prefer-stable": true,
+    "repositories": [
+        {
+            "type": "composer",
+            "url": "http://packages.magento.com/"
+        }
+    ]
+}
diff --git a/dev/tests/integration/testsuite/Magento/Setup/Model/_files/testFromCreateProject/composer.lock b/dev/tests/integration/testsuite/Magento/Setup/Model/_files/testFromCreateProject/composer.lock
new file mode 100644
index 0000000000000000000000000000000000000000..a68a55fa746bddf5b0eca13a7a5a018b5ad8f5e4
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/Setup/Model/_files/testFromCreateProject/composer.lock
@@ -0,0 +1,7812 @@
+{
+    "_readme": [
+        "This file locks the dependencies of your project to a known state",
+        "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
+        "This file is @generated automatically"
+    ],
+    "hash": "8500e076fe26c04cf68124e561f62f52",
+    "packages": [
+        {
+            "name": "composer/composer",
+            "version": "1.0.0-alpha9",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/composer/composer.git",
+                "reference": "eb1ce550ca51134ee619ad3e37f5a0b7e980dd24"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/composer/composer/zipball/eb1ce550ca51134ee619ad3e37f5a0b7e980dd24",
+                "reference": "eb1ce550ca51134ee619ad3e37f5a0b7e980dd24",
+                "shasum": ""
+            },
+            "require": {
+                "justinrainbow/json-schema": "~1.1",
+                "php": ">=5.3.2",
+                "seld/jsonlint": "~1.0",
+                "symfony/console": "~2.3",
+                "symfony/finder": "~2.2",
+                "symfony/process": "~2.1"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~4.0"
+            },
+            "suggest": {
+                "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages",
+                "ext-zip": "Enabling the zip extension allows you to unzip archives, and allows gzip compression of all internet traffic"
+            },
+            "bin": [
+                "bin/composer"
+            ],
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Composer": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nils Adermann",
+                    "email": "naderman@naderman.de",
+                    "homepage": "http://www.naderman.de"
+                },
+                {
+                    "name": "Jordi Boggiano",
+                    "email": "j.boggiano@seld.be",
+                    "homepage": "http://seld.be"
+                }
+            ],
+            "description": "Composer helps you declare, manage and install dependencies of PHP projects, ensuring you have the right stack everywhere.",
+            "homepage": "http://getcomposer.org/",
+            "keywords": [
+                "autoload",
+                "dependency",
+                "package"
+            ],
+            "time": "2014-12-07 17:15:20"
+        },
+        {
+            "name": "justinrainbow/json-schema",
+            "version": "1.4.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/justinrainbow/json-schema.git",
+                "reference": "2465fe486c864e30badaa4d005ebdf89dbc503f3"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/2465fe486c864e30badaa4d005ebdf89dbc503f3",
+                "reference": "2465fe486c864e30badaa4d005ebdf89dbc503f3",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.0"
+            },
+            "require-dev": {
+                "json-schema/json-schema-test-suite": "1.1.0",
+                "phpdocumentor/phpdocumentor": "~2",
+                "phpunit/phpunit": "~3.7"
+            },
+            "bin": [
+                "bin/validate-json"
+            ],
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.4.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "JsonSchema": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Bruno Prieto Reis",
+                    "email": "bruno.p.reis@gmail.com"
+                },
+                {
+                    "name": "Justin Rainbow",
+                    "email": "justin.rainbow@gmail.com"
+                },
+                {
+                    "name": "Igor Wiedler",
+                    "email": "igor@wiedler.ch"
+                },
+                {
+                    "name": "Robert Schönthal",
+                    "email": "seroscho@googlemail.com"
+                }
+            ],
+            "description": "A library to validate a json schema.",
+            "homepage": "https://github.com/justinrainbow/json-schema",
+            "keywords": [
+                "json",
+                "schema"
+            ],
+            "time": "2015-03-27 16:41:39"
+        },
+        {
+            "name": "magento/framework",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_framework-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "bd9d7a552b4f71dc2b3c74f9bd2d81f15a9037c4"
+            },
+            "require": {
+                "ext-curl": "*",
+                "ext-dom": "*",
+                "ext-gd": "*",
+                "ext-hash": "*",
+                "ext-iconv": "*",
+                "ext-mcrypt": "*",
+                "ext-simplexml": "*",
+                "ext-spl": "*",
+                "lib-libxml": "*",
+                "magento/magento-composer-installer": "*",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "suggest": {
+                "ext-imagick": "Use Image Magick >=3.0.0 as an optional alternative image processing library"
+            },
+            "type": "magento2-library",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Framework"
+                    ]
+                ]
+            },
+            "autoload": {
+                "psr-4": {
+                    "Magento\\Framework\\": ""
+                }
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/language-de_de",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_language-de_de-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "6b1072242183699164f1717d996bb165769c1b6b"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*"
+            },
+            "type": "magento2-language",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "magento/de_de"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "German (Germany) language"
+        },
+        {
+            "name": "magento/language-en_us",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_language-en_us-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "70adc34f8d995776366273ff94a0524861b463a2"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*"
+            },
+            "type": "magento2-language",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "magento/en_us"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "English (United States) language"
+        },
+        {
+            "name": "magento/language-es_es",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_language-es_es-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "ff62ceb7ce109c31c67fb1fdf154a2415bcc8045"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*"
+            },
+            "type": "magento2-language",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "magento/es_es"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "Spanish (Spain) language"
+        },
+        {
+            "name": "magento/language-fr_fr",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_language-fr_fr-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "69f30ec0de09458d7e99d9c4ea42548f31411ee2"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*"
+            },
+            "type": "magento2-language",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "magento/fr_fr"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "French (France) language"
+        },
+        {
+            "name": "magento/language-nl_nl",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_language-nl_nl-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "e11c7880d71955b794bccefcf2a26e6f381657a7"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*"
+            },
+            "type": "magento2-language",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "magento/nl_nl"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "Dutch (Netherlands) language"
+        },
+        {
+            "name": "magento/language-pt_br",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_language-pt_br-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "0b74dfba9407e5d69aca5f6723529e2c1daab7cf"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*"
+            },
+            "type": "magento2-language",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "magento/pt_br"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "Portuguese (Brazil) language"
+        },
+        {
+            "name": "magento/language-zh_cn",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_language-zh_cn-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "360355c1ee1d29b958630427d086ba33607f3ef3"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*"
+            },
+            "type": "magento2-language",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "magento/zh_cn"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "Chinese (China) language"
+        },
+        {
+            "name": "magento/magento-composer-installer",
+            "version": "0.1.4",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/magento/magento-composer-installer.git",
+                "reference": "7f03451f71e55d52c2bb07325d56a4e6df322f30"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/magento/magento-composer-installer/zipball/7f03451f71e55d52c2bb07325d56a4e6df322f30",
+                "reference": "7f03451f71e55d52c2bb07325d56a4e6df322f30",
+                "shasum": ""
+            },
+            "require": {
+                "composer-plugin-api": "1.0.0"
+            },
+            "require-dev": {
+                "composer/composer": "*@dev",
+                "firegento/phpcs": "dev-patch-1",
+                "mikey179/vfsstream": "*",
+                "phpunit/phpunit": "*",
+                "phpunit/phpunit-mock-objects": "dev-master",
+                "squizlabs/php_codesniffer": "1.4.7",
+                "symfony/process": "*"
+            },
+            "type": "composer-plugin",
+            "extra": {
+                "composer-command-registry": [
+                    "MagentoHackathon\\Composer\\Magento\\Command\\DeployCommand"
+                ],
+                "class": "MagentoHackathon\\Composer\\Magento\\Plugin"
+            },
+            "autoload": {
+                "psr-0": {
+                    "MagentoHackathon\\Composer\\Magento": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "OSL-3.0"
+            ],
+            "authors": [
+                {
+                    "name": "Vinai Kopp",
+                    "email": "vinai@netzarbeiter.com"
+                },
+                {
+                    "name": "Daniel Fahlke aka Flyingmana",
+                    "email": "flyingmana@googlemail.com"
+                },
+                {
+                    "name": "Jörg Weller",
+                    "email": "weller@flagbit.de"
+                },
+                {
+                    "name": "Karl Spies",
+                    "email": "karl.spies@gmx.net"
+                },
+                {
+                    "name": "Tobias Vogt",
+                    "email": "tobi@webguys.de"
+                },
+                {
+                    "name": "David Fuhr",
+                    "email": "fuhr@flagbit.de"
+                }
+            ],
+            "description": "Composer installer for Magento modules",
+            "homepage": "https://github.com/magento/magento-composer-installer",
+            "keywords": [
+                "composer-installer",
+                "magento"
+            ],
+            "time": "2015-03-05 21:40:30"
+        },
+        {
+            "name": "magento/magento2-base",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_magento2-base-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "268b541398bbca13688ade93d66d390b2f30da7a"
+            },
+            "require": {
+                "magento/magento-composer-installer": "*"
+            },
+            "replace": {
+                "blueimp/jquery-file-upload": "5.6.14",
+                "colinmollenhour/cache-backend-redis": "dev-master#193d377b7fb2e88595578b282fa01a62d1185abc",
+                "colinmollenhour/credis": "dev-master#f07bbfd4117294f462f0fb19c49221d350bf396f",
+                "components/jquery": "1.11.0",
+                "components/jqueryui": "1.10.4",
+                "linkorb/jsmin-php": "1.1.2",
+                "phpseclib/phpseclib": "0.2.1",
+                "tinymce/tinymce": "3.4.7",
+                "trentrichardson/jquery-timepicker-addon": "1.4.3",
+                "twbs/bootstrap": "3.1.0"
+            },
+            "type": "magento2-component",
+            "extra": {
+                "component_paths": {
+                    "trentrichardson/jquery-timepicker-addon": "lib/web/jquery/jquery-ui-timepicker-addon.js",
+                    "colinmollenhour/cache-backend-redis": "lib/internal/Cm/Cache/Backend/Redis.php",
+                    "colinmollenhour/credis": "lib/internal/Credis",
+                    "linkorb/jsmin-php": "lib/internal/JSMin",
+                    "phpseclib/phpseclib": "lib/internal/phpseclib",
+                    "components/jquery": [
+                        "lib/web/jquery.js",
+                        "lib/web/jquery/jquery.min.js",
+                        "lib/web/jquery/jquery-migrate.js",
+                        "lib/web/jquery/jquery-migrate.min.js"
+                    ],
+                    "blueimp/jquery-file-upload": "lib/web/jquery/fileUploader",
+                    "components/jqueryui": [
+                        "lib/web/jquery/jquery-ui.js",
+                        "lib/web/jquery/jquery-ui.min.js"
+                    ],
+                    "twbs/bootstrap": "lib/web/jquery/jquery.tabs.js",
+                    "tinymce/tinymce": "lib/web/tiny_mce"
+                },
+                "map": [
+                    [
+                        "lib/internal/Cm",
+                        "lib/internal/Cm"
+                    ],
+                    [
+                        "lib/internal/LinLibertineFont",
+                        "lib/internal/LinLibertineFont"
+                    ],
+                    [
+                        "lib/internal/phpseclib",
+                        "lib/internal/phpseclib"
+                    ],
+                    [
+                        "lib/internal/Credis",
+                        "lib/internal/Credis"
+                    ],
+                    [
+                        "lib/internal/CardinalCommerce",
+                        "lib/internal/CardinalCommerce"
+                    ],
+                    [
+                        "lib/internal/JSMin",
+                        "lib/internal/JSMin"
+                    ],
+                    [
+                        "lib/.htaccess",
+                        "lib/.htaccess"
+                    ],
+                    [
+                        "lib/web/lib",
+                        "lib/web/lib"
+                    ],
+                    [
+                        "lib/web/requirejs",
+                        "lib/web/requirejs"
+                    ],
+                    [
+                        "lib/web/prototype",
+                        "lib/web/prototype"
+                    ],
+                    [
+                        "lib/web/moment.js",
+                        "lib/web/moment.js"
+                    ],
+                    [
+                        "lib/web/i18n",
+                        "lib/web/i18n"
+                    ],
+                    [
+                        "lib/web/varien",
+                        "lib/web/varien"
+                    ],
+                    [
+                        "lib/web/blank.html",
+                        "lib/web/blank.html"
+                    ],
+                    [
+                        "lib/web/scriptaculous",
+                        "lib/web/scriptaculous"
+                    ],
+                    [
+                        "lib/web/ko",
+                        "lib/web/ko"
+                    ],
+                    [
+                        "lib/web/modernizr",
+                        "lib/web/modernizr"
+                    ],
+                    [
+                        "lib/web/spacer.gif",
+                        "lib/web/spacer.gif"
+                    ],
+                    [
+                        "lib/web/images",
+                        "lib/web/images"
+                    ],
+                    [
+                        "lib/web/matchMedia.js",
+                        "lib/web/matchMedia.js"
+                    ],
+                    [
+                        "lib/web/extjs",
+                        "lib/web/extjs"
+                    ],
+                    [
+                        "lib/web/css",
+                        "lib/web/css"
+                    ],
+                    [
+                        "lib/web/fonts",
+                        "lib/web/fonts"
+                    ],
+                    [
+                        "lib/web/jquery",
+                        "lib/web/jquery"
+                    ],
+                    [
+                        "lib/web/less",
+                        "lib/web/less"
+                    ],
+                    [
+                        "lib/web/jquery.js",
+                        "lib/web/jquery.js"
+                    ],
+                    [
+                        "lib/web/underscore.js",
+                        "lib/web/underscore.js"
+                    ],
+                    [
+                        "lib/web/legacy-build.min.js",
+                        "lib/web/legacy-build.min.js"
+                    ],
+                    [
+                        "lib/web/mage",
+                        "lib/web/mage"
+                    ],
+                    [
+                        "lib/web/tiny_mce",
+                        "lib/web/tiny_mce"
+                    ],
+                    [
+                        ".htaccess.sample",
+                        ".htaccess.sample"
+                    ],
+                    [
+                        "CONTRIBUTING.md",
+                        "CONTRIBUTING.md"
+                    ],
+                    [
+                        "package.json",
+                        "package.json"
+                    ],
+                    [
+                        "bin",
+                        "bin"
+                    ],
+                    [
+                        "nginx.conf.sample",
+                        "nginx.conf.sample"
+                    ],
+                    [
+                        "var/.htaccess",
+                        "var/.htaccess"
+                    ],
+                    [
+                        "pub/media/downloadable/.htaccess",
+                        "pub/media/downloadable/.htaccess"
+                    ],
+                    [
+                        "pub/media/theme_customization/.htaccess",
+                        "pub/media/theme_customization/.htaccess"
+                    ],
+                    [
+                        "pub/media/customer/.htaccess",
+                        "pub/media/customer/.htaccess"
+                    ],
+                    [
+                        "pub/media/.htaccess",
+                        "pub/media/.htaccess"
+                    ],
+                    [
+                        "pub/errors",
+                        "pub/errors"
+                    ],
+                    [
+                        "pub/opt",
+                        "pub/opt"
+                    ],
+                    [
+                        "pub/get.php",
+                        "pub/get.php"
+                    ],
+                    [
+                        "pub/static/.htaccess",
+                        "pub/static/.htaccess"
+                    ],
+                    [
+                        "pub/.htaccess",
+                        "pub/.htaccess"
+                    ],
+                    [
+                        "pub/static.php",
+                        "pub/static.php"
+                    ],
+                    [
+                        "pub/cron.php",
+                        "pub/cron.php"
+                    ],
+                    [
+                        "pub/index.php",
+                        "pub/index.php"
+                    ],
+                    [
+                        ".php_cs",
+                        ".php_cs"
+                    ],
+                    [
+                        "COPYING.txt",
+                        "COPYING.txt"
+                    ],
+                    [
+                        "dev/shell",
+                        "dev/shell"
+                    ],
+                    [
+                        "dev/tools",
+                        "dev/tools"
+                    ],
+                    [
+                        "dev/tests/integration/phpunit.xml.dist",
+                        "dev/tests/integration/phpunit.xml.dist"
+                    ],
+                    [
+                        "dev/tests/integration/etc",
+                        "dev/tests/integration/etc"
+                    ],
+                    [
+                        "dev/tests/integration/tmp",
+                        "dev/tests/integration/tmp"
+                    ],
+                    [
+                        "dev/tests/integration/framework",
+                        "dev/tests/integration/framework"
+                    ],
+                    [
+                        "dev/tests/integration/testsuite/Magento",
+                        "dev/tests/integration/testsuite/Magento"
+                    ],
+                    [
+                        "dev/tests/integration/.gitignore",
+                        "dev/tests/integration/.gitignore"
+                    ],
+                    [
+                        "dev/tests/functional/composer.json",
+                        "dev/tests/functional/composer.json"
+                    ],
+                    [
+                        "dev/tests/functional/lib",
+                        "dev/tests/functional/lib"
+                    ],
+                    [
+                        "dev/tests/functional/phpunit.xml.dist",
+                        "dev/tests/functional/phpunit.xml.dist"
+                    ],
+                    [
+                        "dev/tests/functional/composer.json.dist",
+                        "dev/tests/functional/composer.json.dist"
+                    ],
+                    [
+                        "dev/tests/functional/bootstrap.php",
+                        "dev/tests/functional/bootstrap.php"
+                    ],
+                    [
+                        "dev/tests/functional/credentials.xml.dist",
+                        "dev/tests/functional/credentials.xml.dist"
+                    ],
+                    [
+                        "dev/tests/functional/tests",
+                        "dev/tests/functional/tests"
+                    ],
+                    [
+                        "dev/tests/functional/utils",
+                        "dev/tests/functional/utils"
+                    ],
+                    [
+                        "dev/tests/functional/isolation.php",
+                        "dev/tests/functional/isolation.php"
+                    ],
+                    [
+                        "dev/tests/functional/etc",
+                        "dev/tests/functional/etc"
+                    ],
+                    [
+                        "dev/tests/functional/.htaccess",
+                        "dev/tests/functional/.htaccess"
+                    ],
+                    [
+                        "dev/tests/functional/testsuites/Magento",
+                        "dev/tests/functional/testsuites/Magento"
+                    ],
+                    [
+                        "dev/tests/functional/.gitignore",
+                        "dev/tests/functional/.gitignore"
+                    ],
+                    [
+                        "dev/tests/js/JsTestDriver/run_js_tests.php",
+                        "dev/tests/js/JsTestDriver/run_js_tests.php"
+                    ],
+                    [
+                        "dev/tests/js/JsTestDriver/jsTestDriverOrder.php",
+                        "dev/tests/js/JsTestDriver/jsTestDriverOrder.php"
+                    ],
+                    [
+                        "dev/tests/js/JsTestDriver/jsTestDriver.php.dist",
+                        "dev/tests/js/JsTestDriver/jsTestDriver.php.dist"
+                    ],
+                    [
+                        "dev/tests/js/JsTestDriver/framework",
+                        "dev/tests/js/JsTestDriver/framework"
+                    ],
+                    [
+                        "dev/tests/js/JsTestDriver/testsuite/lib",
+                        "dev/tests/js/JsTestDriver/testsuite/lib"
+                    ],
+                    [
+                        "dev/tests/js/JsTestDriver/testsuite/mage",
+                        "dev/tests/js/JsTestDriver/testsuite/mage"
+                    ],
+                    [
+                        "dev/tests/js/JsTestDriver/.gitignore",
+                        "dev/tests/js/JsTestDriver/.gitignore"
+                    ],
+                    [
+                        "dev/tests/js/jasmine",
+                        "dev/tests/js/jasmine"
+                    ],
+                    [
+                        "dev/tests/api-functional/phpunit.xml.dist",
+                        "dev/tests/api-functional/phpunit.xml.dist"
+                    ],
+                    [
+                        "dev/tests/api-functional/config",
+                        "dev/tests/api-functional/config"
+                    ],
+                    [
+                        "dev/tests/api-functional/framework",
+                        "dev/tests/api-functional/framework"
+                    ],
+                    [
+                        "dev/tests/api-functional/_files",
+                        "dev/tests/api-functional/_files"
+                    ],
+                    [
+                        "dev/tests/api-functional/testsuite/Magento",
+                        "dev/tests/api-functional/testsuite/Magento"
+                    ],
+                    [
+                        "dev/tests/api-functional/.gitignore",
+                        "dev/tests/api-functional/.gitignore"
+                    ],
+                    [
+                        "dev/tests/unit/phpunit.xml.dist",
+                        "dev/tests/unit/phpunit.xml.dist"
+                    ],
+                    [
+                        "dev/tests/unit/tmp",
+                        "dev/tests/unit/tmp"
+                    ],
+                    [
+                        "dev/tests/unit/framework",
+                        "dev/tests/unit/framework"
+                    ],
+                    [
+                        "dev/tests/unit/.gitignore",
+                        "dev/tests/unit/.gitignore"
+                    ],
+                    [
+                        "dev/tests/static/phpunit-all.xml.dist",
+                        "dev/tests/static/phpunit-all.xml.dist"
+                    ],
+                    [
+                        "dev/tests/static/phpunit.xml.dist",
+                        "dev/tests/static/phpunit.xml.dist"
+                    ],
+                    [
+                        "dev/tests/static/framework",
+                        "dev/tests/static/framework"
+                    ],
+                    [
+                        "dev/tests/static/testsuite/Magento",
+                        "dev/tests/static/testsuite/Magento"
+                    ],
+                    [
+                        "dev/tests/static/.gitignore",
+                        "dev/tests/static/.gitignore"
+                    ],
+                    [
+                        "dev/tests/performance/benchmark.jmx",
+                        "dev/tests/performance/benchmark.jmx"
+                    ],
+                    [
+                        "dev/tests/performance/compare_reports.php",
+                        "dev/tests/performance/compare_reports.php"
+                    ],
+                    [
+                        "dev/tests/performance/run_scenarios.php",
+                        "dev/tests/performance/run_scenarios.php"
+                    ],
+                    [
+                        "dev/tests/performance/framework",
+                        "dev/tests/performance/framework"
+                    ],
+                    [
+                        "dev/tests/performance/testsuite/backend.jmx",
+                        "dev/tests/performance/testsuite/backend.jmx"
+                    ],
+                    [
+                        "dev/tests/performance/testsuite/product_edit.jmx",
+                        "dev/tests/performance/testsuite/product_edit.jmx"
+                    ],
+                    [
+                        "dev/tests/performance/testsuite/add_to_cart.jmx",
+                        "dev/tests/performance/testsuite/add_to_cart.jmx"
+                    ],
+                    [
+                        "dev/tests/performance/testsuite/product_view.jmx",
+                        "dev/tests/performance/testsuite/product_view.jmx"
+                    ],
+                    [
+                        "dev/tests/performance/testsuite/home_page.jmx",
+                        "dev/tests/performance/testsuite/home_page.jmx"
+                    ],
+                    [
+                        "dev/tests/performance/testsuite/reusable",
+                        "dev/tests/performance/testsuite/reusable"
+                    ],
+                    [
+                        "dev/tests/performance/testsuite/quick_search.jmx",
+                        "dev/tests/performance/testsuite/quick_search.jmx"
+                    ],
+                    [
+                        "dev/tests/performance/testsuite/fixtures",
+                        "dev/tests/performance/testsuite/fixtures"
+                    ],
+                    [
+                        "dev/tests/performance/testsuite/advanced_search.jmx",
+                        "dev/tests/performance/testsuite/advanced_search.jmx"
+                    ],
+                    [
+                        "dev/tests/performance/testsuite/checkout.jmx",
+                        "dev/tests/performance/testsuite/checkout.jmx"
+                    ],
+                    [
+                        "dev/tests/performance/testsuite/category_view.jmx",
+                        "dev/tests/performance/testsuite/category_view.jmx"
+                    ],
+                    [
+                        "dev/tests/performance/testsuite/_samples",
+                        "dev/tests/performance/testsuite/_samples"
+                    ],
+                    [
+                        "dev/tests/performance/config.php.dist",
+                        "dev/tests/performance/config.php.dist"
+                    ],
+                    [
+                        "dev/tests/performance/.gitignore",
+                        "dev/tests/performance/.gitignore"
+                    ],
+                    [
+                        "dev/.htaccess",
+                        "dev/.htaccess"
+                    ],
+                    [
+                        "Gruntfile.js",
+                        "Gruntfile.js"
+                    ],
+                    [
+                        "setup",
+                        "setup"
+                    ],
+                    [
+                        "LICENSE.txt",
+                        "LICENSE.txt"
+                    ],
+                    [
+                        ".travis.yml",
+                        ".travis.yml"
+                    ],
+                    [
+                        "app/bootstrap.php",
+                        "app/bootstrap.php"
+                    ],
+                    [
+                        "app/design/frontend",
+                        "app/design/frontend"
+                    ],
+                    [
+                        "app/design/adminhtml",
+                        "app/design/adminhtml"
+                    ],
+                    [
+                        "app/etc/di.xml",
+                        "app/etc/di.xml"
+                    ],
+                    [
+                        "app/.htaccess",
+                        "app/.htaccess"
+                    ],
+                    [
+                        "app/functions.php",
+                        "app/functions.php"
+                    ],
+                    [
+                        "app/autoload.php",
+                        "app/autoload.php"
+                    ],
+                    [
+                        ".htaccess",
+                        ".htaccess"
+                    ],
+                    [
+                        "php.ini.sample",
+                        "php.ini.sample"
+                    ],
+                    [
+                        "CONTRIBUTOR_LICENSE_AGREEMENT.html",
+                        "CONTRIBUTOR_LICENSE_AGREEMENT.html"
+                    ],
+                    [
+                        "index.php",
+                        "index.php"
+                    ],
+                    [
+                        "LICENSE_AFL.txt",
+                        "LICENSE_AFL.txt"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "Magento 2 Base (Community Edition)"
+        },
+        {
+            "name": "magento/module-admin-notification",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-admin-notification-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "9d9f819a651566a2ae6f12225d69941dbe5d0920"
+            },
+            "require": {
+                "lib-libxml": "*",
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-media-storage": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/AdminNotification"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-authorization",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-authorization-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "28fb39cd7d95979865ee34293004c2dbd7fb0c74"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Authorization"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "Authorization module provides access to Magento ACL functionality."
+        },
+        {
+            "name": "magento/module-backend",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-backend-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "47a8139710f3c269b06d444c29fd275b2a3c9c9b"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backup": "0.74.0-beta9",
+                "magento/module-catalog": "0.74.0-beta9",
+                "magento/module-config": "0.74.0-beta9",
+                "magento/module-cron": "0.74.0-beta9",
+                "magento/module-customer": "0.74.0-beta9",
+                "magento/module-developer": "0.74.0-beta9",
+                "magento/module-directory": "0.74.0-beta9",
+                "magento/module-eav": "0.74.0-beta9",
+                "magento/module-quote": "0.74.0-beta9",
+                "magento/module-reports": "0.74.0-beta9",
+                "magento/module-require-js": "0.74.0-beta9",
+                "magento/module-sales": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "magento/module-theme": "0.74.0-beta9",
+                "magento/module-translation": "0.74.0-beta9",
+                "magento/module-user": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Backend"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-backup",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-backup-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "defb31a8d7de0856753a04e15f5bf34684d25d90"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-cron": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Backup"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-bundle",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-bundle-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "a63880815cf2c96fc4e6e45cd982bf724682fe8b"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-catalog": "0.74.0-beta9",
+                "magento/module-catalog-inventory": "0.74.0-beta9",
+                "magento/module-catalog-rule": "0.74.0-beta9",
+                "magento/module-checkout": "0.74.0-beta9",
+                "magento/module-config": "0.74.0-beta9",
+                "magento/module-customer": "0.74.0-beta9",
+                "magento/module-eav": "0.74.0-beta9",
+                "magento/module-gift-message": "0.74.0-beta9",
+                "magento/module-media-storage": "0.74.0-beta9",
+                "magento/module-quote": "0.74.0-beta9",
+                "magento/module-sales": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "magento/module-tax": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "suggest": {
+                "magento/module-webapi": "0.74.0-beta9"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Bundle"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-cache-invalidate",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-cache-invalidate-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "e0316dae00343426e331cb39520acf0f6c0c3db3"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-page-cache": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/CacheInvalidate"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-captcha",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-captcha-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "cfc73a9579a990f215e10ec6b475255bef919920"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-checkout": "0.74.0-beta9",
+                "magento/module-customer": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Captcha"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-catalog",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-catalog-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "705f5317c0495c0a94ce0d6ad9c2400c7eee9494"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-catalog-inventory": "0.74.0-beta9",
+                "magento/module-catalog-rule": "0.74.0-beta9",
+                "magento/module-catalog-url-rewrite": "0.74.0-beta9",
+                "magento/module-checkout": "0.74.0-beta9",
+                "magento/module-cms": "0.74.0-beta9",
+                "magento/module-config": "0.74.0-beta9",
+                "magento/module-customer": "0.74.0-beta9",
+                "magento/module-directory": "0.74.0-beta9",
+                "magento/module-eav": "0.74.0-beta9",
+                "magento/module-indexer": "0.74.0-beta9",
+                "magento/module-log": "0.74.0-beta9",
+                "magento/module-media-storage": "0.74.0-beta9",
+                "magento/module-msrp": "0.74.0-beta9",
+                "magento/module-page-cache": "0.74.0-beta9",
+                "magento/module-product-alert": "0.74.0-beta9",
+                "magento/module-quote": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "magento/module-tax": "0.74.0-beta9",
+                "magento/module-theme": "0.74.0-beta9",
+                "magento/module-url-rewrite": "0.74.0-beta9",
+                "magento/module-widget": "0.74.0-beta9",
+                "magento/module-wishlist": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "suggest": {
+                "magento/module-cookie": "0.74.0-beta9"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Catalog"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-catalog-import-export",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-catalog-import-export-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "81dfb1108a4717ba212b46af6502a17ba8a1f85d"
+            },
+            "require": {
+                "ext-ctype": "*",
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-catalog": "0.74.0-beta9",
+                "magento/module-catalog-inventory": "0.74.0-beta9",
+                "magento/module-customer": "0.74.0-beta9",
+                "magento/module-eav": "0.74.0-beta9",
+                "magento/module-import-export": "0.74.0-beta9",
+                "magento/module-indexer": "0.74.0-beta9",
+                "magento/module-media-storage": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/CatalogImportExport"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-catalog-inventory",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-catalog-inventory-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "1b2039959817f22889fa461cd48c58dec10c5b0d"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-catalog": "0.74.0-beta9",
+                "magento/module-config": "0.74.0-beta9",
+                "magento/module-customer": "0.74.0-beta9",
+                "magento/module-eav": "0.74.0-beta9",
+                "magento/module-indexer": "0.74.0-beta9",
+                "magento/module-quote": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/CatalogInventory"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-catalog-rule",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-catalog-rule-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "43e105ef491933e96ee5f6c9543edb72076b9b8f"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-catalog": "0.74.0-beta9",
+                "magento/module-customer": "0.74.0-beta9",
+                "magento/module-eav": "0.74.0-beta9",
+                "magento/module-import-export": "0.74.0-beta9",
+                "magento/module-indexer": "0.74.0-beta9",
+                "magento/module-rule": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/CatalogRule"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-catalog-search",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-catalog-search-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "3eb4841fe35753202d6985f65387da848ded3d9e"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-catalog": "0.74.0-beta9",
+                "magento/module-customer": "0.74.0-beta9",
+                "magento/module-directory": "0.74.0-beta9",
+                "magento/module-eav": "0.74.0-beta9",
+                "magento/module-indexer": "0.74.0-beta9",
+                "magento/module-search": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "magento/module-theme": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/CatalogSearch"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-catalog-url-rewrite",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-catalog-url-rewrite-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "d6ff96ba9c854368c0cdc2aa4ebb66bbb5201349"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-catalog": "0.74.0-beta9",
+                "magento/module-catalog-import-export": "0.74.0-beta9",
+                "magento/module-eav": "0.74.0-beta9",
+                "magento/module-import-export": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "magento/module-url-rewrite": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/CatalogUrlRewrite"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-catalog-widget",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-catalog-widget-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "7aa5387069cdcae7a6c4dab63a5e3a8e12921f2c"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-catalog": "0.74.0-beta9",
+                "magento/module-customer": "0.74.0-beta9",
+                "magento/module-eav": "0.74.0-beta9",
+                "magento/module-rule": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "magento/module-widget": "0.74.0-beta9",
+                "magento/module-wishlist": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/CatalogWidget"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-centinel",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-centinel-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "4bda8da48084d11cd97f59292b35501ad1dae554"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-checkout": "0.74.0-beta9",
+                "magento/module-sales": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Centinel"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-checkout",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-checkout-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "c8ab1ccad853365098f1ea9efd3b2640f6ce1ab1"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-catalog": "0.74.0-beta9",
+                "magento/module-catalog-inventory": "0.74.0-beta9",
+                "magento/module-config": "0.74.0-beta9",
+                "magento/module-customer": "0.74.0-beta9",
+                "magento/module-directory": "0.74.0-beta9",
+                "magento/module-eav": "0.74.0-beta9",
+                "magento/module-gift-message": "0.74.0-beta9",
+                "magento/module-msrp": "0.74.0-beta9",
+                "magento/module-page-cache": "0.74.0-beta9",
+                "magento/module-payment": "0.74.0-beta9",
+                "magento/module-quote": "0.74.0-beta9",
+                "magento/module-sales": "0.74.0-beta9",
+                "magento/module-shipping": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "magento/module-tax": "0.74.0-beta9",
+                "magento/module-theme": "0.74.0-beta9",
+                "magento/module-ui": "0.74.0-beta9",
+                "magento/module-wishlist": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "suggest": {
+                "magento/module-cookie": "0.74.0-beta9"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Checkout"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-checkout-agreements",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-checkout-agreements-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "9adef902e061afdd2bc88b9257bbb7def693f46d"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-checkout": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/CheckoutAgreements"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-cms",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-cms-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "31142e011e4269d240ea9389888484ab69b1eab1"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-catalog": "0.74.0-beta9",
+                "magento/module-email": "0.74.0-beta9",
+                "magento/module-media-storage": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "magento/module-theme": "0.74.0-beta9",
+                "magento/module-ui": "0.74.0-beta9",
+                "magento/module-variable": "0.74.0-beta9",
+                "magento/module-widget": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Cms"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-cms-url-rewrite",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-cms-url-rewrite-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "fe26190823ea1e1bd828ff5fc087506b38c45c5f"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-cms": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "magento/module-url-rewrite": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/CmsUrlRewrite"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-config",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-config-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "ae36b5498a9f299bacb1cc306a066db4386ad3c8"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-cron": "0.74.0-beta9",
+                "magento/module-directory": "0.74.0-beta9",
+                "magento/module-email": "0.74.0-beta9",
+                "magento/module-media-storage": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Config"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-configurable-import-export",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-configurable-import-export-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "99d781b8ec0fb5c8655a0bacb75b6ff5151d7687"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-catalog": "0.74.0-beta9",
+                "magento/module-catalog-import-export": "0.74.0-beta9",
+                "magento/module-configurable-product": "0.74.0-beta9",
+                "magento/module-eav": "0.74.0-beta9",
+                "magento/module-import-export": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/ConfigurableImportExport"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-configurable-product",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-configurable-product-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "cd60da462c29cecacee7c7cf742ca9e3a962fc81"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-catalog": "0.74.0-beta9",
+                "magento/module-catalog-inventory": "0.74.0-beta9",
+                "magento/module-catalog-rule": "0.74.0-beta9",
+                "magento/module-checkout": "0.74.0-beta9",
+                "magento/module-customer": "0.74.0-beta9",
+                "magento/module-directory": "0.74.0-beta9",
+                "magento/module-eav": "0.74.0-beta9",
+                "magento/module-media-storage": "0.74.0-beta9",
+                "magento/module-quote": "0.74.0-beta9",
+                "magento/module-sales": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "suggest": {
+                "magento/module-webapi": "0.74.0-beta9"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/ConfigurableProduct"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-contact",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-contact-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "c3a57727ab245a396b597e41c78d9ff81c06fe88"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-cms": "0.74.0-beta9",
+                "magento/module-config": "0.74.0-beta9",
+                "magento/module-customer": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Contact"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-cookie",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-cookie-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "281a79e0f61889c3d17111451be1860abb216939"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-store": "0.74.0-beta9",
+                "php": "~5.4.11|~5.5.0|~5.6.0"
+            },
+            "suggest": {
+                "magento/module-backend": "0.74.0-beta9"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Cookie"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-cron",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-cron-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "e20e45f6282f8a595637f404faccc444023f02e7"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-config": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Cron"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-currency-symbol",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-currency-symbol-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "3e105d2bae0106c0675e72c3fccf6a6f0463a346"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-config": "0.74.0-beta9",
+                "magento/module-directory": "0.74.0-beta9",
+                "magento/module-page-cache": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/CurrencySymbol"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-customer",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-customer-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "7d303f83ba1340fd2a979d87d7184f6d6c831f9f"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-authorization": "0.74.0-beta9",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-catalog": "0.74.0-beta9",
+                "magento/module-checkout": "0.74.0-beta9",
+                "magento/module-config": "0.74.0-beta9",
+                "magento/module-directory": "0.74.0-beta9",
+                "magento/module-eav": "0.74.0-beta9",
+                "magento/module-integration": "0.74.0-beta9",
+                "magento/module-media-storage": "0.74.0-beta9",
+                "magento/module-newsletter": "0.74.0-beta9",
+                "magento/module-page-cache": "0.74.0-beta9",
+                "magento/module-quote": "0.74.0-beta9",
+                "magento/module-review": "0.74.0-beta9",
+                "magento/module-sales": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "magento/module-tax": "0.74.0-beta9",
+                "magento/module-theme": "0.74.0-beta9",
+                "magento/module-ui": "0.74.0-beta9",
+                "magento/module-wishlist": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "suggest": {
+                "magento/module-cookie": "0.74.0-beta9"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Customer"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-customer-import-export",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-customer-import-export-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "865cf1afa2dcd6daecde627492421421d1b4b4ea"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-customer": "0.74.0-beta9",
+                "magento/module-directory": "0.74.0-beta9",
+                "magento/module-eav": "0.74.0-beta9",
+                "magento/module-import-export": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/CustomerImportExport"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-design-editor",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-design-editor-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "92a198c9e7fdb3d1224484c46059e2335032bd69"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-config": "0.74.0-beta9",
+                "magento/module-eav": "0.74.0-beta9",
+                "magento/module-media-storage": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "magento/module-theme": "0.74.0-beta9",
+                "magento/module-translation": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/DesignEditor"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-developer",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-developer-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "6706b2f7949678e99496ebea9fd12d9262b62004"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-store": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Developer"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-dhl",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-dhl-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "34a111604699481f2eb3904bf4a1100c743f0e20"
+            },
+            "require": {
+                "lib-libxml": "*",
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-catalog": "0.74.0-beta9",
+                "magento/module-catalog-inventory": "0.74.0-beta9",
+                "magento/module-checkout": "0.74.0-beta9",
+                "magento/module-config": "0.74.0-beta9",
+                "magento/module-directory": "0.74.0-beta9",
+                "magento/module-quote": "0.74.0-beta9",
+                "magento/module-sales": "0.74.0-beta9",
+                "magento/module-shipping": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Dhl"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-directory",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-directory-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "426f27e9626d056dad46e805eae800eadf5e44fe"
+            },
+            "require": {
+                "lib-libxml": "*",
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-config": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Directory"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-downloadable",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-downloadable-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "548720f2619acfd6d05c2e2d4ef6d4e0add8bc32"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-catalog": "0.74.0-beta9",
+                "magento/module-catalog-inventory": "0.74.0-beta9",
+                "magento/module-checkout": "0.74.0-beta9",
+                "magento/module-config": "0.74.0-beta9",
+                "magento/module-customer": "0.74.0-beta9",
+                "magento/module-directory": "0.74.0-beta9",
+                "magento/module-eav": "0.74.0-beta9",
+                "magento/module-gift-message": "0.74.0-beta9",
+                "magento/module-media-storage": "0.74.0-beta9",
+                "magento/module-msrp": "0.74.0-beta9",
+                "magento/module-quote": "0.74.0-beta9",
+                "magento/module-sales": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "magento/module-tax": "0.74.0-beta9",
+                "magento/module-theme": "0.74.0-beta9",
+                "magento/module-wishlist": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Downloadable"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-eav",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-eav-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "6c3a9b09465bab43077912e1b592aad51f5535ea"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-catalog": "0.74.0-beta9",
+                "magento/module-config": "0.74.0-beta9",
+                "magento/module-media-storage": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Eav"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-email",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-email-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "fdcbc0aa8f3bb96f267b77f560f0888c1dd07b4b"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-cms": "0.74.0-beta9",
+                "magento/module-config": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "magento/module-variable": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Email"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-fedex",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-fedex-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "ddb21f39509d35d91d654ed4cee2d0bd6d96b8ff"
+            },
+            "require": {
+                "lib-libxml": "*",
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-catalog": "0.74.0-beta9",
+                "magento/module-catalog-inventory": "0.74.0-beta9",
+                "magento/module-config": "0.74.0-beta9",
+                "magento/module-directory": "0.74.0-beta9",
+                "magento/module-quote": "0.74.0-beta9",
+                "magento/module-sales": "0.74.0-beta9",
+                "magento/module-shipping": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Fedex"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-gift-message",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-gift-message-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "baa084f6f8c5098573a39441b1e7ff478aaf645d"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-catalog": "0.74.0-beta9",
+                "magento/module-checkout": "0.74.0-beta9",
+                "magento/module-customer": "0.74.0-beta9",
+                "magento/module-eav": "0.74.0-beta9",
+                "magento/module-multishipping": "0.74.0-beta9",
+                "magento/module-quote": "0.74.0-beta9",
+                "magento/module-sales": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/GiftMessage"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-google-adwords",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-google-adwords-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "2e07b618a3a20384a128f6c769f0dd767d11da84"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-sales": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/GoogleAdwords"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-google-analytics",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-google-analytics-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "006250c389821f90c61bca62b29aa477f66071b5"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-cookie": "0.74.0-beta9",
+                "magento/module-sales": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/GoogleAnalytics"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-google-optimizer",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-google-optimizer-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "35f7d31d069c1bfb8a9fc6e30757546f4188e05c"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-catalog": "0.74.0-beta9",
+                "magento/module-cms": "0.74.0-beta9",
+                "magento/module-google-analytics": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/GoogleOptimizer"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-google-shopping",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-google-shopping-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "b0867fd647a13818a701974a0224fd3c7f306d1a"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-catalog": "0.74.0-beta9",
+                "magento/module-customer": "0.74.0-beta9",
+                "magento/module-directory": "0.74.0-beta9",
+                "magento/module-eav": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "magento/module-tax": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/GoogleShopping"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-grouped-import-export",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-grouped-import-export-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "b740cdb730ba164f15c8beca9e42076cd73506f6"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-catalog": "0.74.0-beta9",
+                "magento/module-catalog-import-export": "0.74.0-beta9",
+                "magento/module-eav": "0.74.0-beta9",
+                "magento/module-grouped-product": "0.74.0-beta9",
+                "magento/module-import-export": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/GroupedImportExport"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-grouped-product",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-grouped-product-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "3b81ed8cbbe0118632fb0a73d96defaf17001627"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-catalog": "0.74.0-beta9",
+                "magento/module-catalog-inventory": "0.74.0-beta9",
+                "magento/module-checkout": "0.74.0-beta9",
+                "magento/module-customer": "0.74.0-beta9",
+                "magento/module-eav": "0.74.0-beta9",
+                "magento/module-media-storage": "0.74.0-beta9",
+                "magento/module-msrp": "0.74.0-beta9",
+                "magento/module-quote": "0.74.0-beta9",
+                "magento/module-sales": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/GroupedProduct"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-import-export",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-import-export-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "bdda8672b34b093b89ec54210b4e025b942f66b0"
+            },
+            "require": {
+                "ext-ctype": "*",
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-eav": "0.74.0-beta9",
+                "magento/module-indexer": "0.74.0-beta9",
+                "magento/module-media-storage": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/ImportExport"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-indexer",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-indexer-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "f87dcac18e19a70d34be3c8e486397fa37368fe6"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-page-cache": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Indexer"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-integration",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-integration-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "4a4f8808a49733e7434198fd072a0f7dbb3dcff2"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-authorization": "0.74.0-beta9",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-customer": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "magento/module-user": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Integration"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-layered-navigation",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-layered-navigation-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "a305729e3b91e7d37169eeb3e1dc8b1532982e7e"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-catalog": "0.74.0-beta9",
+                "magento/module-config": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/LayeredNavigation"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-log",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-log-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "ce8f197c54c4865aad81d9d49fa20680f73f1c0e"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-customer": "0.74.0-beta9",
+                "magento/module-eav": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Log"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-media-storage",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-media-storage-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "385de9b553cd7e712e4fbc9d5b8a9aab22b19734"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-config": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/MediaStorage"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-msrp",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-msrp-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "a938500cd0391fb081840683bc1d25c8d24bde3f"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-bundle": "0.74.0-beta9",
+                "magento/module-catalog": "0.74.0-beta9",
+                "magento/module-downloadable": "0.74.0-beta9",
+                "magento/module-eav": "0.74.0-beta9",
+                "magento/module-grouped-product": "0.74.0-beta9",
+                "magento/module-quote": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "magento/module-tax": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Msrp"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-multishipping",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-multishipping-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "ed5f5195814708f0a40a063ede492ce28b7a85b6"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-checkout": "0.74.0-beta9",
+                "magento/module-customer": "0.74.0-beta9",
+                "magento/module-payment": "0.74.0-beta9",
+                "magento/module-quote": "0.74.0-beta9",
+                "magento/module-sales": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "magento/module-tax": "0.74.0-beta9",
+                "magento/module-theme": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Multishipping"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-newsletter",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-newsletter-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "1d65d77fdcefdfb81fb7831ddf925340fb8e18da"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-cms": "0.74.0-beta9",
+                "magento/module-cron": "0.74.0-beta9",
+                "magento/module-customer": "0.74.0-beta9",
+                "magento/module-eav": "0.74.0-beta9",
+                "magento/module-email": "0.74.0-beta9",
+                "magento/module-require-js": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "magento/module-widget": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Newsletter"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-offline-payments",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-offline-payments-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "820a2b58d81446545b30016a3601839d01d0d319"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-payment": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/OfflinePayments"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-offline-shipping",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-offline-shipping-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "e72fb8afe1ca9edc7c5fc82a68873ff2961565cc"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-catalog": "0.74.0-beta9",
+                "magento/module-checkout": "0.74.0-beta9",
+                "magento/module-config": "0.74.0-beta9",
+                "magento/module-directory": "0.74.0-beta9",
+                "magento/module-quote": "0.74.0-beta9",
+                "magento/module-sales": "0.74.0-beta9",
+                "magento/module-sales-rule": "0.74.0-beta9",
+                "magento/module-shipping": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/OfflineShipping"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-page-cache",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-page-cache-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "756fb21471c1b0259baf4e594032e7aea5b222f2"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-config": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/PageCache"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-payment",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-payment-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "4514f7446e6e9a19e82eddd8212e31d04377aa77"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-centinel": "0.74.0-beta9",
+                "magento/module-checkout": "0.74.0-beta9",
+                "magento/module-config": "0.74.0-beta9",
+                "magento/module-quote": "0.74.0-beta9",
+                "magento/module-sales": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Payment"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-persistent",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-persistent-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "afb7d470522a94295bc40744f6e99ae0ec682011"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-checkout": "0.74.0-beta9",
+                "magento/module-cron": "0.74.0-beta9",
+                "magento/module-customer": "0.74.0-beta9",
+                "magento/module-page-cache": "0.74.0-beta9",
+                "magento/module-quote": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Persistent"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-product-alert",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-product-alert-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "d3235530b5f3efd21e517052bdcf7fea0ced7475"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-catalog": "0.74.0-beta9",
+                "magento/module-customer": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/ProductAlert"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-quote",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-quote-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "5c6a5e737a7c2fae72aa5381303030601eb3fac2"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-authorization": "0.74.0-beta9",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-catalog": "0.74.0-beta9",
+                "magento/module-catalog-inventory": "0.74.0-beta9",
+                "magento/module-catalog-rule": "0.74.0-beta9",
+                "magento/module-customer": "0.74.0-beta9",
+                "magento/module-directory": "0.74.0-beta9",
+                "magento/module-eav": "0.74.0-beta9",
+                "magento/module-payment": "0.74.0-beta9",
+                "magento/module-sales": "0.74.0-beta9",
+                "magento/module-sales-sequence": "0.74.0-beta9",
+                "magento/module-shipping": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "magento/module-tax": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Quote"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-reports",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-reports-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "6dd2cca08c4b7c0560167f2ee3fe846004a241bd"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-catalog": "0.74.0-beta9",
+                "magento/module-catalog-inventory": "0.74.0-beta9",
+                "magento/module-cms": "0.74.0-beta9",
+                "magento/module-config": "0.74.0-beta9",
+                "magento/module-customer": "0.74.0-beta9",
+                "magento/module-downloadable": "0.74.0-beta9",
+                "magento/module-eav": "0.74.0-beta9",
+                "magento/module-log": "0.74.0-beta9",
+                "magento/module-quote": "0.74.0-beta9",
+                "magento/module-review": "0.74.0-beta9",
+                "magento/module-sales": "0.74.0-beta9",
+                "magento/module-sales-rule": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "magento/module-tax": "0.74.0-beta9",
+                "magento/module-widget": "0.74.0-beta9",
+                "magento/module-wishlist": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Reports"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-require-js",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-require-js-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "842a7c38569cd97b61412c1d60d979710a6a7f9e"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/RequireJs"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-review",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-review-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "507b801b44f75bc421976918b068da84367eb9f7"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-catalog": "0.74.0-beta9",
+                "magento/module-customer": "0.74.0-beta9",
+                "magento/module-eav": "0.74.0-beta9",
+                "magento/module-newsletter": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "magento/module-theme": "0.74.0-beta9",
+                "magento/module-ui": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "suggest": {
+                "magento/module-cookie": "0.74.0-beta9"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Review"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-rss",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-rss-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "dcbfaecc7026ed1ef047b6b8274db47009f7306f"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-customer": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Rss"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-rule",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-rule-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "20aa3361bafb3587d9168521d7a6283122dc4ead"
+            },
+            "require": {
+                "lib-libxml": "*",
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-catalog": "0.74.0-beta9",
+                "magento/module-eav": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Rule"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-sales",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-sales-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "007ca46fc540820c8f17786cabaa544f0fe7f984"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-authorization": "0.74.0-beta9",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-catalog": "0.74.0-beta9",
+                "magento/module-catalog-inventory": "0.74.0-beta9",
+                "magento/module-checkout": "0.74.0-beta9",
+                "magento/module-config": "0.74.0-beta9",
+                "magento/module-customer": "0.74.0-beta9",
+                "magento/module-directory": "0.74.0-beta9",
+                "magento/module-eav": "0.74.0-beta9",
+                "magento/module-email": "0.74.0-beta9",
+                "magento/module-gift-message": "0.74.0-beta9",
+                "magento/module-media-storage": "0.74.0-beta9",
+                "magento/module-payment": "0.74.0-beta9",
+                "magento/module-quote": "0.74.0-beta9",
+                "magento/module-reports": "0.74.0-beta9",
+                "magento/module-sales-rule": "0.74.0-beta9",
+                "magento/module-sales-sequence": "0.74.0-beta9",
+                "magento/module-shipping": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "magento/module-tax": "0.74.0-beta9",
+                "magento/module-theme": "0.74.0-beta9",
+                "magento/module-ui": "0.74.0-beta9",
+                "magento/module-widget": "0.74.0-beta9",
+                "magento/module-wishlist": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Sales"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-sales-rule",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-sales-rule-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "25a2d8e1c2e722e102745e88928de0bd1dd80274"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-catalog": "0.74.0-beta9",
+                "magento/module-catalog-rule": "0.74.0-beta9",
+                "magento/module-config": "0.74.0-beta9",
+                "magento/module-customer": "0.74.0-beta9",
+                "magento/module-directory": "0.74.0-beta9",
+                "magento/module-eav": "0.74.0-beta9",
+                "magento/module-payment": "0.74.0-beta9",
+                "magento/module-quote": "0.74.0-beta9",
+                "magento/module-reports": "0.74.0-beta9",
+                "magento/module-rule": "0.74.0-beta9",
+                "magento/module-sales": "0.74.0-beta9",
+                "magento/module-shipping": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "magento/module-widget": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/SalesRule"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-sales-sequence",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-sales-sequence-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "a242a2b697fc95c36a125bb4e51ec0a2b206b359"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/SalesSequence"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-search",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-search-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "0005f68bc5abaa007361df0236b5fba80517af4d"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-catalog-search": "0.74.0-beta9",
+                "magento/module-reports": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Search"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-sendfriend",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-sendfriend-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "adb2246c88b666e9340f1a725bea2fb0aa037ca0"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-catalog": "0.74.0-beta9",
+                "magento/module-customer": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "magento/module-theme": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Sendfriend"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-shipping",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-shipping-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "76013d8582463caeb15ce63a96139048a07ba90b"
+            },
+            "require": {
+                "ext-gd": "*",
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-catalog": "0.74.0-beta9",
+                "magento/module-catalog-inventory": "0.74.0-beta9",
+                "magento/module-contact": "0.74.0-beta9",
+                "magento/module-customer": "0.74.0-beta9",
+                "magento/module-directory": "0.74.0-beta9",
+                "magento/module-payment": "0.74.0-beta9",
+                "magento/module-quote": "0.74.0-beta9",
+                "magento/module-sales": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "magento/module-tax": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "suggest": {
+                "magento/module-fedex": "0.74.0-beta9",
+                "magento/module-ups": "0.74.0-beta9"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Shipping"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-sitemap",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-sitemap-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "2169a32cae4f3de305ec17c4d8246175b7ddde9e"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-catalog": "0.74.0-beta9",
+                "magento/module-catalog-url-rewrite": "0.74.0-beta9",
+                "magento/module-cms": "0.74.0-beta9",
+                "magento/module-eav": "0.74.0-beta9",
+                "magento/module-media-storage": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Sitemap"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-store",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-store-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "85ff2ce1c9c32ecb4696e96616b3523e2b78979d"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-config": "0.74.0-beta9",
+                "magento/module-directory": "0.74.0-beta9",
+                "magento/module-media-storage": "0.74.0-beta9",
+                "magento/module-ui": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Store"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-tax",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-tax-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "8be068d30674efe3bc2bfe1dba983d8b5d5e680d"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-catalog": "0.74.0-beta9",
+                "magento/module-checkout": "0.74.0-beta9",
+                "magento/module-config": "0.74.0-beta9",
+                "magento/module-customer": "0.74.0-beta9",
+                "magento/module-directory": "0.74.0-beta9",
+                "magento/module-eav": "0.74.0-beta9",
+                "magento/module-quote": "0.74.0-beta9",
+                "magento/module-reports": "0.74.0-beta9",
+                "magento/module-sales": "0.74.0-beta9",
+                "magento/module-shipping": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Tax"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-tax-import-export",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-tax-import-export-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "f2e9b0c55788af457a52ea579e2bb009f7f70ccd"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-directory": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "magento/module-tax": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/TaxImportExport"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-theme",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-theme-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "34fbc07ab9a15edac3b102a4ae6e04cbc16c4383"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-cms": "0.74.0-beta9",
+                "magento/module-config": "0.74.0-beta9",
+                "magento/module-customer": "0.74.0-beta9",
+                "magento/module-eav": "0.74.0-beta9",
+                "magento/module-media-storage": "0.74.0-beta9",
+                "magento/module-require-js": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "magento/module-widget": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "suggest": {
+                "magento/module-translation": "0.74.0-beta9"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Theme"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-translation",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-translation-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "a7d61f2d4fc262495f4d577ead1d66e6caebe200"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-developer": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "magento/module-theme": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Translation"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-ui",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-ui-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "501305e3a3648d549c5bc91baca89395495b2a74"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-eav": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Ui"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-ups",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-ups-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "b818adcf10ebdc0586a81b7165a34af5b3860008"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-catalog-inventory": "0.74.0-beta9",
+                "magento/module-directory": "0.74.0-beta9",
+                "magento/module-quote": "0.74.0-beta9",
+                "magento/module-sales": "0.74.0-beta9",
+                "magento/module-shipping": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Ups"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-url-rewrite",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-url-rewrite-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "34d054a4ebd87ce92e1d1046d956862604f65b37"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-catalog": "0.74.0-beta9",
+                "magento/module-catalog-url-rewrite": "0.74.0-beta9",
+                "magento/module-cms": "0.74.0-beta9",
+                "magento/module-cms-url-rewrite": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/UrlRewrite"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-user",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-user-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "4d31751fe30d0f71eead11dc4a55d389c6093eda"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-authorization": "0.74.0-beta9",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-integration": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/User"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-usps",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-usps-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "81d063228ed743310ee1c9bbdc62562ac2fc9241"
+            },
+            "require": {
+                "lib-libxml": "*",
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-catalog": "0.74.0-beta9",
+                "magento/module-catalog-inventory": "0.74.0-beta9",
+                "magento/module-config": "0.74.0-beta9",
+                "magento/module-directory": "0.74.0-beta9",
+                "magento/module-quote": "0.74.0-beta9",
+                "magento/module-sales": "0.74.0-beta9",
+                "magento/module-shipping": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Usps"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-variable",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-variable-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "37a886883455a5321e5d28a5fc28248d56e32ee3"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-email": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "php": "~5.4.11|~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Variable"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-version",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-version-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "7867b8eb39d12d99ed28373b30d0904e4cc115ca"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Version"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-webapi",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-webapi-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "aa667d18e1f941bafa1067f077ff473bcd43ef0f"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-authorization": "0.74.0-beta9",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-integration": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "suggest": {
+                "magento/module-user": "0.74.0-beta9"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Webapi"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-weee",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-weee-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "93cb501b913b88987b014815620f77c3d2c2ba34"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-catalog": "0.74.0-beta9",
+                "magento/module-customer": "0.74.0-beta9",
+                "magento/module-directory": "0.74.0-beta9",
+                "magento/module-eav": "0.74.0-beta9",
+                "magento/module-quote": "0.74.0-beta9",
+                "magento/module-sales": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "magento/module-tax": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Weee"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-widget",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-widget-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "15f9242331dc9ba7a212e0a5ad2a8feea4b6c947"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-catalog": "0.74.0-beta9",
+                "magento/module-cms": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "magento/module-theme": "0.74.0-beta9",
+                "magento/module-variable": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Widget"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-wishlist",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-wishlist-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "bd837563e9db26a98f853f8c812a033e3a522be9"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-catalog": "0.74.0-beta9",
+                "magento/module-catalog-inventory": "0.74.0-beta9",
+                "magento/module-checkout": "0.74.0-beta9",
+                "magento/module-customer": "0.74.0-beta9",
+                "magento/module-grouped-product": "0.74.0-beta9",
+                "magento/module-rss": "0.74.0-beta9",
+                "magento/module-sales": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "magento/module-theme": "0.74.0-beta9",
+                "magento/module-ui": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "suggest": {
+                "magento/module-bundle": "0.74.0-beta9",
+                "magento/module-configurable-product": "0.74.0-beta9",
+                "magento/module-cookie": "0.74.0-beta9",
+                "magento/module-downloadable": "0.74.0-beta9"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Wishlist"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/product-community-edition",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_product-community-edition-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "dcdb19ed1bd35078af02e032d57fa56f657e2de5"
+            },
+            "require": {
+                "composer/composer": "1.0.0-alpha9",
+                "magento/framework": "0.74.0-beta9",
+                "magento/language-de_de": "0.74.0-beta9",
+                "magento/language-en_us": "0.74.0-beta9",
+                "magento/language-es_es": "0.74.0-beta9",
+                "magento/language-fr_fr": "0.74.0-beta9",
+                "magento/language-nl_nl": "0.74.0-beta9",
+                "magento/language-pt_br": "0.74.0-beta9",
+                "magento/language-zh_cn": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/magento2-base": "0.74.0-beta9",
+                "magento/module-admin-notification": "0.74.0-beta9",
+                "magento/module-authorization": "0.74.0-beta9",
+                "magento/module-backend": "0.74.0-beta9",
+                "magento/module-backup": "0.74.0-beta9",
+                "magento/module-bundle": "0.74.0-beta9",
+                "magento/module-cache-invalidate": "0.74.0-beta9",
+                "magento/module-captcha": "0.74.0-beta9",
+                "magento/module-catalog": "0.74.0-beta9",
+                "magento/module-catalog-import-export": "0.74.0-beta9",
+                "magento/module-catalog-inventory": "0.74.0-beta9",
+                "magento/module-catalog-rule": "0.74.0-beta9",
+                "magento/module-catalog-search": "0.74.0-beta9",
+                "magento/module-catalog-url-rewrite": "0.74.0-beta9",
+                "magento/module-catalog-widget": "0.74.0-beta9",
+                "magento/module-centinel": "0.74.0-beta9",
+                "magento/module-checkout": "0.74.0-beta9",
+                "magento/module-checkout-agreements": "0.74.0-beta9",
+                "magento/module-cms": "0.74.0-beta9",
+                "magento/module-cms-url-rewrite": "0.74.0-beta9",
+                "magento/module-config": "0.74.0-beta9",
+                "magento/module-configurable-import-export": "0.74.0-beta9",
+                "magento/module-configurable-product": "0.74.0-beta9",
+                "magento/module-contact": "0.74.0-beta9",
+                "magento/module-cookie": "0.74.0-beta9",
+                "magento/module-cron": "0.74.0-beta9",
+                "magento/module-currency-symbol": "0.74.0-beta9",
+                "magento/module-customer": "0.74.0-beta9",
+                "magento/module-customer-import-export": "0.74.0-beta9",
+                "magento/module-design-editor": "0.74.0-beta9",
+                "magento/module-developer": "0.74.0-beta9",
+                "magento/module-dhl": "0.74.0-beta9",
+                "magento/module-directory": "0.74.0-beta9",
+                "magento/module-downloadable": "0.74.0-beta9",
+                "magento/module-eav": "0.74.0-beta9",
+                "magento/module-email": "0.74.0-beta9",
+                "magento/module-fedex": "0.74.0-beta9",
+                "magento/module-gift-message": "0.74.0-beta9",
+                "magento/module-google-adwords": "0.74.0-beta9",
+                "magento/module-google-analytics": "0.74.0-beta9",
+                "magento/module-google-optimizer": "0.74.0-beta9",
+                "magento/module-google-shopping": "0.74.0-beta9",
+                "magento/module-grouped-import-export": "0.74.0-beta9",
+                "magento/module-grouped-product": "0.74.0-beta9",
+                "magento/module-import-export": "0.74.0-beta9",
+                "magento/module-indexer": "0.74.0-beta9",
+                "magento/module-integration": "0.74.0-beta9",
+                "magento/module-layered-navigation": "0.74.0-beta9",
+                "magento/module-log": "0.74.0-beta9",
+                "magento/module-media-storage": "0.74.0-beta9",
+                "magento/module-msrp": "0.74.0-beta9",
+                "magento/module-multishipping": "0.74.0-beta9",
+                "magento/module-newsletter": "0.74.0-beta9",
+                "magento/module-offline-payments": "0.74.0-beta9",
+                "magento/module-offline-shipping": "0.74.0-beta9",
+                "magento/module-page-cache": "0.74.0-beta9",
+                "magento/module-payment": "0.74.0-beta9",
+                "magento/module-persistent": "0.74.0-beta9",
+                "magento/module-product-alert": "0.74.0-beta9",
+                "magento/module-quote": "0.74.0-beta9",
+                "magento/module-reports": "0.74.0-beta9",
+                "magento/module-require-js": "0.74.0-beta9",
+                "magento/module-review": "0.74.0-beta9",
+                "magento/module-rss": "0.74.0-beta9",
+                "magento/module-rule": "0.74.0-beta9",
+                "magento/module-sales": "0.74.0-beta9",
+                "magento/module-sales-rule": "0.74.0-beta9",
+                "magento/module-sales-sequence": "0.74.0-beta9",
+                "magento/module-search": "0.74.0-beta9",
+                "magento/module-sendfriend": "0.74.0-beta9",
+                "magento/module-shipping": "0.74.0-beta9",
+                "magento/module-sitemap": "0.74.0-beta9",
+                "magento/module-store": "0.74.0-beta9",
+                "magento/module-tax": "0.74.0-beta9",
+                "magento/module-tax-import-export": "0.74.0-beta9",
+                "magento/module-theme": "0.74.0-beta9",
+                "magento/module-translation": "0.74.0-beta9",
+                "magento/module-ui": "0.74.0-beta9",
+                "magento/module-ups": "0.74.0-beta9",
+                "magento/module-url-rewrite": "0.74.0-beta9",
+                "magento/module-user": "0.74.0-beta9",
+                "magento/module-usps": "0.74.0-beta9",
+                "magento/module-variable": "0.74.0-beta9",
+                "magento/module-version": "0.74.0-beta9",
+                "magento/module-webapi": "0.74.0-beta9",
+                "magento/module-weee": "0.74.0-beta9",
+                "magento/module-widget": "0.74.0-beta9",
+                "magento/module-wishlist": "0.74.0-beta9",
+                "magento/theme-adminhtml-backend": "0.74.0-beta9",
+                "magento/theme-frontend-blank": "0.74.0-beta9",
+                "magento/theme-frontend-luma": "0.74.0-beta9",
+                "magento/zendframework1": "1.12.10",
+                "monolog/monolog": "1.11.0",
+                "oyejorge/less.php": "1.7.0.3",
+                "php": "~5.5.0|~5.6.0",
+                "symfony/console": "~2.3",
+                "tubalmartin/cssmin": "2.4.8-p4",
+                "zendframework/zend-code": "2.4.0",
+                "zendframework/zend-config": "2.4.0",
+                "zendframework/zend-console": "2.4.0",
+                "zendframework/zend-di": "2.4.0",
+                "zendframework/zend-eventmanager": "2.4.0",
+                "zendframework/zend-form": "2.4.0",
+                "zendframework/zend-http": "2.4.0",
+                "zendframework/zend-i18n": "2.4.0",
+                "zendframework/zend-json": "2.4.0",
+                "zendframework/zend-log": "2.4.0",
+                "zendframework/zend-modulemanager": "2.4.0",
+                "zendframework/zend-mvc": "2.4.0",
+                "zendframework/zend-serializer": "2.4.0",
+                "zendframework/zend-server": "2.4.0",
+                "zendframework/zend-servicemanager": "2.4.0",
+                "zendframework/zend-soap": "2.4.0",
+                "zendframework/zend-stdlib": "2.4.0",
+                "zendframework/zend-text": "2.4.0",
+                "zendframework/zend-uri": "2.4.0",
+                "zendframework/zend-validator": "2.4.0",
+                "zendframework/zend-view": "2.4.0"
+            },
+            "type": "metapackage",
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "eCommerce Platform for Growth (Community Edition)"
+        },
+        {
+            "name": "magento/theme-adminhtml-backend",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_theme-adminhtml-backend-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "180c47b61bd4711070cdc4156e652c0158fb85a6"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-theme",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "adminhtml/Magento/backend"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/theme-frontend-blank",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_theme-frontend-blank-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "dc037fe5de13aff46169958e58c07993b623909a"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-theme",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "frontend/Magento/blank"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/theme-frontend-luma",
+            "version": "0.74.0-beta9",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_theme-frontend-luma-0.74.0-beta9.zip",
+                "reference": null,
+                "shasum": "11d0b3dd1f800ef730bf87c02a5e5031c8a8e214"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta9",
+                "magento/magento-composer-installer": "*",
+                "magento/theme-frontend-blank": "0.74.0-beta9",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-theme",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "frontend/Magento/luma"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/zendframework1",
+            "version": "1.12.10",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/magento/zf1.git",
+                "reference": "d1e5cd8c9f83229bcdd9bb485c3ce25259c77884"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/magento/zf1/zipball/d1e5cd8c9f83229bcdd9bb485c3ce25259c77884",
+                "reference": "d1e5cd8c9f83229bcdd9bb485c3ce25259c77884",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.2.11"
+            },
+            "require-dev": {
+                "phpunit/dbunit": "1.3.*",
+                "phpunit/phpunit": "3.7.*"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.12.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Zend_": "library/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "include-path": [
+                "library/"
+            ],
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "description": "Magento Zend Framework 1",
+            "homepage": "http://framework.zend.com/",
+            "keywords": [
+                "ZF1",
+                "framework"
+            ],
+            "time": "2015-02-06 17:25:45"
+        },
+        {
+            "name": "monolog/monolog",
+            "version": "1.11.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/Seldaek/monolog.git",
+                "reference": "ec3961874c43840e96da3a8a1ed20d8c73d7e5aa"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/Seldaek/monolog/zipball/ec3961874c43840e96da3a8a1ed20d8c73d7e5aa",
+                "reference": "ec3961874c43840e96da3a8a1ed20d8c73d7e5aa",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.0",
+                "psr/log": "~1.0"
+            },
+            "provide": {
+                "psr/log-implementation": "1.0.0"
+            },
+            "require-dev": {
+                "aws/aws-sdk-php": "~2.4, >2.4.8",
+                "doctrine/couchdb": "~1.0@dev",
+                "graylog2/gelf-php": "~1.0",
+                "phpunit/phpunit": "~3.7.0",
+                "raven/raven": "~0.5",
+                "ruflin/elastica": "0.90.*",
+                "videlalvaro/php-amqplib": "~2.4"
+            },
+            "suggest": {
+                "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
+                "doctrine/couchdb": "Allow sending log messages to a CouchDB server",
+                "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
+                "ext-mongo": "Allow sending log messages to a MongoDB server",
+                "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
+                "raven/raven": "Allow sending log messages to a Sentry server",
+                "rollbar/rollbar": "Allow sending log messages to Rollbar",
+                "ruflin/elastica": "Allow sending log messages to an Elastic Search server",
+                "videlalvaro/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.11.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Monolog\\": "src/Monolog"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Jordi Boggiano",
+                    "email": "j.boggiano@seld.be",
+                    "homepage": "http://seld.be"
+                }
+            ],
+            "description": "Sends your logs to files, sockets, inboxes, databases and various web services",
+            "homepage": "http://github.com/Seldaek/monolog",
+            "keywords": [
+                "log",
+                "logging",
+                "psr-3"
+            ],
+            "time": "2014-09-30 13:30:58"
+        },
+        {
+            "name": "oyejorge/less.php",
+            "version": "v1.7.0.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/oyejorge/less.php.git",
+                "reference": "6e08ecb07e6f6d9170c23e8744c58fdd822ad0de"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/oyejorge/less.php/zipball/6e08ecb07e6f6d9170c23e8744c58fdd822ad0de",
+                "reference": "6e08ecb07e6f6d9170c23e8744c58fdd822ad0de",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.2"
+            },
+            "bin": [
+                "bin/lessc"
+            ],
+            "type": "library",
+            "autoload": {
+                "psr-0": {
+                    "Less": "lib/"
+                },
+                "classmap": [
+                    "lessc.inc.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "Apache-2.0"
+            ],
+            "authors": [
+                {
+                    "name": "Matt Agar",
+                    "homepage": "https://github.com/agar"
+                },
+                {
+                    "name": "Martin Jantošovič",
+                    "homepage": "https://github.com/Mordred"
+                },
+                {
+                    "name": "Josh Schmidt",
+                    "homepage": "https://github.com/oyejorge"
+                }
+            ],
+            "description": "PHP port of the Javascript version of LESS http://lesscss.org",
+            "homepage": "http://lessphp.gpeasy.com",
+            "keywords": [
+                "css",
+                "less",
+                "less.js",
+                "lesscss",
+                "php",
+                "stylesheet"
+            ],
+            "time": "2015-03-10 18:12:59"
+        },
+        {
+            "name": "psr/log",
+            "version": "1.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-fig/log.git",
+                "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b",
+                "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b",
+                "shasum": ""
+            },
+            "type": "library",
+            "autoload": {
+                "psr-0": {
+                    "Psr\\Log\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "PHP-FIG",
+                    "homepage": "http://www.php-fig.org/"
+                }
+            ],
+            "description": "Common interface for logging libraries",
+            "keywords": [
+                "log",
+                "psr",
+                "psr-3"
+            ],
+            "time": "2012-12-21 11:40:51"
+        },
+        {
+            "name": "seld/jsonlint",
+            "version": "1.3.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/Seldaek/jsonlint.git",
+                "reference": "863ae85c6d3ef60ca49cb12bd051c4a0648c40c4"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/863ae85c6d3ef60ca49cb12bd051c4a0648c40c4",
+                "reference": "863ae85c6d3ef60ca49cb12bd051c4a0648c40c4",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.0"
+            },
+            "bin": [
+                "bin/jsonlint"
+            ],
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Seld\\JsonLint\\": "src/Seld/JsonLint/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Jordi Boggiano",
+                    "email": "j.boggiano@seld.be",
+                    "homepage": "http://seld.be"
+                }
+            ],
+            "description": "JSON Linter",
+            "keywords": [
+                "json",
+                "linter",
+                "parser",
+                "validator"
+            ],
+            "time": "2015-01-04 21:18:15"
+        },
+        {
+            "name": "symfony/console",
+            "version": "v2.6.7",
+            "target-dir": "Symfony/Component/Console",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/Console.git",
+                "reference": "ebc5679854aa24ed7d65062e9e3ab0b18a917272"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/Console/zipball/ebc5679854aa24ed7d65062e9e3ab0b18a917272",
+                "reference": "ebc5679854aa24ed7d65062e9e3ab0b18a917272",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "psr/log": "~1.0",
+                "symfony/event-dispatcher": "~2.1",
+                "symfony/phpunit-bridge": "~2.7",
+                "symfony/process": "~2.1"
+            },
+            "suggest": {
+                "psr/log": "For using the console logger",
+                "symfony/event-dispatcher": "",
+                "symfony/process": ""
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.6-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Symfony\\Component\\Console\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony Console Component",
+            "homepage": "https://symfony.com",
+            "time": "2015-05-02 15:18:45"
+        },
+        {
+            "name": "symfony/finder",
+            "version": "v2.6.7",
+            "target-dir": "Symfony/Component/Finder",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/Finder.git",
+                "reference": "704c64c8b12c8882640d5c0330a8414b1e06dc99"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/Finder/zipball/704c64c8b12c8882640d5c0330a8414b1e06dc99",
+                "reference": "704c64c8b12c8882640d5c0330a8414b1e06dc99",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "symfony/phpunit-bridge": "~2.7"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.6-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Symfony\\Component\\Finder\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony Finder Component",
+            "homepage": "https://symfony.com",
+            "time": "2015-05-02 15:18:45"
+        },
+        {
+            "name": "symfony/process",
+            "version": "v2.6.7",
+            "target-dir": "Symfony/Component/Process",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/Process.git",
+                "reference": "9f3c4baaf840ed849e1b1f7bfd5ae246e8509562"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/Process/zipball/9f3c4baaf840ed849e1b1f7bfd5ae246e8509562",
+                "reference": "9f3c4baaf840ed849e1b1f7bfd5ae246e8509562",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "symfony/phpunit-bridge": "~2.7"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.6-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Symfony\\Component\\Process\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony Process Component",
+            "homepage": "https://symfony.com",
+            "time": "2015-05-02 15:18:45"
+        },
+        {
+            "name": "tubalmartin/cssmin",
+            "version": "v2.4.8-p4",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/tubalmartin/YUI-CSS-compressor-PHP-port.git",
+                "reference": "fe84d71e8420243544c0ce3bd0f5d7c1936b0f90"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/tubalmartin/YUI-CSS-compressor-PHP-port/zipball/fe84d71e8420243544c0ce3bd0f5d7c1936b0f90",
+                "reference": "fe84d71e8420243544c0ce3bd0f5d7c1936b0f90",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.0.0"
+            },
+            "type": "library",
+            "autoload": {
+                "classmap": [
+                    "cssmin.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Túbal Martín",
+                    "homepage": "http://tubalmartin.me/"
+                }
+            ],
+            "description": "A PHP port of the YUI CSS compressor",
+            "homepage": "https://github.com/tubalmartin/YUI-CSS-compressor-PHP-port",
+            "keywords": [
+                "compress",
+                "compressor",
+                "css",
+                "minify",
+                "yui"
+            ],
+            "time": "2014-09-22 08:08:50"
+        },
+        {
+            "name": "zendframework/zend-code",
+            "version": "2.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/zend-code.git",
+                "reference": "0ed94f842ba60cdc900c46a61bdbd7ac95a3e140"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/zend-code/zipball/0ed94f842ba60cdc900c46a61bdbd7ac95a3e140",
+                "reference": "0ed94f842ba60cdc900c46a61bdbd7ac95a3e140",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-eventmanager": "self.version"
+            },
+            "require-dev": {
+                "doctrine/common": ">=2.1",
+                "fabpot/php-cs-fixer": "1.7.*",
+                "phpunit/phpunit": "~4.0",
+                "satooshi/php-coveralls": "dev-master",
+                "zendframework/zend-stdlib": "self.version"
+            },
+            "suggest": {
+                "doctrine/common": "Doctrine\\Common >=2.1 for annotation features",
+                "zendframework/zend-stdlib": "Zend\\Stdlib component"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Code\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "description": "provides facilities to generate arbitrary code using an object oriented interface",
+            "homepage": "https://github.com/zendframework/zend-code",
+            "keywords": [
+                "code",
+                "zf2"
+            ],
+            "time": "2015-03-31 15:39:14"
+        },
+        {
+            "name": "zendframework/zend-config",
+            "version": "2.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/zend-config.git",
+                "reference": "95f3a4b3fa85d49e6f060183122de4596fa6d29d"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/zend-config/zipball/95f3a4b3fa85d49e6f060183122de4596fa6d29d",
+                "reference": "95f3a4b3fa85d49e6f060183122de4596fa6d29d",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-stdlib": "self.version"
+            },
+            "require-dev": {
+                "fabpot/php-cs-fixer": "1.7.*",
+                "phpunit/phpunit": "~4.0",
+                "satooshi/php-coveralls": "dev-master",
+                "zendframework/zend-filter": "self.version",
+                "zendframework/zend-i18n": "self.version",
+                "zendframework/zend-json": "self.version",
+                "zendframework/zend-servicemanager": "self.version"
+            },
+            "suggest": {
+                "zendframework/zend-filter": "Zend\\Filter component",
+                "zendframework/zend-i18n": "Zend\\I18n component",
+                "zendframework/zend-json": "Zend\\Json to use the Json reader or writer classes",
+                "zendframework/zend-servicemanager": "Zend\\ServiceManager for use with the Config Factory to retrieve reader and writer instances"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Config\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "description": "provides a nested object property based user interface for accessing this configuration data within application code",
+            "homepage": "https://github.com/zendframework/zend-config",
+            "keywords": [
+                "config",
+                "zf2"
+            ],
+            "time": "2015-03-25 20:55:48"
+        },
+        {
+            "name": "zendframework/zend-console",
+            "version": "2.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/zend-console.git",
+                "reference": "54823d9ba6f8ce39046384ee5a043b5b3d5f56d7"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/zend-console/zipball/54823d9ba6f8ce39046384ee5a043b5b3d5f56d7",
+                "reference": "54823d9ba6f8ce39046384ee5a043b5b3d5f56d7",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-stdlib": "self.version"
+            },
+            "require-dev": {
+                "fabpot/php-cs-fixer": "1.7.*",
+                "phpunit/phpunit": "~4.0",
+                "satooshi/php-coveralls": "dev-master"
+            },
+            "suggest": {
+                "zendframework/zend-filter": "To support DefaultRouteMatcher usage",
+                "zendframework/zend-validator": "To support DefaultRouteMatcher usage"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Console\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "homepage": "https://github.com/zendframework/zend-console",
+            "keywords": [
+                "console",
+                "zf2"
+            ],
+            "time": "2015-03-25 20:55:48"
+        },
+        {
+            "name": "zendframework/zend-di",
+            "version": "2.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/zend-di.git",
+                "reference": "b9f8de081adecf71a003a569e9ba76c0a4c00bf2"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/zend-di/zipball/b9f8de081adecf71a003a569e9ba76c0a4c00bf2",
+                "reference": "b9f8de081adecf71a003a569e9ba76c0a4c00bf2",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-code": "self.version",
+                "zendframework/zend-stdlib": "self.version"
+            },
+            "require-dev": {
+                "fabpot/php-cs-fixer": "1.7.*",
+                "phpunit/phpunit": "~4.0",
+                "satooshi/php-coveralls": "dev-master",
+                "zendframework/zend-servicemanager": "self.version"
+            },
+            "suggest": {
+                "zendframework/zend-servicemanager": "Zend\\ServiceManager component"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Di\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "homepage": "https://github.com/zendframework/zend-di",
+            "keywords": [
+                "di",
+                "zf2"
+            ],
+            "time": "2015-03-25 20:55:48"
+        },
+        {
+            "name": "zendframework/zend-escaper",
+            "version": "2.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/zend-escaper.git",
+                "reference": "15e5769e4fcdb4bf07ebd76500810e7070e23a97"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/zend-escaper/zipball/15e5769e4fcdb4bf07ebd76500810e7070e23a97",
+                "reference": "15e5769e4fcdb4bf07ebd76500810e7070e23a97",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23"
+            },
+            "require-dev": {
+                "fabpot/php-cs-fixer": "1.7.*",
+                "phpunit/phpunit": "~4.0",
+                "satooshi/php-coveralls": "dev-master"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Escaper\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "homepage": "https://github.com/zendframework/zend-escaper",
+            "keywords": [
+                "escaper",
+                "zf2"
+            ],
+            "time": "2015-03-23 18:29:14"
+        },
+        {
+            "name": "zendframework/zend-eventmanager",
+            "version": "2.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/zend-eventmanager.git",
+                "reference": "58d21c95c7005a527262fd536499195f104e83f9"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/zend-eventmanager/zipball/58d21c95c7005a527262fd536499195f104e83f9",
+                "reference": "58d21c95c7005a527262fd536499195f104e83f9",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-stdlib": "self.version"
+            },
+            "require-dev": {
+                "fabpot/php-cs-fixer": "1.7.*",
+                "phpunit/phpunit": "~4.0",
+                "satooshi/php-coveralls": "dev-master"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\EventManager\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "homepage": "https://github.com/zendframework/zend-event-manager",
+            "keywords": [
+                "eventmanager",
+                "zf2"
+            ],
+            "time": "2015-03-23 18:29:14"
+        },
+        {
+            "name": "zendframework/zend-filter",
+            "version": "2.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/zend-filter.git",
+                "reference": "6d8aed2da81b62a04747346c4370562cdbe34595"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/zend-filter/zipball/6d8aed2da81b62a04747346c4370562cdbe34595",
+                "reference": "6d8aed2da81b62a04747346c4370562cdbe34595",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-stdlib": "self.version"
+            },
+            "require-dev": {
+                "fabpot/php-cs-fixer": "1.7.*",
+                "phpunit/phpunit": "~4.0",
+                "satooshi/php-coveralls": "dev-master",
+                "zendframework/zend-crypt": "self.version",
+                "zendframework/zend-servicemanager": "self.version",
+                "zendframework/zend-uri": "self.version"
+            },
+            "suggest": {
+                "zendframework/zend-crypt": "Zend\\Crypt component",
+                "zendframework/zend-i18n": "Zend\\I18n component",
+                "zendframework/zend-servicemanager": "Zend\\ServiceManager component",
+                "zendframework/zend-uri": "Zend\\Uri component for UriNormalize filter"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Filter\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "description": "provides a set of commonly needed data filters",
+            "homepage": "https://github.com/zendframework/zend-filter",
+            "keywords": [
+                "filter",
+                "zf2"
+            ],
+            "time": "2015-03-25 20:55:48"
+        },
+        {
+            "name": "zendframework/zend-form",
+            "version": "2.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/zend-form.git",
+                "reference": "bca0db55718355d25c2c10fdd41a83561f1c94b3"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/zend-form/zipball/bca0db55718355d25c2c10fdd41a83561f1c94b3",
+                "reference": "bca0db55718355d25c2c10fdd41a83561f1c94b3",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-inputfilter": "self.version",
+                "zendframework/zend-stdlib": "self.version"
+            },
+            "require-dev": {
+                "fabpot/php-cs-fixer": "1.7.*",
+                "phpunit/phpunit": "~4.0",
+                "satooshi/php-coveralls": "dev-master",
+                "zendframework/zend-captcha": "self.version",
+                "zendframework/zend-code": "self.version",
+                "zendframework/zend-eventmanager": "self.version",
+                "zendframework/zend-filter": "self.version",
+                "zendframework/zend-i18n": "self.version",
+                "zendframework/zend-servicemanager": "self.version",
+                "zendframework/zend-validator": "self.version",
+                "zendframework/zend-view": "self.version",
+                "zendframework/zendservice-recaptcha": "*"
+            },
+            "suggest": {
+                "zendframework/zend-captcha": "Zend\\Captcha component",
+                "zendframework/zend-code": "Zend\\Code component",
+                "zendframework/zend-eventmanager": "Zend\\EventManager component",
+                "zendframework/zend-filter": "Zend\\Filter component",
+                "zendframework/zend-i18n": "Zend\\I18n component",
+                "zendframework/zend-servicemanager": "Zend\\ServiceManager component",
+                "zendframework/zend-validator": "Zend\\Validator component",
+                "zendframework/zend-view": "Zend\\View component",
+                "zendframework/zendservice-recaptcha": "ZendService\\ReCaptcha component"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Form\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "homepage": "https://github.com/zendframework/zend-form",
+            "keywords": [
+                "form",
+                "zf2"
+            ],
+            "time": "2015-03-28 20:29:18"
+        },
+        {
+            "name": "zendframework/zend-http",
+            "version": "2.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/zend-http.git",
+                "reference": "9c6047a0bdb3094d3ea07a215ff929cc47de4deb"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/zend-http/zipball/9c6047a0bdb3094d3ea07a215ff929cc47de4deb",
+                "reference": "9c6047a0bdb3094d3ea07a215ff929cc47de4deb",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-loader": "self.version",
+                "zendframework/zend-stdlib": "self.version",
+                "zendframework/zend-uri": "self.version",
+                "zendframework/zend-validator": "self.version"
+            },
+            "require-dev": {
+                "fabpot/php-cs-fixer": "1.7.*",
+                "phpunit/phpunit": "~4.0",
+                "satooshi/php-coveralls": "dev-master"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Http\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "description": "provides an easy interface for performing Hyper-Text Transfer Protocol (HTTP) requests",
+            "homepage": "https://github.com/zendframework/zend-http",
+            "keywords": [
+                "http",
+                "zf2"
+            ],
+            "time": "2015-03-27 15:46:30"
+        },
+        {
+            "name": "zendframework/zend-i18n",
+            "version": "2.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/zend-i18n.git",
+                "reference": "9aebc5287373a802540d75fe5508417f866c2e52"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/zend-i18n/zipball/9aebc5287373a802540d75fe5508417f866c2e52",
+                "reference": "9aebc5287373a802540d75fe5508417f866c2e52",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-stdlib": "self.version"
+            },
+            "require-dev": {
+                "fabpot/php-cs-fixer": "1.7.*",
+                "phpunit/phpunit": "~4.0",
+                "satooshi/php-coveralls": "dev-master",
+                "zendframework/zend-cache": "self.version",
+                "zendframework/zend-config": "self.version",
+                "zendframework/zend-eventmanager": "self.version",
+                "zendframework/zend-filter": "self.version",
+                "zendframework/zend-servicemanager": "self.version",
+                "zendframework/zend-validator": "self.version",
+                "zendframework/zend-view": "self.version"
+            },
+            "suggest": {
+                "ext-intl": "Required for most features of Zend\\I18n; included in default builds of PHP",
+                "zendframework/zend-cache": "Zend\\Cache component",
+                "zendframework/zend-config": "Zend\\Config component",
+                "zendframework/zend-eventmanager": "You should install this package to use the events in the translator",
+                "zendframework/zend-filter": "You should install this package to use the provided filters",
+                "zendframework/zend-resources": "Translation resources",
+                "zendframework/zend-servicemanager": "Zend\\ServiceManager component",
+                "zendframework/zend-validator": "You should install this package to use the provided validators",
+                "zendframework/zend-view": "You should install this package to use the provided view helpers"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\I18n\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "homepage": "https://github.com/zendframework/zend-i18n",
+            "keywords": [
+                "i18n",
+                "zf2"
+            ],
+            "time": "2015-03-25 20:55:48"
+        },
+        {
+            "name": "zendframework/zend-inputfilter",
+            "version": "2.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/zend-inputfilter.git",
+                "reference": "4b1398f3635fae3cc5e873c5bb067274f3d10a93"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/zend-inputfilter/zipball/4b1398f3635fae3cc5e873c5bb067274f3d10a93",
+                "reference": "4b1398f3635fae3cc5e873c5bb067274f3d10a93",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-filter": "self.version",
+                "zendframework/zend-stdlib": "self.version",
+                "zendframework/zend-validator": "self.version"
+            },
+            "require-dev": {
+                "fabpot/php-cs-fixer": "1.7.*",
+                "phpunit/phpunit": "~4.0",
+                "satooshi/php-coveralls": "dev-master",
+                "zendframework/zend-servicemanager": "self.version"
+            },
+            "suggest": {
+                "zendframework/zend-servicemanager": "To support plugin manager support"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\InputFilter\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "homepage": "https://github.com/zendframework/zend-input-filter",
+            "keywords": [
+                "inputfilter",
+                "zf2"
+            ],
+            "time": "2015-03-23 18:29:14"
+        },
+        {
+            "name": "zendframework/zend-json",
+            "version": "2.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/zend-json.git",
+                "reference": "2d845e151c1b9a237cf1899ac31e17fb10bd1e3f"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/zend-json/zipball/2d845e151c1b9a237cf1899ac31e17fb10bd1e3f",
+                "reference": "2d845e151c1b9a237cf1899ac31e17fb10bd1e3f",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-stdlib": "self.version"
+            },
+            "require-dev": {
+                "fabpot/php-cs-fixer": "1.7.*",
+                "phpunit/phpunit": "~4.0",
+                "satooshi/php-coveralls": "dev-master",
+                "zendframework/zend-http": "self.version",
+                "zendframework/zend-server": "self.version"
+            },
+            "suggest": {
+                "zendframework/zend-http": "Zend\\Http component",
+                "zendframework/zend-server": "Zend\\Server component",
+                "zendframework/zendxml": "To support Zend\\Json\\Json::fromXml() usage"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Json\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "description": "provides convenience methods for serializing native PHP to JSON and decoding JSON to native PHP",
+            "homepage": "https://github.com/zendframework/zend-json",
+            "keywords": [
+                "json",
+                "zf2"
+            ],
+            "time": "2015-03-25 20:55:48"
+        },
+        {
+            "name": "zendframework/zend-loader",
+            "version": "2.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/zend-loader.git",
+                "reference": "65de2c7a56f8eee633c6bf1cfab73e45648880d4"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/zend-loader/zipball/65de2c7a56f8eee633c6bf1cfab73e45648880d4",
+                "reference": "65de2c7a56f8eee633c6bf1cfab73e45648880d4",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23"
+            },
+            "require-dev": {
+                "fabpot/php-cs-fixer": "1.7.*",
+                "phpunit/phpunit": "~4.0",
+                "satooshi/php-coveralls": "dev-master"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Loader\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "homepage": "https://github.com/zendframework/zend-loader",
+            "keywords": [
+                "loader",
+                "zf2"
+            ],
+            "time": "2015-03-23 18:29:14"
+        },
+        {
+            "name": "zendframework/zend-log",
+            "version": "2.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/zend-log.git",
+                "reference": "002e3c810cad7e31e51c9895e9e3cb6fbd312cdd"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/zend-log/zipball/002e3c810cad7e31e51c9895e9e3cb6fbd312cdd",
+                "reference": "002e3c810cad7e31e51c9895e9e3cb6fbd312cdd",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-servicemanager": "self.version",
+                "zendframework/zend-stdlib": "self.version"
+            },
+            "require-dev": {
+                "fabpot/php-cs-fixer": "1.7.*",
+                "phpunit/phpunit": "~4.0",
+                "satooshi/php-coveralls": "dev-master",
+                "zendframework/zend-console": "self.version",
+                "zendframework/zend-db": "self.version",
+                "zendframework/zend-escaper": "self.version",
+                "zendframework/zend-mail": "self.version",
+                "zendframework/zend-validator": "self.version"
+            },
+            "suggest": {
+                "ext-mongo": "*",
+                "zendframework/zend-console": "Zend\\Console component",
+                "zendframework/zend-db": "Zend\\Db component",
+                "zendframework/zend-escaper": "Zend\\Escaper component, for use in the XML formatter",
+                "zendframework/zend-mail": "Zend\\Mail component",
+                "zendframework/zend-validator": "Zend\\Validator component"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Log\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "description": "component for general purpose logging",
+            "homepage": "https://github.com/zendframework/zend-log",
+            "keywords": [
+                "log",
+                "logging",
+                "zf2"
+            ],
+            "time": "2015-03-25 20:55:48"
+        },
+        {
+            "name": "zendframework/zend-math",
+            "version": "2.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/zend-math.git",
+                "reference": "f41fe4acfd809c14f2a802d1aa45dec8fcd2cc73"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/zend-math/zipball/f41fe4acfd809c14f2a802d1aa45dec8fcd2cc73",
+                "reference": "f41fe4acfd809c14f2a802d1aa45dec8fcd2cc73",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23"
+            },
+            "require-dev": {
+                "fabpot/php-cs-fixer": "1.7.*",
+                "phpunit/phpunit": "~4.0",
+                "satooshi/php-coveralls": "dev-master"
+            },
+            "suggest": {
+                "ext-bcmath": "If using the bcmath functionality",
+                "ext-gmp": "If using the gmp functionality",
+                "ircmaxell/random-lib": "Fallback random byte generator for Zend\\Math\\Rand if OpenSSL/Mcrypt extensions are unavailable",
+                "zendframework/zend-servicemanager": ">= current version, if using the BigInteger::factory functionality"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Math\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "homepage": "https://github.com/zendframework/zend-math",
+            "keywords": [
+                "math",
+                "zf2"
+            ],
+            "time": "2015-03-23 18:29:14"
+        },
+        {
+            "name": "zendframework/zend-modulemanager",
+            "version": "2.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/zend-modulemanager.git",
+                "reference": "af7ae3cd29a1efb73cc66ae1081e606039d5c20f"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/zend-modulemanager/zipball/af7ae3cd29a1efb73cc66ae1081e606039d5c20f",
+                "reference": "af7ae3cd29a1efb73cc66ae1081e606039d5c20f",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-eventmanager": "self.version",
+                "zendframework/zend-stdlib": "self.version"
+            },
+            "require-dev": {
+                "fabpot/php-cs-fixer": "1.7.*",
+                "phpunit/phpunit": "~4.0",
+                "satooshi/php-coveralls": "dev-master",
+                "zendframework/zend-config": "self.version",
+                "zendframework/zend-console": "self.version",
+                "zendframework/zend-loader": "self.version",
+                "zendframework/zend-servicemanager": "self.version"
+            },
+            "suggest": {
+                "zendframework/zend-config": "Zend\\Config component",
+                "zendframework/zend-console": "Zend\\Console component",
+                "zendframework/zend-loader": "Zend\\Loader component",
+                "zendframework/zend-mvc": "Zend\\Mvc component",
+                "zendframework/zend-servicemanager": "Zend\\ServiceManager component"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\ModuleManager\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "homepage": "https://github.com/zendframework/zend-module-manager",
+            "keywords": [
+                "modulemanager",
+                "zf2"
+            ],
+            "time": "2015-03-23 18:29:14"
+        },
+        {
+            "name": "zendframework/zend-mvc",
+            "version": "2.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/zend-mvc.git",
+                "reference": "0b4a4a829b30be510a3f215c4ff00c703ee8b431"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/zend-mvc/zipball/0b4a4a829b30be510a3f215c4ff00c703ee8b431",
+                "reference": "0b4a4a829b30be510a3f215c4ff00c703ee8b431",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-eventmanager": "self.version",
+                "zendframework/zend-form": "self.version",
+                "zendframework/zend-servicemanager": "self.version",
+                "zendframework/zend-stdlib": "self.version"
+            },
+            "require-dev": {
+                "fabpot/php-cs-fixer": "1.7.*",
+                "phpunit/phpunit": "~4.0",
+                "satooshi/php-coveralls": "dev-master",
+                "zendframework/zend-authentication": "self.version",
+                "zendframework/zend-console": "self.version",
+                "zendframework/zend-di": "self.version",
+                "zendframework/zend-filter": "self.version",
+                "zendframework/zend-http": "self.version",
+                "zendframework/zend-i18n": "self.version",
+                "zendframework/zend-inputfilter": "self.version",
+                "zendframework/zend-json": "self.version",
+                "zendframework/zend-log": "self.version",
+                "zendframework/zend-modulemanager": "self.version",
+                "zendframework/zend-serializer": "self.version",
+                "zendframework/zend-session": "self.version",
+                "zendframework/zend-text": "self.version",
+                "zendframework/zend-uri": "self.version",
+                "zendframework/zend-validator": "self.version",
+                "zendframework/zend-version": "self.version",
+                "zendframework/zend-view": "self.version"
+            },
+            "suggest": {
+                "zendframework/zend-authentication": "Zend\\Authentication component for Identity plugin",
+                "zendframework/zend-config": "Zend\\Config component",
+                "zendframework/zend-console": "Zend\\Console component",
+                "zendframework/zend-di": "Zend\\Di component",
+                "zendframework/zend-filter": "Zend\\Filter component",
+                "zendframework/zend-http": "Zend\\Http component",
+                "zendframework/zend-i18n": "Zend\\I18n component for translatable segments",
+                "zendframework/zend-inputfilter": "Zend\\Inputfilter component",
+                "zendframework/zend-json": "Zend\\Json component",
+                "zendframework/zend-log": "Zend\\Log component",
+                "zendframework/zend-modulemanager": "Zend\\ModuleManager component",
+                "zendframework/zend-serializer": "Zend\\Serializer component",
+                "zendframework/zend-session": "Zend\\Session component for FlashMessenger, PRG, and FPRG plugins",
+                "zendframework/zend-stdlib": "Zend\\Stdlib component",
+                "zendframework/zend-text": "Zend\\Text component",
+                "zendframework/zend-uri": "Zend\\Uri component",
+                "zendframework/zend-validator": "Zend\\Validator component",
+                "zendframework/zend-version": "Zend\\Version component",
+                "zendframework/zend-view": "Zend\\View component"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Mvc\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "homepage": "https://github.com/zendframework/zend-mvc",
+            "keywords": [
+                "mvc",
+                "zf2"
+            ],
+            "time": "2015-03-26 18:55:14"
+        },
+        {
+            "name": "zendframework/zend-serializer",
+            "version": "2.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/zend-serializer.git",
+                "reference": "3c531789a9882a5deb721356a7bd2642b65d4b09"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/zend-serializer/zipball/3c531789a9882a5deb721356a7bd2642b65d4b09",
+                "reference": "3c531789a9882a5deb721356a7bd2642b65d4b09",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-json": "self.version",
+                "zendframework/zend-math": "self.version",
+                "zendframework/zend-stdlib": "self.version"
+            },
+            "require-dev": {
+                "fabpot/php-cs-fixer": "1.7.*",
+                "phpunit/phpunit": "~4.0",
+                "satooshi/php-coveralls": "dev-master",
+                "zendframework/zend-servicemanager": "self.version"
+            },
+            "suggest": {
+                "zendframework/zend-servicemanager": "To support plugin manager support"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Serializer\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "description": "provides an adapter based interface to simply generate storable representation of PHP types by different facilities, and recover",
+            "homepage": "https://github.com/zendframework/zend-serializer",
+            "keywords": [
+                "serializer",
+                "zf2"
+            ],
+            "time": "2015-03-25 20:55:48"
+        },
+        {
+            "name": "zendframework/zend-server",
+            "version": "2.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/zend-server.git",
+                "reference": "d11ff0bd529d202022823d4accf5983cbd50fc49"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/zend-server/zipball/d11ff0bd529d202022823d4accf5983cbd50fc49",
+                "reference": "d11ff0bd529d202022823d4accf5983cbd50fc49",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-code": "self.version",
+                "zendframework/zend-stdlib": "self.version"
+            },
+            "require-dev": {
+                "fabpot/php-cs-fixer": "1.7.*",
+                "phpunit/phpunit": "~4.0",
+                "satooshi/php-coveralls": "dev-master"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Server\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "homepage": "https://github.com/zendframework/zend-server",
+            "keywords": [
+                "server",
+                "zf2"
+            ],
+            "time": "2015-03-25 20:55:48"
+        },
+        {
+            "name": "zendframework/zend-servicemanager",
+            "version": "2.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/zend-servicemanager.git",
+                "reference": "57cf99fa5ac08c05a135a8d0d676c52a5e450083"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/zend-servicemanager/zipball/57cf99fa5ac08c05a135a8d0d676c52a5e450083",
+                "reference": "57cf99fa5ac08c05a135a8d0d676c52a5e450083",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23"
+            },
+            "require-dev": {
+                "fabpot/php-cs-fixer": "1.7.*",
+                "phpunit/phpunit": "~4.0",
+                "satooshi/php-coveralls": "dev-master",
+                "zendframework/zend-di": "self.version"
+            },
+            "suggest": {
+                "ocramius/proxy-manager": "ProxyManager 0.5.* to handle lazy initialization of services",
+                "zendframework/zend-di": "Zend\\Di component"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\ServiceManager\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "homepage": "https://github.com/zendframework/zend-service-manager",
+            "keywords": [
+                "servicemanager",
+                "zf2"
+            ],
+            "time": "2015-03-23 18:29:14"
+        },
+        {
+            "name": "zendframework/zend-soap",
+            "version": "2.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/zend-soap.git",
+                "reference": "a599463aba97ce247faf3fb443e3c7858b46449b"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/zend-soap/zipball/a599463aba97ce247faf3fb443e3c7858b46449b",
+                "reference": "a599463aba97ce247faf3fb443e3c7858b46449b",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-server": "self.version",
+                "zendframework/zend-stdlib": "self.version",
+                "zendframework/zend-uri": "self.version"
+            },
+            "require-dev": {
+                "fabpot/php-cs-fixer": "1.7.*",
+                "phpunit/phpunit": "~4.0",
+                "satooshi/php-coveralls": "dev-master",
+                "zendframework/zend-http": "self.version"
+            },
+            "suggest": {
+                "zendframework/zend-http": "Zend\\Http component"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Soap\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "homepage": "https://github.com/zendframework/zend-soap",
+            "keywords": [
+                "soap",
+                "zf2"
+            ],
+            "time": "2015-03-25 20:55:48"
+        },
+        {
+            "name": "zendframework/zend-stdlib",
+            "version": "2.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/zend-stdlib.git",
+                "reference": "cf05c5ba75606e47ffee91cedc72778da46f74c3"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/zend-stdlib/zipball/cf05c5ba75606e47ffee91cedc72778da46f74c3",
+                "reference": "cf05c5ba75606e47ffee91cedc72778da46f74c3",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23"
+            },
+            "require-dev": {
+                "fabpot/php-cs-fixer": "1.7.*",
+                "phpunit/phpunit": "~4.0",
+                "satooshi/php-coveralls": "dev-master",
+                "zendframework/zend-eventmanager": "self.version",
+                "zendframework/zend-filter": "self.version",
+                "zendframework/zend-serializer": "self.version",
+                "zendframework/zend-servicemanager": "self.version"
+            },
+            "suggest": {
+                "zendframework/zend-eventmanager": "To support aggregate hydrator usage",
+                "zendframework/zend-filter": "To support naming strategy hydrator usage",
+                "zendframework/zend-serializer": "Zend\\Serializer component",
+                "zendframework/zend-servicemanager": "To support hydrator plugin manager usage"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Stdlib\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "homepage": "https://github.com/zendframework/zend-stdlib",
+            "keywords": [
+                "stdlib",
+                "zf2"
+            ],
+            "time": "2015-03-25 20:55:48"
+        },
+        {
+            "name": "zendframework/zend-text",
+            "version": "2.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/zend-text.git",
+                "reference": "d962ea25647b20527f3ca34ae225bbc885dabfc7"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/zend-text/zipball/d962ea25647b20527f3ca34ae225bbc885dabfc7",
+                "reference": "d962ea25647b20527f3ca34ae225bbc885dabfc7",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-servicemanager": "self.version",
+                "zendframework/zend-stdlib": "self.version"
+            },
+            "require-dev": {
+                "fabpot/php-cs-fixer": "1.7.*",
+                "phpunit/phpunit": "~4.0",
+                "satooshi/php-coveralls": "dev-master"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Text\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "homepage": "https://github.com/zendframework/zend-text",
+            "keywords": [
+                "text",
+                "zf2"
+            ],
+            "time": "2015-03-25 20:55:48"
+        },
+        {
+            "name": "zendframework/zend-uri",
+            "version": "2.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/zend-uri.git",
+                "reference": "bd9e625639415376f6a82551c73328448d7bc7d1"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/zend-uri/zipball/bd9e625639415376f6a82551c73328448d7bc7d1",
+                "reference": "bd9e625639415376f6a82551c73328448d7bc7d1",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-escaper": "self.version",
+                "zendframework/zend-validator": "self.version"
+            },
+            "require-dev": {
+                "fabpot/php-cs-fixer": "1.7.*",
+                "phpunit/phpunit": "~4.0",
+                "satooshi/php-coveralls": "dev-master"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Uri\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "description": "a component that aids in manipulating and validating » Uniform Resource Identifiers (URIs)",
+            "homepage": "https://github.com/zendframework/zend-uri",
+            "keywords": [
+                "uri",
+                "zf2"
+            ],
+            "time": "2015-03-25 20:55:48"
+        },
+        {
+            "name": "zendframework/zend-validator",
+            "version": "2.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/zend-validator.git",
+                "reference": "45fac2545a0f2eb66d71cb7966feee481e7c475f"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/zend-validator/zipball/45fac2545a0f2eb66d71cb7966feee481e7c475f",
+                "reference": "45fac2545a0f2eb66d71cb7966feee481e7c475f",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-stdlib": "self.version"
+            },
+            "require-dev": {
+                "fabpot/php-cs-fixer": "1.7.*",
+                "phpunit/phpunit": "~4.0",
+                "satooshi/php-coveralls": "dev-master",
+                "zendframework/zend-db": "self.version",
+                "zendframework/zend-filter": "self.version",
+                "zendframework/zend-i18n": "self.version",
+                "zendframework/zend-math": "self.version",
+                "zendframework/zend-servicemanager": "self.version",
+                "zendframework/zend-session": "self.version",
+                "zendframework/zend-uri": "self.version"
+            },
+            "suggest": {
+                "zendframework/zend-db": "Zend\\Db component",
+                "zendframework/zend-filter": "Zend\\Filter component, required by the Digits validator",
+                "zendframework/zend-i18n": "Zend\\I18n component to allow translation of validation error messages as well as to use the various Date validators",
+                "zendframework/zend-math": "Zend\\Math component",
+                "zendframework/zend-resources": "Translations of validator messages",
+                "zendframework/zend-servicemanager": "Zend\\ServiceManager component to allow using the ValidatorPluginManager and validator chains",
+                "zendframework/zend-session": "Zend\\Session component",
+                "zendframework/zend-uri": "Zend\\Uri component, required by the Uri and Sitemap\\Loc validators"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Validator\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "description": "provides a set of commonly needed validators",
+            "homepage": "https://github.com/zendframework/zend-validator",
+            "keywords": [
+                "validator",
+                "zf2"
+            ],
+            "time": "2015-03-25 20:55:48"
+        },
+        {
+            "name": "zendframework/zend-view",
+            "version": "2.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/zend-view.git",
+                "reference": "37beb1ad46e530f627b4b6c3716efd728e976ba9"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/zend-view/zipball/37beb1ad46e530f627b4b6c3716efd728e976ba9",
+                "reference": "37beb1ad46e530f627b4b6c3716efd728e976ba9",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-eventmanager": "self.version",
+                "zendframework/zend-loader": "self.version",
+                "zendframework/zend-stdlib": "self.version"
+            },
+            "require-dev": {
+                "fabpot/php-cs-fixer": "1.7.*",
+                "phpunit/phpunit": "~4.0",
+                "satooshi/php-coveralls": "dev-master",
+                "zendframework/zend-authentication": "self.version",
+                "zendframework/zend-escaper": "self.version",
+                "zendframework/zend-feed": "self.version",
+                "zendframework/zend-filter": "self.version",
+                "zendframework/zend-http": "self.version",
+                "zendframework/zend-i18n": "self.version",
+                "zendframework/zend-json": "self.version",
+                "zendframework/zend-mvc": "self.version",
+                "zendframework/zend-navigation": "self.version",
+                "zendframework/zend-paginator": "self.version",
+                "zendframework/zend-permissions-acl": "self.version",
+                "zendframework/zend-servicemanager": "self.version",
+                "zendframework/zend-uri": "self.version"
+            },
+            "suggest": {
+                "zendframework/zend-authentication": "Zend\\Authentication component",
+                "zendframework/zend-escaper": "Zend\\Escaper component",
+                "zendframework/zend-feed": "Zend\\Feed component",
+                "zendframework/zend-filter": "Zend\\Filter component",
+                "zendframework/zend-http": "Zend\\Http component",
+                "zendframework/zend-i18n": "Zend\\I18n component",
+                "zendframework/zend-json": "Zend\\Json component",
+                "zendframework/zend-mvc": "Zend\\Mvc component",
+                "zendframework/zend-navigation": "Zend\\Navigation component",
+                "zendframework/zend-paginator": "Zend\\Paginator component",
+                "zendframework/zend-permissions-acl": "Zend\\Permissions\\Acl component",
+                "zendframework/zend-servicemanager": "Zend\\ServiceManager component",
+                "zendframework/zend-uri": "Zend\\Uri component"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\View\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "description": "provides a system of helpers, output filters, and variable escaping",
+            "homepage": "https://github.com/zendframework/zend-view",
+            "keywords": [
+                "view",
+                "zf2"
+            ],
+            "time": "2015-03-25 20:55:48"
+        }
+    ],
+    "packages-dev": [
+        {
+            "name": "doctrine/instantiator",
+            "version": "1.0.4",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/doctrine/instantiator.git",
+                "reference": "f976e5de371104877ebc89bd8fecb0019ed9c119"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/doctrine/instantiator/zipball/f976e5de371104877ebc89bd8fecb0019ed9c119",
+                "reference": "f976e5de371104877ebc89bd8fecb0019ed9c119",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3,<8.0-DEV"
+            },
+            "require-dev": {
+                "athletic/athletic": "~0.1.8",
+                "ext-pdo": "*",
+                "ext-phar": "*",
+                "phpunit/phpunit": "~4.0",
+                "squizlabs/php_codesniffer": "2.0.*@ALPHA"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Doctrine\\Instantiator\\": "src"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Marco Pivetta",
+                    "email": "ocramius@gmail.com",
+                    "homepage": "http://ocramius.github.com/"
+                }
+            ],
+            "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
+            "homepage": "https://github.com/doctrine/instantiator",
+            "keywords": [
+                "constructor",
+                "instantiate"
+            ],
+            "time": "2014-10-13 12:58:55"
+        },
+        {
+            "name": "fabpot/php-cs-fixer",
+            "version": "v1.8",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git",
+                "reference": "93c723fe0c50ed54292006e7249a4c1173cf5847"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/93c723fe0c50ed54292006e7249a4c1173cf5847",
+                "reference": "93c723fe0c50ed54292006e7249a4c1173cf5847",
+                "shasum": ""
+            },
+            "require": {
+                "ext-tokenizer": "*",
+                "php": ">=5.3.6",
+                "sebastian/diff": "~1.1",
+                "symfony/console": "~2.3",
+                "symfony/event-dispatcher": "~2.1",
+                "symfony/filesystem": "~2.1",
+                "symfony/finder": "~2.1",
+                "symfony/process": "~2.3",
+                "symfony/stopwatch": "~2.5"
+            },
+            "require-dev": {
+                "satooshi/php-coveralls": "0.7.*@dev"
+            },
+            "bin": [
+                "php-cs-fixer"
+            ],
+            "type": "application",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\CS\\": "Symfony/CS/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Dariusz Rumiński",
+                    "email": "dariusz.ruminski@gmail.com"
+                },
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                }
+            ],
+            "description": "A tool to automatically fix PHP code style",
+            "time": "2015-05-04 17:06:20"
+        },
+        {
+            "name": "league/climate",
+            "version": "2.6.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/thephpleague/climate.git",
+                "reference": "28851c909017424f61cc6a62089316313c645d1c"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/thephpleague/climate/zipball/28851c909017424f61cc6a62089316313c645d1c",
+                "reference": "28851c909017424f61cc6a62089316313c645d1c",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.4.0"
+            },
+            "require-dev": {
+                "mockery/mockery": "dev-master",
+                "phpunit/phpunit": "4.1.*"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "League\\CLImate\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Joe Tannenbaum",
+                    "email": "hey@joe.codes",
+                    "homepage": "http://joe.codes/",
+                    "role": "Developer"
+                }
+            ],
+            "description": "PHP's best friend for the terminal. CLImate allows you to easily output colored text, special formats, and more.",
+            "keywords": [
+                "cli",
+                "colors",
+                "command",
+                "php",
+                "terminal"
+            ],
+            "time": "2015-01-18 14:31:58"
+        },
+        {
+            "name": "lusitanian/oauth",
+            "version": "v0.3.5",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/Lusitanian/PHPoAuthLib.git",
+                "reference": "ac5a1cd5a4519143728dce2213936eea302edf8a"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/Lusitanian/PHPoAuthLib/zipball/ac5a1cd5a4519143728dce2213936eea302edf8a",
+                "reference": "ac5a1cd5a4519143728dce2213936eea302edf8a",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "3.7.*",
+                "predis/predis": "0.8.*@dev",
+                "symfony/http-foundation": "~2.1"
+            },
+            "suggest": {
+                "ext-openssl": "Allows for usage of secure connections with the stream-based HTTP client.",
+                "predis/predis": "Allows using the Redis storage backend.",
+                "symfony/http-foundation": "Allows using the Symfony Session storage backend."
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "0.1-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "OAuth": "src",
+                    "OAuth\\Unit": "tests"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "David Desberg",
+                    "email": "david@daviddesberg.com"
+                },
+                {
+                    "name": "Pieter Hordijk",
+                    "email": "info@pieterhordijk.com"
+                }
+            ],
+            "description": "PHP 5.3+ oAuth 1/2 Library",
+            "keywords": [
+                "Authentication",
+                "authorization",
+                "oauth",
+                "security"
+            ],
+            "time": "2014-09-05 15:19:58"
+        },
+        {
+            "name": "pdepend/pdepend",
+            "version": "2.0.6",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/pdepend/pdepend.git",
+                "reference": "a15ffcbfbcc4570d4a733ca7b76e9cac0a56c3f4"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/pdepend/pdepend/zipball/a15ffcbfbcc4570d4a733ca7b76e9cac0a56c3f4",
+                "reference": "a15ffcbfbcc4570d4a733ca7b76e9cac0a56c3f4",
+                "shasum": ""
+            },
+            "require": {
+                "symfony/config": ">=2.4",
+                "symfony/dependency-injection": ">=2.4",
+                "symfony/filesystem": ">=2.4"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "4.*@stable",
+                "squizlabs/php_codesniffer": "@stable"
+            },
+            "bin": [
+                "src/bin/pdepend"
+            ],
+            "type": "library",
+            "autoload": {
+                "psr-0": {
+                    "PDepend\\": "src/main/php/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "description": "Official version of pdepend to be handled with Composer",
+            "time": "2015-03-02 08:06:43"
+        },
+        {
+            "name": "phpmd/phpmd",
+            "version": "2.2.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/phpmd/phpmd.git",
+                "reference": "7dc4a6b5c07b119ab5da7960b56303fa6855eb84"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/phpmd/phpmd/zipball/7dc4a6b5c07b119ab5da7960b56303fa6855eb84",
+                "reference": "7dc4a6b5c07b119ab5da7960b56303fa6855eb84",
+                "shasum": ""
+            },
+            "require": {
+                "pdepend/pdepend": "2.0.*",
+                "php": ">=5.3.0",
+                "symfony/config": ">=2.4",
+                "symfony/dependency-injection": ">=2.4",
+                "symfony/filesystem": ">=2.4"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "*",
+                "squizlabs/php_codesniffer": "*"
+            },
+            "bin": [
+                "src/bin/phpmd"
+            ],
+            "type": "project",
+            "autoload": {
+                "psr-0": {
+                    "PHPMD\\": "src/main/php"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Manuel Pichler",
+                    "email": "github@manuel-pichler.de",
+                    "homepage": "https://github.com/manuelpichler",
+                    "role": "Project founder"
+                },
+                {
+                    "name": "Other contributors",
+                    "homepage": "https://github.com/phpmd/phpmd/graphs/contributors",
+                    "role": "Contributors"
+                }
+            ],
+            "description": "PHPMD is a spin-off project of PHP Depend and aims to be a PHP equivalent of the well known Java tool PMD.",
+            "homepage": "http://phpmd.org/",
+            "keywords": [
+                "mess detection",
+                "mess detector",
+                "pdepend",
+                "phpmd",
+                "pmd"
+            ],
+            "time": "2015-03-26 07:47:05"
+        },
+        {
+            "name": "phpunit/php-code-coverage",
+            "version": "2.0.16",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
+                "reference": "934fd03eb6840508231a7f73eb8940cf32c3b66c"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/934fd03eb6840508231a7f73eb8940cf32c3b66c",
+                "reference": "934fd03eb6840508231a7f73eb8940cf32c3b66c",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3",
+                "phpunit/php-file-iterator": "~1.3",
+                "phpunit/php-text-template": "~1.2",
+                "phpunit/php-token-stream": "~1.3",
+                "sebastian/environment": "~1.0",
+                "sebastian/version": "~1.0"
+            },
+            "require-dev": {
+                "ext-xdebug": ">=2.1.4",
+                "phpunit/phpunit": "~4"
+            },
+            "suggest": {
+                "ext-dom": "*",
+                "ext-xdebug": ">=2.2.1",
+                "ext-xmlwriter": "*"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.0.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sb@sebastian-bergmann.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
+            "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
+            "keywords": [
+                "coverage",
+                "testing",
+                "xunit"
+            ],
+            "time": "2015-04-11 04:35:00"
+        },
+        {
+            "name": "phpunit/php-file-iterator",
+            "version": "1.3.4",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
+                "reference": "acd690379117b042d1c8af1fafd61bde001bf6bb"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/acd690379117b042d1c8af1fafd61bde001bf6bb",
+                "reference": "acd690379117b042d1c8af1fafd61bde001bf6bb",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "type": "library",
+            "autoload": {
+                "classmap": [
+                    "File/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "include-path": [
+                ""
+            ],
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sb@sebastian-bergmann.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "FilterIterator implementation that filters files based on a list of suffixes.",
+            "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
+            "keywords": [
+                "filesystem",
+                "iterator"
+            ],
+            "time": "2013-10-10 15:34:57"
+        },
+        {
+            "name": "phpunit/php-text-template",
+            "version": "1.2.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-text-template.git",
+                "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/206dfefc0ffe9cebf65c413e3d0e809c82fbf00a",
+                "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "type": "library",
+            "autoload": {
+                "classmap": [
+                    "Text/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "include-path": [
+                ""
+            ],
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sb@sebastian-bergmann.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Simple template engine.",
+            "homepage": "https://github.com/sebastianbergmann/php-text-template/",
+            "keywords": [
+                "template"
+            ],
+            "time": "2014-01-30 17:20:04"
+        },
+        {
+            "name": "phpunit/php-timer",
+            "version": "1.0.5",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-timer.git",
+                "reference": "19689d4354b295ee3d8c54b4f42c3efb69cbc17c"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/19689d4354b295ee3d8c54b4f42c3efb69cbc17c",
+                "reference": "19689d4354b295ee3d8c54b4f42c3efb69cbc17c",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "type": "library",
+            "autoload": {
+                "classmap": [
+                    "PHP/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "include-path": [
+                ""
+            ],
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sb@sebastian-bergmann.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Utility class for timing",
+            "homepage": "https://github.com/sebastianbergmann/php-timer/",
+            "keywords": [
+                "timer"
+            ],
+            "time": "2013-08-02 07:42:54"
+        },
+        {
+            "name": "phpunit/php-token-stream",
+            "version": "1.4.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-token-stream.git",
+                "reference": "eab81d02569310739373308137284e0158424330"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/eab81d02569310739373308137284e0158424330",
+                "reference": "eab81d02569310739373308137284e0158424330",
+                "shasum": ""
+            },
+            "require": {
+                "ext-tokenizer": "*",
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~4.2"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.4-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Wrapper around PHP's tokenizer extension.",
+            "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
+            "keywords": [
+                "tokenizer"
+            ],
+            "time": "2015-04-08 04:46:07"
+        },
+        {
+            "name": "phpunit/phpunit",
+            "version": "4.1.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/phpunit.git",
+                "reference": "efb1b1334605594417a3bd466477772d06d460a8"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/efb1b1334605594417a3bd466477772d06d460a8",
+                "reference": "efb1b1334605594417a3bd466477772d06d460a8",
+                "shasum": ""
+            },
+            "require": {
+                "ext-dom": "*",
+                "ext-json": "*",
+                "ext-pcre": "*",
+                "ext-reflection": "*",
+                "ext-spl": "*",
+                "php": ">=5.3.3",
+                "phpunit/php-code-coverage": "~2.0",
+                "phpunit/php-file-iterator": "~1.3.1",
+                "phpunit/php-text-template": "~1.2",
+                "phpunit/php-timer": "~1.0.2",
+                "phpunit/phpunit-mock-objects": "~2.1",
+                "sebastian/comparator": "~1.0",
+                "sebastian/diff": "~1.1",
+                "sebastian/environment": "~1.0",
+                "sebastian/exporter": "~1.0",
+                "sebastian/version": "~1.0",
+                "symfony/yaml": "~2.0"
+            },
+            "suggest": {
+                "phpunit/php-invoker": "~1.1"
+            },
+            "bin": [
+                "phpunit"
+            ],
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "4.1.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "include-path": [
+                "",
+                "../../symfony/yaml/"
+            ],
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "The PHP Unit Testing framework.",
+            "homepage": "http://www.phpunit.de/",
+            "keywords": [
+                "phpunit",
+                "testing",
+                "xunit"
+            ],
+            "time": "2014-05-02 07:13:40"
+        },
+        {
+            "name": "phpunit/phpunit-mock-objects",
+            "version": "2.3.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
+                "reference": "74ffb87f527f24616f72460e54b595f508dccb5c"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/74ffb87f527f24616f72460e54b595f508dccb5c",
+                "reference": "74ffb87f527f24616f72460e54b595f508dccb5c",
+                "shasum": ""
+            },
+            "require": {
+                "doctrine/instantiator": "~1.0,>=1.0.2",
+                "php": ">=5.3.3",
+                "phpunit/php-text-template": "~1.2"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~4.4"
+            },
+            "suggest": {
+                "ext-soap": "*"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sb@sebastian-bergmann.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Mock Object library for PHPUnit",
+            "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
+            "keywords": [
+                "mock",
+                "xunit"
+            ],
+            "time": "2015-04-02 05:36:41"
+        },
+        {
+            "name": "sebastian/comparator",
+            "version": "1.1.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/comparator.git",
+                "reference": "1dd8869519a225f7f2b9eb663e225298fade819e"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1dd8869519a225f7f2b9eb663e225298fade819e",
+                "reference": "1dd8869519a225f7f2b9eb663e225298fade819e",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3",
+                "sebastian/diff": "~1.2",
+                "sebastian/exporter": "~1.2"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~4.4"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.1.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Jeff Welch",
+                    "email": "whatthejeff@gmail.com"
+                },
+                {
+                    "name": "Volker Dusch",
+                    "email": "github@wallbash.com"
+                },
+                {
+                    "name": "Bernhard Schussek",
+                    "email": "bschussek@2bepublished.at"
+                },
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Provides the functionality to compare PHP values for equality",
+            "homepage": "http://www.github.com/sebastianbergmann/comparator",
+            "keywords": [
+                "comparator",
+                "compare",
+                "equality"
+            ],
+            "time": "2015-01-29 16:28:08"
+        },
+        {
+            "name": "sebastian/diff",
+            "version": "1.3.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/diff.git",
+                "reference": "863df9687835c62aa423a22412d26fa2ebde3fd3"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/863df9687835c62aa423a22412d26fa2ebde3fd3",
+                "reference": "863df9687835c62aa423a22412d26fa2ebde3fd3",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~4.2"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.3-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Kore Nordmann",
+                    "email": "mail@kore-nordmann.de"
+                },
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Diff implementation",
+            "homepage": "http://www.github.com/sebastianbergmann/diff",
+            "keywords": [
+                "diff"
+            ],
+            "time": "2015-02-22 15:13:53"
+        },
+        {
+            "name": "sebastian/environment",
+            "version": "1.2.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/environment.git",
+                "reference": "5a8c7d31914337b69923db26c4221b81ff5a196e"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5a8c7d31914337b69923db26c4221b81ff5a196e",
+                "reference": "5a8c7d31914337b69923db26c4221b81ff5a196e",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~4.4"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.3.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Provides functionality to handle HHVM/PHP environments",
+            "homepage": "http://www.github.com/sebastianbergmann/environment",
+            "keywords": [
+                "Xdebug",
+                "environment",
+                "hhvm"
+            ],
+            "time": "2015-01-01 10:01:08"
+        },
+        {
+            "name": "sebastian/exporter",
+            "version": "1.2.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/exporter.git",
+                "reference": "84839970d05254c73cde183a721c7af13aede943"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/84839970d05254c73cde183a721c7af13aede943",
+                "reference": "84839970d05254c73cde183a721c7af13aede943",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3",
+                "sebastian/recursion-context": "~1.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~4.4"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.2.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Jeff Welch",
+                    "email": "whatthejeff@gmail.com"
+                },
+                {
+                    "name": "Volker Dusch",
+                    "email": "github@wallbash.com"
+                },
+                {
+                    "name": "Bernhard Schussek",
+                    "email": "bschussek@2bepublished.at"
+                },
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                },
+                {
+                    "name": "Adam Harvey",
+                    "email": "aharvey@php.net"
+                }
+            ],
+            "description": "Provides the functionality to export PHP variables for visualization",
+            "homepage": "http://www.github.com/sebastianbergmann/exporter",
+            "keywords": [
+                "export",
+                "exporter"
+            ],
+            "time": "2015-01-27 07:23:06"
+        },
+        {
+            "name": "sebastian/recursion-context",
+            "version": "1.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/recursion-context.git",
+                "reference": "3989662bbb30a29d20d9faa04a846af79b276252"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/3989662bbb30a29d20d9faa04a846af79b276252",
+                "reference": "3989662bbb30a29d20d9faa04a846af79b276252",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~4.4"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Jeff Welch",
+                    "email": "whatthejeff@gmail.com"
+                },
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                },
+                {
+                    "name": "Adam Harvey",
+                    "email": "aharvey@php.net"
+                }
+            ],
+            "description": "Provides functionality to recursively process PHP variables",
+            "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
+            "time": "2015-01-24 09:48:32"
+        },
+        {
+            "name": "sebastian/version",
+            "version": "1.0.5",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/version.git",
+                "reference": "ab931d46cd0d3204a91e1b9a40c4bc13032b58e4"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/ab931d46cd0d3204a91e1b9a40c4bc13032b58e4",
+                "reference": "ab931d46cd0d3204a91e1b9a40c4bc13032b58e4",
+                "shasum": ""
+            },
+            "type": "library",
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Library that helps with managing the version number of Git-hosted PHP projects",
+            "homepage": "https://github.com/sebastianbergmann/version",
+            "time": "2015-02-24 06:35:25"
+        },
+        {
+            "name": "sjparkinson/static-review",
+            "version": "4.1.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sjparkinson/static-review.git",
+                "reference": "493c3410cf146a12fca84209bad126c494e125f0"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sjparkinson/static-review/zipball/493c3410cf146a12fca84209bad126c494e125f0",
+                "reference": "493c3410cf146a12fca84209bad126c494e125f0",
+                "shasum": ""
+            },
+            "require": {
+                "league/climate": "~2.0",
+                "php": ">=5.4.0",
+                "symfony/console": "~2.0",
+                "symfony/process": "~2.0"
+            },
+            "require-dev": {
+                "mockery/mockery": "~0.9",
+                "phpunit/phpunit": "~4.0",
+                "sensiolabs/security-checker": "~2.0",
+                "squizlabs/php_codesniffer": "~1.0"
+            },
+            "suggest": {
+                "sensiolabs/security-checker": "Required for ComposerSecurityReview.",
+                "squizlabs/php_codesniffer": "Required for PhpCodeSnifferReview."
+            },
+            "bin": [
+                "bin/static-review.php"
+            ],
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "StaticReview\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Samuel Parkinson",
+                    "email": "sam.james.parkinson@gmail.com",
+                    "homepage": "http://samp.im"
+                }
+            ],
+            "description": "An extendable framework for version control hooks.",
+            "time": "2014-09-22 08:40:36"
+        },
+        {
+            "name": "squizlabs/php_codesniffer",
+            "version": "1.5.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
+                "reference": "396178ada8499ec492363587f037125bf7b07fcc"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/396178ada8499ec492363587f037125bf7b07fcc",
+                "reference": "396178ada8499ec492363587f037125bf7b07fcc",
+                "shasum": ""
+            },
+            "require": {
+                "ext-tokenizer": "*",
+                "php": ">=5.1.2"
+            },
+            "suggest": {
+                "phpunit/php-timer": "dev-master"
+            },
+            "bin": [
+                "scripts/phpcs"
+            ],
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-phpcs-fixer": "2.0.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "CodeSniffer.php",
+                    "CodeSniffer/CLI.php",
+                    "CodeSniffer/Exception.php",
+                    "CodeSniffer/File.php",
+                    "CodeSniffer/Report.php",
+                    "CodeSniffer/Reporting.php",
+                    "CodeSniffer/Sniff.php",
+                    "CodeSniffer/Tokens.php",
+                    "CodeSniffer/Reports/",
+                    "CodeSniffer/CommentParser/",
+                    "CodeSniffer/Tokenizers/",
+                    "CodeSniffer/DocGenerators/",
+                    "CodeSniffer/Standards/AbstractPatternSniff.php",
+                    "CodeSniffer/Standards/AbstractScopeSniff.php",
+                    "CodeSniffer/Standards/AbstractVariableSniff.php",
+                    "CodeSniffer/Standards/IncorrectPatternException.php",
+                    "CodeSniffer/Standards/Generic/Sniffs/",
+                    "CodeSniffer/Standards/MySource/Sniffs/",
+                    "CodeSniffer/Standards/PEAR/Sniffs/",
+                    "CodeSniffer/Standards/PSR1/Sniffs/",
+                    "CodeSniffer/Standards/PSR2/Sniffs/",
+                    "CodeSniffer/Standards/Squiz/Sniffs/",
+                    "CodeSniffer/Standards/Zend/Sniffs/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Greg Sherwood",
+                    "role": "lead"
+                }
+            ],
+            "description": "PHP_CodeSniffer tokenises PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
+            "homepage": "http://www.squizlabs.com/php-codesniffer",
+            "keywords": [
+                "phpcs",
+                "standards"
+            ],
+            "time": "2014-05-01 03:07:07"
+        },
+        {
+            "name": "symfony/config",
+            "version": "v2.6.7",
+            "target-dir": "Symfony/Component/Config",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/Config.git",
+                "reference": "b6fddb4aa2daaa2b06f0040071ac131b4a1ecf25"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/Config/zipball/b6fddb4aa2daaa2b06f0040071ac131b4a1ecf25",
+                "reference": "b6fddb4aa2daaa2b06f0040071ac131b4a1ecf25",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3",
+                "symfony/filesystem": "~2.3"
+            },
+            "require-dev": {
+                "symfony/phpunit-bridge": "~2.7"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.6-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Symfony\\Component\\Config\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony Config Component",
+            "homepage": "https://symfony.com",
+            "time": "2015-05-02 15:18:45"
+        },
+        {
+            "name": "symfony/dependency-injection",
+            "version": "v2.6.7",
+            "target-dir": "Symfony/Component/DependencyInjection",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/DependencyInjection.git",
+                "reference": "b575c160af001d3525ee733085bcc4ec7c8e1b51"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/DependencyInjection/zipball/b575c160af001d3525ee733085bcc4ec7c8e1b51",
+                "reference": "b575c160af001d3525ee733085bcc4ec7c8e1b51",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "conflict": {
+                "symfony/expression-language": "<2.6"
+            },
+            "require-dev": {
+                "symfony/config": "~2.2",
+                "symfony/expression-language": "~2.6",
+                "symfony/phpunit-bridge": "~2.7",
+                "symfony/yaml": "~2.1"
+            },
+            "suggest": {
+                "symfony/config": "",
+                "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them",
+                "symfony/yaml": ""
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.6-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Symfony\\Component\\DependencyInjection\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony DependencyInjection Component",
+            "homepage": "https://symfony.com",
+            "time": "2015-05-02 15:18:45"
+        },
+        {
+            "name": "symfony/event-dispatcher",
+            "version": "v2.6.7",
+            "target-dir": "Symfony/Component/EventDispatcher",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/EventDispatcher.git",
+                "reference": "672593bc4b0043a0acf91903bb75a1c82d8f2e02"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/672593bc4b0043a0acf91903bb75a1c82d8f2e02",
+                "reference": "672593bc4b0043a0acf91903bb75a1c82d8f2e02",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "psr/log": "~1.0",
+                "symfony/config": "~2.0,>=2.0.5",
+                "symfony/dependency-injection": "~2.6",
+                "symfony/expression-language": "~2.6",
+                "symfony/phpunit-bridge": "~2.7",
+                "symfony/stopwatch": "~2.3"
+            },
+            "suggest": {
+                "symfony/dependency-injection": "",
+                "symfony/http-kernel": ""
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.6-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Symfony\\Component\\EventDispatcher\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony EventDispatcher Component",
+            "homepage": "https://symfony.com",
+            "time": "2015-05-02 15:18:45"
+        },
+        {
+            "name": "symfony/filesystem",
+            "version": "v2.6.7",
+            "target-dir": "Symfony/Component/Filesystem",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/Filesystem.git",
+                "reference": "f73904bd2dae525c42ea1f0340c7c98480ecacde"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/Filesystem/zipball/f73904bd2dae525c42ea1f0340c7c98480ecacde",
+                "reference": "f73904bd2dae525c42ea1f0340c7c98480ecacde",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "symfony/phpunit-bridge": "~2.7"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.6-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Symfony\\Component\\Filesystem\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony Filesystem Component",
+            "homepage": "https://symfony.com",
+            "time": "2015-05-08 00:09:07"
+        },
+        {
+            "name": "symfony/stopwatch",
+            "version": "v2.6.7",
+            "target-dir": "Symfony/Component/Stopwatch",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/Stopwatch.git",
+                "reference": "b470f87c69837cb71115f1fa720388bb19b63635"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/Stopwatch/zipball/b470f87c69837cb71115f1fa720388bb19b63635",
+                "reference": "b470f87c69837cb71115f1fa720388bb19b63635",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "symfony/phpunit-bridge": "~2.7"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.6-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Symfony\\Component\\Stopwatch\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony Stopwatch Component",
+            "homepage": "https://symfony.com",
+            "time": "2015-05-02 15:18:45"
+        },
+        {
+            "name": "symfony/yaml",
+            "version": "v2.6.7",
+            "target-dir": "Symfony/Component/Yaml",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/Yaml.git",
+                "reference": "f157ab074e453ecd4c0fa775f721f6e67a99d9e2"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/Yaml/zipball/f157ab074e453ecd4c0fa775f721f6e67a99d9e2",
+                "reference": "f157ab074e453ecd4c0fa775f721f6e67a99d9e2",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "symfony/phpunit-bridge": "~2.7"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.6-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Symfony\\Component\\Yaml\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony Yaml Component",
+            "homepage": "https://symfony.com",
+            "time": "2015-05-02 15:18:45"
+        }
+    ],
+    "aliases": [],
+    "minimum-stability": "alpha",
+    "stability-flags": {
+        "phpmd/phpmd": 0
+    },
+    "prefer-stable": true,
+    "prefer-lowest": false,
+    "platform": [],
+    "platform-dev": {
+        "lib-libxml": "*",
+        "ext-ctype": "*",
+        "ext-gd": "*",
+        "ext-spl": "*",
+        "ext-dom": "*",
+        "ext-simplexml": "*",
+        "ext-mcrypt": "*",
+        "ext-hash": "*",
+        "ext-curl": "*",
+        "ext-iconv": "*",
+        "ext-intl": "*"
+    }
+}
diff --git a/dev/tests/integration/testsuite/Magento/Setup/Model/_files/testFromCreateProject/vendor/README b/dev/tests/integration/testsuite/Magento/Setup/Model/_files/testFromCreateProject/vendor/README
new file mode 100644
index 0000000000000000000000000000000000000000..4ff7f39bd61163e93b753517020434e907c3d8bd
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/Setup/Model/_files/testFromCreateProject/vendor/README
@@ -0,0 +1,5 @@
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+ This file is to create a vendor directory for testing
\ No newline at end of file
diff --git a/dev/tests/integration/testsuite/Magento/Setup/Model/_files/testSkeleton/composer.json b/dev/tests/integration/testsuite/Magento/Setup/Model/_files/testSkeleton/composer.json
new file mode 100644
index 0000000000000000000000000000000000000000..945bccecd52ed686fa6c13484ac083ac80168c3d
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/Setup/Model/_files/testSkeleton/composer.json
@@ -0,0 +1,24 @@
+{
+  "version": "0.74.0-beta9",
+  "require": {
+    "magento/product-community-edition": "0.74.0-beta2",
+    "magento/sample-module-minimal" : "*"
+   },
+  "repositories": [
+    {
+      "type": "composer",
+      "url": "http://packages.magento.com/"
+    }
+  ],
+  "autoload": {
+        "psr-4": {
+            "Magento\\Framework\\": "htdocs/lib/internal/Magento/Framework/",
+            "Magento\\Setup\\": "htdocs/setup/src/Magento/Setup/"
+        }
+    },
+   "extra": {
+    "magento-root-dir": "htdocs",
+    "magento-deploystrategy": "copy"
+  },
+  "minimum-stability": "dev"
+}
diff --git a/dev/tests/integration/testsuite/Magento/Setup/Model/_files/testSkeleton/composer.lock b/dev/tests/integration/testsuite/Magento/Setup/Model/_files/testSkeleton/composer.lock
new file mode 100644
index 0000000000000000000000000000000000000000..3a079231ca9179ac0ebcf0d738388b81350c8ebc
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/Setup/Model/_files/testSkeleton/composer.lock
@@ -0,0 +1,6253 @@
+{
+    "_readme": [
+        "This file locks the dependencies of your project to a known state",
+        "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
+        "This file is @generated automatically"
+    ],
+    "hash": "8601c8b464025318475d28dbabf9ee67",
+    "packages": [
+        {
+            "name": "composer/composer",
+            "version": "1.0.0-alpha8",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/composer/composer.git",
+                "reference": "1eb1df44a97fb2daca1bb8b007f3bee012f0aa46"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/composer/composer/zipball/1eb1df44a97fb2daca1bb8b007f3bee012f0aa46",
+                "reference": "1eb1df44a97fb2daca1bb8b007f3bee012f0aa46",
+                "shasum": ""
+            },
+            "require": {
+                "justinrainbow/json-schema": "1.1.*",
+                "php": ">=5.3.2",
+                "seld/jsonlint": "1.*",
+                "symfony/console": "~2.3",
+                "symfony/finder": "~2.2",
+                "symfony/process": "~2.1"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~3.7.10"
+            },
+            "suggest": {
+                "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages",
+                "ext-zip": "Enabling the zip extension allows you to unzip archives, and allows gzip compression of all internet traffic"
+            },
+            "bin": [
+                "bin/composer"
+            ],
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Composer": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Jordi Boggiano",
+                    "email": "j.boggiano@seld.be",
+                    "homepage": "http://seld.be",
+                    "role": "Developer"
+                },
+                {
+                    "name": "Nils Adermann",
+                    "email": "naderman@naderman.de",
+                    "homepage": "http://www.naderman.de",
+                    "role": "Developer"
+                }
+            ],
+            "description": "Dependency Manager",
+            "homepage": "http://getcomposer.org/",
+            "keywords": [
+                "autoload",
+                "dependency",
+                "package"
+            ],
+            "time": "2014-01-06 18:39:59"
+        },
+        {
+            "name": "justinrainbow/json-schema",
+            "version": "1.1.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/justinrainbow/json-schema.git",
+                "reference": "05ff6d8d79fe3ad190b0663d80d3f9deee79416c"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/05ff6d8d79fe3ad190b0663d80d3f9deee79416c",
+                "reference": "05ff6d8d79fe3ad190b0663d80d3f9deee79416c",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.0"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-0": {
+                    "JsonSchema": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "NewBSD"
+            ],
+            "authors": [
+                {
+                    "name": "Igor Wiedler",
+                    "email": "igor@wiedler.ch",
+                    "homepage": "http://wiedler.ch/igor/"
+                },
+                {
+                    "name": "Bruno Prieto Reis",
+                    "email": "bruno.p.reis@gmail.com"
+                },
+                {
+                    "name": "Justin Rainbow",
+                    "email": "justin.rainbow@gmail.com"
+                },
+                {
+                    "name": "Robert Schönthal",
+                    "email": "robert.schoenthal@gmail.com",
+                    "homepage": "http://digitalkaoz.net"
+                }
+            ],
+            "description": "A library to validate a json schema.",
+            "homepage": "https://github.com/justinrainbow/json-schema",
+            "keywords": [
+                "json",
+                "schema"
+            ],
+            "time": "2012-01-03 00:33:17"
+        },
+        {
+            "name": "magento/framework",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_framework-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "ebb865d9aae1b48e41706a7d2fe080b7735a1a0c"
+            },
+            "require": {
+                "ext-curl": "*",
+                "ext-dom": "*",
+                "ext-gd": "*",
+                "ext-hash": "*",
+                "ext-iconv": "*",
+                "ext-mcrypt": "*",
+                "ext-simplexml": "*",
+                "ext-spl": "*",
+                "lib-libxml": "*",
+                "magento/magento-composer-installer": "*",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "suggest": {
+                "ext-imagick": "Use Image Magick >=3.0.0 as an optional alternative image processing library"
+            },
+            "type": "magento2-library",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Framework"
+                    ]
+                ]
+            },
+            "autoload": {
+                "psr-4": {
+                    "Magento\\Framework\\": ""
+                }
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/language-de_de",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_language-de_de-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "574416a036e55513a6437b287b77426c291d9051"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*"
+            },
+            "type": "magento2-language",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "magento/de_de"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "German (Germany) language"
+        },
+        {
+            "name": "magento/language-en_us",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_language-en_us-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "6246a6a773d86c078bb4f0bc5cee50e2eeab639f"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*"
+            },
+            "type": "magento2-language",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "magento/en_us"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "English (United States) language"
+        },
+        {
+            "name": "magento/language-es_es",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_language-es_es-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "da8197a083474993b935bd16d8b001160475b97e"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*"
+            },
+            "type": "magento2-language",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "magento/es_es"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "Spanish (Spain) language"
+        },
+        {
+            "name": "magento/language-fr_fr",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_language-fr_fr-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "e3d58180b96a709e0b2fb8dccaee95b3be5dadd4"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*"
+            },
+            "type": "magento2-language",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "magento/fr_fr"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "French (France) language"
+        },
+        {
+            "name": "magento/language-nl_nl",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_language-nl_nl-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "d7b29b6275aefa26e7a6d9fb4bcdb62a8ee34332"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*"
+            },
+            "type": "magento2-language",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "magento/nl_nl"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "Dutch (Netherlands) language"
+        },
+        {
+            "name": "magento/language-pt_br",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_language-pt_br-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "7b6bc50f18adc85d524cc549accd05752beb8858"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*"
+            },
+            "type": "magento2-language",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "magento/pt_br"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "Portuguese (Brazil) language"
+        },
+        {
+            "name": "magento/language-zh_cn",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_language-zh_cn-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "f9a151b4d1bbc6620289e9e91fb8bee023d14c5f"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*"
+            },
+            "type": "magento2-language",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "magento/zh_cn"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "Chinese (China) language"
+        },
+        {
+            "name": "magento/magento-composer-installer",
+            "version": "dev-master",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/magento/magento-composer-installer.git",
+                "reference": "7f03451f71e55d52c2bb07325d56a4e6df322f30"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/magento/magento-composer-installer/zipball/7f03451f71e55d52c2bb07325d56a4e6df322f30",
+                "reference": "7f03451f71e55d52c2bb07325d56a4e6df322f30",
+                "shasum": ""
+            },
+            "require": {
+                "composer-plugin-api": "1.0.0"
+            },
+            "require-dev": {
+                "composer/composer": "*@dev",
+                "firegento/phpcs": "dev-patch-1",
+                "mikey179/vfsstream": "*",
+                "phpunit/phpunit": "*",
+                "phpunit/phpunit-mock-objects": "dev-master",
+                "squizlabs/php_codesniffer": "1.4.7",
+                "symfony/process": "*"
+            },
+            "type": "composer-plugin",
+            "extra": {
+                "composer-command-registry": [
+                    "MagentoHackathon\\Composer\\Magento\\Command\\DeployCommand"
+                ],
+                "class": "MagentoHackathon\\Composer\\Magento\\Plugin"
+            },
+            "autoload": {
+                "psr-0": {
+                    "MagentoHackathon\\Composer\\Magento": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "OSL-3.0"
+            ],
+            "authors": [
+                {
+                    "name": "Vinai Kopp",
+                    "email": "vinai@netzarbeiter.com"
+                },
+                {
+                    "name": "Daniel Fahlke aka Flyingmana",
+                    "email": "flyingmana@googlemail.com"
+                },
+                {
+                    "name": "Jörg Weller",
+                    "email": "weller@flagbit.de"
+                },
+                {
+                    "name": "Karl Spies",
+                    "email": "karl.spies@gmx.net"
+                },
+                {
+                    "name": "Tobias Vogt",
+                    "email": "tobi@webguys.de"
+                },
+                {
+                    "name": "David Fuhr",
+                    "email": "fuhr@flagbit.de"
+                }
+            ],
+            "description": "Composer installer for Magento modules",
+            "homepage": "https://github.com/magento/magento-composer-installer",
+            "keywords": [
+                "composer-installer",
+                "magento"
+            ],
+            "time": "2015-03-05 21:40:30"
+        },
+        {
+            "name": "magento/magento2-base",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_magento2-base-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "be10c634940670ff0cecf5f952f57891c626c652"
+            },
+            "require": {
+                "magento/magento-composer-installer": "*"
+            },
+            "replace": {
+                "blueimp/jquery-file-upload": "5.6.14",
+                "colinmollenhour/cache-backend-redis": "dev-master#193d377b7fb2e88595578b282fa01a62d1185abc",
+                "colinmollenhour/credis": "dev-master#f07bbfd4117294f462f0fb19c49221d350bf396f",
+                "components/jquery": "1.11.0",
+                "components/jqueryui": "1.10.4",
+                "linkorb/jsmin-php": "1.1.2",
+                "phpseclib/phpseclib": "0.2.1",
+                "tinymce/tinymce": "3.4.7",
+                "trentrichardson/jquery-timepicker-addon": "1.4.3",
+                "twbs/bootstrap": "3.1.0"
+            },
+            "type": "magento2-component",
+            "extra": {
+                "component_paths": {
+                    "trentrichardson/jquery-timepicker-addon": "lib/web/jquery/jquery-ui-timepicker-addon.js",
+                    "colinmollenhour/cache-backend-redis": "lib/internal/Cm/Cache/Backend/Redis.php",
+                    "colinmollenhour/credis": "lib/internal/Credis",
+                    "linkorb/jsmin-php": "lib/internal/JSMin",
+                    "phpseclib/phpseclib": "lib/internal/phpseclib",
+                    "components/jquery": [
+                        "lib/web/jquery.js",
+                        "lib/web/jquery/jquery.min.js",
+                        "lib/web/jquery/jquery-migrate.js",
+                        "lib/web/jquery/jquery-migrate.min.js"
+                    ],
+                    "blueimp/jquery-file-upload": "lib/web/jquery/fileUploader",
+                    "components/jqueryui": [
+                        "lib/web/jquery/jquery-ui.js",
+                        "lib/web/jquery/jquery-ui.min.js"
+                    ],
+                    "twbs/bootstrap": [
+                        "lib/web/jquery/jquery.tabs.js"
+                    ],
+                    "tinymce/tinymce": "lib/web/tiny_mce"
+                },
+                "map": [
+                    [
+                        "lib/internal/Cm",
+                        "lib/internal/Cm"
+                    ],
+                    [
+                        "lib/internal/LinLibertineFont",
+                        "lib/internal/LinLibertineFont"
+                    ],
+                    [
+                        "lib/internal/phpseclib",
+                        "lib/internal/phpseclib"
+                    ],
+                    [
+                        "lib/internal/Credis",
+                        "lib/internal/Credis"
+                    ],
+                    [
+                        "lib/internal/CardinalCommerce",
+                        "lib/internal/CardinalCommerce"
+                    ],
+                    [
+                        "lib/internal/JSMin",
+                        "lib/internal/JSMin"
+                    ],
+                    [
+                        "lib/.htaccess",
+                        "lib/.htaccess"
+                    ],
+                    [
+                        "lib/web/lib",
+                        "lib/web/lib"
+                    ],
+                    [
+                        "lib/web/requirejs",
+                        "lib/web/requirejs"
+                    ],
+                    [
+                        "lib/web/prototype",
+                        "lib/web/prototype"
+                    ],
+                    [
+                        "lib/web/moment.js",
+                        "lib/web/moment.js"
+                    ],
+                    [
+                        "lib/web/i18n",
+                        "lib/web/i18n"
+                    ],
+                    [
+                        "lib/web/varien",
+                        "lib/web/varien"
+                    ],
+                    [
+                        "lib/web/blank.html",
+                        "lib/web/blank.html"
+                    ],
+                    [
+                        "lib/web/scriptaculous",
+                        "lib/web/scriptaculous"
+                    ],
+                    [
+                        "lib/web/ko",
+                        "lib/web/ko"
+                    ],
+                    [
+                        "lib/web/modernizr",
+                        "lib/web/modernizr"
+                    ],
+                    [
+                        "lib/web/date-format-normalizer.js",
+                        "lib/web/date-format-normalizer.js"
+                    ],
+                    [
+                        "lib/web/spacer.gif",
+                        "lib/web/spacer.gif"
+                    ],
+                    [
+                        "lib/web/images",
+                        "lib/web/images"
+                    ],
+                    [
+                        "lib/web/matchMedia.js",
+                        "lib/web/matchMedia.js"
+                    ],
+                    [
+                        "lib/web/extjs",
+                        "lib/web/extjs"
+                    ],
+                    [
+                        "lib/web/css",
+                        "lib/web/css"
+                    ],
+                    [
+                        "lib/web/fonts",
+                        "lib/web/fonts"
+                    ],
+                    [
+                        "lib/web/jquery",
+                        "lib/web/jquery"
+                    ],
+                    [
+                        "lib/web/less",
+                        "lib/web/less"
+                    ],
+                    [
+                        "lib/web/jquery.js",
+                        "lib/web/jquery.js"
+                    ],
+                    [
+                        "lib/web/underscore.js",
+                        "lib/web/underscore.js"
+                    ],
+                    [
+                        "lib/web/legacy-build.min.js",
+                        "lib/web/legacy-build.min.js"
+                    ],
+                    [
+                        "lib/web/mage",
+                        "lib/web/mage"
+                    ],
+                    [
+                        "lib/web/tiny_mce",
+                        "lib/web/tiny_mce"
+                    ],
+                    [
+                        ".htaccess.sample",
+                        ".htaccess.sample"
+                    ],
+                    [
+                        "CONTRIBUTING.md",
+                        "CONTRIBUTING.md"
+                    ],
+                    [
+                        "package.json",
+                        "package.json"
+                    ],
+                    [
+                        "nginx.conf.sample",
+                        "nginx.conf.sample"
+                    ],
+                    [
+                        "var/.htaccess",
+                        "var/.htaccess"
+                    ],
+                    [
+                        "pub/media/downloadable/.htaccess",
+                        "pub/media/downloadable/.htaccess"
+                    ],
+                    [
+                        "pub/media/theme_customization/.htaccess",
+                        "pub/media/theme_customization/.htaccess"
+                    ],
+                    [
+                        "pub/media/customer/.htaccess",
+                        "pub/media/customer/.htaccess"
+                    ],
+                    [
+                        "pub/media/.htaccess",
+                        "pub/media/.htaccess"
+                    ],
+                    [
+                        "pub/errors",
+                        "pub/errors"
+                    ],
+                    [
+                        "pub/opt",
+                        "pub/opt"
+                    ],
+                    [
+                        "pub/get.php",
+                        "pub/get.php"
+                    ],
+                    [
+                        "pub/static/.htaccess",
+                        "pub/static/.htaccess"
+                    ],
+                    [
+                        "pub/.htaccess",
+                        "pub/.htaccess"
+                    ],
+                    [
+                        "pub/static.php",
+                        "pub/static.php"
+                    ],
+                    [
+                        "pub/cron.php",
+                        "pub/cron.php"
+                    ],
+                    [
+                        "pub/index.php",
+                        "pub/index.php"
+                    ],
+                    [
+                        ".php_cs",
+                        ".php_cs"
+                    ],
+                    [
+                        "COPYING.txt",
+                        "COPYING.txt"
+                    ],
+                    [
+                        "dev/shell",
+                        "dev/shell"
+                    ],
+                    [
+                        "dev/tools",
+                        "dev/tools"
+                    ],
+                    [
+                        "dev/tests/integration/phpunit.xml.dist",
+                        "dev/tests/integration/phpunit.xml.dist"
+                    ],
+                    [
+                        "dev/tests/integration/etc",
+                        "dev/tests/integration/etc"
+                    ],
+                    [
+                        "dev/tests/integration/tmp",
+                        "dev/tests/integration/tmp"
+                    ],
+                    [
+                        "dev/tests/integration/framework",
+                        "dev/tests/integration/framework"
+                    ],
+                    [
+                        "dev/tests/integration/testsuite/Magento",
+                        "dev/tests/integration/testsuite/Magento"
+                    ],
+                    [
+                        "dev/tests/integration/.gitignore",
+                        "dev/tests/integration/.gitignore"
+                    ],
+                    [
+                        "dev/tests/functional/composer.json",
+                        "dev/tests/functional/composer.json"
+                    ],
+                    [
+                        "dev/tests/functional/lib",
+                        "dev/tests/functional/lib"
+                    ],
+                    [
+                        "dev/tests/functional/phpunit.xml.dist",
+                        "dev/tests/functional/phpunit.xml.dist"
+                    ],
+                    [
+                        "dev/tests/functional/composer.json.dist",
+                        "dev/tests/functional/composer.json.dist"
+                    ],
+                    [
+                        "dev/tests/functional/bootstrap.php",
+                        "dev/tests/functional/bootstrap.php"
+                    ],
+                    [
+                        "dev/tests/functional/credentials.xml.dist",
+                        "dev/tests/functional/credentials.xml.dist"
+                    ],
+                    [
+                        "dev/tests/functional/tests",
+                        "dev/tests/functional/tests"
+                    ],
+                    [
+                        "dev/tests/functional/utils",
+                        "dev/tests/functional/utils"
+                    ],
+                    [
+                        "dev/tests/functional/isolation.php",
+                        "dev/tests/functional/isolation.php"
+                    ],
+                    [
+                        "dev/tests/functional/etc",
+                        "dev/tests/functional/etc"
+                    ],
+                    [
+                        "dev/tests/functional/.htaccess",
+                        "dev/tests/functional/.htaccess"
+                    ],
+                    [
+                        "dev/tests/functional/testsuites/Magento",
+                        "dev/tests/functional/testsuites/Magento"
+                    ],
+                    [
+                        "dev/tests/functional/.gitignore",
+                        "dev/tests/functional/.gitignore"
+                    ],
+                    [
+                        "dev/tests/js/run_js_tests.php",
+                        "dev/tests/js/run_js_tests.php"
+                    ],
+                    [
+                        "dev/tests/js/jsTestDriverOrder.php",
+                        "dev/tests/js/jsTestDriverOrder.php"
+                    ],
+                    [
+                        "dev/tests/js/jsTestDriver.php.dist",
+                        "dev/tests/js/jsTestDriver.php.dist"
+                    ],
+                    [
+                        "dev/tests/js/spec",
+                        "dev/tests/js/spec"
+                    ],
+                    [
+                        "dev/tests/js/framework",
+                        "dev/tests/js/framework"
+                    ],
+                    [
+                        "dev/tests/js/testsuite/lib",
+                        "dev/tests/js/testsuite/lib"
+                    ],
+                    [
+                        "dev/tests/js/testsuite/mage",
+                        "dev/tests/js/testsuite/mage"
+                    ],
+                    [
+                        "dev/tests/js/.gitignore",
+                        "dev/tests/js/.gitignore"
+                    ],
+                    [
+                        "dev/tests/api-functional/phpunit.xml.dist",
+                        "dev/tests/api-functional/phpunit.xml.dist"
+                    ],
+                    [
+                        "dev/tests/api-functional/config",
+                        "dev/tests/api-functional/config"
+                    ],
+                    [
+                        "dev/tests/api-functional/framework",
+                        "dev/tests/api-functional/framework"
+                    ],
+                    [
+                        "dev/tests/api-functional/_files",
+                        "dev/tests/api-functional/_files"
+                    ],
+                    [
+                        "dev/tests/api-functional/testsuite/Magento",
+                        "dev/tests/api-functional/testsuite/Magento"
+                    ],
+                    [
+                        "dev/tests/api-functional/.gitignore",
+                        "dev/tests/api-functional/.gitignore"
+                    ],
+                    [
+                        "dev/tests/unit/phpunit.xml.dist",
+                        "dev/tests/unit/phpunit.xml.dist"
+                    ],
+                    [
+                        "dev/tests/unit/tmp",
+                        "dev/tests/unit/tmp"
+                    ],
+                    [
+                        "dev/tests/unit/framework",
+                        "dev/tests/unit/framework"
+                    ],
+                    [
+                        "dev/tests/unit/.gitignore",
+                        "dev/tests/unit/.gitignore"
+                    ],
+                    [
+                        "dev/tests/static/phpunit-all.xml.dist",
+                        "dev/tests/static/phpunit-all.xml.dist"
+                    ],
+                    [
+                        "dev/tests/static/phpunit.xml.dist",
+                        "dev/tests/static/phpunit.xml.dist"
+                    ],
+                    [
+                        "dev/tests/static/framework",
+                        "dev/tests/static/framework"
+                    ],
+                    [
+                        "dev/tests/static/testsuite/Magento",
+                        "dev/tests/static/testsuite/Magento"
+                    ],
+                    [
+                        "dev/tests/static/.gitignore",
+                        "dev/tests/static/.gitignore"
+                    ],
+                    [
+                        "dev/tests/performance/benchmark.jmx",
+                        "dev/tests/performance/benchmark.jmx"
+                    ],
+                    [
+                        "dev/tests/performance/compare_reports.php",
+                        "dev/tests/performance/compare_reports.php"
+                    ],
+                    [
+                        "dev/tests/performance/run_scenarios.php",
+                        "dev/tests/performance/run_scenarios.php"
+                    ],
+                    [
+                        "dev/tests/performance/framework",
+                        "dev/tests/performance/framework"
+                    ],
+                    [
+                        "dev/tests/performance/testsuite/backend.jmx",
+                        "dev/tests/performance/testsuite/backend.jmx"
+                    ],
+                    [
+                        "dev/tests/performance/testsuite/product_edit.jmx",
+                        "dev/tests/performance/testsuite/product_edit.jmx"
+                    ],
+                    [
+                        "dev/tests/performance/testsuite/add_to_cart.jmx",
+                        "dev/tests/performance/testsuite/add_to_cart.jmx"
+                    ],
+                    [
+                        "dev/tests/performance/testsuite/product_view.jmx",
+                        "dev/tests/performance/testsuite/product_view.jmx"
+                    ],
+                    [
+                        "dev/tests/performance/testsuite/home_page.jmx",
+                        "dev/tests/performance/testsuite/home_page.jmx"
+                    ],
+                    [
+                        "dev/tests/performance/testsuite/reusable",
+                        "dev/tests/performance/testsuite/reusable"
+                    ],
+                    [
+                        "dev/tests/performance/testsuite/quick_search.jmx",
+                        "dev/tests/performance/testsuite/quick_search.jmx"
+                    ],
+                    [
+                        "dev/tests/performance/testsuite/fixtures",
+                        "dev/tests/performance/testsuite/fixtures"
+                    ],
+                    [
+                        "dev/tests/performance/testsuite/advanced_search.jmx",
+                        "dev/tests/performance/testsuite/advanced_search.jmx"
+                    ],
+                    [
+                        "dev/tests/performance/testsuite/checkout.jmx",
+                        "dev/tests/performance/testsuite/checkout.jmx"
+                    ],
+                    [
+                        "dev/tests/performance/testsuite/category_view.jmx",
+                        "dev/tests/performance/testsuite/category_view.jmx"
+                    ],
+                    [
+                        "dev/tests/performance/testsuite/_samples",
+                        "dev/tests/performance/testsuite/_samples"
+                    ],
+                    [
+                        "dev/tests/performance/config.php.dist",
+                        "dev/tests/performance/config.php.dist"
+                    ],
+                    [
+                        "dev/tests/performance/.gitignore",
+                        "dev/tests/performance/.gitignore"
+                    ],
+                    [
+                        "dev/.htaccess",
+                        "dev/.htaccess"
+                    ],
+                    [
+                        "Gruntfile.js",
+                        "Gruntfile.js"
+                    ],
+                    [
+                        "setup",
+                        "setup"
+                    ],
+                    [
+                        "LICENSE.txt",
+                        "LICENSE.txt"
+                    ],
+                    [
+                        ".travis.yml",
+                        ".travis.yml"
+                    ],
+                    [
+                        "app/bootstrap.php",
+                        "app/bootstrap.php"
+                    ],
+                    [
+                        "app/etc/di.xml",
+                        "app/etc/di.xml"
+                    ],
+                    [
+                        "app/.htaccess",
+                        "app/.htaccess"
+                    ],
+                    [
+                        "app/functions.php",
+                        "app/functions.php"
+                    ],
+                    [
+                        "app/autoload.php",
+                        "app/autoload.php"
+                    ],
+                    [
+                        ".htaccess",
+                        ".htaccess"
+                    ],
+                    [
+                        "php.ini.sample",
+                        "php.ini.sample"
+                    ],
+                    [
+                        "CONTRIBUTOR_LICENSE_AGREEMENT.html",
+                        "CONTRIBUTOR_LICENSE_AGREEMENT.html"
+                    ],
+                    [
+                        "index.php",
+                        "index.php"
+                    ],
+                    [
+                        "LICENSE_AFL.txt",
+                        "LICENSE_AFL.txt"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "Magento 2 Base"
+        },
+        {
+            "name": "magento/module-admin-notification",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-admin-notification-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "740186bdf97b2161994c10a883211eae76b285e9"
+            },
+            "require": {
+                "lib-libxml": "*",
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-media-storage": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/AdminNotification"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-authorization",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-authorization-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "045f8440fe82b38ce228b0be52b011bb02773214"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Authorization"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "Authorization module provides access to Magento ACL functionality."
+        },
+        {
+            "name": "magento/module-backend",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-backend-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "39ddbf62a11d9be1b16539733c0f66f46a503033"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backup": "0.74.0-beta2",
+                "magento/module-catalog": "0.74.0-beta2",
+                "magento/module-config": "0.74.0-beta2",
+                "magento/module-cron": "0.74.0-beta2",
+                "magento/module-customer": "0.74.0-beta2",
+                "magento/module-developer": "0.74.0-beta2",
+                "magento/module-directory": "0.74.0-beta2",
+                "magento/module-eav": "0.74.0-beta2",
+                "magento/module-quote": "0.74.0-beta2",
+                "magento/module-reports": "0.74.0-beta2",
+                "magento/module-require-js": "0.74.0-beta2",
+                "magento/module-sales": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "magento/module-theme": "0.74.0-beta2",
+                "magento/module-translation": "0.74.0-beta2",
+                "magento/module-user": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Backend"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-backup",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-backup-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "7188d9a41bd9d4294dfd90c7053c301876d82c48"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-cron": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Backup"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-bundle",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-bundle-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "849f7fc43f7f9b6a37a922272656c6218c681693"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-catalog": "0.74.0-beta2",
+                "magento/module-catalog-inventory": "0.74.0-beta2",
+                "magento/module-catalog-rule": "0.74.0-beta2",
+                "magento/module-checkout": "0.74.0-beta2",
+                "magento/module-config": "0.74.0-beta2",
+                "magento/module-customer": "0.74.0-beta2",
+                "magento/module-eav": "0.74.0-beta2",
+                "magento/module-gift-message": "0.74.0-beta2",
+                "magento/module-media-storage": "0.74.0-beta2",
+                "magento/module-quote": "0.74.0-beta2",
+                "magento/module-sales": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "magento/module-tax": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "suggest": {
+                "magento/module-webapi": "0.74.0-beta2"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Bundle"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-captcha",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-captcha-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "a80050a22bad3399e146b242be33f6717fe15d26"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-checkout": "0.74.0-beta2",
+                "magento/module-customer": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Captcha"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-catalog",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-catalog-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "d4259a0113a3b8eece9bdf88ad24b5cdee349de0"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-catalog-inventory": "0.74.0-beta2",
+                "magento/module-catalog-rule": "0.74.0-beta2",
+                "magento/module-catalog-url-rewrite": "0.74.0-beta2",
+                "magento/module-checkout": "0.74.0-beta2",
+                "magento/module-cms": "0.74.0-beta2",
+                "magento/module-config": "0.74.0-beta2",
+                "magento/module-customer": "0.74.0-beta2",
+                "magento/module-directory": "0.74.0-beta2",
+                "magento/module-eav": "0.74.0-beta2",
+                "magento/module-indexer": "0.74.0-beta2",
+                "magento/module-log": "0.74.0-beta2",
+                "magento/module-media-storage": "0.74.0-beta2",
+                "magento/module-msrp": "0.74.0-beta2",
+                "magento/module-page-cache": "0.74.0-beta2",
+                "magento/module-product-alert": "0.74.0-beta2",
+                "magento/module-quote": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "magento/module-tax": "0.74.0-beta2",
+                "magento/module-theme": "0.74.0-beta2",
+                "magento/module-url-rewrite": "0.74.0-beta2",
+                "magento/module-widget": "0.74.0-beta2",
+                "magento/module-wishlist": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "suggest": {
+                "magento/module-cookie": "0.74.0-beta2"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Catalog"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-catalog-import-export",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-catalog-import-export-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "3a26206abf71888d300c9d72b2190ff0f66eafd2"
+            },
+            "require": {
+                "ext-ctype": "*",
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-catalog": "0.74.0-beta2",
+                "magento/module-catalog-inventory": "0.74.0-beta2",
+                "magento/module-customer": "0.74.0-beta2",
+                "magento/module-eav": "0.74.0-beta2",
+                "magento/module-import-export": "0.74.0-beta2",
+                "magento/module-indexer": "0.74.0-beta2",
+                "magento/module-media-storage": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/CatalogImportExport"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-catalog-inventory",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-catalog-inventory-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "805c2bb2fb2c2f038dd73e4030a02e1208ea23da"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-catalog": "0.74.0-beta2",
+                "magento/module-config": "0.74.0-beta2",
+                "magento/module-customer": "0.74.0-beta2",
+                "magento/module-eav": "0.74.0-beta2",
+                "magento/module-indexer": "0.74.0-beta2",
+                "magento/module-quote": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/CatalogInventory"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-catalog-rule",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-catalog-rule-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "e9fe8b0f65dea1f8feba125e7d2974d48d1e0eef"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-catalog": "0.74.0-beta2",
+                "magento/module-customer": "0.74.0-beta2",
+                "magento/module-eav": "0.74.0-beta2",
+                "magento/module-import-export": "0.74.0-beta2",
+                "magento/module-indexer": "0.74.0-beta2",
+                "magento/module-rule": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/CatalogRule"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-catalog-search",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-catalog-search-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "e8239e3dbbdccda266347d1ca5f286c1e9a2cb4b"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-catalog": "0.74.0-beta2",
+                "magento/module-customer": "0.74.0-beta2",
+                "magento/module-directory": "0.74.0-beta2",
+                "magento/module-eav": "0.74.0-beta2",
+                "magento/module-indexer": "0.74.0-beta2",
+                "magento/module-search": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "magento/module-theme": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/CatalogSearch"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-catalog-url-rewrite",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-catalog-url-rewrite-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "c3cc582396cc97970e2d0dd92e5315190cde0971"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-catalog": "0.74.0-beta2",
+                "magento/module-catalog-import-export": "0.74.0-beta2",
+                "magento/module-eav": "0.74.0-beta2",
+                "magento/module-import-export": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "magento/module-url-rewrite": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/CatalogUrlRewrite"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-catalog-widget",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-catalog-widget-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "7dad3ad909bc97610211f4f008fa1817f1aac22a"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-catalog": "0.74.0-beta2",
+                "magento/module-customer": "0.74.0-beta2",
+                "magento/module-eav": "0.74.0-beta2",
+                "magento/module-rule": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "magento/module-widget": "0.74.0-beta2",
+                "magento/module-wishlist": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/CatalogWidget"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-centinel",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-centinel-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "069e94cd124c0d078eeb3174afdc1e49031a7288"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-checkout": "0.74.0-beta2",
+                "magento/module-sales": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Centinel"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-checkout",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-checkout-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "8161dcc6c2bba44981cb63cd24cf137900d37db7"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-catalog": "0.74.0-beta2",
+                "magento/module-catalog-inventory": "0.74.0-beta2",
+                "magento/module-config": "0.74.0-beta2",
+                "magento/module-customer": "0.74.0-beta2",
+                "magento/module-directory": "0.74.0-beta2",
+                "magento/module-eav": "0.74.0-beta2",
+                "magento/module-gift-message": "0.74.0-beta2",
+                "magento/module-msrp": "0.74.0-beta2",
+                "magento/module-page-cache": "0.74.0-beta2",
+                "magento/module-payment": "0.74.0-beta2",
+                "magento/module-quote": "0.74.0-beta2",
+                "magento/module-sales": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "magento/module-tax": "0.74.0-beta2",
+                "magento/module-theme": "0.74.0-beta2",
+                "magento/module-ui": "0.74.0-beta2",
+                "magento/module-wishlist": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "suggest": {
+                "magento/module-cookie": "0.74.0-beta2"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Checkout"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-checkout-agreements",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-checkout-agreements-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "be00ed9e3c1e3e4bacf7efc00b67c7cbb2065715"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-checkout": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/CheckoutAgreements"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-cms",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-cms-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "15ae95a27b5ff0c82fbdb43ca8570e0cee4b21f5"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-catalog": "0.74.0-beta2",
+                "magento/module-email": "0.74.0-beta2",
+                "magento/module-media-storage": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "magento/module-theme": "0.74.0-beta2",
+                "magento/module-ui": "0.74.0-beta2",
+                "magento/module-variable": "0.74.0-beta2",
+                "magento/module-widget": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Cms"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-cms-url-rewrite",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-cms-url-rewrite-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "6a3775d7705efcf5b43bfbe327d6ef1db2a1c09c"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-cms": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "magento/module-url-rewrite": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/CmsUrlRewrite"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-config",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-config-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "a4be4800b197ab3a73bbfc0d23d5a1f753a07a57"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-cron": "0.74.0-beta2",
+                "magento/module-directory": "0.74.0-beta2",
+                "magento/module-email": "0.74.0-beta2",
+                "magento/module-media-storage": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Config"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-configurable-import-export",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-configurable-import-export-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "bb6d242228bcbe7c35253dc244c7977994b24b8e"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-catalog": "0.74.0-beta2",
+                "magento/module-catalog-import-export": "0.74.0-beta2",
+                "magento/module-configurable-product": "0.74.0-beta2",
+                "magento/module-eav": "0.74.0-beta2",
+                "magento/module-import-export": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/ConfigurableImportExport"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-configurable-product",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-configurable-product-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "fe8e4536a59f60be79211fc0072e640102d3be06"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-catalog": "0.74.0-beta2",
+                "magento/module-catalog-inventory": "0.74.0-beta2",
+                "magento/module-catalog-rule": "0.74.0-beta2",
+                "magento/module-checkout": "0.74.0-beta2",
+                "magento/module-customer": "0.74.0-beta2",
+                "magento/module-directory": "0.74.0-beta2",
+                "magento/module-eav": "0.74.0-beta2",
+                "magento/module-media-storage": "0.74.0-beta2",
+                "magento/module-quote": "0.74.0-beta2",
+                "magento/module-sales": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "suggest": {
+                "magento/module-webapi": "0.74.0-beta2"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/ConfigurableProduct"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-contact",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-contact-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "b53d65b91dd1f596d0a4f7b8bacf73e6eaff98c9"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-cms": "0.74.0-beta2",
+                "magento/module-config": "0.74.0-beta2",
+                "magento/module-customer": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Contact"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-cookie",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-cookie-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "a8a4e29967524214fb6af5c12681d7b410a63bc6"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-store": "0.74.0-beta2",
+                "php": "~5.4.11|~5.5.0|~5.6.0"
+            },
+            "suggest": {
+                "magento/module-backend": "0.74.0-beta2"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Cookie"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-cron",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-cron-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "0e91ec4ade457797e7db0fe1aa4794747817fa6a"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-config": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Cron"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-currency-symbol",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-currency-symbol-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "261c0a4e05295f852a7986ef2d15509e4c2ad26c"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-config": "0.74.0-beta2",
+                "magento/module-directory": "0.74.0-beta2",
+                "magento/module-page-cache": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/CurrencySymbol"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-customer",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-customer-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "135623f9517f12f4dc17e062280eaf5f5071e7b7"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-authorization": "0.74.0-beta2",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-catalog": "0.74.0-beta2",
+                "magento/module-checkout": "0.74.0-beta2",
+                "magento/module-config": "0.74.0-beta2",
+                "magento/module-directory": "0.74.0-beta2",
+                "magento/module-eav": "0.74.0-beta2",
+                "magento/module-integration": "0.74.0-beta2",
+                "magento/module-media-storage": "0.74.0-beta2",
+                "magento/module-newsletter": "0.74.0-beta2",
+                "magento/module-page-cache": "0.74.0-beta2",
+                "magento/module-quote": "0.74.0-beta2",
+                "magento/module-review": "0.74.0-beta2",
+                "magento/module-sales": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "magento/module-tax": "0.74.0-beta2",
+                "magento/module-theme": "0.74.0-beta2",
+                "magento/module-ui": "0.74.0-beta2",
+                "magento/module-wishlist": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "suggest": {
+                "magento/module-cookie": "0.74.0-beta2"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Customer"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-customer-import-export",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-customer-import-export-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "9b4f6b059fecce79c7f8ce9fc163858b8a47c7ca"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-customer": "0.74.0-beta2",
+                "magento/module-directory": "0.74.0-beta2",
+                "magento/module-eav": "0.74.0-beta2",
+                "magento/module-import-export": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/CustomerImportExport"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-design-editor",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-design-editor-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "c506ce273b4578b949346ee4cdb4481ebdf1e3dc"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-config": "0.74.0-beta2",
+                "magento/module-eav": "0.74.0-beta2",
+                "magento/module-media-storage": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "magento/module-theme": "0.74.0-beta2",
+                "magento/module-translation": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/DesignEditor"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-developer",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-developer-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "1a1077d963ec6310df7080defaadc9bd87ed6e21"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-store": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Developer"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-dhl",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-dhl-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "f525d0b48189b60e2c0def9a8804933133995104"
+            },
+            "require": {
+                "lib-libxml": "*",
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-catalog": "0.74.0-beta2",
+                "magento/module-catalog-inventory": "0.74.0-beta2",
+                "magento/module-checkout": "0.74.0-beta2",
+                "magento/module-config": "0.74.0-beta2",
+                "magento/module-directory": "0.74.0-beta2",
+                "magento/module-quote": "0.74.0-beta2",
+                "magento/module-sales": "0.74.0-beta2",
+                "magento/module-shipping": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Dhl"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-directory",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-directory-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "3cb3ed72d237966f9deab3ac0386c3b6701cf66e"
+            },
+            "require": {
+                "lib-libxml": "*",
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-config": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Directory"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-downloadable",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-downloadable-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "5bd1cabf95a5c44e329f1263f40e165b3aa6070e"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-catalog": "0.74.0-beta2",
+                "magento/module-catalog-inventory": "0.74.0-beta2",
+                "magento/module-checkout": "0.74.0-beta2",
+                "magento/module-config": "0.74.0-beta2",
+                "magento/module-customer": "0.74.0-beta2",
+                "magento/module-directory": "0.74.0-beta2",
+                "magento/module-eav": "0.74.0-beta2",
+                "magento/module-gift-message": "0.74.0-beta2",
+                "magento/module-media-storage": "0.74.0-beta2",
+                "magento/module-msrp": "0.74.0-beta2",
+                "magento/module-quote": "0.74.0-beta2",
+                "magento/module-sales": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "magento/module-tax": "0.74.0-beta2",
+                "magento/module-theme": "0.74.0-beta2",
+                "magento/module-wishlist": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Downloadable"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-eav",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-eav-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "5594f375105dc1921f38772fbb069ff57c2e8f01"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-catalog": "0.74.0-beta2",
+                "magento/module-config": "0.74.0-beta2",
+                "magento/module-media-storage": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Eav"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-email",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-email-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "8ff7affa3d22107bd5e519dc24c098acccc44bf8"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-cms": "0.74.0-beta2",
+                "magento/module-config": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "magento/module-variable": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Email"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-fedex",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-fedex-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "cdc61b901b080b14e42b10889c8fb6f639f520af"
+            },
+            "require": {
+                "lib-libxml": "*",
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-catalog": "0.74.0-beta2",
+                "magento/module-catalog-inventory": "0.74.0-beta2",
+                "magento/module-config": "0.74.0-beta2",
+                "magento/module-directory": "0.74.0-beta2",
+                "magento/module-quote": "0.74.0-beta2",
+                "magento/module-sales": "0.74.0-beta2",
+                "magento/module-shipping": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Fedex"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-gift-message",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-gift-message-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "76ea03167970205295c95d88f871f7ce0547cdbf"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-catalog": "0.74.0-beta2",
+                "magento/module-checkout": "0.74.0-beta2",
+                "magento/module-customer": "0.74.0-beta2",
+                "magento/module-eav": "0.74.0-beta2",
+                "magento/module-multishipping": "0.74.0-beta2",
+                "magento/module-quote": "0.74.0-beta2",
+                "magento/module-sales": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/GiftMessage"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-google-adwords",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-google-adwords-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "45dfa690b1f183b0a87e6db39e6399ff0024bc66"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-sales": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/GoogleAdwords"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-google-analytics",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-google-analytics-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "7460860110d6942c3375db4a05cf079134e8ab6a"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-cookie": "0.74.0-beta2",
+                "magento/module-sales": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/GoogleAnalytics"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-google-optimizer",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-google-optimizer-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "90565d6ecc18276ef08c324caae5178ca8ba82ed"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-catalog": "0.74.0-beta2",
+                "magento/module-cms": "0.74.0-beta2",
+                "magento/module-google-analytics": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/GoogleOptimizer"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-google-shopping",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-google-shopping-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "f86c5696c215900805df27dcc6f8d6df5bd8453a"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-catalog": "0.74.0-beta2",
+                "magento/module-customer": "0.74.0-beta2",
+                "magento/module-directory": "0.74.0-beta2",
+                "magento/module-eav": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "magento/module-tax": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/GoogleShopping"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-grouped-import-export",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-grouped-import-export-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "3cbf803098dd03d361b51f730930c9c3e6a9292c"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-catalog": "0.74.0-beta2",
+                "magento/module-catalog-import-export": "0.74.0-beta2",
+                "magento/module-eav": "0.74.0-beta2",
+                "magento/module-grouped-product": "0.74.0-beta2",
+                "magento/module-import-export": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/GroupedImportExport"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-grouped-product",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-grouped-product-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "8ad968c974e321d99a9bccfd04721ccfb4bfb86f"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-catalog": "0.74.0-beta2",
+                "magento/module-catalog-inventory": "0.74.0-beta2",
+                "magento/module-checkout": "0.74.0-beta2",
+                "magento/module-customer": "0.74.0-beta2",
+                "magento/module-eav": "0.74.0-beta2",
+                "magento/module-media-storage": "0.74.0-beta2",
+                "magento/module-msrp": "0.74.0-beta2",
+                "magento/module-quote": "0.74.0-beta2",
+                "magento/module-sales": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/GroupedProduct"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-import-export",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-import-export-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "c16b13bdf9efb2a9d52b6423ee641ca47d60da36"
+            },
+            "require": {
+                "ext-ctype": "*",
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-eav": "0.74.0-beta2",
+                "magento/module-indexer": "0.74.0-beta2",
+                "magento/module-media-storage": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/ImportExport"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-indexer",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-indexer-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "d1c6e17c92d766f8f3f578d290da957deb5d9a7c"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-page-cache": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Indexer"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-integration",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-integration-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "8e9a7d4df606513a67a649f63abdd31557061665"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-authorization": "0.74.0-beta2",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-customer": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "magento/module-user": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Integration"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-layered-navigation",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-layered-navigation-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "a20af59f1ffcf9565e2fab9ead134ee129bdcc8d"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-catalog": "0.74.0-beta2",
+                "magento/module-config": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/LayeredNavigation"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-log",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-log-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "108169619b608577c34411d7ba717298ba40d641"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-customer": "0.74.0-beta2",
+                "magento/module-eav": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Log"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-media-storage",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-media-storage-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "7c1b9232bf83b123c2a3c6b03973bd637f34e0f6"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-config": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/MediaStorage"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-msrp",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-msrp-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "16bda583d7a876262fdc740c9513a4fb1739c3eb"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-bundle": "0.74.0-beta2",
+                "magento/module-catalog": "0.74.0-beta2",
+                "magento/module-downloadable": "0.74.0-beta2",
+                "magento/module-eav": "0.74.0-beta2",
+                "magento/module-grouped-product": "0.74.0-beta2",
+                "magento/module-quote": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "magento/module-tax": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Msrp"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-multishipping",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-multishipping-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "53b01c1acc039dec9e603681264a450f708d5fb6"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-checkout": "0.74.0-beta2",
+                "magento/module-customer": "0.74.0-beta2",
+                "magento/module-payment": "0.74.0-beta2",
+                "magento/module-quote": "0.74.0-beta2",
+                "magento/module-sales": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "magento/module-tax": "0.74.0-beta2",
+                "magento/module-theme": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Multishipping"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-newsletter",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-newsletter-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "a9e11c0ab106ea0aec8709a5a17169be826680c3"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-cms": "0.74.0-beta2",
+                "magento/module-cron": "0.74.0-beta2",
+                "magento/module-customer": "0.74.0-beta2",
+                "magento/module-eav": "0.74.0-beta2",
+                "magento/module-email": "0.74.0-beta2",
+                "magento/module-require-js": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "magento/module-widget": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Newsletter"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-offline-payments",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-offline-payments-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "d3b7cd008994bef7456496094f397c82a9f3a8ef"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-payment": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/OfflinePayments"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-offline-shipping",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-offline-shipping-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "94f097652ea87bc0504837366a51b7065ca864d4"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-catalog": "0.74.0-beta2",
+                "magento/module-checkout": "0.74.0-beta2",
+                "magento/module-config": "0.74.0-beta2",
+                "magento/module-directory": "0.74.0-beta2",
+                "magento/module-quote": "0.74.0-beta2",
+                "magento/module-sales": "0.74.0-beta2",
+                "magento/module-sales-rule": "0.74.0-beta2",
+                "magento/module-shipping": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/OfflineShipping"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-page-cache",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-page-cache-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "9db7b9c8d035e0eb3f619d37c8ff439b9f225e8f"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-config": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/PageCache"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-payment",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-payment-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "9da0894c984887cf2e3c6c5a32f84616867495ae"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-centinel": "0.74.0-beta2",
+                "magento/module-checkout": "0.74.0-beta2",
+                "magento/module-config": "0.74.0-beta2",
+                "magento/module-quote": "0.74.0-beta2",
+                "magento/module-sales": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Payment"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-persistent",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-persistent-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "891f5f3f5c23dd19e2f815754f4c5e8b4da6af1c"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-checkout": "0.74.0-beta2",
+                "magento/module-cron": "0.74.0-beta2",
+                "magento/module-customer": "0.74.0-beta2",
+                "magento/module-page-cache": "0.74.0-beta2",
+                "magento/module-quote": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Persistent"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-product-alert",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-product-alert-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "43292b34d4078dddc73b7bb4bcdb889292b578a6"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-catalog": "0.74.0-beta2",
+                "magento/module-customer": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/ProductAlert"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-quote",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-quote-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "8c3033317c359e5fc20e9308ed796ae6760fa22f"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-authorization": "0.74.0-beta2",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-catalog": "0.74.0-beta2",
+                "magento/module-catalog-inventory": "0.74.0-beta2",
+                "magento/module-catalog-rule": "0.74.0-beta2",
+                "magento/module-customer": "0.74.0-beta2",
+                "magento/module-directory": "0.74.0-beta2",
+                "magento/module-eav": "0.74.0-beta2",
+                "magento/module-payment": "0.74.0-beta2",
+                "magento/module-sales": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "magento/module-tax": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Quote"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-reports",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-reports-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "38b1c0ddfbd756666cb0bc05e687d01ced515464"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-catalog": "0.74.0-beta2",
+                "magento/module-catalog-inventory": "0.74.0-beta2",
+                "magento/module-cms": "0.74.0-beta2",
+                "magento/module-config": "0.74.0-beta2",
+                "magento/module-customer": "0.74.0-beta2",
+                "magento/module-downloadable": "0.74.0-beta2",
+                "magento/module-eav": "0.74.0-beta2",
+                "magento/module-log": "0.74.0-beta2",
+                "magento/module-quote": "0.74.0-beta2",
+                "magento/module-review": "0.74.0-beta2",
+                "magento/module-sales": "0.74.0-beta2",
+                "magento/module-sales-rule": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "magento/module-tax": "0.74.0-beta2",
+                "magento/module-widget": "0.74.0-beta2",
+                "magento/module-wishlist": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Reports"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-require-js",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-require-js-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "6e94b63070fd1c174ab55c109d384d5b3bb04131"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/RequireJs"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-review",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-review-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "45385eac2767e9165bfd88bcbc6a69dccca29f38"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-catalog": "0.74.0-beta2",
+                "magento/module-customer": "0.74.0-beta2",
+                "magento/module-eav": "0.74.0-beta2",
+                "magento/module-newsletter": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "magento/module-theme": "0.74.0-beta2",
+                "magento/module-ui": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "suggest": {
+                "magento/module-cookie": "0.74.0-beta2"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Review"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-rss",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-rss-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "0706c2102a0003e2f214c35b77c1e628519b727a"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-customer": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Rss"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-rule",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-rule-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "762edf4eabfe082b589b09bcf47a3ef2ac8a7f35"
+            },
+            "require": {
+                "lib-libxml": "*",
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-catalog": "0.74.0-beta2",
+                "magento/module-eav": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Rule"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-sales",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-sales-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "bf591f1f3033aa2fd3fe8bfb2732a6e7b81a499c"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-authorization": "0.74.0-beta2",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-catalog": "0.74.0-beta2",
+                "magento/module-catalog-inventory": "0.74.0-beta2",
+                "magento/module-checkout": "0.74.0-beta2",
+                "magento/module-config": "0.74.0-beta2",
+                "magento/module-customer": "0.74.0-beta2",
+                "magento/module-directory": "0.74.0-beta2",
+                "magento/module-eav": "0.74.0-beta2",
+                "magento/module-email": "0.74.0-beta2",
+                "magento/module-gift-message": "0.74.0-beta2",
+                "magento/module-media-storage": "0.74.0-beta2",
+                "magento/module-payment": "0.74.0-beta2",
+                "magento/module-quote": "0.74.0-beta2",
+                "magento/module-reports": "0.74.0-beta2",
+                "magento/module-sales-rule": "0.74.0-beta2",
+                "magento/module-shipping": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "magento/module-tax": "0.74.0-beta2",
+                "magento/module-theme": "0.74.0-beta2",
+                "magento/module-ui": "0.74.0-beta2",
+                "magento/module-widget": "0.74.0-beta2",
+                "magento/module-wishlist": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Sales"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-sales-rule",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-sales-rule-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "fdb556db9915f50b0bbbc3fd5f004c21fdf144ac"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-catalog": "0.74.0-beta2",
+                "magento/module-catalog-rule": "0.74.0-beta2",
+                "magento/module-config": "0.74.0-beta2",
+                "magento/module-customer": "0.74.0-beta2",
+                "magento/module-directory": "0.74.0-beta2",
+                "magento/module-eav": "0.74.0-beta2",
+                "magento/module-payment": "0.74.0-beta2",
+                "magento/module-quote": "0.74.0-beta2",
+                "magento/module-reports": "0.74.0-beta2",
+                "magento/module-rule": "0.74.0-beta2",
+                "magento/module-sales": "0.74.0-beta2",
+                "magento/module-shipping": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "magento/module-widget": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/SalesRule"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-search",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-search-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "a9605f79153be5e6206e269161ec6b0fe27b4b1a"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-catalog-search": "0.74.0-beta2",
+                "magento/module-reports": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Search"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-sendfriend",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-sendfriend-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "3830393608a4c34ef05eb26de6543ffe3739e1f4"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-catalog": "0.74.0-beta2",
+                "magento/module-customer": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "magento/module-theme": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Sendfriend"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-shipping",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-shipping-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "0793baf12096494d141c3e6419f53a9c57aef0df"
+            },
+            "require": {
+                "ext-gd": "*",
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-catalog": "0.74.0-beta2",
+                "magento/module-catalog-inventory": "0.74.0-beta2",
+                "magento/module-contact": "0.74.0-beta2",
+                "magento/module-customer": "0.74.0-beta2",
+                "magento/module-directory": "0.74.0-beta2",
+                "magento/module-payment": "0.74.0-beta2",
+                "magento/module-quote": "0.74.0-beta2",
+                "magento/module-sales": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "magento/module-tax": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "suggest": {
+                "magento/module-fedex": "0.74.0-beta2",
+                "magento/module-ups": "0.74.0-beta2"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Shipping"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-sitemap",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-sitemap-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "55e734ce8228a6e0b39eccb1829ae617845f9e53"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-catalog": "0.74.0-beta2",
+                "magento/module-catalog-url-rewrite": "0.74.0-beta2",
+                "magento/module-cms": "0.74.0-beta2",
+                "magento/module-eav": "0.74.0-beta2",
+                "magento/module-media-storage": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Sitemap"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-store",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-store-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "b53f0f39a5eceb85e0b28bcf32d5bb68314b3027"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-config": "0.74.0-beta2",
+                "magento/module-directory": "0.74.0-beta2",
+                "magento/module-media-storage": "0.74.0-beta2",
+                "magento/module-ui": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Store"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-tax",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-tax-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "ed22d2db556957de4ab5406d4d0edce811855b9b"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-catalog": "0.74.0-beta2",
+                "magento/module-checkout": "0.74.0-beta2",
+                "magento/module-config": "0.74.0-beta2",
+                "magento/module-customer": "0.74.0-beta2",
+                "magento/module-directory": "0.74.0-beta2",
+                "magento/module-eav": "0.74.0-beta2",
+                "magento/module-quote": "0.74.0-beta2",
+                "magento/module-reports": "0.74.0-beta2",
+                "magento/module-sales": "0.74.0-beta2",
+                "magento/module-shipping": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Tax"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-tax-import-export",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-tax-import-export-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "90716decbf4c0eb8fb29523530471fc2f8fbb426"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-directory": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "magento/module-tax": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/TaxImportExport"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-theme",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-theme-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "4754e71f25664ca7d010351e63c8c017e3c649dd"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-cms": "0.74.0-beta2",
+                "magento/module-config": "0.74.0-beta2",
+                "magento/module-customer": "0.74.0-beta2",
+                "magento/module-eav": "0.74.0-beta2",
+                "magento/module-media-storage": "0.74.0-beta2",
+                "magento/module-require-js": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "magento/module-widget": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "suggest": {
+                "magento/module-translation": "0.74.0-beta2"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Theme"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-translation",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-translation-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "68e633ff0380bb3d9660c17149935a0cdeda4edb"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-developer": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "magento/module-theme": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Translation"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-ui",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-ui-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "6edb28f5c771ccb9e747ea71922ecbea80a32391"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-eav": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Ui"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-ups",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-ups-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "70a8139468124067bfb07bf1c071638484136883"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-catalog-inventory": "0.74.0-beta2",
+                "magento/module-directory": "0.74.0-beta2",
+                "magento/module-quote": "0.74.0-beta2",
+                "magento/module-sales": "0.74.0-beta2",
+                "magento/module-shipping": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Ups"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-url-rewrite",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-url-rewrite-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "8e781525600ff9d43383816283807ebcff07a8bf"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-catalog": "0.74.0-beta2",
+                "magento/module-catalog-url-rewrite": "0.74.0-beta2",
+                "magento/module-cms": "0.74.0-beta2",
+                "magento/module-cms-url-rewrite": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/UrlRewrite"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-user",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-user-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "023375251bc6104b31984e4509d01907f6661c6b"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-authorization": "0.74.0-beta2",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-integration": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/User"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-usps",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-usps-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "22eecac7075ca9c6ecaa08e482b59f5c29ba465c"
+            },
+            "require": {
+                "lib-libxml": "*",
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-catalog": "0.74.0-beta2",
+                "magento/module-catalog-inventory": "0.74.0-beta2",
+                "magento/module-config": "0.74.0-beta2",
+                "magento/module-directory": "0.74.0-beta2",
+                "magento/module-quote": "0.74.0-beta2",
+                "magento/module-sales": "0.74.0-beta2",
+                "magento/module-shipping": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Usps"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-variable",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-variable-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "73cb1fdc0ff84722f854736a4016e3f5fa331ec1"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-email": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "php": "~5.4.11|~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Variable"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-version",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-version-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "de77cb875f16d6eec9c785df117eddf469bec459"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Version"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-webapi",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-webapi-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "c189f264c1bb186e052a2ed375b4b9e00295f3a6"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-authorization": "0.74.0-beta2",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-integration": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "suggest": {
+                "magento/module-user": "0.74.0-beta2"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Webapi"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-weee",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-weee-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "cc524f7211673263beb1f4c6b96bf32ffa04527b"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-catalog": "0.74.0-beta2",
+                "magento/module-customer": "0.74.0-beta2",
+                "magento/module-directory": "0.74.0-beta2",
+                "magento/module-eav": "0.74.0-beta2",
+                "magento/module-quote": "0.74.0-beta2",
+                "magento/module-sales": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "magento/module-tax": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Weee"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-widget",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-widget-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "f23668007563d5b7f9122e3eb453359fab9d1249"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-catalog": "0.74.0-beta2",
+                "magento/module-cms": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "magento/module-theme": "0.74.0-beta2",
+                "magento/module-variable": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Widget"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/module-wishlist",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_module-wishlist-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "fca56783501ad2b8f2c583350cb038f8191634e1"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/module-backend": "0.74.0-beta2",
+                "magento/module-catalog": "0.74.0-beta2",
+                "magento/module-catalog-inventory": "0.74.0-beta2",
+                "magento/module-checkout": "0.74.0-beta2",
+                "magento/module-customer": "0.74.0-beta2",
+                "magento/module-grouped-product": "0.74.0-beta2",
+                "magento/module-rss": "0.74.0-beta2",
+                "magento/module-sales": "0.74.0-beta2",
+                "magento/module-store": "0.74.0-beta2",
+                "magento/module-theme": "0.74.0-beta2",
+                "magento/module-ui": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "suggest": {
+                "magento/module-bundle": "0.74.0-beta2",
+                "magento/module-configurable-product": "0.74.0-beta2",
+                "magento/module-cookie": "0.74.0-beta2",
+                "magento/module-downloadable": "0.74.0-beta2"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/Wishlist"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/product-community-edition",
+            "version": "0.74.0-beta2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/magento/magento2-community-edition.git",
+                "reference": "830bba759a180a97375275013b974c4606805466"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/magento/magento2-community-edition/zipball/830bba759a180a97375275013b974c4606805466",
+                "reference": "830bba759a180a97375275013b974c4606805466",
+                "shasum": ""
+            },
+            "require": {
+                "composer/composer": "1.0.0-alpha8",
+                "magento/framework": "self.version",
+                "magento/language-de_de": "self.version",
+                "magento/language-en_us": "self.version",
+                "magento/language-es_es": "self.version",
+                "magento/language-fr_fr": "self.version",
+                "magento/language-nl_nl": "self.version",
+                "magento/language-pt_br": "self.version",
+                "magento/language-zh_cn": "self.version",
+                "magento/magento-composer-installer": "*",
+                "magento/magento2-base": "self.version",
+                "magento/module-admin-notification": "self.version",
+                "magento/module-authorization": "self.version",
+                "magento/module-backend": "self.version",
+                "magento/module-backup": "self.version",
+                "magento/module-bundle": "self.version",
+                "magento/module-captcha": "self.version",
+                "magento/module-catalog": "self.version",
+                "magento/module-catalog-import-export": "self.version",
+                "magento/module-catalog-inventory": "self.version",
+                "magento/module-catalog-rule": "self.version",
+                "magento/module-catalog-search": "self.version",
+                "magento/module-catalog-url-rewrite": "self.version",
+                "magento/module-catalog-widget": "self.version",
+                "magento/module-centinel": "self.version",
+                "magento/module-checkout": "self.version",
+                "magento/module-checkout-agreements": "self.version",
+                "magento/module-cms": "self.version",
+                "magento/module-cms-url-rewrite": "self.version",
+                "magento/module-config": "self.version",
+                "magento/module-configurable-import-export": "self.version",
+                "magento/module-configurable-product": "self.version",
+                "magento/module-contact": "self.version",
+                "magento/module-cookie": "self.version",
+                "magento/module-cron": "self.version",
+                "magento/module-currency-symbol": "self.version",
+                "magento/module-customer": "self.version",
+                "magento/module-customer-import-export": "self.version",
+                "magento/module-design-editor": "self.version",
+                "magento/module-developer": "self.version",
+                "magento/module-dhl": "self.version",
+                "magento/module-directory": "self.version",
+                "magento/module-downloadable": "self.version",
+                "magento/module-eav": "self.version",
+                "magento/module-email": "self.version",
+                "magento/module-fedex": "self.version",
+                "magento/module-gift-message": "self.version",
+                "magento/module-google-adwords": "self.version",
+                "magento/module-google-analytics": "self.version",
+                "magento/module-google-optimizer": "self.version",
+                "magento/module-google-shopping": "self.version",
+                "magento/module-grouped-import-export": "self.version",
+                "magento/module-grouped-product": "self.version",
+                "magento/module-import-export": "self.version",
+                "magento/module-indexer": "self.version",
+                "magento/module-integration": "self.version",
+                "magento/module-layered-navigation": "self.version",
+                "magento/module-log": "self.version",
+                "magento/module-media-storage": "self.version",
+                "magento/module-msrp": "self.version",
+                "magento/module-multishipping": "self.version",
+                "magento/module-newsletter": "self.version",
+                "magento/module-offline-payments": "self.version",
+                "magento/module-offline-shipping": "self.version",
+                "magento/module-page-cache": "self.version",
+                "magento/module-payment": "self.version",
+                "magento/module-persistent": "self.version",
+                "magento/module-product-alert": "self.version",
+                "magento/module-quote": "self.version",
+                "magento/module-reports": "self.version",
+                "magento/module-require-js": "self.version",
+                "magento/module-review": "self.version",
+                "magento/module-rss": "self.version",
+                "magento/module-rule": "self.version",
+                "magento/module-sales": "self.version",
+                "magento/module-sales-rule": "self.version",
+                "magento/module-search": "self.version",
+                "magento/module-sendfriend": "self.version",
+                "magento/module-shipping": "self.version",
+                "magento/module-sitemap": "self.version",
+                "magento/module-store": "self.version",
+                "magento/module-tax": "self.version",
+                "magento/module-tax-import-export": "self.version",
+                "magento/module-theme": "self.version",
+                "magento/module-translation": "self.version",
+                "magento/module-ui": "self.version",
+                "magento/module-ups": "self.version",
+                "magento/module-url-rewrite": "self.version",
+                "magento/module-user": "self.version",
+                "magento/module-usps": "self.version",
+                "magento/module-variable": "self.version",
+                "magento/module-version": "self.version",
+                "magento/module-webapi": "self.version",
+                "magento/module-weee": "self.version",
+                "magento/module-widget": "self.version",
+                "magento/module-wishlist": "self.version",
+                "magento/theme-adminhtml-backend": "self.version",
+                "magento/theme-frontend-blank": "self.version",
+                "magento/theme-frontend-luma": "self.version",
+                "magento/zendframework1": "1.12.10",
+                "monolog/monolog": "1.11.0",
+                "oyejorge/less.php": "1.7.0.3",
+                "php": "~5.5.0|~5.6.0",
+                "tubalmartin/cssmin": "2.4.8-p4",
+                "zendframework/zend-code": "2.3.1",
+                "zendframework/zend-config": "2.3.1",
+                "zendframework/zend-console": "2.3.1",
+                "zendframework/zend-di": "2.3.1",
+                "zendframework/zend-eventmanager": "2.3.1",
+                "zendframework/zend-form": "2.3.1",
+                "zendframework/zend-http": "2.3.1",
+                "zendframework/zend-json": "2.3.1",
+                "zendframework/zend-log": "2.3.1",
+                "zendframework/zend-modulemanager": "2.3.1",
+                "zendframework/zend-mvc": "2.3.1",
+                "zendframework/zend-serializer": "2.3.1",
+                "zendframework/zend-server": "2.3.1",
+                "zendframework/zend-servicemanager": "2.3.1",
+                "zendframework/zend-soap": "2.3.1",
+                "zendframework/zend-stdlib": "2.3.1",
+                "zendframework/zend-text": "2.3.1",
+                "zendframework/zend-uri": "2.3.1",
+                "zendframework/zend-validator": "2.3.1",
+                "zendframework/zend-view": "2.3.1"
+            },
+            "require-dev": {
+                "ext-ctype": "*",
+                "ext-curl": "*",
+                "ext-dom": "*",
+                "ext-gd": "*",
+                "ext-hash": "*",
+                "ext-iconv": "*",
+                "ext-intl": "*",
+                "ext-mcrypt": "*",
+                "ext-simplexml": "*",
+                "ext-spl": "*",
+                "fabpot/php-cs-fixer": "~1.2",
+                "lib-libxml": "*",
+                "lusitanian/oauth": "~0.3",
+                "pdepend/pdepend": "2.0.6",
+                "phpmd/phpmd": "@stable",
+                "phpunit/phpunit": "4.1.0",
+                "sjparkinson/static-review": "~4.1",
+                "squizlabs/php_codesniffer": "1.5.3"
+            },
+            "type": "project",
+            "autoload": {
+                "psr-4": {
+                    "Magento\\Framework\\": "lib/internal/Magento/Framework/",
+                    "Magento\\Setup\\": "setup/src/Magento/Setup/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "eCommerce Platform for Growth (Community Edition)",
+            "time": "2015-03-27 15:47:02"
+        },
+        {
+            "name": "magento/sample-module-minimal",
+            "version": "1.0.0",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_sample-module-minimal-1.0.0.zip",
+                "reference": null,
+                "shasum": "8c8bd3ee4907a6a91bffeac177628bd4f238d6e4"
+            },
+            "require": {
+                "magento/magento-composer-installer": "*",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-module",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "Magento/SampleMinimal"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "A minimal skeleton Magento 2 module"
+        },
+        {
+            "name": "magento/theme-adminhtml-backend",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_theme-adminhtml-backend-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "d8bd8d6b70d65d6f38751f7e9f9cbbebf751c97c"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-theme",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "adminhtml/Magento/backend"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/theme-frontend-blank",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_theme-frontend-blank-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "e298ae05894e97ba3d94a87b77086dfe0c2d974a"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-theme",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "frontend/Magento/blank"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/theme-frontend-luma",
+            "version": "0.74.0-beta2",
+            "dist": {
+                "type": "zip",
+                "url": "https://packages.magento.com/_packages/magento_theme-frontend-luma-0.74.0-beta2.zip",
+                "reference": null,
+                "shasum": "82e29e8fd8d928c33f064fb431d06f3968f37327"
+            },
+            "require": {
+                "magento/framework": "0.74.0-beta2",
+                "magento/magento-composer-installer": "*",
+                "magento/theme-frontend-blank": "0.74.0-beta2",
+                "php": "~5.5.0|~5.6.0"
+            },
+            "type": "magento2-theme",
+            "extra": {
+                "map": [
+                    [
+                        "*",
+                        "frontend/Magento/luma"
+                    ]
+                ]
+            },
+            "license": [
+                "OSL-3.0",
+                "AFL-3.0"
+            ],
+            "description": "N/A"
+        },
+        {
+            "name": "magento/zendframework1",
+            "version": "1.12.10",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/magento/zf1.git",
+                "reference": "d1e5cd8c9f83229bcdd9bb485c3ce25259c77884"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/magento/zf1/zipball/d1e5cd8c9f83229bcdd9bb485c3ce25259c77884",
+                "reference": "d1e5cd8c9f83229bcdd9bb485c3ce25259c77884",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.2.11"
+            },
+            "require-dev": {
+                "phpunit/dbunit": "1.3.*",
+                "phpunit/phpunit": "3.7.*"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.12.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Zend_": "library/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "include-path": [
+                "library/"
+            ],
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "description": "Magento Zend Framework 1",
+            "homepage": "http://framework.zend.com/",
+            "keywords": [
+                "ZF1",
+                "framework"
+            ],
+            "time": "2015-02-06 17:25:45"
+        },
+        {
+            "name": "monolog/monolog",
+            "version": "1.11.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/Seldaek/monolog.git",
+                "reference": "ec3961874c43840e96da3a8a1ed20d8c73d7e5aa"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/Seldaek/monolog/zipball/ec3961874c43840e96da3a8a1ed20d8c73d7e5aa",
+                "reference": "ec3961874c43840e96da3a8a1ed20d8c73d7e5aa",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.0",
+                "psr/log": "~1.0"
+            },
+            "provide": {
+                "psr/log-implementation": "1.0.0"
+            },
+            "require-dev": {
+                "aws/aws-sdk-php": "~2.4, >2.4.8",
+                "doctrine/couchdb": "~1.0@dev",
+                "graylog2/gelf-php": "~1.0",
+                "phpunit/phpunit": "~3.7.0",
+                "raven/raven": "~0.5",
+                "ruflin/elastica": "0.90.*",
+                "videlalvaro/php-amqplib": "~2.4"
+            },
+            "suggest": {
+                "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
+                "doctrine/couchdb": "Allow sending log messages to a CouchDB server",
+                "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
+                "ext-mongo": "Allow sending log messages to a MongoDB server",
+                "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
+                "raven/raven": "Allow sending log messages to a Sentry server",
+                "rollbar/rollbar": "Allow sending log messages to Rollbar",
+                "ruflin/elastica": "Allow sending log messages to an Elastic Search server",
+                "videlalvaro/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.11.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Monolog\\": "src/Monolog"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Jordi Boggiano",
+                    "email": "j.boggiano@seld.be",
+                    "homepage": "http://seld.be"
+                }
+            ],
+            "description": "Sends your logs to files, sockets, inboxes, databases and various web services",
+            "homepage": "http://github.com/Seldaek/monolog",
+            "keywords": [
+                "log",
+                "logging",
+                "psr-3"
+            ],
+            "time": "2014-09-30 13:30:58"
+        },
+        {
+            "name": "oyejorge/less.php",
+            "version": "v1.7.0.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/oyejorge/less.php.git",
+                "reference": "6e08ecb07e6f6d9170c23e8744c58fdd822ad0de"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/oyejorge/less.php/zipball/6e08ecb07e6f6d9170c23e8744c58fdd822ad0de",
+                "reference": "6e08ecb07e6f6d9170c23e8744c58fdd822ad0de",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.2"
+            },
+            "bin": [
+                "bin/lessc"
+            ],
+            "type": "library",
+            "autoload": {
+                "psr-0": {
+                    "Less": "lib/"
+                },
+                "classmap": [
+                    "lessc.inc.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "Apache-2.0"
+            ],
+            "authors": [
+                {
+                    "name": "Matt Agar",
+                    "homepage": "https://github.com/agar"
+                },
+                {
+                    "name": "Martin Jantošovič",
+                    "homepage": "https://github.com/Mordred"
+                },
+                {
+                    "name": "Josh Schmidt",
+                    "homepage": "https://github.com/oyejorge"
+                }
+            ],
+            "description": "PHP port of the Javascript version of LESS http://lesscss.org",
+            "homepage": "http://lessphp.gpeasy.com",
+            "keywords": [
+                "css",
+                "less",
+                "less.js",
+                "lesscss",
+                "php",
+                "stylesheet"
+            ],
+            "time": "2015-03-10 18:12:59"
+        },
+        {
+            "name": "psr/log",
+            "version": "dev-master",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-fig/log.git",
+                "reference": "bf2c13de4300e227d7b2fd08027673a79c519987"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-fig/log/zipball/bf2c13de4300e227d7b2fd08027673a79c519987",
+                "reference": "bf2c13de4300e227d7b2fd08027673a79c519987",
+                "shasum": ""
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Psr\\Log\\": "Psr/Log/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "PHP-FIG",
+                    "homepage": "http://www.php-fig.org/"
+                }
+            ],
+            "description": "Common interface for logging libraries",
+            "keywords": [
+                "log",
+                "psr",
+                "psr-3"
+            ],
+            "time": "2015-03-26 14:39:45"
+        },
+        {
+            "name": "seld/jsonlint",
+            "version": "1.3.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/Seldaek/jsonlint.git",
+                "reference": "863ae85c6d3ef60ca49cb12bd051c4a0648c40c4"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/863ae85c6d3ef60ca49cb12bd051c4a0648c40c4",
+                "reference": "863ae85c6d3ef60ca49cb12bd051c4a0648c40c4",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.0"
+            },
+            "bin": [
+                "bin/jsonlint"
+            ],
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Seld\\JsonLint\\": "src/Seld/JsonLint/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Jordi Boggiano",
+                    "email": "j.boggiano@seld.be",
+                    "homepage": "http://seld.be"
+                }
+            ],
+            "description": "JSON Linter",
+            "keywords": [
+                "json",
+                "linter",
+                "parser",
+                "validator"
+            ],
+            "time": "2015-01-04 21:18:15"
+        },
+        {
+            "name": "symfony/console",
+            "version": "2.8.x-dev",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/Console.git",
+                "reference": "7e857a2b52b5833ed27d78a6b1b846bd440ee8bd"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/Console/zipball/7e857a2b52b5833ed27d78a6b1b846bd440ee8bd",
+                "reference": "7e857a2b52b5833ed27d78a6b1b846bd440ee8bd",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.9"
+            },
+            "require-dev": {
+                "psr/log": "~1.0",
+                "symfony/event-dispatcher": "~2.1|~3.0.0",
+                "symfony/phpunit-bridge": "~2.7|~3.0.0",
+                "symfony/process": "~2.1|~3.0.0"
+            },
+            "suggest": {
+                "psr/log": "For using the console logger",
+                "symfony/event-dispatcher": "",
+                "symfony/process": ""
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.8-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Console\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony Console Component",
+            "homepage": "https://symfony.com",
+            "time": "2015-05-15 14:11:12"
+        },
+        {
+            "name": "symfony/finder",
+            "version": "2.8.x-dev",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/Finder.git",
+                "reference": "fd26bdbb67bc8753884eff5767a4f1ee90e2284b"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/Finder/zipball/fd26bdbb67bc8753884eff5767a4f1ee90e2284b",
+                "reference": "fd26bdbb67bc8753884eff5767a4f1ee90e2284b",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.9"
+            },
+            "require-dev": {
+                "symfony/phpunit-bridge": "~2.7|~3.0.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.8-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Finder\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony Finder Component",
+            "homepage": "https://symfony.com",
+            "time": "2015-05-15 14:11:12"
+        },
+        {
+            "name": "symfony/process",
+            "version": "2.8.x-dev",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/Process.git",
+                "reference": "daf96f1491cf0b8d8de60e6d3b5fda8e502b3798"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/Process/zipball/daf96f1491cf0b8d8de60e6d3b5fda8e502b3798",
+                "reference": "daf96f1491cf0b8d8de60e6d3b5fda8e502b3798",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.9"
+            },
+            "require-dev": {
+                "symfony/phpunit-bridge": "~2.7|~3.0.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.8-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Process\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony Process Component",
+            "homepage": "https://symfony.com",
+            "time": "2015-05-15 14:11:12"
+        },
+        {
+            "name": "tubalmartin/cssmin",
+            "version": "v2.4.8-p4",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/tubalmartin/YUI-CSS-compressor-PHP-port.git",
+                "reference": "fe84d71e8420243544c0ce3bd0f5d7c1936b0f90"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/tubalmartin/YUI-CSS-compressor-PHP-port/zipball/fe84d71e8420243544c0ce3bd0f5d7c1936b0f90",
+                "reference": "fe84d71e8420243544c0ce3bd0f5d7c1936b0f90",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.0.0"
+            },
+            "type": "library",
+            "autoload": {
+                "classmap": [
+                    "cssmin.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Túbal Martín",
+                    "homepage": "http://tubalmartin.me/"
+                }
+            ],
+            "description": "A PHP port of the YUI CSS compressor",
+            "homepage": "https://github.com/tubalmartin/YUI-CSS-compressor-PHP-port",
+            "keywords": [
+                "compress",
+                "compressor",
+                "css",
+                "minify",
+                "yui"
+            ],
+            "time": "2014-09-22 08:08:50"
+        },
+        {
+            "name": "zendframework/zend-code",
+            "version": "2.3.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/zend-code.git",
+                "reference": "a64e90c9ee8c939335ee7e21e39e3342c0e54526"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/zend-code/zipball/a64e90c9ee8c939335ee7e21e39e3342c0e54526",
+                "reference": "a64e90c9ee8c939335ee7e21e39e3342c0e54526",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-eventmanager": "self.version"
+            },
+            "require-dev": {
+                "doctrine/common": ">=2.1",
+                "fabpot/php-cs-fixer": "1.7.*",
+                "phpunit/phpunit": "~4.0",
+                "satooshi/php-coveralls": "dev-master",
+                "zendframework/zend-stdlib": "self.version"
+            },
+            "suggest": {
+                "doctrine/common": "Doctrine\\Common >=2.1 for annotation features",
+                "zendframework/zend-stdlib": "Zend\\Stdlib component"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Code\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "description": "provides facilities to generate arbitrary code using an object oriented interface",
+            "homepage": "https://github.com/zendframework/zend-code",
+            "keywords": [
+                "code",
+                "zf2"
+            ],
+            "time": "2014-04-15 14:47:18"
+        },
+        {
+            "name": "zendframework/zend-config",
+            "version": "2.3.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/zend-config.git",
+                "reference": "698c139707380b29fd09791ec1c21b837e9a3f15"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/zend-config/zipball/698c139707380b29fd09791ec1c21b837e9a3f15",
+                "reference": "698c139707380b29fd09791ec1c21b837e9a3f15",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-stdlib": "self.version"
+            },
+            "require-dev": {
+                "fabpot/php-cs-fixer": "1.7.*",
+                "phpunit/phpunit": "~4.0",
+                "satooshi/php-coveralls": "dev-master",
+                "zendframework/zend-filter": "self.version",
+                "zendframework/zend-i18n": "self.version",
+                "zendframework/zend-json": "self.version",
+                "zendframework/zend-servicemanager": "self.version"
+            },
+            "suggest": {
+                "zendframework/zend-filter": "Zend\\Filter component",
+                "zendframework/zend-i18n": "Zend\\I18n component",
+                "zendframework/zend-json": "Zend\\Json to use the Json reader or writer classes",
+                "zendframework/zend-servicemanager": "Zend\\ServiceManager for use with the Config Factory to retrieve reader and writer instances"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Config\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "description": "provides a nested object property based user interface for accessing this configuration data within application code",
+            "homepage": "https://github.com/zendframework/zend-config",
+            "keywords": [
+                "config",
+                "zf2"
+            ],
+            "time": "2014-04-15 13:59:53"
+        },
+        {
+            "name": "zendframework/zend-console",
+            "version": "2.3.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/zend-console.git",
+                "reference": "4253efd75a022d97ef326eac38a06c8eebb48a37"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/zend-console/zipball/4253efd75a022d97ef326eac38a06c8eebb48a37",
+                "reference": "4253efd75a022d97ef326eac38a06c8eebb48a37",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-stdlib": "self.version"
+            },
+            "require-dev": {
+                "fabpot/php-cs-fixer": "1.7.*",
+                "phpunit/phpunit": "~4.0",
+                "satooshi/php-coveralls": "dev-master"
+            },
+            "suggest": {
+                "zendframework/zend-filter": "To support DefaultRouteMatcher usage",
+                "zendframework/zend-validator": "To support DefaultRouteMatcher usage"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Console\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "homepage": "https://github.com/zendframework/zend-console",
+            "keywords": [
+                "console",
+                "zf2"
+            ],
+            "time": "2014-04-14 19:50:30"
+        },
+        {
+            "name": "zendframework/zend-di",
+            "version": "2.3.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/zend-di.git",
+                "reference": "7502db10f8023bfd4e860ce83c9cdeda0db42c31"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/zend-di/zipball/7502db10f8023bfd4e860ce83c9cdeda0db42c31",
+                "reference": "7502db10f8023bfd4e860ce83c9cdeda0db42c31",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-code": "self.version",
+                "zendframework/zend-stdlib": "self.version"
+            },
+            "require-dev": {
+                "fabpot/php-cs-fixer": "1.7.*",
+                "phpunit/phpunit": "~4.0",
+                "satooshi/php-coveralls": "dev-master",
+                "zendframework/zend-servicemanager": "self.version"
+            },
+            "suggest": {
+                "zendframework/zend-servicemanager": "Zend\\ServiceManager component"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Di\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "homepage": "https://github.com/zendframework/zend-di",
+            "keywords": [
+                "di",
+                "zf2"
+            ],
+            "time": "2014-04-14 19:50:30"
+        },
+        {
+            "name": "zendframework/zend-escaper",
+            "version": "2.3.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/zend-escaper.git",
+                "reference": "2b2fcb6141cc2a2c6cc0c596e82771c72ef4ddc1"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/zend-escaper/zipball/2b2fcb6141cc2a2c6cc0c596e82771c72ef4ddc1",
+                "reference": "2b2fcb6141cc2a2c6cc0c596e82771c72ef4ddc1",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23"
+            },
+            "require-dev": {
+                "fabpot/php-cs-fixer": "1.7.*",
+                "phpunit/phpunit": "~4.0",
+                "satooshi/php-coveralls": "dev-master"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Escaper\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "homepage": "https://github.com/zendframework/zend-escaper",
+            "keywords": [
+                "escaper",
+                "zf2"
+            ],
+            "time": "2014-04-14 19:50:30"
+        },
+        {
+            "name": "zendframework/zend-eventmanager",
+            "version": "2.3.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/zend-eventmanager.git",
+                "reference": "ec158e89d0290f988a29ccd6bf179b561efbb702"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/zend-eventmanager/zipball/ec158e89d0290f988a29ccd6bf179b561efbb702",
+                "reference": "ec158e89d0290f988a29ccd6bf179b561efbb702",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-stdlib": "self.version"
+            },
+            "require-dev": {
+                "fabpot/php-cs-fixer": "1.7.*",
+                "phpunit/phpunit": "~4.0",
+                "satooshi/php-coveralls": "dev-master"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\EventManager\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "homepage": "https://github.com/zendframework/zend-event-manager",
+            "keywords": [
+                "eventmanager",
+                "zf2"
+            ],
+            "time": "2014-04-15 13:59:53"
+        },
+        {
+            "name": "zendframework/zend-filter",
+            "version": "2.3.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/zend-filter.git",
+                "reference": "307fe694659e08ffd710c70e4db8bc60187bcc84"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/zend-filter/zipball/307fe694659e08ffd710c70e4db8bc60187bcc84",
+                "reference": "307fe694659e08ffd710c70e4db8bc60187bcc84",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-stdlib": "self.version"
+            },
+            "require-dev": {
+                "fabpot/php-cs-fixer": "1.7.*",
+                "phpunit/phpunit": "~4.0",
+                "satooshi/php-coveralls": "dev-master",
+                "zendframework/zend-crypt": "self.version",
+                "zendframework/zend-servicemanager": "self.version",
+                "zendframework/zend-uri": "self.version"
+            },
+            "suggest": {
+                "zendframework/zend-crypt": "Zend\\Crypt component",
+                "zendframework/zend-i18n": "Zend\\I18n component",
+                "zendframework/zend-servicemanager": "Zend\\ServiceManager component",
+                "zendframework/zend-uri": "Zend\\Uri component for UriNormalize filter"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Filter\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "description": "provides a set of commonly needed data filters",
+            "homepage": "https://github.com/zendframework/zend-filter",
+            "keywords": [
+                "filter",
+                "zf2"
+            ],
+            "time": "2014-04-14 19:50:30"
+        },
+        {
+            "name": "zendframework/zend-form",
+            "version": "2.3.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/zend-form.git",
+                "reference": "d7a1f5bc4626b1df990391502a868b28c37ba65d"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/zend-form/zipball/d7a1f5bc4626b1df990391502a868b28c37ba65d",
+                "reference": "d7a1f5bc4626b1df990391502a868b28c37ba65d",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-inputfilter": "self.version",
+                "zendframework/zend-stdlib": "self.version"
+            },
+            "require-dev": {
+                "fabpot/php-cs-fixer": "1.7.*",
+                "phpunit/phpunit": "~4.0",
+                "satooshi/php-coveralls": "dev-master",
+                "zendframework/zend-captcha": "self.version",
+                "zendframework/zend-code": "self.version",
+                "zendframework/zend-eventmanager": "self.version",
+                "zendframework/zend-filter": "self.version",
+                "zendframework/zend-i18n": "self.version",
+                "zendframework/zend-servicemanager": "self.version",
+                "zendframework/zend-validator": "self.version",
+                "zendframework/zend-view": "self.version",
+                "zendframework/zendservice-recaptcha": "*"
+            },
+            "suggest": {
+                "zendframework/zend-captcha": "Zend\\Captcha component",
+                "zendframework/zend-code": "Zend\\Code component",
+                "zendframework/zend-eventmanager": "Zend\\EventManager component",
+                "zendframework/zend-filter": "Zend\\Filter component",
+                "zendframework/zend-i18n": "Zend\\I18n component",
+                "zendframework/zend-servicemanager": "Zend\\ServiceManager component",
+                "zendframework/zend-validator": "Zend\\Validator component",
+                "zendframework/zend-view": "Zend\\View component",
+                "zendframework/zendservice-recaptcha": "ZendService\\ReCaptcha component"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Form\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "homepage": "https://github.com/zendframework/zend-form",
+            "keywords": [
+                "form",
+                "zf2"
+            ],
+            "time": "2014-04-15 14:36:41"
+        },
+        {
+            "name": "zendframework/zend-http",
+            "version": "2.3.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/zend-http.git",
+                "reference": "869ce7bdf60727e14d85c305d2948fbe831c3534"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/zend-http/zipball/869ce7bdf60727e14d85c305d2948fbe831c3534",
+                "reference": "869ce7bdf60727e14d85c305d2948fbe831c3534",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-loader": "self.version",
+                "zendframework/zend-stdlib": "self.version",
+                "zendframework/zend-uri": "self.version",
+                "zendframework/zend-validator": "self.version"
+            },
+            "require-dev": {
+                "fabpot/php-cs-fixer": "1.7.*",
+                "phpunit/phpunit": "~4.0",
+                "satooshi/php-coveralls": "dev-master"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Http\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "description": "provides an easy interface for performing Hyper-Text Transfer Protocol (HTTP) requests",
+            "homepage": "https://github.com/zendframework/zend-http",
+            "keywords": [
+                "http",
+                "zf2"
+            ],
+            "time": "2014-04-15 13:59:53"
+        },
+        {
+            "name": "zendframework/zend-inputfilter",
+            "version": "2.3.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/zend-inputfilter.git",
+                "reference": "abca740015a856d03542f5b6c535b8874f84b622"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/zend-inputfilter/zipball/abca740015a856d03542f5b6c535b8874f84b622",
+                "reference": "abca740015a856d03542f5b6c535b8874f84b622",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-filter": "self.version",
+                "zendframework/zend-stdlib": "self.version",
+                "zendframework/zend-validator": "self.version"
+            },
+            "require-dev": {
+                "fabpot/php-cs-fixer": "1.7.*",
+                "phpunit/phpunit": "~4.0",
+                "satooshi/php-coveralls": "dev-master",
+                "zendframework/zend-servicemanager": "self.version"
+            },
+            "suggest": {
+                "zendframework/zend-servicemanager": "To support plugin manager support"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\InputFilter\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "homepage": "https://github.com/zendframework/zend-input-filter",
+            "keywords": [
+                "inputfilter",
+                "zf2"
+            ],
+            "time": "2014-04-15 13:59:53"
+        },
+        {
+            "name": "zendframework/zend-json",
+            "version": "2.3.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/zend-json.git",
+                "reference": "5284687fc3aeab27961d2e17ada08973ae6daafe"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/zend-json/zipball/5284687fc3aeab27961d2e17ada08973ae6daafe",
+                "reference": "5284687fc3aeab27961d2e17ada08973ae6daafe",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-stdlib": "self.version"
+            },
+            "require-dev": {
+                "fabpot/php-cs-fixer": "1.7.*",
+                "phpunit/phpunit": "~4.0",
+                "satooshi/php-coveralls": "dev-master",
+                "zendframework/zend-http": "self.version",
+                "zendframework/zend-server": "self.version"
+            },
+            "suggest": {
+                "zendframework/zend-http": "Zend\\Http component",
+                "zendframework/zend-server": "Zend\\Server component",
+                "zendframework/zendxml": "To support Zend\\Json\\Json::fromXml() usage"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Json\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "description": "provides convenience methods for serializing native PHP to JSON and decoding JSON to native PHP",
+            "homepage": "https://github.com/zendframework/zend-json",
+            "keywords": [
+                "json",
+                "zf2"
+            ],
+            "time": "2014-04-14 19:50:30"
+        },
+        {
+            "name": "zendframework/zend-loader",
+            "version": "2.3.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/zend-loader.git",
+                "reference": "5e0bd7e28c644078685f525cf8ae03d9a01ae292"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/zend-loader/zipball/5e0bd7e28c644078685f525cf8ae03d9a01ae292",
+                "reference": "5e0bd7e28c644078685f525cf8ae03d9a01ae292",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23"
+            },
+            "require-dev": {
+                "fabpot/php-cs-fixer": "1.7.*",
+                "phpunit/phpunit": "~4.0",
+                "satooshi/php-coveralls": "dev-master"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Loader\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "homepage": "https://github.com/zendframework/zend-loader",
+            "keywords": [
+                "loader",
+                "zf2"
+            ],
+            "time": "2014-04-14 19:50:30"
+        },
+        {
+            "name": "zendframework/zend-log",
+            "version": "2.3.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/zend-log.git",
+                "reference": "217611433f5cb56d4420a1db8f164e5db85d815d"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/zend-log/zipball/217611433f5cb56d4420a1db8f164e5db85d815d",
+                "reference": "217611433f5cb56d4420a1db8f164e5db85d815d",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-servicemanager": "self.version",
+                "zendframework/zend-stdlib": "self.version"
+            },
+            "require-dev": {
+                "fabpot/php-cs-fixer": "1.7.*",
+                "phpunit/phpunit": "~4.0",
+                "satooshi/php-coveralls": "dev-master",
+                "zendframework/zend-console": "self.version",
+                "zendframework/zend-db": "self.version",
+                "zendframework/zend-escaper": "self.version",
+                "zendframework/zend-mail": "self.version",
+                "zendframework/zend-validator": "self.version"
+            },
+            "suggest": {
+                "ext-mongo": "*",
+                "zendframework/zend-console": "Zend\\Console component",
+                "zendframework/zend-db": "Zend\\Db component",
+                "zendframework/zend-escaper": "Zend\\Escaper component, for use in the XML formatter",
+                "zendframework/zend-mail": "Zend\\Mail component",
+                "zendframework/zend-validator": "Zend\\Validator component"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Log\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "description": "component for general purpose logging",
+            "homepage": "https://github.com/zendframework/zend-log",
+            "keywords": [
+                "log",
+                "logging",
+                "zf2"
+            ],
+            "time": "2014-04-15 13:59:53"
+        },
+        {
+            "name": "zendframework/zend-math",
+            "version": "2.3.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/zend-math.git",
+                "reference": "63225fcebb196fc6e20094f5f01e9354779ec31e"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/zend-math/zipball/63225fcebb196fc6e20094f5f01e9354779ec31e",
+                "reference": "63225fcebb196fc6e20094f5f01e9354779ec31e",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23"
+            },
+            "require-dev": {
+                "fabpot/php-cs-fixer": "1.7.*",
+                "phpunit/phpunit": "~4.0",
+                "satooshi/php-coveralls": "dev-master"
+            },
+            "suggest": {
+                "ext-bcmath": "If using the bcmath functionality",
+                "ext-gmp": "If using the gmp functionality",
+                "ircmaxell/random-lib": "Fallback random byte generator for Zend\\Math\\Rand if OpenSSL/Mcrypt extensions are unavailable",
+                "zendframework/zend-servicemanager": ">= current version, if using the BigInteger::factory functionality"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Math\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "homepage": "https://github.com/zendframework/zend-math",
+            "keywords": [
+                "math",
+                "zf2"
+            ],
+            "time": "2014-04-14 19:50:30"
+        },
+        {
+            "name": "zendframework/zend-modulemanager",
+            "version": "2.3.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/zend-modulemanager.git",
+                "reference": "d4591b958e40b8f5ae8110d9b203331437aa19f2"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/zend-modulemanager/zipball/d4591b958e40b8f5ae8110d9b203331437aa19f2",
+                "reference": "d4591b958e40b8f5ae8110d9b203331437aa19f2",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-eventmanager": "self.version",
+                "zendframework/zend-stdlib": "self.version"
+            },
+            "require-dev": {
+                "fabpot/php-cs-fixer": "1.7.*",
+                "phpunit/phpunit": "~4.0",
+                "satooshi/php-coveralls": "dev-master",
+                "zendframework/zend-config": "self.version",
+                "zendframework/zend-console": "self.version",
+                "zendframework/zend-loader": "self.version",
+                "zendframework/zend-mvc": "self.version",
+                "zendframework/zend-servicemanager": "self.version"
+            },
+            "suggest": {
+                "zendframework/zend-config": "Zend\\Config component",
+                "zendframework/zend-console": "Zend\\Console component",
+                "zendframework/zend-loader": "Zend\\Loader component",
+                "zendframework/zend-mvc": "Zend\\Mvc component",
+                "zendframework/zend-servicemanager": "Zend\\ServiceManager component"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\ModuleManager\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "homepage": "https://github.com/zendframework/zend-module-manager",
+            "keywords": [
+                "modulemanager",
+                "zf2"
+            ],
+            "time": "2014-04-14 19:50:30"
+        },
+        {
+            "name": "zendframework/zend-mvc",
+            "version": "2.3.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/zend-mvc.git",
+                "reference": "ee76ddd009ecb0c507bb8ab396fbe719aea8f1ff"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/zend-mvc/zipball/ee76ddd009ecb0c507bb8ab396fbe719aea8f1ff",
+                "reference": "ee76ddd009ecb0c507bb8ab396fbe719aea8f1ff",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-eventmanager": "self.version",
+                "zendframework/zend-form": "self.version",
+                "zendframework/zend-servicemanager": "self.version",
+                "zendframework/zend-stdlib": "self.version"
+            },
+            "require-dev": {
+                "fabpot/php-cs-fixer": "1.7.*",
+                "phpunit/phpunit": "~4.0",
+                "satooshi/php-coveralls": "dev-master",
+                "zendframework/zend-authentication": "self.version",
+                "zendframework/zend-console": "self.version",
+                "zendframework/zend-di": "self.version",
+                "zendframework/zend-filter": "self.version",
+                "zendframework/zend-form": "self.version",
+                "zendframework/zend-http": "self.version",
+                "zendframework/zend-i18n": "self.version",
+                "zendframework/zend-inputfilter": "self.version",
+                "zendframework/zend-json": "self.version",
+                "zendframework/zend-log": "self.version",
+                "zendframework/zend-modulemanager": "self.version",
+                "zendframework/zend-serializer": "self.version",
+                "zendframework/zend-session": "self.version",
+                "zendframework/zend-text": "self.version",
+                "zendframework/zend-uri": "self.version",
+                "zendframework/zend-validator": "self.version",
+                "zendframework/zend-version": "self.version",
+                "zendframework/zend-view": "self.version"
+            },
+            "suggest": {
+                "zendframework/zend-authentication": "Zend\\Authentication component for Identity plugin",
+                "zendframework/zend-config": "Zend\\Config component",
+                "zendframework/zend-console": "Zend\\Console component",
+                "zendframework/zend-di": "Zend\\Di component",
+                "zendframework/zend-filter": "Zend\\Filter component",
+                "zendframework/zend-form": "Zend\\Form component",
+                "zendframework/zend-http": "Zend\\Http component",
+                "zendframework/zend-i18n": "Zend\\I18n component for translatable segments",
+                "zendframework/zend-inputfilter": "Zend\\Inputfilter component",
+                "zendframework/zend-json": "Zend\\Json component",
+                "zendframework/zend-log": "Zend\\Log component",
+                "zendframework/zend-modulemanager": "Zend\\ModuleManager component",
+                "zendframework/zend-serializer": "Zend\\Serializer component",
+                "zendframework/zend-session": "Zend\\Session component for FlashMessenger, PRG, and FPRG plugins",
+                "zendframework/zend-stdlib": "Zend\\Stdlib component",
+                "zendframework/zend-text": "Zend\\Text component",
+                "zendframework/zend-uri": "Zend\\Uri component",
+                "zendframework/zend-validator": "Zend\\Validator component",
+                "zendframework/zend-version": "Zend\\Version component",
+                "zendframework/zend-view": "Zend\\View component"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Mvc\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "homepage": "https://github.com/zendframework/zend-mvc",
+            "keywords": [
+                "mvc",
+                "zf2"
+            ],
+            "time": "2014-04-14 19:50:30"
+        },
+        {
+            "name": "zendframework/zend-serializer",
+            "version": "2.3.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/zend-serializer.git",
+                "reference": "22f73b0d0ff1158216bd5bcacf6bd00f7be1a0f6"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/zend-serializer/zipball/22f73b0d0ff1158216bd5bcacf6bd00f7be1a0f6",
+                "reference": "22f73b0d0ff1158216bd5bcacf6bd00f7be1a0f6",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-json": "self.version",
+                "zendframework/zend-math": "self.version",
+                "zendframework/zend-stdlib": "self.version"
+            },
+            "require-dev": {
+                "fabpot/php-cs-fixer": "1.7.*",
+                "phpunit/phpunit": "~4.0",
+                "satooshi/php-coveralls": "dev-master",
+                "zendframework/zend-servicemanager": "self.version"
+            },
+            "suggest": {
+                "zendframework/zend-servicemanager": "To support plugin manager support"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Serializer\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "description": "provides an adapter based interface to simply generate storable representation of PHP types by different facilities, and recover",
+            "homepage": "https://github.com/zendframework/zend-serializer",
+            "keywords": [
+                "serializer",
+                "zf2"
+            ],
+            "time": "2014-04-14 19:50:30"
+        },
+        {
+            "name": "zendframework/zend-server",
+            "version": "2.3.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/zend-server.git",
+                "reference": "bc5fb97f4ac48a5dc54bd18dded21a3e1eea552c"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/zend-server/zipball/bc5fb97f4ac48a5dc54bd18dded21a3e1eea552c",
+                "reference": "bc5fb97f4ac48a5dc54bd18dded21a3e1eea552c",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-code": "self.version",
+                "zendframework/zend-stdlib": "self.version"
+            },
+            "require-dev": {
+                "fabpot/php-cs-fixer": "1.7.*",
+                "phpunit/phpunit": "~4.0",
+                "satooshi/php-coveralls": "dev-master"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Server\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "homepage": "https://github.com/zendframework/zend-server",
+            "keywords": [
+                "server",
+                "zf2"
+            ],
+            "time": "2014-04-14 19:50:30"
+        },
+        {
+            "name": "zendframework/zend-servicemanager",
+            "version": "2.3.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/zend-servicemanager.git",
+                "reference": "7a428b595a1fcd4c2a8026ee5d5f89a56036f682"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/zend-servicemanager/zipball/7a428b595a1fcd4c2a8026ee5d5f89a56036f682",
+                "reference": "7a428b595a1fcd4c2a8026ee5d5f89a56036f682",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23"
+            },
+            "require-dev": {
+                "fabpot/php-cs-fixer": "1.7.*",
+                "phpunit/phpunit": "~4.0",
+                "satooshi/php-coveralls": "dev-master",
+                "zendframework/zend-di": "self.version"
+            },
+            "suggest": {
+                "zendframework/zend-di": "Zend\\Di component"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\ServiceManager\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "homepage": "https://github.com/zendframework/zend-service-manager",
+            "keywords": [
+                "servicemanager",
+                "zf2"
+            ],
+            "time": "2014-04-15 13:59:53"
+        },
+        {
+            "name": "zendframework/zend-soap",
+            "version": "2.3.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/zend-soap.git",
+                "reference": "fab9f5309be04cacf01af54f694aed5102592c5c"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/zend-soap/zipball/fab9f5309be04cacf01af54f694aed5102592c5c",
+                "reference": "fab9f5309be04cacf01af54f694aed5102592c5c",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-server": "self.version",
+                "zendframework/zend-stdlib": "self.version",
+                "zendframework/zend-uri": "self.version"
+            },
+            "require-dev": {
+                "fabpot/php-cs-fixer": "1.7.*",
+                "phpunit/phpunit": "~4.0",
+                "satooshi/php-coveralls": "dev-master",
+                "zendframework/zend-http": "self.version"
+            },
+            "suggest": {
+                "zendframework/zend-http": "Zend\\Http component"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Soap\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "homepage": "https://github.com/zendframework/zend-soap",
+            "keywords": [
+                "soap",
+                "zf2"
+            ],
+            "time": "2014-04-14 19:50:30"
+        },
+        {
+            "name": "zendframework/zend-stdlib",
+            "version": "2.3.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/zend-stdlib.git",
+                "reference": "6079302963d57f36a9ba92ed3f38b992997aa78d"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/zend-stdlib/zipball/6079302963d57f36a9ba92ed3f38b992997aa78d",
+                "reference": "6079302963d57f36a9ba92ed3f38b992997aa78d",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23"
+            },
+            "require-dev": {
+                "fabpot/php-cs-fixer": "1.7.*",
+                "phpunit/phpunit": "~4.0",
+                "satooshi/php-coveralls": "dev-master",
+                "zendframework/zend-eventmanager": "self.version",
+                "zendframework/zend-filter": "self.version",
+                "zendframework/zend-serializer": "self.version",
+                "zendframework/zend-servicemanager": "self.version"
+            },
+            "suggest": {
+                "zendframework/zend-eventmanager": "To support aggregate hydrator usage",
+                "zendframework/zend-filter": "To support naming strategy hydrator usage",
+                "zendframework/zend-serializer": "Zend\\Serializer component",
+                "zendframework/zend-servicemanager": "To support hydrator plugin manager usage"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Stdlib\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "homepage": "https://github.com/zendframework/zend-stdlib",
+            "keywords": [
+                "stdlib",
+                "zf2"
+            ],
+            "time": "2014-04-15 13:59:53"
+        },
+        {
+            "name": "zendframework/zend-text",
+            "version": "2.3.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/zend-text.git",
+                "reference": "e9b3fffcc6241f7cfdb33282ed10979cd8ba9b90"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/zend-text/zipball/e9b3fffcc6241f7cfdb33282ed10979cd8ba9b90",
+                "reference": "e9b3fffcc6241f7cfdb33282ed10979cd8ba9b90",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-servicemanager": "self.version",
+                "zendframework/zend-stdlib": "self.version"
+            },
+            "require-dev": {
+                "fabpot/php-cs-fixer": "1.7.*",
+                "phpunit/phpunit": "~4.0",
+                "satooshi/php-coveralls": "dev-master"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Text\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "homepage": "https://github.com/zendframework/zend-text",
+            "keywords": [
+                "text",
+                "zf2"
+            ],
+            "time": "2014-04-14 19:50:30"
+        },
+        {
+            "name": "zendframework/zend-uri",
+            "version": "2.3.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/zend-uri.git",
+                "reference": "0de6ba8c166a235588783ff8e88a19b364630d89"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/zend-uri/zipball/0de6ba8c166a235588783ff8e88a19b364630d89",
+                "reference": "0de6ba8c166a235588783ff8e88a19b364630d89",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-escaper": "self.version",
+                "zendframework/zend-validator": "self.version"
+            },
+            "require-dev": {
+                "fabpot/php-cs-fixer": "1.7.*",
+                "phpunit/phpunit": "~4.0",
+                "satooshi/php-coveralls": "dev-master"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Uri\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "description": "a component that aids in manipulating and validating » Uniform Resource Identifiers (URIs)",
+            "homepage": "https://github.com/zendframework/zend-uri",
+            "keywords": [
+                "uri",
+                "zf2"
+            ],
+            "time": "2014-04-14 19:50:30"
+        },
+        {
+            "name": "zendframework/zend-validator",
+            "version": "2.3.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/zend-validator.git",
+                "reference": "a5f97f6c3a27a27b1235f724ad0048715459f013"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/zend-validator/zipball/a5f97f6c3a27a27b1235f724ad0048715459f013",
+                "reference": "a5f97f6c3a27a27b1235f724ad0048715459f013",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-stdlib": "self.version"
+            },
+            "require-dev": {
+                "fabpot/php-cs-fixer": "1.7.*",
+                "phpunit/phpunit": "~4.0",
+                "satooshi/php-coveralls": "dev-master",
+                "zendframework/zend-db": "self.version",
+                "zendframework/zend-filter": "self.version",
+                "zendframework/zend-i18n": "self.version",
+                "zendframework/zend-math": "self.version",
+                "zendframework/zend-servicemanager": "self.version",
+                "zendframework/zend-session": "self.version",
+                "zendframework/zend-uri": "self.version"
+            },
+            "suggest": {
+                "zendframework/zend-db": "Zend\\Db component",
+                "zendframework/zend-filter": "Zend\\Filter component, required by the Digits validator",
+                "zendframework/zend-i18n": "Zend\\I18n component to allow translation of validation error messages as well as to use the various Date validators",
+                "zendframework/zend-math": "Zend\\Math component",
+                "zendframework/zend-resources": "Translations of validator messages",
+                "zendframework/zend-servicemanager": "Zend\\ServiceManager component to allow using the ValidatorPluginManager and validator chains",
+                "zendframework/zend-session": "Zend\\Session component",
+                "zendframework/zend-uri": "Zend\\Uri component, required by the Uri and Sitemap\\Loc validators"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\Validator\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "description": "provides a set of commonly needed validators",
+            "homepage": "https://github.com/zendframework/zend-validator",
+            "keywords": [
+                "validator",
+                "zf2"
+            ],
+            "time": "2014-04-14 19:50:30"
+        },
+        {
+            "name": "zendframework/zend-view",
+            "version": "2.3.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/zendframework/zend-view.git",
+                "reference": "e308d498fa7851f26bd639bfe3ebbfba397c47bc"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/zendframework/zend-view/zipball/e308d498fa7851f26bd639bfe3ebbfba397c47bc",
+                "reference": "e308d498fa7851f26bd639bfe3ebbfba397c47bc",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.23",
+                "zendframework/zend-eventmanager": "self.version",
+                "zendframework/zend-loader": "self.version",
+                "zendframework/zend-stdlib": "self.version"
+            },
+            "require-dev": {
+                "fabpot/php-cs-fixer": "1.7.*",
+                "phpunit/phpunit": "~4.0",
+                "satooshi/php-coveralls": "dev-master",
+                "zendframework/zend-authentication": "self.version",
+                "zendframework/zend-escaper": "self.version",
+                "zendframework/zend-feed": "self.version",
+                "zendframework/zend-filter": "self.version",
+                "zendframework/zend-http": "self.version",
+                "zendframework/zend-i18n": "self.version",
+                "zendframework/zend-json": "self.version",
+                "zendframework/zend-mvc": "self.version",
+                "zendframework/zend-navigation": "self.version",
+                "zendframework/zend-paginator": "self.version",
+                "zendframework/zend-permissions-acl": "self.version",
+                "zendframework/zend-servicemanager": "self.version",
+                "zendframework/zend-uri": "self.version"
+            },
+            "suggest": {
+                "zendframework/zend-authentication": "Zend\\Authentication component",
+                "zendframework/zend-escaper": "Zend\\Escaper component",
+                "zendframework/zend-feed": "Zend\\Feed component",
+                "zendframework/zend-filter": "Zend\\Filter component",
+                "zendframework/zend-http": "Zend\\Http component",
+                "zendframework/zend-i18n": "Zend\\I18n component",
+                "zendframework/zend-json": "Zend\\Json component",
+                "zendframework/zend-mvc": "Zend\\Mvc component",
+                "zendframework/zend-navigation": "Zend\\Navigation component",
+                "zendframework/zend-paginator": "Zend\\Paginator component",
+                "zendframework/zend-permissions-acl": "Zend\\Permissions\\Acl component",
+                "zendframework/zend-servicemanager": "Zend\\ServiceManager component",
+                "zendframework/zend-uri": "Zend\\Uri component"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev",
+                    "dev-develop": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Zend\\View\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "description": "provides a system of helpers, output filters, and variable escaping",
+            "homepage": "https://github.com/zendframework/zend-view",
+            "keywords": [
+                "view",
+                "zf2"
+            ],
+            "time": "2014-04-15 14:36:41"
+        }
+    ],
+    "packages-dev": [],
+    "aliases": [],
+    "minimum-stability": "dev",
+    "stability-flags": [],
+    "prefer-stable": false,
+    "prefer-lowest": false,
+    "platform": [],
+    "platform-dev": []
+}
diff --git a/dev/tests/integration/testsuite/Magento/Setup/Model/_files/testSkeleton/vendor/README b/dev/tests/integration/testsuite/Magento/Setup/Model/_files/testSkeleton/vendor/README
new file mode 100644
index 0000000000000000000000000000000000000000..4ff7f39bd61163e93b753517020434e907c3d8bd
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/Setup/Model/_files/testSkeleton/vendor/README
@@ -0,0 +1,5 @@
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+ This file is to create a vendor directory for testing
\ No newline at end of file
diff --git a/dev/tests/integration/testsuite/Magento/Setup/Model/_files/vendor_path.php b/dev/tests/integration/testsuite/Magento/Setup/Model/_files/vendor_path.php
new file mode 100644
index 0000000000000000000000000000000000000000..3f566fab2c01923dfab8acbae9676cf7d96c220b
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/Setup/Model/_files/vendor_path.php
@@ -0,0 +1,10 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+/**
+ * Path to Composer vendor directory
+ */
+return './vendor';
diff --git a/dev/tests/integration/testsuite/Magento/Tax/Model/TaxClass/RepositoryTest.php b/dev/tests/integration/testsuite/Magento/Tax/Model/TaxClass/RepositoryTest.php
index b9c4925d392fa73ebd674a3f79321ee743f35ff7..a38ef69ab30edaecf73533ae60d3f470166262e5 100644
--- a/dev/tests/integration/testsuite/Magento/Tax/Model/TaxClass/RepositoryTest.php
+++ b/dev/tests/integration/testsuite/Magento/Tax/Model/TaxClass/RepositoryTest.php
@@ -112,6 +112,29 @@ class RepositoryTest extends \PHPUnit_Framework_TestCase
         $this->assertEquals(TaxClassManagementInterface::TYPE_CUSTOMER, $data->getClassType());
     }
 
+    /**
+     * @magentoDbIsolation enabled
+     */
+    public function testGetList()
+    {
+        $taxClassName = 'Get Me';
+        $taxClassDataObject = $this->taxClassFactory->create();
+        $taxClassDataObject->setClassName($taxClassName)
+            ->setClassType(TaxClassManagementInterface::TYPE_CUSTOMER);
+        $taxClassId = $this->taxClassRepository->save($taxClassDataObject);
+        /** @var \Magento\Framework\Api\SearchCriteriaBuilder $searchCriteriaBuilder */
+        $searchCriteriaBuilder = Bootstrap::getObjectManager()->create('Magento\Framework\Api\SearchCriteriaBuilder');
+        /** @var \Magento\Tax\Api\Data\TaxClassSearchResultsInterface */
+        $searchResult = $this->taxClassRepository->getList($searchCriteriaBuilder->create());
+        $items = $searchResult->getItems();
+        /** @var \Magento\Tax\Api\Data\TaxClassInterface */
+        $taxClass = array_pop($items);
+        $this->assertInstanceOf('Magento\Tax\Api\Data\TaxClassInterface', $taxClass);
+        $this->assertEquals($taxClassName, $taxClass->getClassName());
+        $this->assertEquals($taxClassId, $taxClass->getClassId());
+        $this->assertEquals(TaxClassManagementInterface::TYPE_CUSTOMER, $taxClass->getClassType());
+    }
+
     /**
      * @expectedException \Magento\Framework\Exception\NoSuchEntityException
      * @expectedExceptionMessage No such entity with class_id = -9999
diff --git a/dev/tests/static/testsuite/Magento/Test/Legacy/_files/obsolete_methods.php b/dev/tests/static/testsuite/Magento/Test/Legacy/_files/obsolete_methods.php
index 5ef0179a6c9456b3daa107bab3a947ee8591eb31..6cb72ff35e1d7b625a383b34bb0e833217abe27b 100644
--- a/dev/tests/static/testsuite/Magento/Test/Legacy/_files/obsolete_methods.php
+++ b/dev/tests/static/testsuite/Magento/Test/Legacy/_files/obsolete_methods.php
@@ -2123,6 +2123,16 @@ return [
         'Magento\Customer\Controller\Account\LoginPost',
         'Magento\Customer\Model\Account\Redirect::getRedirect',
     ],
+    [
+        'process',
+        'Magento\Framework\Api\ExtensionAttributesFactory',
+        'Magento\Framework\Api\ExtensionAttribute\JoinProcessor::process'
+    ],
+    [
+        'extractExtensionAttributes',
+        'Magento\Framework\Api\ExtensionAttributesFactory',
+        'Magento\Framework\Api\ExtensionAttribute\JoinProcessor::extractExtensionAttributes'
+    ],
     ['isReviewOwner', 'Magento\Review\Block\Customer\View'],
     ['getRegistration', 'Magento\Customer\Block\Form\Login', 'Magento\Customer\Block\Form\Login\Info::getRegistration'],
     ['getCreateAccountUrl', 'Magento\Customer\Block\Form\Login', 'Magento\Customer\Block\Form\Login\Info::getCreateAccountUrl'],
diff --git a/lib/internal/Magento/Framework/Api/DataObjectHelper.php b/lib/internal/Magento/Framework/Api/DataObjectHelper.php
index 80e8587315bd552b5982000250003b6734719741..2fb75d5f841613fb0523cc88e7062112d1fc6729 100644
--- a/lib/internal/Magento/Framework/Api/DataObjectHelper.php
+++ b/lib/internal/Magento/Framework/Api/DataObjectHelper.php
@@ -35,6 +35,11 @@ class DataObjectHelper
      */
     protected $extensionFactory;
 
+    /**
+     * @var \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface
+     */
+    protected $joinProcessor;
+
     /**
      * @var MethodsMap
      */
@@ -45,6 +50,7 @@ class DataObjectHelper
      * @param \Magento\Framework\Reflection\DataObjectProcessor $objectProcessor
      * @param \Magento\Framework\Reflection\TypeProcessor $typeProcessor
      * @param \Magento\Framework\Api\ExtensionAttributesFactory $extensionFactory
+     * @param \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface $joinProcessor
      * @param MethodsMap $methodsMapProcessor
      */
     public function __construct(
@@ -52,16 +58,20 @@ class DataObjectHelper
         \Magento\Framework\Reflection\DataObjectProcessor $objectProcessor,
         \Magento\Framework\Reflection\TypeProcessor $typeProcessor,
         \Magento\Framework\Api\ExtensionAttributesFactory $extensionFactory,
+        \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface $joinProcessor,
         MethodsMap $methodsMapProcessor
     ) {
         $this->objectFactory = $objectFactory;
         $this->objectProcessor = $objectProcessor;
         $this->typeProcessor = $typeProcessor;
         $this->extensionFactory = $extensionFactory;
+        $this->joinProcessor = $joinProcessor;
         $this->methodsMapProcessor = $methodsMapProcessor;
     }
 
     /**
+     * Populate data object using data in array format.
+     *
      * @param mixed $dataObject
      * @param array $data
      * @param string $interfaceName
@@ -70,7 +80,7 @@ class DataObjectHelper
     public function populateWithArray($dataObject, array $data, $interfaceName)
     {
         if ($dataObject instanceof ExtensibleDataInterface) {
-            $data = $this->extensionFactory->extractExtensionAttributes(get_class($dataObject), $data);
+            $data = $this->joinProcessor->extractExtensionAttributes(get_class($dataObject), $data);
         }
         $this->_setDataValues($dataObject, $data, $interfaceName);
         return $this;
diff --git a/lib/internal/Magento/Framework/Api/ExtensionAttribute/Config/Converter.php b/lib/internal/Magento/Framework/Api/ExtensionAttribute/Config/Converter.php
index f4e9df7cd643a67eccf4893097bb70b257fd2ef2..64fb32ecdf166747f88420fcfa932a3c4e2140aa 100644
--- a/lib/internal/Magento/Framework/Api/ExtensionAttribute/Config/Converter.php
+++ b/lib/internal/Magento/Framework/Api/ExtensionAttribute/Config/Converter.php
@@ -9,13 +9,15 @@ class Converter implements \Magento\Framework\Config\ConverterInterface
 {
     const RESOURCE_PERMISSIONS = "resourceRefs";
     const DATA_TYPE = "type";
+
     const JOIN_DIRECTIVE = "join";
     const JOIN_REFERENCE_TABLE = "join_reference_table";
     const JOIN_REFERENCE_FIELD = "join_reference_field";
-    const JOIN_SELECT_FIELDS = "join_select_fields";
-    const JOIN_SELECT_FIELD = "select_field";
-    const JOIN_SELECT_FIELD_SETTER = "setter_name";
-    const JOIN_JOIN_ON_FIELD= "join_join_on_field";
+    const JOIN_ON_FIELD= "join_on_field";
+
+    const JOIN_FIELDS = "fields";
+    const JOIN_FIELD = "field";
+    const JOIN_FIELD_COLUMN = "column";
 
     /**
      * Convert dom node tree to array
@@ -83,16 +85,15 @@ class Converter implements \Magento\Framework\Config\ConverterInterface
             $joinAttributes = $joinElement->attributes;
             $join = [
                 self::JOIN_REFERENCE_TABLE => $joinAttributes->getNamedItem('reference_table')->nodeValue,
-                self::JOIN_JOIN_ON_FIELD => $joinAttributes->getNamedItem('join_on_field')->nodeValue,
+                self::JOIN_ON_FIELD => $joinAttributes->getNamedItem('join_on_field')->nodeValue,
                 self::JOIN_REFERENCE_FIELD => $joinAttributes->getNamedItem('reference_field')->nodeValue,
             ];
-            $selectElements = $attribute->getElementsByTagName('select_field');
-            foreach ($selectElements as $selectElement) {
-                $selectField = $selectElement->nodeValue;
-                $setterName = $selectElement->getAttribute('setter_name');
-                $join[self::JOIN_SELECT_FIELDS][] = [
-                    self::JOIN_SELECT_FIELD => $selectField,
-                    self::JOIN_SELECT_FIELD_SETTER => $setterName
+            $fields = $attribute->getElementsByTagName('field');
+            foreach ($fields as $field) {
+                $column = $field->getAttribute('column');
+                $join[self::JOIN_FIELDS][] = [
+                    self::JOIN_FIELD => $field->nodeValue,
+                    self::JOIN_FIELD_COLUMN => $column
                 ];
             }
         }
diff --git a/lib/internal/Magento/Framework/Api/ExtensionAttribute/JoinData.php b/lib/internal/Magento/Framework/Api/ExtensionAttribute/JoinData.php
index 6457c79d1e145c216ebed6b183d23536e0ea1011..27200762555b6260a77168f1cc4088d4d68fa9f7 100644
--- a/lib/internal/Magento/Framework/Api/ExtensionAttribute/JoinData.php
+++ b/lib/internal/Magento/Framework/Api/ExtensionAttribute/JoinData.php
@@ -11,8 +11,13 @@ namespace Magento\Framework\Api\ExtensionAttribute;
  *
  * @codeCoverageIgnore
  */
-class JoinData
+class JoinData implements JoinDataInterface
 {
+    /**
+     * @var string
+     */
+    private $attributeCode;
+
     /**
      * @var string
      */
@@ -39,9 +44,24 @@ class JoinData
     private $selectFields;
 
     /**
-     * Get reference table name.
-     *
-     * @return string
+     * {@inheritdoc}
+     */
+    public function getAttributeCode()
+    {
+        return $this->attributeCode;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function setAttributeCode($attributeCode)
+    {
+        $this->attributeCode = $attributeCode;
+        return $this;
+    }
+
+    /**
+     * {@inheritdoc}
      */
     public function getReferenceTable()
     {
@@ -49,10 +69,7 @@ class JoinData
     }
 
     /**
-     * Set reference table name.
-     *
-     * @param string $referenceTable
-     * @return $this
+     * {@inheritdoc}
      */
     public function setReferenceTable($referenceTable)
     {
@@ -61,9 +78,7 @@ class JoinData
     }
 
     /**
-     * Get reference table alias.
-     *
-     * @return string
+     * {@inheritdoc}
      */
     public function getReferenceTableAlias()
     {
@@ -71,10 +86,7 @@ class JoinData
     }
 
     /**
-     * Set reference table alias.
-     *
-     * @param string $referenceTableAlias
-     * @return $this
+     * {@inheritdoc}
      */
     public function setReferenceTableAlias($referenceTableAlias)
     {
@@ -83,9 +95,7 @@ class JoinData
     }
 
     /**
-     * Get reference field.
-     *
-     * @return string
+     * {@inheritdoc}
      */
     public function getReferenceField()
     {
@@ -93,10 +103,7 @@ class JoinData
     }
 
     /**
-     * Set reference field.
-     *
-     * @param string $referenceField
-     * @return $this
+     * {@inheritdoc}
      */
     public function setReferenceField($referenceField)
     {
@@ -105,9 +112,7 @@ class JoinData
     }
 
     /**
-     * Get join field.
-     *
-     * @return string
+     * {@inheritdoc}
      */
     public function getJoinField()
     {
@@ -115,10 +120,7 @@ class JoinData
     }
 
     /**
-     * Set join field.
-     *
-     * @param string $joinField
-     * @return $this
+     * {@inheritdoc}
      */
     public function setJoinField($joinField)
     {
@@ -127,9 +129,7 @@ class JoinData
     }
 
     /**
-     * Get select fields.
-     *
-     * @return string[]
+     * {@inheritdoc}
      */
     public function getSelectFields()
     {
@@ -137,10 +137,7 @@ class JoinData
     }
 
     /**
-     * Set select field.
-     *
-     * @param string[] $selectFields
-     * @return $this
+     * {@inheritdoc}
      */
     public function setSelectFields(array $selectFields)
     {
diff --git a/lib/internal/Magento/Framework/Api/ExtensionAttribute/JoinDataInterface.php b/lib/internal/Magento/Framework/Api/ExtensionAttribute/JoinDataInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..91000c4e62e29b25221ea31407bbfbc529d32088
--- /dev/null
+++ b/lib/internal/Magento/Framework/Api/ExtensionAttribute/JoinDataInterface.php
@@ -0,0 +1,108 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\Framework\Api\ExtensionAttribute;
+
+/**
+ * Interface of data holder for extension attribute joins.
+ */
+interface JoinDataInterface
+{
+    const SELECT_FIELD_EXTERNAL_ALIAS = 'external_alias';
+    const SELECT_FIELD_INTERNAL_ALIAS = 'internal_alias';
+    const SELECT_FIELD_WITH_DB_PREFIX = 'with_db_prefix';
+    const SELECT_FIELD_SETTER = 'setter';
+
+    /**
+     * Get attribute code.
+     *
+     * @return string
+     */
+    public function getAttributeCode();
+
+    /**
+     * Set attribute code.
+     *
+     * @param string $attributeCode
+     * @return $this
+     */
+    public function setAttributeCode($attributeCode);
+
+    /**
+     * Get reference table name.
+     *
+     * @return string
+     */
+    public function getReferenceTable();
+
+    /**
+     * Set reference table name.
+     *
+     * @param string $referenceTable
+     * @return $this
+     */
+    public function setReferenceTable($referenceTable);
+
+    /**
+     * Get reference table alias.
+     *
+     * @return string
+     */
+    public function getReferenceTableAlias();
+
+    /**
+     * Set reference table alias.
+     *
+     * @param string $referenceTableAlias
+     * @return $this
+     */
+    public function setReferenceTableAlias($referenceTableAlias);
+
+    /**
+     * Get reference field.
+     *
+     * @return string
+     */
+    public function getReferenceField();
+
+    /**
+     * Set reference field.
+     *
+     * @param string $referenceField
+     * @return $this
+     */
+    public function setReferenceField($referenceField);
+
+    /**
+     * Get join field.
+     *
+     * @return string
+     */
+    public function getJoinField();
+
+    /**
+     * Set join field.
+     *
+     * @param string $joinField
+     * @return $this
+     */
+    public function setJoinField($joinField);
+
+    /**
+     * Get select fields.
+     *
+     * @return array
+     */
+    public function getSelectFields();
+
+    /**
+     * Set select field.
+     *
+     * @param array $selectFields
+     * @return $this
+     */
+    public function setSelectFields(array $selectFields);
+}
diff --git a/lib/internal/Magento/Framework/Api/ExtensionAttribute/JoinDataFactory.php b/lib/internal/Magento/Framework/Api/ExtensionAttribute/JoinDataInterfaceFactory.php
similarity index 90%
rename from lib/internal/Magento/Framework/Api/ExtensionAttribute/JoinDataFactory.php
rename to lib/internal/Magento/Framework/Api/ExtensionAttribute/JoinDataInterfaceFactory.php
index a34c41363a2a28664764a04922cc06e2cdf52164..67c6d0cc164b3b110251b7ef6851abc04940b151 100644
--- a/lib/internal/Magento/Framework/Api/ExtensionAttribute/JoinDataFactory.php
+++ b/lib/internal/Magento/Framework/Api/ExtensionAttribute/JoinDataInterfaceFactory.php
@@ -8,9 +8,9 @@ namespace Magento\Framework\Api\ExtensionAttribute;
 
 /**
  * Factory class for @see
- * \Magento\Framework\Api\ExtensionAttribute\JoinData
+ * \Magento\Framework\Api\ExtensionAttribute\JoinDataInterface
  */
-class JoinDataFactory
+class JoinDataInterfaceFactory
 {
     /**
      * Object Manager instance
@@ -34,7 +34,7 @@ class JoinDataFactory
      */
     public function __construct(
         \Magento\Framework\ObjectManagerInterface $objectManager,
-        $instanceName = '\\Magento\\Framework\\Api\\ExtensionAttribute\\JoinData'
+        $instanceName = '\\Magento\\Framework\\Api\\ExtensionAttribute\\JoinDataInterface'
     ) {
         $this->_objectManager = $objectManager;
         $this->_instanceName = $instanceName;
diff --git a/lib/internal/Magento/Framework/Api/ExtensionAttribute/JoinProcessor.php b/lib/internal/Magento/Framework/Api/ExtensionAttribute/JoinProcessor.php
new file mode 100644
index 0000000000000000000000000000000000000000..dbe83d1d343a238f1d5806b86120b89e1059e7b4
--- /dev/null
+++ b/lib/internal/Magento/Framework/Api/ExtensionAttribute/JoinProcessor.php
@@ -0,0 +1,258 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\Framework\Api\ExtensionAttribute;
+
+use Magento\Framework\Api\ExtensionAttribute\Config;
+use Magento\Framework\Api\ExtensionAttribute\Config\Converter;
+use Magento\Framework\Data\Collection\AbstractDb as DbCollection;
+use Magento\Framework\Api\ExtensionAttribute\JoinDataInterface;
+use Magento\Framework\Api\ExtensionAttribute\JoinDataInterfaceFactory;
+use Magento\Framework\Reflection\TypeProcessor;
+use Magento\Framework\Api\ExtensibleDataInterface;
+use Magento\Framework\Api\ExtensionAttributesFactory;
+use Magento\Framework\Api\SimpleDataObjectConverter;
+
+/**
+ * Join processor allows to join extension attributes during collections loading.
+ * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
+ */
+class JoinProcessor implements \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface
+{
+    /**
+     * Object Manager instance
+     *
+     * @var \Magento\Framework\ObjectManagerInterface
+     */
+    protected $objectManager;
+
+    /**
+     * @var Config
+     */
+    private $config;
+
+    /**
+     * @var JoinDataInterfaceFactory
+     */
+    private $extensionAttributeJoinDataFactory;
+
+    /**
+     * @var TypeProcessor
+     */
+    private $typeProcessor;
+
+    /**
+     * @var ExtensionAttributesFactory
+     */
+    private $extensionAttributesFactory;
+
+    /**
+     * Initialize dependencies.
+     *
+     * @param \Magento\Framework\ObjectManagerInterface $objectManager
+     * @param Config $config
+     * @param JoinDataInterfaceFactory $extensionAttributeJoinDataFactory
+     * @param TypeProcessor $typeProcessor
+     * @param ExtensionAttributesFactory $extensionAttributesFactory
+     */
+    public function __construct(
+        \Magento\Framework\ObjectManagerInterface $objectManager,
+        Config $config,
+        JoinDataInterfaceFactory $extensionAttributeJoinDataFactory,
+        TypeProcessor $typeProcessor,
+        ExtensionAttributesFactory $extensionAttributesFactory
+    ) {
+        $this->objectManager = $objectManager;
+        $this->config = $config;
+        $this->extensionAttributeJoinDataFactory = $extensionAttributeJoinDataFactory;
+        $this->typeProcessor = $typeProcessor;
+        $this->extensionAttributesFactory = $extensionAttributesFactory;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function process(DbCollection $collection, $extensibleEntityClass = null)
+    {
+        $extensibleEntityClass = $extensibleEntityClass ?: $collection->getItemObjectClass();
+        $joinDirectives = $this->getJoinDirectivesForType($extensibleEntityClass);
+        foreach ($joinDirectives as $attributeCode => $directive) {
+            /** @var JoinDataInterface $joinData */
+            $joinData = $this->extensionAttributeJoinDataFactory->create();
+            $joinData->setAttributeCode($attributeCode)
+                ->setReferenceTable($directive[Converter::JOIN_REFERENCE_TABLE])
+                ->setReferenceTableAlias($this->getReferenceTableAlias($attributeCode))
+                ->setReferenceField($directive[Converter::JOIN_REFERENCE_FIELD])
+                ->setJoinField($directive[Converter::JOIN_ON_FIELD]);
+            $joinData->setSelectFields(
+                $this->getSelectFieldsMap($attributeCode, $directive[Converter::JOIN_FIELDS])
+            );
+            $collection->joinExtensionAttribute($joinData, $this);
+        }
+    }
+
+    /**
+     * Generate a list of select fields with mapping of client facing attribute names to field names used in SQL select.
+     *
+     * @param string $attributeCode
+     * @param array $selectFields
+     * @return array
+     */
+    private function getSelectFieldsMap($attributeCode, $selectFields)
+    {
+        $referenceTableAlias = $this->getReferenceTableAlias($attributeCode);
+        $useFieldInAlias = (count($selectFields) > 1);
+        $selectFieldsAliases = [];
+        foreach ($selectFields as $selectField) {
+            $internalFieldName = $selectField[Converter::JOIN_FIELD_COLUMN]
+                ? $selectField[Converter::JOIN_FIELD_COLUMN]
+                : $selectField[Converter::JOIN_FIELD];
+            $setterName = 'set'
+                . ucfirst(SimpleDataObjectConverter::snakeCaseToCamelCase($selectField[Converter::JOIN_FIELD]));
+            $selectFieldsAliases[] = [
+                JoinDataInterface::SELECT_FIELD_EXTERNAL_ALIAS => $attributeCode
+                    . ($useFieldInAlias ? '.' . $selectField[Converter::JOIN_FIELD] : ''),
+                JoinDataInterface::SELECT_FIELD_INTERNAL_ALIAS => $referenceTableAlias . '_' . $internalFieldName,
+                JoinDataInterface::SELECT_FIELD_WITH_DB_PREFIX => $referenceTableAlias . '.' . $internalFieldName,
+                JoinDataInterface::SELECT_FIELD_SETTER => $setterName
+            ];
+        }
+        return $selectFieldsAliases;
+    }
+
+    /**
+     * Generate reference table alias.
+     *
+     * @param string $attributeCode
+     * @return string
+     */
+    private function getReferenceTableAlias($attributeCode)
+    {
+        return 'extension_attribute_' . $attributeCode;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function extractExtensionAttributes($extensibleEntityClass, array $data)
+    {
+        if (!$this->isExtensibleAttributesImplemented($extensibleEntityClass)) {
+            /* do nothing as there are no extension attributes */
+            return $data;
+        }
+
+        $joinDirectives = $this->getJoinDirectivesForType($extensibleEntityClass);
+        $extensionData = [];
+        foreach ($joinDirectives as $attributeCode => $directive) {
+            $this->populateAttributeCodeWithDirective(
+                $attributeCode,
+                $directive,
+                $data,
+                $extensionData,
+                $extensibleEntityClass
+            );
+        }
+        if (!empty($extensionData)) {
+            $extensionAttributes = $this->extensionAttributesFactory->create($extensibleEntityClass, $extensionData);
+            $data[ExtensibleDataInterface::EXTENSION_ATTRIBUTES_KEY] = $extensionAttributes;
+        }
+        return $data;
+    }
+
+    /**
+     * Populate a specific attribute code with join directive instructions.
+     *
+     * @param string $attributeCode
+     * @param array $directive
+     * @param array &$data
+     * @param array &$extensionData
+     * @param string $extensibleEntityClass
+     * @return void
+     */
+    private function populateAttributeCodeWithDirective(
+        $attributeCode,
+        $directive,
+        &$data,
+        &$extensionData,
+        $extensibleEntityClass
+    ) {
+        $attributeType = $directive[Converter::DATA_TYPE];
+        $selectFields = $this->getSelectFieldsMap($attributeCode, $directive[Converter::JOIN_FIELDS]);
+        foreach ($selectFields as $selectField) {
+            $internalAlias = $selectField[JoinDataInterface::SELECT_FIELD_INTERNAL_ALIAS];
+            if (isset($data[$internalAlias])) {
+                if ($this->typeProcessor->isArrayType($attributeType)) {
+                    throw new \LogicException(
+                        sprintf(
+                            'Join directives cannot be processed for attribute (%s) of extensible entity (%s),'
+                            . ' which has an Array type (%s).',
+                            $attributeCode,
+                            $this->extensionAttributesFactory->getExtensibleInterfaceName($extensibleEntityClass),
+                            $attributeType
+                        )
+                    );
+                } elseif ($this->typeProcessor->isTypeSimple($attributeType)) {
+                    $extensionData['data'][$attributeCode] = $data[$internalAlias];
+                    unset($data[$internalAlias]);
+                    break;
+                } else {
+                    if (!isset($extensionData['data'][$attributeCode])) {
+                        $extensionData['data'][$attributeCode] = $this->objectManager->create($attributeType);
+                    }
+                    $setterName = $selectField[JoinDataInterface::SELECT_FIELD_SETTER];
+                    $extensionData['data'][$attributeCode]->$setterName($data[$internalAlias]);
+                    unset($data[$internalAlias]);
+                }
+            }
+        }
+    }
+
+    /**
+     * Returns the internal join directive config for a given type.
+     *
+     * Array returned has all of the \Magento\Framework\Api\ExtensionAttribute\Config\Converter JOIN* fields set.
+     *
+     * @param string $extensibleEntityClass
+     * @return array
+     */
+    private function getJoinDirectivesForType($extensibleEntityClass)
+    {
+        $extensibleInterfaceName = $this->extensionAttributesFactory
+            ->getExtensibleInterfaceName($extensibleEntityClass);
+        $extensibleInterfaceName = ltrim($extensibleInterfaceName, '\\');
+        $config = $this->config->get();
+        if (!isset($config[$extensibleInterfaceName])) {
+            return [];
+        }
+
+        $typeAttributesConfig = $config[$extensibleInterfaceName];
+        $joinDirectives = [];
+        foreach ($typeAttributesConfig as $attributeCode => $attributeConfig) {
+            if (isset($attributeConfig[Converter::JOIN_DIRECTIVE])) {
+                $joinDirectives[$attributeCode] = $attributeConfig[Converter::JOIN_DIRECTIVE];
+                $joinDirectives[$attributeCode][Converter::DATA_TYPE] = $attributeConfig[Converter::DATA_TYPE];
+            }
+        }
+
+        return $joinDirectives;
+    }
+
+    /**
+     * Determine if the type is an actual extensible data interface.
+     *
+     * @param string $typeName
+     * @return bool
+     */
+    private function isExtensibleAttributesImplemented($typeName)
+    {
+        try {
+            $this->extensionAttributesFactory->getExtensibleInterfaceName($typeName);
+            return true;
+        } catch (\LogicException $e) {
+            return false;
+        }
+    }
+}
diff --git a/lib/internal/Magento/Framework/Api/ExtensionAttribute/JoinProcessorInterface.php b/lib/internal/Magento/Framework/Api/ExtensionAttribute/JoinProcessorInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..6b9c47b6d10fc805d3d290ff3e6f804775b9a8a0
--- /dev/null
+++ b/lib/internal/Magento/Framework/Api/ExtensionAttribute/JoinProcessorInterface.php
@@ -0,0 +1,38 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\Framework\Api\ExtensionAttribute;
+
+use Magento\Framework\Data\Collection\AbstractDb as DbCollection;
+
+/**
+ * Join processor allows to join extension attributes during collections loading.
+ */
+interface JoinProcessorInterface
+{
+    /**
+     * Processes extension attributes join instructions to add necessary joins to the collection of extensible entities.
+     *
+     * @param DbCollection $collection
+     * @param string|null $extensibleEntityClass
+     * @return void
+     * @throws \LogicException
+     */
+    public function process(DbCollection $collection, $extensibleEntityClass = null);
+
+    /**
+     * Extract extension attributes into separate extension object.
+     *
+     * Complex extension attributes will be populated using flat data loaded.
+     * Data items used for extension object population are unset from the $data.
+     *
+     * @param string $extensibleEntityClass
+     * @param array $data
+     * @return array
+     * @throws \LogicException
+     */
+    public function extractExtensionAttributes($extensibleEntityClass, array $data);
+}
diff --git a/lib/internal/Magento/Framework/Api/ExtensionAttributesFactory.php b/lib/internal/Magento/Framework/Api/ExtensionAttributesFactory.php
index 499477cfc17b9f112d78b18eadad834e74d5dfa7..8503b870ab136b13708a78cae896106a1e725c82 100644
--- a/lib/internal/Magento/Framework/Api/ExtensionAttributesFactory.php
+++ b/lib/internal/Magento/Framework/Api/ExtensionAttributesFactory.php
@@ -6,14 +6,6 @@
 
 namespace Magento\Framework\Api;
 
-use Magento\Framework\Api\ExtensionAttribute\Config;
-use Magento\Framework\Api\ExtensionAttribute\Config\Converter;
-use Magento\Framework\Data\Collection\AbstractDb as DbCollection;
-use Magento\Framework\Api\ExtensionAttribute\JoinData;
-use Magento\Framework\Api\ExtensionAttribute\JoinDataFactory;
-use Magento\Framework\Reflection\TypeProcessor;
-use Magento\Framework\Api\ExtensibleDataInterface;
-
 /**
  * Factory class for instantiation of extension attributes objects.
  */
@@ -28,21 +20,6 @@ class ExtensionAttributesFactory
      */
     protected $objectManager;
 
-    /**
-     * @var Config
-     */
-    private $config;
-
-    /**
-     * @var JoinDataFactory
-     */
-    private $extensionAttributeJoinDataFactory;
-
-    /**
-     * @var TypeProcessor
-     */
-    private $typeProcessor;
-
     /**
      * Map is used for performance optimization.
      *
@@ -54,20 +31,10 @@ class ExtensionAttributesFactory
      * Factory constructor
      *
      * @param \Magento\Framework\ObjectManagerInterface $objectManager
-     * @param Config $config
-     * @param JoinDataFactory $extensionAttributeJoinDataFactory
-     * @param TypeProcessor $typeProcessor
      */
-    public function __construct(
-        \Magento\Framework\ObjectManagerInterface $objectManager,
-        Config $config,
-        JoinDataFactory $extensionAttributeJoinDataFactory,
-        TypeProcessor $typeProcessor
-    ) {
+    public function __construct(\Magento\Framework\ObjectManagerInterface $objectManager)
+    {
         $this->objectManager = $objectManager;
-        $this->config = $config;
-        $this->extensionAttributeJoinDataFactory = $extensionAttributeJoinDataFactory;
-        $this->typeProcessor = $typeProcessor;
     }
 
     /**
@@ -110,155 +77,13 @@ class ExtensionAttributesFactory
         return $extensionFactory->create($data);
     }
 
-    /**
-     * Processes join instructions to add to the collection for a data interface.
-     *
-     * @param DbCollection $collection
-     * @param string $extensibleEntityClass
-     * @return void
-     */
-    public function process(DbCollection $collection, $extensibleEntityClass)
-    {
-        $joinDirectives = $this->getJoinDirectivesForType($extensibleEntityClass);
-        foreach ($joinDirectives as $attributeCode => $directive) {
-            /** @var JoinData $joinData */
-            $joinData = $this->extensionAttributeJoinDataFactory->create();
-            $joinData->setReferenceTable($directive[Converter::JOIN_REFERENCE_TABLE])
-                ->setReferenceTableAlias('extension_attribute_' . $attributeCode)
-                ->setReferenceField($directive[Converter::JOIN_REFERENCE_FIELD])
-                ->setJoinField($directive[Converter::JOIN_JOIN_ON_FIELD]);
-            $selectFieldsMapper = function ($selectFieldData) {
-                return $selectFieldData[Converter::JOIN_SELECT_FIELD];
-            };
-            $joinData->setSelectFields(array_map($selectFieldsMapper, $directive[Converter::JOIN_SELECT_FIELDS]));
-            $collection->joinExtensionAttribute($joinData, [$this, 'extractExtensionAttributes']);
-        }
-    }
-
-    /**
-     * Extract extension attributes into separate extension object.
-     *
-     * @param string $extensibleEntityClass
-     * @param array $data
-     * @return array
-     * @throws \LogicException
-     */
-    public function extractExtensionAttributes($extensibleEntityClass, array $data)
-    {
-        if (!$this->isExtensibleAttributesImplemented($extensibleEntityClass)) {
-            /* do nothing as there are no extension attributes */
-            return $data;
-        }
-
-        $joinDirectives = $this->getJoinDirectivesForType($extensibleEntityClass);
-        $extensionData = [];
-        foreach ($joinDirectives as $attributeCode => $directive) {
-            $this->populateAttributeCodeWithDirective(
-                $attributeCode,
-                $directive,
-                $data,
-                $extensionData,
-                $extensibleEntityClass
-            );
-        }
-        if (!empty($extensionData)) {
-            $extensionAttributes = $this->create($extensibleEntityClass, $extensionData);
-            $data[ExtensibleDataInterface::EXTENSION_ATTRIBUTES_KEY] = $extensionAttributes;
-        }
-        return $data;
-    }
-
-    /**
-     * Populate a specific attribute code with join directive instructions.
-     *
-     * @param string $attributeCode
-     * @param array $directive
-     * @param array &$data
-     * @param array &$extensionData
-     * @param string $extensibleEntityClass
-     * @return void
-     */
-    private function populateAttributeCodeWithDirective(
-        $attributeCode,
-        $directive,
-        &$data,
-        &$extensionData,
-        $extensibleEntityClass
-    ) {
-        $attributeType = $directive[Converter::DATA_TYPE];
-        $selectFields = $directive[Converter::JOIN_SELECT_FIELDS];
-        foreach ($selectFields as $selectField) {
-            $selectFieldAlias = 'extension_attribute_' . $attributeCode
-                . '_' . $selectField[Converter::JOIN_SELECT_FIELD];
-            if (isset($data[$selectFieldAlias])) {
-                if ($this->typeProcessor->isArrayType($attributeType)) {
-                    throw new \LogicException(
-                        sprintf(
-                            'Join directives cannot be processed for attribute (%s) of extensible entity (%s),'
-                            . ' which has an Array type (%s).',
-                            $attributeCode,
-                            $this->getExtensibleInterfaceName($extensibleEntityClass),
-                            $attributeType
-                        )
-                    );
-                } elseif ($this->typeProcessor->isTypeSimple($attributeType)) {
-                    $extensionData['data'][$attributeCode] = $data[$selectFieldAlias];
-                    unset($data[$selectFieldAlias]);
-                    break;
-                } else {
-                    if (!isset($extensionData['data'][$attributeCode])) {
-                        $extensionData['data'][$attributeCode] = $this->objectManager->create($attributeType);
-                    }
-                    $setterName = $selectField[Converter::JOIN_SELECT_FIELD_SETTER]
-                        ? $selectField[Converter::JOIN_SELECT_FIELD_SETTER]
-                        :'set' . ucfirst(
-                            SimpleDataObjectConverter::snakeCaseToCamelCase(
-                                $selectField[Converter::JOIN_SELECT_FIELD]
-                            )
-                        );
-                    $extensionData['data'][$attributeCode]->$setterName($data[$selectFieldAlias]);
-                    unset($data[$selectFieldAlias]);
-                }
-            }
-        }
-    }
-
-    /**
-     * Returns the internal join directive config for a given type.
-     *
-     * Array returned has all of the \Magento\Framework\Api\ExtensionAttribute\Config\Converter JOIN* fields set.
-     *
-     * @param string $extensibleEntityClass
-     * @return array
-     */
-    private function getJoinDirectivesForType($extensibleEntityClass)
-    {
-        $extensibleInterfaceName = $this->getExtensibleInterfaceName($extensibleEntityClass);
-        $extensibleInterfaceName = ltrim($extensibleInterfaceName, '\\');
-        $config = $this->config->get();
-        if (!isset($config[$extensibleInterfaceName])) {
-            return [];
-        }
-
-        $typeAttributesConfig = $config[$extensibleInterfaceName];
-        $joinDirectives = [];
-        foreach ($typeAttributesConfig as $attributeCode => $attributeConfig) {
-            if (isset($attributeConfig[Converter::JOIN_DIRECTIVE])) {
-                $joinDirectives[$attributeCode] = $attributeConfig[Converter::JOIN_DIRECTIVE];
-                $joinDirectives[$attributeCode][Converter::DATA_TYPE] = $attributeConfig[Converter::DATA_TYPE];
-            }
-        }
-
-        return $joinDirectives;
-    }
-
     /**
      * Identify concrete extensible interface name based on the class name.
      *
      * @param string $extensibleClassName
      * @return string
      */
-    private function getExtensibleInterfaceName($extensibleClassName)
+    public function getExtensibleInterfaceName($extensibleClassName)
     {
         $exceptionMessage = "Class '{$extensibleClassName}' must implement an interface, "
             . "which extends from '" . self::EXTENSIBLE_INTERFACE_NAME . "'";
@@ -289,20 +114,4 @@ class ExtensionAttributesFactory
         $this->classInterfaceMap[$extensibleClassName] = $notExtensibleClassFlag;
         throw new \LogicException($exceptionMessage);
     }
-
-    /**
-     * Determine if the type is an actual extensible data interface.
-     *
-     * @param string $typeName
-     * @return bool
-     */
-    private function isExtensibleAttributesImplemented($typeName)
-    {
-        try {
-            $this->getExtensibleInterfaceName($typeName);
-            return true;
-        } catch (\LogicException $e) {
-            return false;
-        }
-    }
 }
diff --git a/lib/internal/Magento/Framework/Api/Test/Unit/DataObjectHelperTest.php b/lib/internal/Magento/Framework/Api/Test/Unit/DataObjectHelperTest.php
index 079ebbaec7832fa40b5cb260a32fecae1524a774..484920c2a6740a21789a00a4ce9550f3464ade83 100644
--- a/lib/internal/Magento/Framework/Api/Test/Unit/DataObjectHelperTest.php
+++ b/lib/internal/Magento/Framework/Api/Test/Unit/DataObjectHelperTest.php
@@ -44,14 +44,14 @@ class DataObjectHelperTest extends \PHPUnit_Framework_TestCase
     protected $attributeValueFactoryMock;
 
     /**
-     * @var \Magento\Framework\Api\ExtensionAttributesFactory|\PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\Reflection\MethodsMap|\PHPUnit_Framework_MockObject_MockObject
      */
-    protected $extensionFactoryMock;
+    protected $methodsMapProcessor;
 
     /**
-     * @var \Magento\Framework\Reflection\MethodsMap|\PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\Api\ExtensionAttribute\JoinProcessor|\PHPUnit_Framework_MockObject_MockObject
      */
-    protected $methodsMapProcessor;
+    protected $joinProcessorMock;
 
     public function setUp()
     {
@@ -69,22 +69,23 @@ class DataObjectHelperTest extends \PHPUnit_Framework_TestCase
         $this->attributeValueFactoryMock = $this->getMockBuilder('Magento\Framework\Api\AttributeValueFactory')
             ->disableOriginalConstructor()
             ->getMock();
-        $this->extensionFactoryMock = $this->getMockBuilder('Magento\Framework\Api\ExtensionAttributesFactory')
+        $this->joinProcessorMock = $this->getMockBuilder('\Magento\Framework\Api\ExtensionAttribute\JoinProcessor')
             ->setMethods(['extractExtensionAttributes'])
             ->disableOriginalConstructor()
             ->getMock();
-        $this->extensionFactoryMock->expects($this->any())
+        $this->joinProcessorMock->expects($this->any())
             ->method('extractExtensionAttributes')
             ->willReturnArgument(1);
         $this->typeProcessor = $this->objectManager->getObject('Magento\Framework\Reflection\TypeProcessor');
+
         $this->dataObjectHelper = $this->objectManager->getObject(
             'Magento\Framework\Api\DataObjectHelper',
             [
                 'objectFactory' => $this->objectFactoryMock,
                 'typeProcessor' => $this->typeProcessor,
                 'objectProcessor' => $this->objectProcessorMock,
-                'extensionFactory' => $this->extensionFactoryMock,
                 'methodsMapProcessor' => $this->methodsMapProcessor,
+                'joinProcessor' => $this->joinProcessorMock
             ]
         );
     }
diff --git a/lib/internal/Magento/Framework/Api/Test/Unit/ExtensionAttribute/Config/ConverterTest.php b/lib/internal/Magento/Framework/Api/Test/Unit/ExtensionAttribute/Config/ConverterTest.php
index 46b46456c828ace6fa6183ceb0aad5bb76991704..dca3d3af4382f388b08b7d2f1d84521fb4c19f3d 100644
--- a/lib/internal/Magento/Framework/Api/Test/Unit/ExtensionAttribute/Config/ConverterTest.php
+++ b/lib/internal/Magento/Framework/Api/Test/Unit/ExtensionAttribute/Config/ConverterTest.php
@@ -105,13 +105,13 @@ class ConverterTest extends \PHPUnit_Framework_TestCase
                     Converter::RESOURCE_PERMISSIONS => [],
                     Converter::JOIN_DIRECTIVE => [
                         Converter::JOIN_REFERENCE_TABLE => "library_account",
-                        Converter::JOIN_SELECT_FIELDS => [
+                        Converter::JOIN_FIELDS => [
                             [
-                                Converter::JOIN_SELECT_FIELD => "library_card_id",
-                                Converter::JOIN_SELECT_FIELD_SETTER => ""
+                                Converter::JOIN_FIELD => "library_card_id",
+                                Converter::JOIN_FIELD_COLUMN => ""
                             ]
                         ],
-                        Converter::JOIN_JOIN_ON_FIELD => "id",
+                        Converter::JOIN_ON_FIELD => "id",
                         Converter::JOIN_REFERENCE_FIELD => "customer_id",
                     ],
                 ],
@@ -120,17 +120,17 @@ class ConverterTest extends \PHPUnit_Framework_TestCase
                     Converter::RESOURCE_PERMISSIONS => [],
                     Converter::JOIN_DIRECTIVE => [
                         Converter::JOIN_REFERENCE_TABLE => "reviews",
-                        Converter::JOIN_SELECT_FIELDS => [
+                        Converter::JOIN_FIELDS => [
                             [
-                                Converter::JOIN_SELECT_FIELD => "comment",
-                                Converter::JOIN_SELECT_FIELD_SETTER => ""
+                                Converter::JOIN_FIELD => "comment",
+                                Converter::JOIN_FIELD_COLUMN => ""
                             ],
                             [
-                                Converter::JOIN_SELECT_FIELD => "rating",
-                                Converter::JOIN_SELECT_FIELD_SETTER => ""
+                                Converter::JOIN_FIELD => "rating",
+                                Converter::JOIN_FIELD_COLUMN => ""
                             ]
                         ],
-                        Converter::JOIN_JOIN_ON_FIELD => "customer_id",
+                        Converter::JOIN_ON_FIELD => "customer_id",
                         Converter::JOIN_REFERENCE_FIELD => "customer_id",
                     ],
                 ],
diff --git a/lib/internal/Magento/Framework/Api/Test/Unit/ExtensionAttribute/Config/XsdTest.php b/lib/internal/Magento/Framework/Api/Test/Unit/ExtensionAttribute/Config/XsdTest.php
index c599760f5934ff67f679db1186f44d205ee46b34..9dab40a9ad26cae94f41b13f15770c4304257efa 100644
--- a/lib/internal/Magento/Framework/Api/Test/Unit/ExtensionAttribute/Config/XsdTest.php
+++ b/lib/internal/Magento/Framework/Api/Test/Unit/ExtensionAttribute/Config/XsdTest.php
@@ -89,7 +89,7 @@ class XsdTest extends \PHPUnit_Framework_TestCase
                                   reference_field="customer_id"
                                   join_on_field="id"
                             >
-                                <select_field>library_card_id</select_field>
+                                <field>library_card_id</field>
                             </join>
                         </attribute>
                     </extension_attributes>
@@ -107,7 +107,7 @@ class XsdTest extends \PHPUnit_Framework_TestCase
                                   reference_field="customer_id"
                                   join_on_field="id"
                             >
-                                <select_field>library_card_id</select_field>
+                                <field>library_card_id</field>
                             </join>
                         </attribute>
                     </extension_attributes>
@@ -142,7 +142,7 @@ class XsdTest extends \PHPUnit_Framework_TestCase
                     "Element 'join': The attribute 'reference_table' is required but missing.",
                     "Element 'join': The attribute 'join_on_field' is required but missing.",
                     "Element 'join': The attribute 'reference_field' is required but missing.",
-                    "Element 'join': Missing child element(s). Expected is ( select_field ).",
+                    "Element 'join': Missing child element(s). Expected is ( field ).",
                 ],
             ],
         ];
diff --git a/lib/internal/Magento/Framework/Api/Test/Unit/ExtensionAttribute/Config/_files/extension_attributes_with_join_directives.xml b/lib/internal/Magento/Framework/Api/Test/Unit/ExtensionAttribute/Config/_files/extension_attributes_with_join_directives.xml
index bdf8f3920bb19091f5b49bf991c500027247b108..baacb34779535867a463cb8feee35b01f246ac41 100644
--- a/lib/internal/Magento/Framework/Api/Test/Unit/ExtensionAttribute/Config/_files/extension_attributes_with_join_directives.xml
+++ b/lib/internal/Magento/Framework/Api/Test/Unit/ExtensionAttribute/Config/_files/extension_attributes_with_join_directives.xml
@@ -12,7 +12,7 @@
                   reference_field="customer_id"
                   join_on_field="id"
                     >
-                <select_field>library_card_id</select_field>
+                <field>library_card_id</field>
             </join>
         </attribute>
         <attribute code="reviews" type="Magento\Reviews\Api\Data\Reviews[]">
@@ -20,8 +20,8 @@
                   reference_field="customer_id"
                   join_on_field="customer_id"
                     >
-                <select_field>comment</select_field>
-                <select_field>rating</select_field>
+                <field>comment</field>
+                <field>rating</field>
             </join>
         </attribute>
     </extension_attributes>
diff --git a/lib/internal/Magento/Framework/Api/etc/extension_attributes.xsd b/lib/internal/Magento/Framework/Api/etc/extension_attributes.xsd
index 6bccd9b1643b0c515e4c16bdbd8eb200f9c568dc..ef21443cec8b43c3308542d15d26ac7f71aecdda 100644
--- a/lib/internal/Magento/Framework/Api/etc/extension_attributes.xsd
+++ b/lib/internal/Magento/Framework/Api/etc/extension_attributes.xsd
@@ -41,13 +41,13 @@
     <xs:complexType name="selectFieldType">
         <xs:simpleContent>
             <xs:extension base="xs:string">
-                <xs:attribute type="xs:string" name="setter_name" use="optional"/>
+                <xs:attribute type="xs:string" name="column" use="optional"/>
             </xs:extension>
         </xs:simpleContent>
     </xs:complexType>
     <xs:complexType name="joinType">
         <xs:sequence>
-            <xs:element type="selectFieldType" name="select_field" maxOccurs="unbounded" minOccurs="1"/>
+            <xs:element type="selectFieldType" name="field" maxOccurs="unbounded" minOccurs="1"/>
         </xs:sequence>
         <xs:attribute type="xs:string" name="reference_table" use="required"/>
         <xs:attribute type="xs:string" name="join_on_field" use="required"/>
diff --git a/lib/internal/Magento/Framework/App/Cache/StateInterface.php b/lib/internal/Magento/Framework/App/Cache/StateInterface.php
index 67d47666347bc61a626e9cb69066666c94cad609..9e6ae602b005924bb6a252a23e53d2e16cf8933a 100644
--- a/lib/internal/Magento/Framework/App/Cache/StateInterface.php
+++ b/lib/internal/Magento/Framework/App/Cache/StateInterface.php
@@ -5,6 +5,9 @@
  */
 namespace Magento\Framework\App\Cache;
 
+/**
+ * @api
+ */
 interface StateInterface
 {
     /**
diff --git a/lib/internal/Magento/Framework/App/Cache/TypeListInterface.php b/lib/internal/Magento/Framework/App/Cache/TypeListInterface.php
index fbd4313f6eaab523cf9fa0cfa3637f088edc0677..f00d511cc8588d2d0a4509b8bc1839391a8d6ff4 100644
--- a/lib/internal/Magento/Framework/App/Cache/TypeListInterface.php
+++ b/lib/internal/Magento/Framework/App/Cache/TypeListInterface.php
@@ -5,6 +5,9 @@
  */
 namespace Magento\Framework\App\Cache;
 
+/**
+ * @api
+ */
 interface TypeListInterface
 {
     /**
diff --git a/lib/internal/Magento/Framework/App/CacheInterface.php b/lib/internal/Magento/Framework/App/CacheInterface.php
index a2216876e1878adebca11f894f2d72134e5d0c0c..cc760fe6ce3acff66bf4f50bfa3a954370958fe8 100644
--- a/lib/internal/Magento/Framework/App/CacheInterface.php
+++ b/lib/internal/Magento/Framework/App/CacheInterface.php
@@ -1,12 +1,16 @@
 <?php
 /**
- * System cache model interface
  *
  * Copyright © 2015 Magento. All rights reserved.
  * See COPYING.txt for license details.
  */
 namespace Magento\Framework\App;
 
+/**
+ * System cache model interface
+ *
+ * @api
+ */
 interface CacheInterface
 {
     /**
diff --git a/lib/internal/Magento/Framework/App/Filesystem/DirectoryList.php b/lib/internal/Magento/Framework/App/Filesystem/DirectoryList.php
index cb3767cc11fce65c015b2e6bcedcee9e253fca17..64422cb528d82b21631b67118a50fc60695e36ea 100644
--- a/lib/internal/Magento/Framework/App/Filesystem/DirectoryList.php
+++ b/lib/internal/Magento/Framework/App/Filesystem/DirectoryList.php
@@ -110,6 +110,11 @@ class DirectoryList extends \Magento\Framework\Filesystem\DirectoryList
      */
     const UPLOAD = 'upload';
 
+    /**
+     * Directory to store composer related files (config, cache etc.) in case if composer runs by Magento Application
+     */
+    const COMPOSER_HOME = 'composer_home';
+
     /**
      * A suffix for temporary materialization directory where pre-processed files will be written (if necessary)
      */
@@ -145,6 +150,7 @@ class DirectoryList extends \Magento\Framework\Filesystem\DirectoryList
             self::TMP_MATERIALIZATION_DIR => [parent::PATH => 'var/view_preprocessed'],
             self::TEMPLATE_MINIFICATION_DIR => [parent::PATH => 'var/view_preprocessed/html'],
             self::SETUP => [parent::PATH => 'setup/src'],
+            self::COMPOSER_HOME => [parent::PATH => 'var/composer_home'],
         ];
         return parent::getDefaultConfig() + $result;
     }
diff --git a/lib/internal/Magento/Framework/Archive/ArchiveInterface.php b/lib/internal/Magento/Framework/Archive/ArchiveInterface.php
index ae9ab9b3d5f21abe939099da248510aedb2e109c..94512cafee53d3de65aee9ed29f968b3806074c7 100644
--- a/lib/internal/Magento/Framework/Archive/ArchiveInterface.php
+++ b/lib/internal/Magento/Framework/Archive/ArchiveInterface.php
@@ -11,6 +11,9 @@
  */
 namespace Magento\Framework\Archive;
 
+/**
+ * @api
+ */
 interface ArchiveInterface
 {
     /**
diff --git a/lib/internal/Magento/Framework/Archive/Tar.php b/lib/internal/Magento/Framework/Archive/Tar.php
index 0b69b98930cd7aea95415e29615e8fe6655152e6..c9e5fe5eebe9a727844cafcfa1b70b23eaeadda3 100644
--- a/lib/internal/Magento/Framework/Archive/Tar.php
+++ b/lib/internal/Magento/Framework/Archive/Tar.php
@@ -470,8 +470,8 @@ class Tar extends \Magento\Framework\Archive\AbstractArchive implements \Magento
 
         $checksumOk = $header['checksum'] == $checksum;
         if (isset($header['name']) && $checksumOk) {
+            $header['name'] = trim($header['name']);
             if (!($header['name'] == '././@LongLink' && $header['type'] == 'L')) {
-                $header['name'] = trim($header['name']);
                 return $header;
             }
 
diff --git a/lib/internal/Magento/Framework/Backup/Filesystem/Rollback/Fs.php b/lib/internal/Magento/Framework/Backup/Filesystem/Rollback/Fs.php
index ff750d3c8b1e49e89659822ddc944c73995ca815..16219421a64b104b8cef0fa7a6c8428f62e8df9b 100644
--- a/lib/internal/Magento/Framework/Backup/Filesystem/Rollback/Fs.php
+++ b/lib/internal/Magento/Framework/Backup/Filesystem/Rollback/Fs.php
@@ -54,6 +54,7 @@ class Fs extends AbstractRollback
         new \Magento\Framework\Archive\Gz();
         new \Magento\Framework\Archive\Helper\File('');
         new \Magento\Framework\Archive\Helper\File\Gz('');
+        new \Magento\Framework\Exception\LocalizedException(new \Magento\Framework\Phrase(''));
 
         $fsHelper->rm($this->_snapshot->getRootDir(), $this->_snapshot->getIgnorePaths());
         $archiver->unpack($snapshotPath, $this->_snapshot->getRootDir());
diff --git a/lib/internal/Magento/Framework/Cache/FrontendInterface.php b/lib/internal/Magento/Framework/Cache/FrontendInterface.php
index ccc69600622a7bb240ab28acb40b935e9f79c93f..5c658ce8f23bbe2685655afb600ecf20520db414 100644
--- a/lib/internal/Magento/Framework/Cache/FrontendInterface.php
+++ b/lib/internal/Magento/Framework/Cache/FrontendInterface.php
@@ -24,6 +24,7 @@ interface FrontendInterface
      *
      * @param string $identifier
      * @return string|bool
+     * @api
      */
     public function load($identifier);
 
@@ -35,6 +36,7 @@ interface FrontendInterface
      * @param array $tags
      * @param int|bool|null $lifeTime
      * @return bool
+     * @api
      */
     public function save($data, $identifier, array $tags = [], $lifeTime = null);
 
@@ -43,6 +45,7 @@ interface FrontendInterface
      *
      * @param string $identifier
      * @return bool
+     * @api
      */
     public function remove($identifier);
 
@@ -52,6 +55,7 @@ interface FrontendInterface
      * @param string $mode
      * @param array $tags
      * @return bool
+     * @api
      */
     public function clean($mode = \Zend_Cache::CLEANING_MODE_ALL, array $tags = []);
 
diff --git a/lib/internal/Magento/Framework/Composer/ComposerInformation.php b/lib/internal/Magento/Framework/Composer/ComposerInformation.php
new file mode 100644
index 0000000000000000000000000000000000000000..5ba195f386dba1d3e489993b423c00bde17aa295
--- /dev/null
+++ b/lib/internal/Magento/Framework/Composer/ComposerInformation.php
@@ -0,0 +1,152 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\Framework\Composer;
+
+use Composer\Factory as ComposerFactory;
+use Composer\Package\PackageInterface;
+use Magento\Framework\App\Filesystem\DirectoryList;
+use Magento\Framework\Filesystem;
+
+/**
+ * Class ComposerInformation uses Composer to determine dependency information.
+ */
+class ComposerInformation
+{
+    /**
+     * @var \Composer\Composer
+     */
+    private $composer;
+
+    /**
+     * @var \Composer\Package\Locker
+     */
+    private $locker;
+
+    /**
+     * Constructor
+     *
+     * @param Filesystem $filesystem
+     */
+    public function __construct(
+        Filesystem $filesystem
+    ) {
+        $vendor = $filesystem->getDirectoryRead(DirectoryList::CONFIG)->getAbsolutePath('vendor_path.php');
+        $vendorPath = $filesystem->getDirectoryRead(DirectoryList::ROOT)->getAbsolutePath() . include $vendor;
+        // Create Composer
+        $io = new \Composer\IO\BufferIO();
+        $this->composer = ComposerFactory::create($io, $vendorPath . '/../composer.json');
+        $this->locker = $this->composer->getLocker();
+    }
+
+    /**
+     * Retrieves required php version
+     *
+     * @return string
+     * @throws \Exception If attributes are missing in composer.lock file.
+     */
+    public function getRequiredPhpVersion()
+    {
+        if ($this->isMagentoRoot()) {
+            $allPlatformReqs = $this->locker->getPlatformRequirements(true);
+            $requiredPhpVersion =  $allPlatformReqs['php']->getPrettyConstraint();
+        } else {
+            $packages = $this->locker->getLockedRepository()->getPackages();
+            foreach ($packages as $package) {
+                /** @var \Composer\Package\CompletePackage $package */
+                $packageName = $package->getPrettyName();
+                if ($packageName === 'magento/product-community-edition') {
+                    $phpRequirementLink = $package->getRequires()['php'];
+                    $requiredPhpVersion = $phpRequirementLink->getPrettyConstraint();
+                }
+            }
+        }
+
+        if (!isset($requiredPhpVersion)) {
+            throw new \Exception('Cannot find php version requirement in \'composer.lock\' file');
+        }
+        return $requiredPhpVersion;
+    }
+
+    /**
+     * Retrieve list of required extensions
+     *
+     * Collect required extensions from composer.lock file
+     *
+     * @return array
+     * @throws \Exception If attributes are missing in composer.lock file.
+     */
+    public function getRequiredExtensions()
+    {
+        if ($this->isMagentoRoot()) {
+            $allPlatformReqs = $this->locker->getPlatformRequirements(true);
+            foreach ($allPlatformReqs as $reqIndex => $constraint) {
+                if (substr($reqIndex, 0, 4) === 'ext-') {
+                    $requiredExtensions[] = substr($reqIndex, 4);
+                }
+            }
+        } else {
+            $requiredExtensions = [];
+
+            /** @var \Composer\Package\CompletePackage $package */
+            foreach ($this->locker->getLockedRepository()->getPackages() as $package) {
+                $requires = $package->getRequires();
+                $requires = array_merge($requires, $package->getDevRequires());
+                foreach ($requires as $reqIndex => $constraint) {
+                    if (substr($reqIndex, 0, 4) === 'ext-') {
+                        $requiredExtensions[] = substr($reqIndex, 4);
+                    }
+                }
+            }
+        }
+
+        if (!isset($requiredExtensions)) {
+            throw new \Exception('Cannot find extensions in \'composer.lock\' file');
+        }
+        return $requiredExtensions;
+    }
+
+    /**
+     * Collect required packages from root composer.lock file
+     *
+     * @return array
+     */
+    public function getRootRequiredPackages()
+    {
+        $packages = [];
+        /** @var PackageInterface $package */
+        foreach ($this->locker->getLockedRepository()->getPackages() as $package) {
+            $packages[] = $package->getName();
+        }
+        return $packages;
+    }
+
+    /**
+     * Collect required packages and types from root composer.lock file
+     *
+     * @return array
+     */
+    public function getRootRequiredPackagesAndTypes()
+    {
+        $packages = [];
+        /** @var PackageInterface $package */
+        foreach ($this->locker->getLockedRepository()->getPackages() as $package) {
+            $packages[$package->getName()] = $package->getType();
+        }
+        return $packages;
+    }
+
+    /**
+     * Determines if Magento is the root package or it is included as a requirement.
+     *
+     * @return bool
+     */
+    private function isMagentoRoot()
+    {
+        $rootPackage = $this->composer->getPackage();
+        return ('magento/magento2ce' == $rootPackage->getName());
+    }
+}
diff --git a/lib/internal/Magento/Framework/Composer/DependencyChecker.php b/lib/internal/Magento/Framework/Composer/DependencyChecker.php
new file mode 100644
index 0000000000000000000000000000000000000000..edb3189d17b8c5e22313d07e48a8d9943f49229e
--- /dev/null
+++ b/lib/internal/Magento/Framework/Composer/DependencyChecker.php
@@ -0,0 +1,90 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Framework\Composer;
+
+use Composer\Console\Application;
+use Magento\Framework\App\Filesystem\DirectoryList;
+use Symfony\Component\Console\Input\ArrayInput;
+use Symfony\Component\Console\Output\BufferedOutput;
+
+/**
+ * A class to check if there are any dependency to package(s) that exists in the codebase, regardless of package type
+ */
+class DependencyChecker
+{
+    /**
+     * @var Application
+     */
+    private $composerApp;
+
+    /**
+     * @var DirectoryList
+     */
+    private $directoryList;
+
+    /**
+     * Constructor
+     *
+     * @param Application $composerApp
+     * @param DirectoryList $directoryList
+     */
+    public function __construct(Application $composerApp, DirectoryList $directoryList)
+    {
+        $this->composerApp = $composerApp;
+        $this->directoryList = $directoryList;
+    }
+
+    /**
+     * Checks dependencies to package(s), returns array of dependencies in the format of
+     * 'package A' => [array of package names depending on package A]
+     * If $excludeSelf is set to true, items in $packages will be excluded in all
+     * "array of package names depending on package A"
+     *
+     * @param string[] $packages
+     * @param bool $excludeSelf
+     * @return string[]
+     */
+    public function checkDependencies(array $packages, $excludeSelf = false)
+    {
+        $this->composerApp->setAutoExit(false);
+        $dependencies = [];
+        foreach ($packages as $package) {
+            $buffer = new BufferedOutput();
+            $this->composerApp->resetComposer();
+            $this->composerApp->run(
+                new ArrayInput(
+                    ['command' => 'depends', '--working-dir' => $this->directoryList->getRoot(), 'package' => $package]
+                ),
+                $buffer
+            );
+            $dependingPackages = $this->parseComposerOutput($buffer->fetch());
+            if ($excludeSelf === true) {
+                $dependingPackages = array_values(array_diff($dependingPackages, $packages));
+            }
+            $dependencies[$package] = $dependingPackages;
+        }
+        return $dependencies;
+    }
+
+    /**
+     * Parse output from running composer remove command into an array of depending packages
+     *
+     * @param string $output
+     * @return string[]
+     */
+    private function parseComposerOutput($output)
+    {
+        $rawLines = explode(PHP_EOL, $output);
+        $packages = [];
+        foreach ($rawLines as $rawLine) {
+            $parts = explode(' ', $rawLine);
+            if (count(explode('/', $parts[0])) == 2) {
+                $packages[] = $parts[0];
+            }
+        }
+        return $packages;
+    }
+}
diff --git a/lib/internal/Magento/Framework/Composer/Remove.php b/lib/internal/Magento/Framework/Composer/Remove.php
new file mode 100644
index 0000000000000000000000000000000000000000..7238d5439180f31fe1356f746f84424652f20db4
--- /dev/null
+++ b/lib/internal/Magento/Framework/Composer/Remove.php
@@ -0,0 +1,64 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Framework\Composer;
+
+use Composer\Console\Application;
+use Magento\Framework\App\Filesystem\DirectoryList;
+use Symfony\Component\Console\Input\ArrayInput;
+
+/**
+ * Class to run composer remove command
+ */
+class Remove
+{
+    /**
+     * Composer application
+     *
+     * @var Application
+     */
+    private $composerApp;
+
+    /**
+     * Directory List
+     *
+     * @var DirectoryList
+     */
+    private $directoryList;
+
+    /**
+     * Constructor
+     *
+     * @param Application $composerApp
+     * @param DirectoryList $directoryList
+     */
+    public function __construct(Application $composerApp, DirectoryList $directoryList)
+    {
+        $this->composerApp = $composerApp;
+        $this->directoryList = $directoryList;
+    }
+
+    /**
+     * Run 'composer remove'
+     *
+     * @param array $packages
+     * @return void
+     */
+    public function remove(array $packages)
+    {
+        $this->composerApp->resetComposer();
+        $this->composerApp->setAutoExit(false);
+        $vendor = include $this->directoryList->getPath(DirectoryList::CONFIG) . '/vendor_path.php';
+        $this->composerApp->run(
+            new ArrayInput(
+                [
+                    'command' => 'remove',
+                    'packages' => $packages,
+                    '--working-dir' => $this->directoryList->getRoot() . '/' . $vendor . '/..'
+                ]
+            )
+        );
+    }
+}
diff --git a/lib/internal/Magento/Framework/Composer/Test/Unit/DependencyCheckerTest.php b/lib/internal/Magento/Framework/Composer/Test/Unit/DependencyCheckerTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..46279d8fb1065375ed30370a506f70bf867847b5
--- /dev/null
+++ b/lib/internal/Magento/Framework/Composer/Test/Unit/DependencyCheckerTest.php
@@ -0,0 +1,99 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Framework\Composer\Test\Unit;
+
+use Magento\Framework\Composer\DependencyChecker;
+
+class DependencyCheckerTest extends \PHPUnit_Framework_TestCase
+{
+    public function testCheckDependencies()
+    {
+        $composerApp = $this->getMock(
+            'Composer\Console\Application',
+            ['setAutoExit', 'resetComposer', 'run'],
+            [],
+            '',
+            false
+        );
+        $directoryList = $this->getMock('Magento\Framework\App\Filesystem\DirectoryList', [], [], '', false);
+        $directoryList->expects($this->exactly(2))->method('getRoot');
+        $composerApp->expects($this->once())->method('setAutoExit')->with(false);
+
+        $composerApp->expects($this->at(2))->method('run')->willReturnCallback(
+            function ($input, $buffer) {
+                $output = 'magento/package-b requires magento/package-a (1.0)' . PHP_EOL .
+                    'magento/package-c requires magento/package-a (1.0)' . PHP_EOL;
+                $buffer->writeln($output);
+            }
+        );
+        $composerApp->expects($this->at(4))->method('run')->willReturnCallback(
+            function ($input, $buffer) {
+                $output = 'magento/package-c requires magento/package-b (1.0)' . PHP_EOL .
+                    'magento/package-d requires magento/package-b (1.0)' . PHP_EOL;
+                $buffer->writeln($output);
+            }
+        );
+
+        $dependencyChecker = new DependencyChecker($composerApp, $directoryList);
+        $expected = [
+            'magento/package-a' => ['magento/package-b', 'magento/package-c'],
+            'magento/package-b' => ['magento/package-c', 'magento/package-d'],
+        ];
+        $this->assertEquals(
+            $expected,
+            $dependencyChecker->checkDependencies(['magento/package-a', 'magento/package-b'])
+        );
+    }
+
+    public function testCheckDependenciesExcludeSelf()
+    {
+        $composerApp = $this->getMock(
+            'Composer\Console\Application',
+            ['setAutoExit', 'resetComposer', 'run'],
+            [],
+            '',
+            false
+        );
+        $directoryList = $this->getMock('Magento\Framework\App\Filesystem\DirectoryList', [], [], '', false);
+        $directoryList->expects($this->exactly(3))->method('getRoot');
+        $composerApp->expects($this->once())->method('setAutoExit')->with(false);
+
+        $composerApp->expects($this->at(2))->method('run')->willReturnCallback(
+            function ($input, $buffer) {
+                $output = 'magento/package-b requires magento/package-a (1.0)' . PHP_EOL .
+                    'magento/package-c requires magento/package-a (1.0)' . PHP_EOL;
+                $buffer->writeln($output);
+            }
+        );
+        $composerApp->expects($this->at(4))->method('run')->willReturnCallback(
+            function ($input, $buffer) {
+                $output = 'magento/package-c requires magento/package-b (1.0)' . PHP_EOL .
+                    'magento/package-d requires magento/package-b (1.0)' . PHP_EOL;
+                $buffer->writeln($output);
+            }
+        );
+        $composerApp->Expects($this->at(6))->method('run')->willReturnCallback(
+            function ($input, $buffer) {
+                $output = 'magento/package-d requires magento/package-c (1.0)' . PHP_EOL;
+                $buffer->writeln($output);
+            }
+        );
+
+        $dependencyChecker = new DependencyChecker($composerApp, $directoryList);
+        $expected = [
+            'magento/package-a' => [],
+            'magento/package-b' => ['magento/package-d'],
+            'magento/package-c' => ['magento/package-d'],
+        ];
+        $this->assertEquals(
+            $expected,
+            $dependencyChecker->checkDependencies(
+                ['magento/package-a', 'magento/package-b', 'magento/package-c'],
+                true
+            )
+        );
+    }
+}
diff --git a/lib/internal/Magento/Framework/Data/Collection/AbstractDb.php b/lib/internal/Magento/Framework/Data/Collection/AbstractDb.php
index e745a916a8092b6302250c7c86f6eda9601da9a1..3573fdb87f541e900636e9ed6d921649e35fedc7 100755
--- a/lib/internal/Magento/Framework/Data/Collection/AbstractDb.php
+++ b/lib/internal/Magento/Framework/Data/Collection/AbstractDb.php
@@ -8,7 +8,8 @@ namespace Magento\Framework\Data\Collection;
 use Magento\Framework\Data\Collection\Db\FetchStrategyInterface;
 use Magento\Framework\DB\Adapter\AdapterInterface;
 use Magento\Framework\DB\Select;
-use Magento\Framework\Api\ExtensionAttribute\JoinData;
+use Magento\Framework\Api\ExtensionAttribute\JoinDataInterface;
+use Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface;
 use Psr\Log\LoggerInterface as Logger;
 
 /**
@@ -87,11 +88,11 @@ abstract class AbstractDb extends \Magento\Framework\Data\Collection
     private $_fetchStrategy;
 
     /**
-     * Flag which determines if extension attributes were joined before the collection was loaded.
+     * Join processor is set only if extension attributes were joined before the collection was loaded.
      *
-     * @var callable|null
+     * @var \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface|null
      */
-    protected $extensionAttributesExtractorCallback;
+    protected $extensionAttributesJoinProcessor;
 
     /**
      * @param EntityFactoryInterface $entityFactory
@@ -743,7 +744,7 @@ abstract class AbstractDb extends \Magento\Framework\Data\Collection
         $this->_setIsLoaded(false);
         $this->_items = [];
         $this->_data = null;
-        $this->extensionAttributesExtractorCallback = null;
+        $this->extensionAttributesJoinProcessor = null;
         return $this;
     }
 
@@ -756,11 +757,11 @@ abstract class AbstractDb extends \Magento\Framework\Data\Collection
     protected function _fetchAll(\Zend_Db_Select $select)
     {
         $data = $this->_fetchStrategy->fetchAll($select, $this->_bindParams);
-        if ($this->extensionAttributesExtractorCallback && is_callable($this->extensionAttributesExtractorCallback)) {
+        if ($this->extensionAttributesJoinProcessor) {
             foreach ($data as $key => $dataItem) {
-                $data[$key] = call_user_func_array(
-                    $this->extensionAttributesExtractorCallback,
-                    [$this->_itemObjectClass, $dataItem]
+                $data[$key] = $this->extensionAttributesJoinProcessor->extractExtensionAttributes(
+                    $this->_itemObjectClass,
+                    $dataItem
                 );
             }
         }
@@ -812,32 +813,46 @@ abstract class AbstractDb extends \Magento\Framework\Data\Collection
     /**
      * Join extension attribute.
      *
-     * @param \Magento\Framework\Api\ExtensionAttribute\JoinData $join
-     * @param callable $extensionAttributesExtractorCallback
+     * @param JoinDataInterface $join
+     * @param JoinProcessorInterface $extensionAttributesJoinProcessor
      * @return $this
      */
-    public function joinExtensionAttribute($join, $extensionAttributesExtractorCallback)
-    {
+    public function joinExtensionAttribute(
+        JoinDataInterface $join,
+        JoinProcessorInterface $extensionAttributesJoinProcessor
+    ) {
         $selectFrom = $this->getSelect()->getPart(\Zend_Db_Select::FROM);
         $joinRequired = !isset($selectFrom[$join->getReferenceTableAlias()]);
         if ($joinRequired) {
+            $joinOn = $this->getMainTableAlias() . '.' . $join->getJoinField()
+                . ' = ' . $join->getReferenceTableAlias() . '.' . $join->getReferenceField();
             $this->getSelect()->joinLeft(
                 [$join->getReferenceTableAlias() => $this->getResource()->getTable($join->getReferenceTable())],
-                $this->getMainTableAlias() . '.' . $join->getJoinField()
-                . ' = ' . $join->getReferenceTableAlias() . '.' . $join->getReferenceField(),
+                $joinOn,
                 []
             );
         }
         $columns = [];
         foreach ($join->getSelectFields() as $selectField) {
-            $fieldAlias = $join->getReferenceTableAlias() . '_' . $selectField;
-            $columns[$fieldAlias] = $join->getReferenceTableAlias() . '.' . $selectField;
+            $fieldWIthDbPrefix = $selectField[JoinDataInterface::SELECT_FIELD_WITH_DB_PREFIX];
+            $columns[$selectField[JoinDataInterface::SELECT_FIELD_INTERNAL_ALIAS]] = $fieldWIthDbPrefix;
+            $this->addFilterToMap($selectField[JoinDataInterface::SELECT_FIELD_EXTERNAL_ALIAS], $fieldWIthDbPrefix);
         }
         $this->getSelect()->columns($columns);
-        $this->extensionAttributesExtractorCallback = $extensionAttributesExtractorCallback;
+        $this->extensionAttributesJoinProcessor = $extensionAttributesJoinProcessor;
         return $this;
     }
 
+    /**
+     * Get collection item object class name.
+     *
+     * @return string
+     */
+    public function getItemObjectClass()
+    {
+        return $this->_itemObjectClass;
+    }
+
     /**
      * Identify main table alias or its name if alias is not defined.
      *
diff --git a/lib/internal/Magento/Framework/Module/ModuleList/Loader.php b/lib/internal/Magento/Framework/Module/ModuleList/Loader.php
index b452c389205c5778517c5e27249b341259148d19..0321cc772fc3c683a9b723b10e1c187c5d5456a6 100644
--- a/lib/internal/Magento/Framework/Module/ModuleList/Loader.php
+++ b/lib/internal/Magento/Framework/Module/ModuleList/Loader.php
@@ -15,6 +15,8 @@ use Magento\Framework\Filesystem\DriverInterface;
 
 /**
  * Loader of module list information from the filesystem
+ *
+ * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
  */
 class Loader
 {
@@ -78,12 +80,13 @@ class Loader
     }
 
     /**
-     * Loads the full module list information
+     * Loads the full module list information. Excludes modules specified in $exclude.
      *
+     * @param array $exclude
      * @throws \Magento\Framework\Exception\LocalizedException
      * @return array
      */
-    public function load()
+    public function load(array $exclude = [])
     {
         $result = [];
         foreach ($this->getModuleConfigs() as list($file, $contents)) {
@@ -101,7 +104,9 @@ class Loader
 
             $data = $this->converter->convert($this->parser->getDom());
             $name = key($data);
-            $result[$name] = $data[$name];
+            if (!in_array($name, $exclude)) {
+                $result[$name] = $data[$name];
+            }
         }
         return $this->sortBySequence($result);
     }
diff --git a/lib/internal/Magento/Framework/Module/PackageInfo.php b/lib/internal/Magento/Framework/Module/PackageInfo.php
index ad74b5d0cb19bd5b7dd9a20f724099c91e9bfb63..f45173da62d495c89ff64460fed37706419812a6 100644
--- a/lib/internal/Magento/Framework/Module/PackageInfo.php
+++ b/lib/internal/Magento/Framework/Module/PackageInfo.php
@@ -118,6 +118,18 @@ class PackageInfo
         return isset($this->packageModuleMap[$packageName]) ? $this->packageModuleMap[$packageName] : '';
     }
 
+    /**
+     * Get package name of a module
+     *
+     * @param string $moduleName
+     * @return string
+     */
+    public function getPackageName($moduleName)
+    {
+        $this->load();
+        return array_search($moduleName, $this->packageModuleMap) ?: '';
+    }
+
     /**
      * Convert an array of package names to module names
      *
diff --git a/lib/internal/Magento/Framework/Module/Test/Unit/ModuleList/LoaderTest.php b/lib/internal/Magento/Framework/Module/Test/Unit/ModuleList/LoaderTest.php
index 5cb38c5be6838311f3847a10f0138942facc00a9..6705d04d35c3a67df6554c805cdd69bd063a209d 100644
--- a/lib/internal/Magento/Framework/Module/Test/Unit/ModuleList/LoaderTest.php
+++ b/lib/internal/Magento/Framework/Module/Test/Unit/ModuleList/LoaderTest.php
@@ -106,6 +106,38 @@ class LoaderTest extends \PHPUnit_Framework_TestCase
         }
     }
 
+    public function testLoadExclude()
+    {
+        $fixture = [
+            'a' => ['name' => 'a', 'sequence' => []],    // a is on its own
+            'b' => ['name' => 'b', 'sequence' => ['c']], // b is after c
+            'c' => ['name' => 'c', 'sequence' => ['a']], // c is after a
+            'd' => ['name' => 'd', 'sequence' => ['a']], // d is after a
+            // exclude d, so expected sequence is a -> c -> b
+        ];
+        $this->dir->expects($this->once())->method('search')->willReturn(['a', 'b', 'c', 'd']);
+        $this->dir->expects($this->exactly(4))->method('readFile')->will($this->returnValueMap([
+            ['a', null, null, self::$sampleXml],
+            ['b', null, null, self::$sampleXml],
+            ['c', null, null, self::$sampleXml],
+            ['d', null, null, self::$sampleXml],
+        ]));
+        $this->registry->expects($this->once())
+            ->method('getModulePaths')
+            ->willReturn([]);
+        $this->converter->expects($this->at(0))->method('convert')->willReturn(['a' => $fixture['a']]);
+        $this->converter->expects($this->at(1))->method('convert')->willReturn(['b' => $fixture['b']]);
+        $this->converter->expects($this->at(2))->method('convert')->willReturn(['c' => $fixture['c']]);
+        $this->converter->expects($this->at(3))->method('convert')->willReturn(['d' => $fixture['d']]);
+        $this->parser->expects($this->atLeastOnce())->method('loadXML');
+        $this->parser->expects($this->atLeastOnce())->method('getDom');
+        $result = $this->loader->load(['d']);
+        $this->assertSame(['a', 'c', 'b'], array_keys($result));
+        $this->assertSame($fixture['a'], $result['a']);
+        $this->assertSame($fixture['b'], $result['b']);
+        $this->assertSame($fixture['c'], $result['c']);
+    }
+
     /**
      * @expectedException \Exception
      * @expectedExceptionMessage Circular sequence reference from 'b' to 'a'
diff --git a/lib/internal/Magento/Framework/Module/Test/Unit/PackageInfoTest.php b/lib/internal/Magento/Framework/Module/Test/Unit/PackageInfoTest.php
index ddb327f03a5df5a8ee6bcb5bddd16c56209b8b65..45eaa3cbb2f1df5762797793d99b03ae14d87b24 100644
--- a/lib/internal/Magento/Framework/Module/Test/Unit/PackageInfoTest.php
+++ b/lib/internal/Magento/Framework/Module/Test/Unit/PackageInfoTest.php
@@ -59,6 +59,15 @@ class PackageInfoTest extends \PHPUnit_Framework_TestCase
         $this->assertEquals('E', $this->packageInfo->getModuleName('e'));
     }
 
+    public function testGetPackageName()
+    {
+        $this->assertEquals('a', $this->packageInfo->getPackageName('A'));
+        $this->assertEquals('b', $this->packageInfo->getPackageName('B'));
+        $this->assertEquals('c', $this->packageInfo->getPackageName('C'));
+        $this->assertEquals('d', $this->packageInfo->getPackageName('D'));
+        $this->assertEquals('e', $this->packageInfo->getPackageName('E'));
+    }
+
     public function testGetRequireReturnModuleName()
     {
         $this->assertEquals(['B'], $this->packageInfo->getRequire('A'));
diff --git a/lib/internal/Magento/Framework/ObjectManager/Code/Generator/Repository.php b/lib/internal/Magento/Framework/ObjectManager/Code/Generator/Repository.php
index 22857fcf9bcfae8bfe3f0de7f675263cfdae33ee..496ba2e8d173a62d6fbc89560d3925af7ff43234 100644
--- a/lib/internal/Magento/Framework/ObjectManager/Code/Generator/Repository.php
+++ b/lib/internal/Magento/Framework/ObjectManager/Code/Generator/Repository.php
@@ -73,6 +73,19 @@ class Repository extends \Magento\Framework\Code\Generator\EntityAbstract
                     ],
                 ]
             ],
+            [
+                'name' => 'extensionAttributesJoinProcessor',
+                'visibility' => 'protected',
+                'docblock' => [
+                    'shortDescription' => 'Extension attributes join processor.',
+                    'tags' => [
+                        [
+                            'name' => 'var',
+                            'description' => '\Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface',
+                        ],
+                    ],
+                ]
+            ],
         ];
         return $properties;
     }
@@ -138,13 +151,18 @@ class Repository extends \Magento\Framework\Code\Generator\EntityAbstract
                     'name' => $this->_getSourceCollectionFactoryPropertyName(),
                     'type' => $this->_getCollectionFactoryClassName(),
                 ],
+                [
+                    'name' => 'extensionAttributesJoinProcessor',
+                    'type' => '\Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface',
+                ],
             ],
             'body' => "\$this->"
                 . $this->_getSourcePersistorPropertyName()
                 . " = \$" . $this->_getSourcePersistorPropertyName() . ";\n"
                 . "\$this->"
                 . $this->_getSourceCollectionFactoryPropertyName()
-                . " = \$" . $this->_getSourceCollectionFactoryPropertyName() . ";"
+                . " = \$" . $this->_getSourceCollectionFactoryPropertyName() . ";\n"
+                . "\$this->extensionAttributesJoinProcessor = \$extensionAttributesJoinProcessor;"
             ,
             'docblock' => [
                 'shortDescription' => ucfirst(static::ENTITY_TYPE) . ' constructor',
@@ -158,6 +176,11 @@ class Repository extends \Magento\Framework\Code\Generator\EntityAbstract
                         'description' => $this->_getCollectionFactoryClassName()
                             . " \$" . $this->_getSourceCollectionFactoryPropertyName()
                     ],
+                    [
+                        'name' => 'param',
+                        'description' => '\Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface'
+                            . " \$extensionAttributesJoinProcessor"
+                    ],
                 ],
             ]
         ];
@@ -362,6 +385,10 @@ class Repository extends \Magento\Framework\Code\Generator\EntityAbstract
                         'name' => 'param',
                         'description' => $this->getSourceClassName() . ' $entity',
                     ],
+                    [
+                        'name' => 'return',
+                        'description' => 'bool',
+                    ],
                 ],
             ]
         ];
@@ -393,6 +420,10 @@ class Repository extends \Magento\Framework\Code\Generator\EntityAbstract
                         'name' => 'param',
                         'description' => 'int $id',
                     ],
+                    [
+                        'name' => 'return',
+                        'description' => 'bool',
+                    ],
                 ],
             ]
         ];
@@ -428,14 +459,15 @@ class Repository extends \Magento\Framework\Code\Generator\EntityAbstract
     }
 
     /**
-     * Returns find() method
+     * Returns getList() method
      *
      * @return string
      */
     protected function _getGetListMethod()
     {
         $body = "\$collection = \$this->" . $this->_getSourceCollectionFactoryPropertyName() . "->create();\n"
-        . "foreach(\$criteria->getFilterGroups() as \$filterGroup) {\n"
+        . "\$this->extensionAttributesJoinProcessor->process(\$collection);\n"
+        . "foreach (\$criteria->getFilterGroups() as \$filterGroup) {\n"
         . "    foreach (\$filterGroup->getFilters() as \$filter) {\n"
         . "        \$condition = \$filter->getConditionType() ? \$filter->getConditionType() : 'eq';\n"
         . "        \$collection->addFieldToFilter(\$filter->getField(), [\$condition => \$filter->getValue()]);\n"
diff --git a/lib/internal/Magento/Framework/ObjectManager/Test/Unit/Code/Generator/GenerateRepositoryTest.php b/lib/internal/Magento/Framework/ObjectManager/Test/Unit/Code/Generator/GenerateRepositoryTest.php
index 33ff3368e02de494477962c581144a384092bf0e..a2744ca17becda4478dff35173d9982b33ba2ae3 100644
--- a/lib/internal/Magento/Framework/ObjectManager/Test/Unit/Code/Generator/GenerateRepositoryTest.php
+++ b/lib/internal/Magento/Framework/ObjectManager/Test/Unit/Code/Generator/GenerateRepositoryTest.php
@@ -58,8 +58,12 @@ class GenerateRepositoryTest extends \PHPUnit_Framework_TestCase
             ->with('\Magento\Framework\ObjectManager\Code\Generator\SampleRepository')
             ->willReturn('SampleRepository.php');
 
+        $repositoryCode = file_get_contents(__DIR__ . '/_files/SampleRepository.txt');
+        $this->ioObjectMock->expects($this->once())->method('writeResultFile')
+            ->with('SampleRepository.php', $repositoryCode);
+
         $model->expects($this->once())->method('_validateData')->willReturn(true);
-        $this->assertEquals('SampleRepository.php', $model->generate());
+        $this->assertEquals('SampleRepository.php', $model->generate(), "Generated repository is invalid.");
     }
 
     /**
diff --git a/lib/internal/Magento/Framework/ObjectManager/Test/Unit/Code/Generator/_files/SampleRepository.txt b/lib/internal/Magento/Framework/ObjectManager/Test/Unit/Code/Generator/_files/SampleRepository.txt
index 4b1ee7b0108376ec5bfb89532fbe07aeed3b77d5..d135ca64dd1fccfc3382920cd9d3a6d02daa6750 100644
--- a/lib/internal/Magento/Framework/ObjectManager/Test/Unit/Code/Generator/_files/SampleRepository.txt
+++ b/lib/internal/Magento/Framework/ObjectManager/Test/Unit/Code/Generator/_files/SampleRepository.txt
@@ -1,7 +1,7 @@
 namespace Magento\Framework\ObjectManager\Code\Generator;
 
 /**
- * Repository class for
+ * Repository class for @see
  * \Magento\Framework\ObjectManager\Code\Generator\SampleInterface
  */
 class SampleRepository implements \Magento\Framework\ObjectManager\Code\Generator\SampleRepositoryInterface
@@ -22,7 +22,7 @@ class SampleRepository implements \Magento\Framework\ObjectManager\Code\Generato
     protected $sampleInterfaceSearchResultFactory = null;
 
     /**
-     * Magento\Framework\ObjectManager\Code\Generator\SampleInterface[]
+     * \Magento\Framework\ObjectManager\Code\Generator\SampleInterface[]
      *
      * @var array
      */
@@ -30,6 +30,13 @@ class SampleRepository implements \Magento\Framework\ObjectManager\Code\Generato
         
     );
 
+    /**
+     * Extension attributes join processor.
+     *
+     * @var \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface
+     */
+    protected $extensionAttributesJoinProcessor = null;
+
     /**
      * Repository constructor
      *
@@ -38,11 +45,14 @@ class SampleRepository implements \Magento\Framework\ObjectManager\Code\Generato
      * @param
      * \Magento\Framework\ObjectManager\Code\Generator\SampleSearchResultInterfaceFactory
      * $sampleInterfaceSearchResultFactory
+     * @param \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface
+     * $extensionAttributesJoinProcessor
      */
-    public function __construct(\Magento\Framework\ObjectManager\Code\Generator\SampleInterfacePersistor $sampleInterfacePersistor, \Magento\Framework\ObjectManager\Code\Generator\SampleSearchResultInterfaceFactory $sampleInterfaceSearchResultFactory)
+    public function __construct(\Magento\Framework\ObjectManager\Code\Generator\SampleInterfacePersistor $sampleInterfacePersistor, \Magento\Framework\ObjectManager\Code\Generator\SampleSearchResultInterfaceFactory $sampleInterfaceSearchResultFactory, \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface $extensionAttributesJoinProcessor)
     {
         $this->sampleInterfacePersistor = $sampleInterfacePersistor;
         $this->sampleInterfaceSearchResultFactory = $sampleInterfaceSearchResultFactory;
+        $this->extensionAttributesJoinProcessor = $extensionAttributesJoinProcessor;
     }
 
     /**
@@ -53,13 +63,13 @@ class SampleRepository implements \Magento\Framework\ObjectManager\Code\Generato
      * @throws \Magento\Framework\Exception\InputException
      * @throws \Magento\Framework\Exception\NoSuchEntityException
      */
-    public function get($id, $arguments = array())
+    public function get($id)
     {
         if (!$id) {
             throw new \Magento\Framework\Exception\InputException('ID required');
         }
         if (!isset($this->registry[$id])) {
-            $entity = $this->sampleInterfacePersistor->loadEntity($id, $arguments);
+            $entity = $this->sampleInterfacePersistor->loadEntity($id);
             if (!$entity->getId()) {
                 throw new \Magento\Framework\Exception\NoSuchEntityException('Requested entity doesn\'t exist');
             }
@@ -94,13 +104,13 @@ class SampleRepository implements \Magento\Framework\ObjectManager\Code\Generato
      * Find entities by criteria
      *
      * @param \Magento\Framework\Api\SearchCriteria  $criteria
-     * @param array $arguments
-     * @return \Magento\Framework\ObjectManager\Code\Generator\Sample[]
+     * @return \Magento\Framework\ObjectManager\Code\Generator\SampleInterface[]
      */
-    public function find(\Magento\Framework\Api\SearchCriteria $criteria, $arguments = array())
+    public function getList(\Magento\Framework\Api\SearchCriteria $criteria)
     {
         $collection = $this->sampleInterfaceSearchResultFactory->create();
-        foreach($criteria->getFilterGroups() as $filterGroup) {
+        $this->extensionAttributesJoinProcessor->process($collection);
+        foreach ($criteria->getFilterGroups() as $filterGroup) {
             foreach ($filterGroup->getFilters() as $filter) {
                 $condition = $filter->getConditionType() ? $filter->getConditionType() : 'eq';
                 $collection->addFieldToFilter($filter->getField(), [$condition => $filter->getValue()]);
@@ -125,11 +135,25 @@ class SampleRepository implements \Magento\Framework\ObjectManager\Code\Generato
      * Register entity to delete
      *
      * @param \Magento\Framework\ObjectManager\Code\Generator\SampleInterface $entity
+     * @return bool
+     */
+    public function delete(\Magento\Framework\ObjectManager\Code\Generator\SampleInterface $entity)
+    {
+        $this->sampleInterfacePersistor->registerDeleted($entity);
+        return $this->sampleInterfacePersistor->doPersistEntity($entity);
+    }
+
+    /**
+     * Delete entity by Id
+     *
+     * @param int $id
+     * @return bool
      */
-    public function delete(\Magento\Framework\ObjectManager\Code\Generator\SampleInterface $entity, $arguments = array())
+    public function deleteById($id)
     {
+        $entity = $this->get($id);
         $this->sampleInterfacePersistor->registerDeleted($entity);
-        $this->sampleInterfacePersistor->save($entity);
+        return $this->sampleInterfacePersistor->doPersistEntity($entity);
     }
 
     /**
@@ -147,9 +171,11 @@ class SampleRepository implements \Magento\Framework\ObjectManager\Code\Generato
      * Perform persist operations for one entity
      *
      * @param \Magento\Framework\ObjectManager\Code\Generator\SampleInterface $entity
+     * @return \Magento\Framework\ObjectManager\Code\Generator\SampleInterface
      */
-    public function save(\Magento\Framework\ObjectManager\Code\Generator\SampleInterface $entity, $arguments = array())
+    public function save(\Magento\Framework\ObjectManager\Code\Generator\SampleInterface $entity)
     {
-        return $this->sampleInterfacePersistor->doPersistEntity($entity);
+        $this->sampleInterfacePersistor->doPersistEntity($entity);
+        return $entity;
     }
 }
diff --git a/lib/internal/Magento/Framework/Setup/BackupRollback.php b/lib/internal/Magento/Framework/Setup/BackupRollback.php
new file mode 100755
index 0000000000000000000000000000000000000000..57aaafd526a7da206994ae347742256aeb9d75e6
--- /dev/null
+++ b/lib/internal/Magento/Framework/Setup/BackupRollback.php
@@ -0,0 +1,293 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\Framework\Setup;
+
+use Magento\Framework\App\Filesystem\DirectoryList;
+use Magento\Framework\Backup\Factory;
+use Magento\Framework\Backup\Exception\NotEnoughPermissions;
+use Magento\Framework\Backup\Filesystem;
+use Magento\Framework\Backup\Filesystem\Helper;
+use Magento\Framework\Exception\LocalizedException;
+use Magento\Framework\Filesystem\Driver\File;
+use Magento\Framework\ObjectManagerInterface;
+use Magento\Framework\Phrase;
+
+/**
+ * Class to deal with backup and rollback functionality for database and Code base
+ *
+ * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
+ */
+class BackupRollback
+{
+    /**
+     * Default backup directory
+     */
+    const DEFAULT_BACKUP_DIRECTORY = 'backups';
+
+    /**
+     * Object Manager
+     *
+     * @var ObjectManagerInterface
+     */
+    private $objectManager;
+
+    /**
+     * Logger
+     *
+     * @var LoggerInterface
+     */
+    private $log;
+
+    /**
+     * Filesystem Directory List
+     *
+     * @var DirectoryList
+     */
+    private $directoryList;
+
+    /**
+     * File
+     *
+     * @var File
+     */
+    private $file;
+
+    /**
+     * Constructor
+     *
+     * @param ObjectManagerInterface $objectManager
+     * @param LoggerInterface $log
+     * @param DirectoryList $directoryList
+     * @param File $file
+     */
+    public function __construct(
+        ObjectManagerInterface $objectManager,
+        LoggerInterface $log,
+        DirectoryList $directoryList,
+        File $file
+    ) {
+        $this->objectManager = $objectManager;
+        $this->log = $log;
+        $this->directoryList = $directoryList;
+        $this->file = $file;
+    }
+
+    /**
+     * Take backup for code base
+     *
+     * @param int $time
+     * @param string $type
+     * @return void
+     * @throws LocalizedException
+     */
+    public function codeBackup($time, $type = Factory::TYPE_FILESYSTEM)
+    {
+        /** @var \Magento\Framework\Backup\Filesystem $fsBackup */
+        $fsBackup = $this->objectManager->create('Magento\Framework\Backup\Filesystem');
+        $fsBackup->setRootDir($this->directoryList->getRoot());
+        if ($type === Factory::TYPE_FILESYSTEM) {
+            $fsBackup->addIgnorePaths($this->getCodeBackupIgnorePaths());
+            $granularType = 'Code';
+            $fsBackup->setName('code');
+        } elseif ($type === Factory::TYPE_MEDIA) {
+            $fsBackup->addIgnorePaths($this->getMediaBackupIgnorePaths());
+            $granularType = 'Media';
+            $fsBackup->setName('media');
+        } else {
+            throw new LocalizedException(new Phrase("This backup type \'$type\' is not supported."));
+        }
+        $backupsDir = $this->directoryList->getPath(DirectoryList::VAR_DIR) . '/' . self::DEFAULT_BACKUP_DIRECTORY;
+        if (!$this->file->isExists($backupsDir)) {
+            $this->file->createDirectory($backupsDir, 0777);
+        }
+        $fsBackup->setBackupsDir($backupsDir);
+        $fsBackup->setBackupExtension('tgz');
+        $fsBackup->setTime($time);
+        $this->log->log($granularType . ' backup is starting...');
+        $fsBackup->create();
+        $this->log->log(
+            $granularType. ' backup filename: ' . $fsBackup->getBackupFilename()
+            . ' (The archive can be uncompressed with 7-Zip on Windows systems)'
+        );
+        $this->log->log($granularType . ' backup path: ' . $fsBackup->getBackupPath());
+        $this->log->logSuccess($granularType . ' backup completed successfully.');
+    }
+
+    /**
+     * Roll back code base
+     *
+     * @param string $rollbackFile
+     * @param string $type
+     * @return void
+     * @throws LocalizedException
+     */
+    public function codeRollback($rollbackFile, $type = Factory::TYPE_FILESYSTEM)
+    {
+        if (preg_match('/[0-9]_(filesystem)_(code|media)\.(tgz)$/', $rollbackFile) !== 1) {
+            throw new LocalizedException(new Phrase('Invalid rollback file.'));
+        }
+        $backupsDir = $this->directoryList->getPath(DirectoryList::VAR_DIR) . '/' . self::DEFAULT_BACKUP_DIRECTORY;
+        if (!$this->file->isExists($backupsDir . '/' . $rollbackFile)) {
+            throw new LocalizedException(new Phrase('The rollback file does not exist.'));
+        }
+        /** @var \Magento\Framework\Backup\Filesystem $fsRollback */
+        $fsRollback = $this->objectManager->create('Magento\Framework\Backup\Filesystem');
+        if ($type === Factory::TYPE_FILESYSTEM) {
+            $ignorePaths = $this->getCodeBackupIgnorePaths();
+            $granularType = 'Code';
+            $fsRollback->setName('code');
+        } elseif ($type === Factory::TYPE_MEDIA) {
+            $ignorePaths = $this->getMediaBackupIgnorePaths();
+            $granularType = 'Media';
+            $fsRollback->setName('media');
+        } else {
+            throw new LocalizedException(new Phrase("This backup type \'$type\' is not supported."));
+        }
+        /** @var Helper $checkWritable */
+        $checkWritable = $this->objectManager->create('Magento\Framework\Backup\Filesystem\Helper');
+        $filesInfo = $checkWritable->getInfo(
+            $this->directoryList->getRoot(),
+            Helper::INFO_WRITABLE,
+            $ignorePaths
+        );
+        if (!$filesInfo['writable']) {
+            throw new NotEnoughPermissions(
+                new Phrase('Unable to make rollback because not all files are writable')
+            );
+        }
+        $fsRollback->setRootDir($this->directoryList->getRoot());
+        $fsRollback->addIgnorePaths($ignorePaths);
+        $fsRollback->setBackupsDir($backupsDir);
+        $fsRollback->setBackupExtension('tgz');
+        $time = explode('_', $rollbackFile);
+        $fsRollback->setTime($time[0]);
+        $this->log->log($granularType . ' rollback is starting ...');
+        $fsRollback->rollback();
+        $this->log->log($granularType . ' rollback filename: ' . $fsRollback->getBackupFilename());
+        $this->log->log($granularType . ' rollback file path: ' . $fsRollback->getBackupPath());
+        $this->log->logSuccess($granularType . ' rollback completed successfully.');
+    }
+
+    /**
+     * Take backup for database
+     *
+     * @param int $time
+     * @return void
+     */
+    public function dbBackup($time)
+    {
+        $this->setAreaCode();
+        /** @var \Magento\Framework\Backup\Db $dbBackup */
+        $dbBackup = $this->objectManager->create('Magento\Framework\Backup\Db');
+        $dbBackup->setRootDir($this->directoryList->getRoot());
+        $backupsDir = $this->directoryList->getPath(DirectoryList::VAR_DIR) . '/' . self::DEFAULT_BACKUP_DIRECTORY;
+        if (!$this->file->isExists($backupsDir)) {
+            $this->file->createDirectory($backupsDir, 0777);
+        }
+        $dbBackup->setBackupsDir($backupsDir);
+        $dbBackup->setBackupExtension('gz');
+        $dbBackup->setTime($time);
+        $this->log->log('DB backup is starting...');
+        $dbBackup->create();
+        $this->log->log(
+            'DB backup filename: ' . $dbBackup->getBackupFilename()
+            . ' (The archive can be uncompressed with 7-Zip on Windows systems)'
+        );
+        $this->log->log('DB backup path: ' . $dbBackup->getBackupPath());
+        $this->log->logSuccess('DB backup completed successfully.');
+    }
+
+    /**
+     * Roll back database
+     *
+     * @param string $rollbackFile
+     * @return void
+     * @throws LocalizedException
+     */
+    public function dbRollback($rollbackFile)
+    {
+        if (preg_match('/[0-9]_(db).(gz)$/', $rollbackFile) !== 1) {
+            throw new LocalizedException(new Phrase('Invalid rollback file.'));
+        }
+        $backupsDir = $this->directoryList->getPath(DirectoryList::VAR_DIR) . '/' . self::DEFAULT_BACKUP_DIRECTORY;
+        if (!$this->file->isExists($backupsDir . '/' . $rollbackFile)) {
+            throw new LocalizedException(new Phrase('The rollback file does not exist.'));
+        }
+        $this->setAreaCode();
+        /** @var \Magento\Framework\Backup\Db $dbRollback */
+        $dbRollback = $this->objectManager->create('Magento\Framework\Backup\Db');
+        $dbRollback->setRootDir($this->directoryList->getRoot());
+        $dbRollback->setBackupsDir($backupsDir);
+        $dbRollback->setBackupExtension('gz');
+        $time = explode('_', $rollbackFile);
+        if (count($time) === 3) {
+            $thirdPart = explode('.', $time[2]);
+            $dbRollback->setName($thirdPart[0]);
+        }
+        $dbRollback->setTime($time[0]);
+        $this->log->log('DB rollback is starting...');
+        $dbRollback->setResourceModel($this->objectManager->create('Magento\Backup\Model\Resource\Db'));
+        $dbRollback->rollback();
+        $this->log->log('DB rollback filename: ' . $dbRollback->getBackupFilename());
+        $this->log->log('DB rollback path: ' . $dbRollback->getBackupPath());
+        $this->log->logSuccess('DB rollback completed successfully.');
+    }
+
+    /**
+     * Sets area code to start a session for database backup and rollback
+     *
+     * @return void
+     */
+    private function setAreaCode()
+    {
+        $areaCode = 'adminhtml';
+        /** @var \Magento\Framework\App\State $appState */
+        $appState = $this->objectManager->get('Magento\Framework\App\State');
+        $appState->setAreaCode($areaCode);
+        /** @var \Magento\Framework\App\ObjectManager\ConfigLoader $configLoader */
+        $configLoader = $this->objectManager->get('Magento\Framework\App\ObjectManager\ConfigLoader');
+        $this->objectManager->configure($configLoader->load($areaCode));
+    }
+
+    /**
+     * Get paths that should be excluded during iterative searches for locations for code backup only
+     *
+     * @return array
+     */
+    private function getCodeBackupIgnorePaths()
+    {
+        return [
+            $this->directoryList->getPath(DirectoryList::MEDIA),
+            $this->directoryList->getPath(DirectoryList::STATIC_VIEW),
+            $this->directoryList->getPath(DirectoryList::VAR_DIR),
+            $this->directoryList->getRoot() . '/.idea',
+            $this->directoryList->getRoot() . '/.svn',
+            $this->directoryList->getRoot() . '/.git'
+        ];
+    }
+
+    /**
+     * Get paths that should be excluded during iterative searches for locations for media backup only
+     *
+     * @return array
+     */
+    private function getMediaBackupIgnorePaths()
+    {
+        $ignorePaths = [];
+        foreach (new \DirectoryIterator($this->directoryList->getRoot()) as $item) {
+            if (!$item->isDot() && ($this->directoryList->getPath(DirectoryList::PUB) !== $item->getPathname())) {
+                $ignorePaths[] = str_replace('\\', '/', $item->getPathname());
+            }
+        }
+        foreach (new \DirectoryIterator($this->directoryList->getPath(DirectoryList::PUB)) as $item) {
+            if (!$item->isDot() && ($this->directoryList->getPath(DirectoryList::MEDIA) !== $item->getPathname())) {
+                $ignorePaths[] = str_replace('\\', '/', $item->getPathname());
+            }
+        }
+        return $ignorePaths;
+    }
+}
diff --git a/lib/internal/Magento/Framework/Setup/BackupRollbackFactory.php b/lib/internal/Magento/Framework/Setup/BackupRollbackFactory.php
new file mode 100644
index 0000000000000000000000000000000000000000..a52448c745f247a80ad7bff0928e32d4713097fd
--- /dev/null
+++ b/lib/internal/Magento/Framework/Setup/BackupRollbackFactory.php
@@ -0,0 +1,39 @@
+<?php
+/**
+ * Factory for Acl resource
+ *
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Framework\Setup;
+
+use Magento\Framework\ObjectManagerInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+
+class BackupRollbackFactory
+{
+    /**
+     * @var ObjectManagerInterface
+     */
+    protected $_objectManager;
+
+    /**
+     * @param ObjectManagerInterface $objectManager
+     */
+    public function __construct(ObjectManagerInterface $objectManager)
+    {
+        $this->_objectManager = $objectManager;
+    }
+
+    /**
+     * Create and return BackupRollback
+     *
+     * @param OutputInterface $output
+     * @return BackupRollback
+     */
+    public function create($output)
+    {
+        $log = $this->_objectManager->create('Magento\Framework\Setup\ConsoleLogger', ['output' => $output]);
+        return $this->_objectManager->create('Magento\Framework\Setup\BackupRollback', ['log' => $log]);
+    }
+}
diff --git a/setup/src/Magento/Setup/Model/ConsoleLogger.php b/lib/internal/Magento/Framework/Setup/ConsoleLogger.php
similarity index 98%
rename from setup/src/Magento/Setup/Model/ConsoleLogger.php
rename to lib/internal/Magento/Framework/Setup/ConsoleLogger.php
index 3bcd21aabe083ce1066554ca661e2b4e270e2916..6deb7259c0c854a7d6eb472ce0550f3093231c57 100644
--- a/setup/src/Magento/Setup/Model/ConsoleLogger.php
+++ b/lib/internal/Magento/Framework/Setup/ConsoleLogger.php
@@ -4,7 +4,7 @@
  * See COPYING.txt for license details.
  */
 
-namespace Magento\Setup\Model;
+namespace Magento\Framework\Setup;
 
 use Symfony\Component\Console\Output\OutputInterface;
 use Symfony\Component\Console\Formatter\OutputFormatterStyle;
diff --git a/setup/src/Magento/Setup/Model/LoggerInterface.php b/lib/internal/Magento/Framework/Setup/LoggerInterface.php
similarity index 96%
rename from setup/src/Magento/Setup/Model/LoggerInterface.php
rename to lib/internal/Magento/Framework/Setup/LoggerInterface.php
index 8803acd58883e879987b38f9b22f87986f4ac697..7ebe3838e265c22d81cd4023757e09f00748e947 100644
--- a/setup/src/Magento/Setup/Model/LoggerInterface.php
+++ b/lib/internal/Magento/Framework/Setup/LoggerInterface.php
@@ -4,7 +4,7 @@
  * See COPYING.txt for license details.
  */
 
-namespace Magento\Setup\Model;
+namespace Magento\Framework\Setup;
 
 /**
  * Interface to Log Message in Setup
diff --git a/lib/internal/Magento/Framework/Setup/Test/Unit/BackupRollbackFactoryTest.php b/lib/internal/Magento/Framework/Setup/Test/Unit/BackupRollbackFactoryTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..2ad4407f0e3d15ac6f79b6dad096a16478a79895
--- /dev/null
+++ b/lib/internal/Magento/Framework/Setup/Test/Unit/BackupRollbackFactoryTest.php
@@ -0,0 +1,32 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Framework\Setup\Test\Unit;
+
+use Magento\Framework\Setup\BackupRollbackFactory;
+
+class BackupRollbackFactoryTest extends \PHPUnit_Framework_TestCase
+{
+    public function testCreate()
+    {
+        $objectManager = $this->getMockForAbstractClass('Magento\Framework\ObjectManagerInterface', [], '', false);
+        $consoleLogger = $this->getMock('Magento\Framework\Setup\ConsoleLogger', [], [], '', false);
+        $factory = $this->getMock('Magento\Framework\Setup\BackupRollback', [], [], '', false);
+        $output = $this->getMockForAbstractClass(
+            'Symfony\Component\Console\Output\OutputInterface',
+            [],
+            '',
+            false
+        );
+        $objectManager->expects($this->exactly(2))
+            ->method('create')
+            ->will($this->returnValueMap([
+                ['Magento\Framework\Setup\ConsoleLogger', ['output' => $output], $consoleLogger],
+                ['Magento\Framework\Setup\BackupRollback', ['log' => $consoleLogger], $factory],
+            ]));
+        $model = new BackupRollbackFactory($objectManager);
+        $this->assertInstanceOf('Magento\Framework\Setup\BackupRollback', $model->create($output));
+    }
+}
diff --git a/lib/internal/Magento/Framework/Setup/Test/Unit/BackupRollbackTest.php b/lib/internal/Magento/Framework/Setup/Test/Unit/BackupRollbackTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..e29f90c800fd32cc860d54661c8491a8800d1014
--- /dev/null
+++ b/lib/internal/Magento/Framework/Setup/Test/Unit/BackupRollbackTest.php
@@ -0,0 +1,227 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Framework\Setup\Test\Unit;
+
+use Magento\Framework\Backup\Factory;
+use Magento\Framework\Setup\BackupRollback;
+use Magento\Framework\Setup\LoggerInterface;
+
+class BackupRollbackTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var \Magento\Framework\ObjectManagerInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $objectManager;
+
+    /**
+     * @var LoggerInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $log;
+
+    /**
+     * @var \Magento\Framework\App\Filesystem\DirectoryList|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $directoryList;
+
+    /**
+     * @var BackupRollback
+     */
+    private $model;
+
+    /**
+     * @var \Magento\Framework\Filesystem\Driver\File|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $file;
+
+    /**
+     * @var \Magento\Framework\Backup\Filesystem|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $filesystem;
+
+    /**
+     * @var \Magento\Framework\Backup\Db|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $database;
+
+    /**
+     * @var string
+     */
+    private $path;
+
+    public function setUp()
+    {
+        $this->objectManager = $this->getMock('Magento\Framework\ObjectManagerInterface', [], [], '', false);
+        $this->log = $this->getMock('Magento\Framework\Setup\LoggerInterface', [], [], '', false);
+        $this->directoryList = $this->getMock('Magento\Framework\App\Filesystem\DirectoryList', [], [], '', false);
+        $this->path = realpath(__DIR__);
+        $this->directoryList->expects($this->any())
+            ->method('getRoot')
+            ->willReturn($this->path);
+        $this->directoryList->expects($this->any())
+            ->method('getPath')
+            ->willReturn($this->path);
+        $this->file = $this->getMock('Magento\Framework\Filesystem\Driver\File', [], [], '', false);
+        $this->filesystem = $this->getMock('Magento\Framework\Backup\Filesystem', [], [], '', false);
+        $this->database = $this->getMock('Magento\Framework\Backup\Db', [], [], '', false);
+        $helper = $this->getMock('Magento\Framework\Backup\Filesystem\Helper', [], [], '', false);
+        $helper->expects($this->any())
+            ->method('getInfo')
+            ->willReturn(['writable' => true]);
+        $configLoader = $this->getMock('Magento\Framework\App\ObjectManager\ConfigLoader', [], [], '', false);
+        $configLoader->expects($this->any())
+            ->method('load')
+            ->willReturn([]);
+        $this->objectManager->expects($this->any())
+            ->method('get')
+            ->will($this->returnValueMap([
+                ['Magento\Framework\App\State', $this->getMock('Magento\Framework\App\State', [], [], '', false)],
+                ['Magento\Framework\App\ObjectManager\ConfigLoader', $configLoader],
+            ]));
+        $this->objectManager->expects($this->any())
+            ->method('create')
+            ->will($this->returnValueMap([
+                ['Magento\Framework\Backup\Filesystem\Helper', [], $helper],
+                ['Magento\Framework\Backup\Filesystem', [], $this->filesystem],
+                ['Magento\Framework\Backup\Db', [], $this->database],
+            ]));
+        $this->model = new BackupRollback(
+            $this->objectManager,
+            $this->log,
+            $this->directoryList,
+            $this->file
+        );
+    }
+
+    public function testCodeBackup()
+    {
+        $this->setupCodeBackupRollback();
+        $this->filesystem->expects($this->once())
+            ->method('create');
+        $this->file->expects($this->once())->method('isExists')->with($this->path . '/backups')->willReturn(false);
+        $this->file->expects($this->once())->method('createDirectory')->with($this->path . '/backups', 0777);
+        $this->model->codeBackup(time());
+    }
+
+    /**
+     * @expectedException \Magento\Framework\Exception\LocalizedException
+     * @expectedExceptionMessage This backup type \'txt\' is not supported.
+     */
+    public function testCodeBackupWithInvalidType()
+    {
+        $this->model->codeBackup(time(), 'txt');
+    }
+
+    public function testCodeRollback()
+    {
+        $this->filesystem->expects($this->once())->method('rollback');
+        $this->setupCodeBackupRollback();
+        $this->file->expects($this->once())
+            ->method('isExists')
+            ->with($this->path . '/backups/12345_filesystem_code.tgz')
+            ->willReturn(true);
+        $this->model->codeRollback('12345_filesystem_code.tgz');
+    }
+
+    /**
+     * @expectedException \Magento\Framework\Exception\LocalizedException
+     * @expectedExceptionMessage The rollback file does not exist.
+     */
+    public function testCodeRollbackWithInvalidFilePath()
+    {
+        $this->file->expects($this->once())
+            ->method('isExists')
+            ->willReturn(false);
+        $this->model->codeRollback('12345_filesystem_code.tgz');
+    }
+
+    /**
+     * @expectedException \Magento\Framework\Exception\LocalizedException
+     * @expectedExceptionMessage Invalid rollback file.
+     */
+    public function testCodeRollbackWithInvalidFileType()
+    {
+        $this->model->codeRollback('RollbackFile_A.txt');
+    }
+
+    public function testMediaBackup()
+    {
+        $this->setupCodeBackupRollback();
+        $this->filesystem->expects($this->once())
+            ->method('create');
+        $this->file->expects($this->once())->method('isExists')->with($this->path . '/backups')->willReturn(false);
+        $this->file->expects($this->once())->method('createDirectory')->with($this->path . '/backups', 0777);
+        $this->model->codeBackup(time(), Factory::TYPE_MEDIA);
+    }
+
+    public function testMediaRollback()
+    {
+        $this->filesystem->expects($this->once())->method('rollback');
+        $this->setupCodeBackupRollback();
+        $this->file->expects($this->once())
+            ->method('isExists')
+            ->with($this->path . '/backups/12345_filesystem_media.tgz')
+            ->willReturn(true);
+        $this->model->codeRollback('12345_filesystem_media.tgz', Factory::TYPE_MEDIA);
+    }
+
+    public function testDbBackup()
+    {
+        $this->setupDbBackupRollback();
+        $this->database->expects($this->once())->method('create');
+        $this->file->expects($this->once())->method('isExists')->willReturn(false);
+        $this->file->expects($this->once())->method('createDirectory');
+        $this->model->dbBackup(time());
+    }
+
+    public function testDbRollback()
+    {
+        $this->setupDbBackupRollback();
+        $this->database->expects($this->once())->method('rollback');
+        $this->file->expects($this->once())
+            ->method('isExists')
+            ->with($this->path . '/backups/12345_db.gz')
+            ->willReturn(true);
+        $this->model->dbRollback('12345_db.gz');
+    }
+
+    private function setupCodeBackupRollback()
+    {
+        $this->filesystem->expects($this->once())
+            ->method('addIgnorePaths');
+        $this->filesystem->expects($this->once())
+            ->method('setBackupsDir');
+        $this->filesystem->expects($this->once())
+            ->method('setBackupExtension');
+        $this->filesystem->expects($this->once())
+            ->method('setTime');
+        $this->filesystem->expects($this->once())
+            ->method('getBackupFilename')
+            ->willReturn('RollbackFile_A.tgz');
+        $this->filesystem->expects($this->once())
+            ->method('getBackupPath')
+            ->willReturn('pathToFile/12345_filesystem_code.tgz');
+        $this->log->expects($this->once())
+            ->method('logSuccess');
+    }
+
+    private function setupDbBackupRollback()
+    {
+        $this->database->expects($this->once())
+            ->method('setBackupsDir');
+        $this->database->expects($this->once())
+            ->method('setBackupExtension');
+        $this->database->expects($this->once())
+            ->method('setTime');
+        $this->database->expects($this->once())
+            ->method('getBackupFilename')
+            ->willReturn('RollbackFile_A.gz');
+        $this->database->expects($this->once())
+            ->method('getBackupPath')
+            ->willReturn('pathToFile/12345_db.tgz');
+        $this->log->expects($this->once())
+            ->method('logSuccess');
+    }
+}
diff --git a/setup/src/Magento/Setup/Test/Unit/Model/ConsoleLoggerTest.php b/lib/internal/Magento/Framework/Setup/Test/Unit/ConsoleLoggerTest.php
similarity index 93%
rename from setup/src/Magento/Setup/Test/Unit/Model/ConsoleLoggerTest.php
rename to lib/internal/Magento/Framework/Setup/Test/Unit/ConsoleLoggerTest.php
index af381ada33f4db5564b64cc1ad1cfe359c3a68ac..24f07ae459f9efac0dd9e50e47e5d27f0abbf2c1 100644
--- a/setup/src/Magento/Setup/Test/Unit/Model/ConsoleLoggerTest.php
+++ b/lib/internal/Magento/Framework/Setup/Test/Unit/ConsoleLoggerTest.php
@@ -4,9 +4,9 @@
  * See COPYING.txt for license details.
  */
 
-namespace Magento\Setup\Test\Unit\Model;
+namespace Magento\Framework\Setup\Test\Unit;
 
-use Magento\Setup\Model\ConsoleLogger;
+use Magento\Framework\Setup\ConsoleLogger;
 
 class ConsoleLoggerTest extends \PHPUnit_Framework_TestCase
 {
@@ -16,7 +16,7 @@ class ConsoleLoggerTest extends \PHPUnit_Framework_TestCase
     private $console;
 
     /**
-     * @var \PHPUnit_Framework_MockObject_MockObject |\Magento\Setup\Model\ConsoleLogger
+     * @var \PHPUnit_Framework_MockObject_MockObject|ConsoleLogger
      */
     private $consoleLoggerModel;
 
diff --git a/lib/internal/Magento/Framework/Setup/UninstallInterface.php b/lib/internal/Magento/Framework/Setup/UninstallInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..13a5aa9fd13ccdd80bb56dc3db30b2d486ee756f
--- /dev/null
+++ b/lib/internal/Magento/Framework/Setup/UninstallInterface.php
@@ -0,0 +1,21 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Framework\Setup;
+
+/**
+ * Interface for handling data removal during module uninstall
+ */
+interface UninstallInterface
+{
+    /**
+     * Invoked when remove-data flag is set during module uninstall.
+     *
+     * @param SchemaSetupInterface $setup
+     * @param ModuleContextInterface $context
+     * @return void
+     */
+    public function uninstall(SchemaSetupInterface $setup, ModuleContextInterface $context);
+}
diff --git a/lib/internal/Magento/Framework/Stdlib/Cookie/CookieMetadata.php b/lib/internal/Magento/Framework/Stdlib/Cookie/CookieMetadata.php
index 679225c25fd7aedd6186ef15eff1e25c9c6d58fe..d4f774fac7dd81a218e3c18deff52e9425478063 100644
--- a/lib/internal/Magento/Framework/Stdlib/Cookie/CookieMetadata.php
+++ b/lib/internal/Magento/Framework/Stdlib/Cookie/CookieMetadata.php
@@ -7,7 +7,7 @@ namespace Magento\Framework\Stdlib\Cookie;
 
 /**
  * Class CookieMetadata
- *
+ * @api
  */
 class CookieMetadata
 {
diff --git a/lib/internal/Magento/Framework/Stdlib/Cookie/CookieMetadataFactory.php b/lib/internal/Magento/Framework/Stdlib/Cookie/CookieMetadataFactory.php
index 4902a5934818f52422f4c00c0194d2dc1636bedc..ee8c517aa33d51a68aa7f26667eb87e9755162ff 100644
--- a/lib/internal/Magento/Framework/Stdlib/Cookie/CookieMetadataFactory.php
+++ b/lib/internal/Magento/Framework/Stdlib/Cookie/CookieMetadataFactory.php
@@ -10,6 +10,7 @@ use Magento\Framework\ObjectManagerInterface;
 
 /**
  * CookieMetadataFactory is used to construct SensitiveCookieMetadata and PublicCookieMetadata objects.
+ * @api
  */
 class CookieMetadataFactory
 {
diff --git a/lib/internal/Magento/Framework/Stdlib/Cookie/CookieReaderInterface.php b/lib/internal/Magento/Framework/Stdlib/Cookie/CookieReaderInterface.php
index d50828020e4d8904217e43a8af3563683b73bfe4..c828eee3718fcb5a2951e3de54a84fba09357e92 100644
--- a/lib/internal/Magento/Framework/Stdlib/Cookie/CookieReaderInterface.php
+++ b/lib/internal/Magento/Framework/Stdlib/Cookie/CookieReaderInterface.php
@@ -8,6 +8,7 @@ namespace Magento\Framework\Stdlib\Cookie;
 
 /**
  * CookieReaderInterface provides the ability to read cookies sent in a request.
+ * @api
  */
 interface CookieReaderInterface
 {
diff --git a/lib/internal/Magento/Framework/Stdlib/Cookie/CookieScopeInterface.php b/lib/internal/Magento/Framework/Stdlib/Cookie/CookieScopeInterface.php
index c448bc7bcef7c5f88bd31954c991395c78393696..43db7983eeed826da6748ed88bf1d6784fbe3376 100644
--- a/lib/internal/Magento/Framework/Stdlib/Cookie/CookieScopeInterface.php
+++ b/lib/internal/Magento/Framework/Stdlib/Cookie/CookieScopeInterface.php
@@ -7,6 +7,7 @@ namespace Magento\Framework\Stdlib\Cookie;
 
 /**
  * CookieScope is used to store default scope metadata.
+ * @api
  */
 interface CookieScopeInterface
 {
diff --git a/lib/internal/Magento/Framework/Stdlib/Cookie/PublicCookieMetadata.php b/lib/internal/Magento/Framework/Stdlib/Cookie/PublicCookieMetadata.php
index e92901f25b81a767ea1155e1c54a86d778a135e6..8db596ba3cbfb05f91ee9440354d184d305c28db 100644
--- a/lib/internal/Magento/Framework/Stdlib/Cookie/PublicCookieMetadata.php
+++ b/lib/internal/Magento/Framework/Stdlib/Cookie/PublicCookieMetadata.php
@@ -41,6 +41,7 @@ class PublicCookieMetadata extends CookieMetadata
      * The cookie duration can be translated into an expiration date at the time the cookie is sent.
      *
      * @return int|null Time in seconds.
+     * @api
      */
     public function getDuration()
     {
@@ -52,6 +53,7 @@ class PublicCookieMetadata extends CookieMetadata
      *
      * @param bool $httpOnly
      * @return $this
+     * @api
      */
     public function setHttpOnly($httpOnly)
     {
@@ -63,6 +65,7 @@ class PublicCookieMetadata extends CookieMetadata
      *
      * @param bool $secure
      * @return $this
+     * @api
      */
     public function setSecure($secure)
     {
diff --git a/lib/internal/Magento/Framework/Stdlib/CookieManagerInterface.php b/lib/internal/Magento/Framework/Stdlib/CookieManagerInterface.php
index 1f7483b7439451664c6e78af4deacaa679396299..b976fa2d595f1f89ea76205cbe359652a51b189c 100644
--- a/lib/internal/Magento/Framework/Stdlib/CookieManagerInterface.php
+++ b/lib/internal/Magento/Framework/Stdlib/CookieManagerInterface.php
@@ -20,6 +20,7 @@ use Magento\Framework\Exception\InputException;
  * The cookie manager will make it possible for an application to indicate if a cookie contains sensitive data,
  * this will allow extra protection to be added to the contents of the cookie as well sending directives to the browser
  * about how the cookie should be stored and whether JavaScript can access the cookie.
+ * @api
  */
 interface CookieManagerInterface extends CookieReaderInterface
 {
diff --git a/lib/internal/Magento/Framework/Stdlib/DateTime.php b/lib/internal/Magento/Framework/Stdlib/DateTime.php
index 1de1a555645bd34e09bfe7bb793ca444089fa6ec..f589316e3efbdd382dab65aa926316d62e87d9c6 100644
--- a/lib/internal/Magento/Framework/Stdlib/DateTime.php
+++ b/lib/internal/Magento/Framework/Stdlib/DateTime.php
@@ -40,6 +40,7 @@ class DateTime
      * @param string|\DateTime|bool|null $date
      * @param boolean $includeTime
      * @return string|null
+     * @api
      */
     public function formatDate($date, $includeTime = true)
     {
diff --git a/lib/internal/Magento/Framework/Stdlib/DateTime/DateTime.php b/lib/internal/Magento/Framework/Stdlib/DateTime/DateTime.php
index dfc2d9b0e5d048f15b85b005b82ac90acd6c0fbf..eefc5291aeee7bdeb9e68d397d5f7fb40eadee7d 100644
--- a/lib/internal/Magento/Framework/Stdlib/DateTime/DateTime.php
+++ b/lib/internal/Magento/Framework/Stdlib/DateTime/DateTime.php
@@ -39,6 +39,7 @@ class DateTime
      *
      * @param  string|null $timezone
      * @return int offset between timezone and gmt
+     * @api
      */
     public function calculateOffset($timezone = null)
     {
@@ -86,6 +87,7 @@ class DateTime
      * @param  string $format
      * @param  int|string $input date in GMT timezone
      * @return string
+     * @api
      */
     public function date($format = null, $input = null)
     {
@@ -148,6 +150,7 @@ class DateTime
      *
      * @param  string $type
      * @return int
+     * @api
      */
     public function getGmtOffset($type = 'seconds')
     {
diff --git a/lib/internal/Magento/Framework/Stdlib/DateTime/TimezoneInterface.php b/lib/internal/Magento/Framework/Stdlib/DateTime/TimezoneInterface.php
index 75c865b542a0ab78a4d77870f7de12308b2bdec8..bbfc9116f250d2b896e6fc14edba869b08fbdbd7 100644
--- a/lib/internal/Magento/Framework/Stdlib/DateTime/TimezoneInterface.php
+++ b/lib/internal/Magento/Framework/Stdlib/DateTime/TimezoneInterface.php
@@ -8,6 +8,9 @@
 
 namespace Magento\Framework\Stdlib\DateTime;
 
+/**
+ * @api
+ */
 interface TimezoneInterface
 {
     /**
diff --git a/lib/internal/Magento/Framework/Validator/AbstractValidator.php b/lib/internal/Magento/Framework/Validator/AbstractValidator.php
index 581b0b829a19708f5bd69f282d38e0140ca1e294..277fc2c089fb7cead3ac2c13b5426dd7d7eaab7d 100644
--- a/lib/internal/Magento/Framework/Validator/AbstractValidator.php
+++ b/lib/internal/Magento/Framework/Validator/AbstractValidator.php
@@ -31,6 +31,7 @@ abstract class AbstractValidator implements \Magento\Framework\Validator\Validat
      *
      * @param \Magento\Framework\Translate\AdapterInterface|null $translator
      * @return void
+     * @api
      */
     public static function setDefaultTranslator(\Magento\Framework\Translate\AdapterInterface $translator = null)
     {
@@ -41,6 +42,7 @@ abstract class AbstractValidator implements \Magento\Framework\Validator\Validat
      * Get default translator
      *
      * @return \Magento\Framework\Translate\AdapterInterface|null
+     * @api
      */
     public static function getDefaultTranslator()
     {
@@ -86,6 +88,7 @@ abstract class AbstractValidator implements \Magento\Framework\Validator\Validat
      * Get validation failure messages
      *
      * @return string[]
+     * @api
      */
     public function getMessages()
     {
@@ -96,6 +99,7 @@ abstract class AbstractValidator implements \Magento\Framework\Validator\Validat
      * Whether it has failure messages
      *
      * @return bool
+     * @api
      */
     public function hasMessages()
     {
diff --git a/lib/internal/Magento/Framework/Validator/Constraint.php b/lib/internal/Magento/Framework/Validator/Constraint.php
index 49805ac1226bf53db751331ad3615afaec22a8df..53eee6b8972ccc917d7741c16713de6292504a2c 100644
--- a/lib/internal/Magento/Framework/Validator/Constraint.php
+++ b/lib/internal/Magento/Framework/Validator/Constraint.php
@@ -40,6 +40,7 @@ class Constraint extends \Magento\Framework\Validator\AbstractValidator
      *
      * @param mixed $value
      * @return boolean
+     * @api
      */
     public function isValid($value)
     {
@@ -72,6 +73,7 @@ class Constraint extends \Magento\Framework\Validator\AbstractValidator
      * Get constraint alias
      *
      * @return string
+     * @api
      */
     public function getAlias()
     {
diff --git a/lib/internal/Magento/Framework/Validator/ConstraintFactory.php b/lib/internal/Magento/Framework/Validator/ConstraintFactory.php
index afd466ddb153c76bb6ae741f854085078d8ec54a..453f734b1a6b445152810c03779e72bd01a88523 100644
--- a/lib/internal/Magento/Framework/Validator/ConstraintFactory.php
+++ b/lib/internal/Magento/Framework/Validator/ConstraintFactory.php
@@ -44,6 +44,7 @@ class ConstraintFactory
      *
      * @param array $data
      * @return \Magento\Framework\Validator\Constraint
+     * @api
      */
     public function create(array $data = [])
     {
diff --git a/lib/internal/Magento/Framework/Validator/Currency.php b/lib/internal/Magento/Framework/Validator/Currency.php
index 7f08b17170bdc31af8a84bf6c7396f50b97e5a3c..f6ed876d0c7fb7cb400d3e4ca025dc3573f478f7 100644
--- a/lib/internal/Magento/Framework/Validator/Currency.php
+++ b/lib/internal/Magento/Framework/Validator/Currency.php
@@ -33,6 +33,7 @@ class Currency
      *
      * @param string $currencyCode
      * @return bool
+     * @api
      */
     public function isValid($currencyCode)
     {
diff --git a/lib/internal/Magento/Framework/Validator/Entity/Properties.php b/lib/internal/Magento/Framework/Validator/Entity/Properties.php
index 59e0044b56b2910df880a6bbf893154387dd2994..0da6192342713e7760d4e4070ba0cb8ddf02fd78 100644
--- a/lib/internal/Magento/Framework/Validator/Entity/Properties.php
+++ b/lib/internal/Magento/Framework/Validator/Entity/Properties.php
@@ -36,6 +36,7 @@ class Properties extends \Magento\Framework\Validator\AbstractValidator
      * @param AbstractModel $value
      * @return bool
      * @throws \InvalidArgumentException when $value is not instanceof \Magento\Framework\Object
+     * @api
      */
     public function isValid($value)
     {
diff --git a/lib/internal/Magento/Framework/Validator/Object.php b/lib/internal/Magento/Framework/Validator/Object.php
index 8fff8b98277f9f44d90ece4d666ad0ef29e75f57..9593d6a29362c2ff20af70502db03a853ef619b5 100644
--- a/lib/internal/Magento/Framework/Validator/Object.php
+++ b/lib/internal/Magento/Framework/Validator/Object.php
@@ -32,6 +32,7 @@ class Object implements \Zend_Validate_Interface
      * @param \Zend_Validate_Interface $validator
      * @param string $fieldName Field name to apply validation to, or empty value to validate entity as a whole
      * @return \Magento\Framework\Validator\Object
+     * @api
      */
     public function addRule(\Zend_Validate_Interface $validator, $fieldName = '')
     {
@@ -56,6 +57,7 @@ class Object implements \Zend_Validate_Interface
      * @return bool
      *
      * @throws \Exception
+     * @api
      */
     public function isValid($entity)
     {
diff --git a/lib/internal/Magento/Framework/Validator/Timezone.php b/lib/internal/Magento/Framework/Validator/Timezone.php
index 33094ab747bdb48f29b17007c6634b29e4f1e209..2d2c23502d5fe419c3d36676b019b0574d4cc1cb 100644
--- a/lib/internal/Magento/Framework/Validator/Timezone.php
+++ b/lib/internal/Magento/Framework/Validator/Timezone.php
@@ -33,6 +33,7 @@ class Timezone
      *
      * @param string $timezoneCode
      * @return bool
+     * @api
      */
     public function isValid($timezoneCode)
     {
diff --git a/lib/internal/Magento/Framework/Validator/ValidatorInterface.php b/lib/internal/Magento/Framework/Validator/ValidatorInterface.php
index df40388f2bc806fbfe64cba2469d46c683769196..d3af9ccfe5cac7c6911f046e4756389da86c7ce4 100644
--- a/lib/internal/Magento/Framework/Validator/ValidatorInterface.php
+++ b/lib/internal/Magento/Framework/Validator/ValidatorInterface.php
@@ -7,6 +7,9 @@
  */
 namespace Magento\Framework\Validator;
 
+/**
+ * @api
+ */
 interface ValidatorInterface extends \Zend_Validate_Interface
 {
     /**
diff --git a/setup/src/Magento/Setup/Console/Command/AbstractModuleCommand.php b/setup/src/Magento/Setup/Console/Command/AbstractModuleCommand.php
index b6e38f7ec2b7530a0fe1e4d0741d8b08a6ca4c7b..dd75e0392ebaafa4f6e17966895cc7b7e85fc56c 100644
--- a/setup/src/Magento/Setup/Console/Command/AbstractModuleCommand.php
+++ b/setup/src/Magento/Setup/Console/Command/AbstractModuleCommand.php
@@ -5,6 +5,7 @@
  */
 namespace Magento\Setup\Console\Command;
 
+use Magento\Framework\ObjectManagerInterface;
 use Magento\Setup\Model\ObjectManagerProvider;
 use Symfony\Component\Console\Input\InputArgument;
 use Symfony\Component\Console\Input\InputInterface;
@@ -20,16 +21,14 @@ abstract class AbstractModuleCommand extends AbstractSetupCommand
      * Names of input arguments or options
      */
     const INPUT_KEY_MODULES = 'module';
-    const INPUT_KEY_ALL = 'all';
-    const INPUT_KEY_FORCE = 'force';
     const INPUT_KEY_CLEAR_STATIC_CONTENT = 'clear-static-content';
 
     /**
-     * Object manager provider
+     * Object manager
      *
-     * @var ObjectManagerProvider
+     * @var ObjectManagerInterface
      */
-    private $objectManagerProvider;
+    protected $objectManager;
 
     /**
      * Inject dependencies
@@ -38,7 +37,7 @@ abstract class AbstractModuleCommand extends AbstractSetupCommand
      */
     public function __construct(ObjectManagerProvider $objectManagerProvider)
     {
-        $this->objectManagerProvider = $objectManagerProvider;
+        $this->objectManager = $objectManagerProvider->get();
         parent::__construct();
     }
 
@@ -47,122 +46,27 @@ abstract class AbstractModuleCommand extends AbstractSetupCommand
      */
     protected function configure()
     {
-        $this->setDefinition([
-                new InputArgument(
-                    self::INPUT_KEY_MODULES,
-                    InputArgument::IS_ARRAY | InputArgument::OPTIONAL,
-                    'Name of the module'
-                ),
-                new InputOption(
-                    self::INPUT_KEY_CLEAR_STATIC_CONTENT,
-                    'c',
-                    InputOption::VALUE_NONE,
-                    'Clear generated static view files. Necessary, if the module(s) have static view files'
-                ),
-                new InputOption(
-                    self::INPUT_KEY_FORCE,
-                    'f',
-                    InputOption::VALUE_NONE,
-                    'Bypass dependencies check'
-                ),
-                new InputOption(
-                    self::INPUT_KEY_ALL,
-                    null,
-                    InputOption::VALUE_NONE,
-                    ($this->isEnable() ? 'Enable' : 'Disable') . ' all modules'
-                ),
-            ]);
-        parent::configure();
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    protected function execute(InputInterface $input, OutputInterface $output)
-    {
-        $isEnable = $this->isEnable();
-        if ($input->getOption(self::INPUT_KEY_ALL)) {
-            /** @var \Magento\Framework\Module\FullModuleList $fullModulesList */
-            $fullModulesList = $this->objectManagerProvider->get()->get('Magento\Framework\Module\FullModuleList');
-            $modules = $fullModulesList->getNames();
-        } else {
-            $modules = $input->getArgument(self::INPUT_KEY_MODULES);
-        }
-        $messages = $this->validate($modules);
-        if (!empty($messages)) {
-            $output->writeln(implode(PHP_EOL, $messages));
-            return;
-        }
-        /**
-         * @var \Magento\Framework\Module\Status $status
-         */
-        $status = $this->objectManagerProvider->get()->get('Magento\Framework\Module\Status');
-        try {
-            $modulesToChange = $status->getModulesToChange($isEnable, $modules);
-        } catch (\LogicException $e) {
-            $output->writeln('<error>' . $e->getMessage() . '</error>');
-            return;
-        }
-        if (!empty($modulesToChange)) {
-            $force = $input->getOption(self::INPUT_KEY_FORCE);
-            if (!$force) {
-                $constraints = $status->checkConstraints($isEnable, $modulesToChange);
-                if ($constraints) {
-                    $output->writeln(
-                        "<error>Unable to change status of modules because of the following constraints:</error>"
-                    );
-                    $output->writeln('<error>' . implode("\n", $constraints) . '</error>');
-                    return;
-                }
-            }
-            $status->setIsEnabled($isEnable, $modulesToChange);
-            if ($isEnable) {
-                $output->writeln('<info>The following modules have been enabled:</info>');
-                $output->writeln('<info>- ' . implode("\n- ", $modulesToChange) . '</info>');
-                $output->writeln('');
-                $output->writeln(
-                    '<info>To make sure the modules are properly enabled,'
-                    . " run 'setup:upgrade'.</info>"
-                );
-            } else {
-                $output->writeln('<info>The following modules have been disabled:</info>');
-                $output->writeln('<info>- ' . implode("\n- ", $modulesToChange) . '</info>');
-                $output->writeln('');
-            }
-            $this->cleanup($input, $output);
-            if ($force) {
-                $output->writeln(
-                    '<error>Alert: You used the --force option.'
-                    . ' As a result, modules might not function properly.</error>'
-                );
-            }
-        } else {
-            $output->writeln('<info>No modules were changed.</info>');
-        }
-    }
+        $this->addArgument(
+            self::INPUT_KEY_MODULES,
+            InputArgument::IS_ARRAY | ($this->isModuleRequired() ? InputArgument::REQUIRED : InputArgument::OPTIONAL),
+            'Name of the module'
+        );
+        $this->addOption(
+            self::INPUT_KEY_CLEAR_STATIC_CONTENT,
+            'c',
+            InputOption::VALUE_NONE,
+            'Clear generated static view files. Necessary, if the module(s) have static view files'
+        );
 
-    /**
-     * Validate list of modules and return error messages
-     *
-     * @param string[] $modules
-     * @return string[]
-     */
-    protected function validate(array $modules)
-    {
-        $messages = [];
-        if (empty($modules)) {
-            $messages[] = '<error>No modules specified. Specify a space-separated list of modules' .
-                ' or use the --all option</error>';
-        }
-        return $messages;
+        parent::configure();
     }
 
     /**
-     * Is it "enable" or "disable" command
+     * Returns if module argument is required
      *
      * @return bool
      */
-    abstract protected function isEnable();
+    abstract protected function isModuleRequired();
 
     /**
      * Cleanup after updated modules status
@@ -171,15 +75,14 @@ abstract class AbstractModuleCommand extends AbstractSetupCommand
      * @param OutputInterface $output
      * @return void
      */
-    private function cleanup(InputInterface $input, OutputInterface $output)
+    protected function cleanup(InputInterface $input, OutputInterface $output)
     {
-        $objectManager = $this->objectManagerProvider->get();
         /** @var \Magento\Framework\App\Cache $cache */
-        $cache = $objectManager->get('Magento\Framework\App\Cache');
+        $cache = $this->objectManager->get('Magento\Framework\App\Cache');
         $cache->clean();
         $output->writeln('<info>Cache cleared successfully.</info>');
         /** @var \Magento\Framework\App\State\CleanupFiles $cleanupFiles */
-        $cleanupFiles = $objectManager->get('Magento\Framework\App\State\CleanupFiles');
+        $cleanupFiles = $this->objectManager->get('Magento\Framework\App\State\CleanupFiles');
         $cleanupFiles->clearCodeGeneratedClasses();
         $output->writeln('<info>Generated classes cleared successfully.</info>');
         if ($input->getOption(self::INPUT_KEY_CLEAR_STATIC_CONTENT)) {
diff --git a/setup/src/Magento/Setup/Console/Command/AbstractModuleManageCommand.php b/setup/src/Magento/Setup/Console/Command/AbstractModuleManageCommand.php
new file mode 100644
index 0000000000000000000000000000000000000000..644ee7dbcfa7b8d2bc0b1a420bd0fa5683d994d3
--- /dev/null
+++ b/setup/src/Magento/Setup/Console/Command/AbstractModuleManageCommand.php
@@ -0,0 +1,137 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Setup\Console\Command;
+
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Input\InputOption;
+use Symfony\Component\Console\Output\OutputInterface;
+
+abstract class AbstractModuleManageCommand extends AbstractModuleCommand
+{
+    /**
+     * Names of input arguments or options
+     */
+    const INPUT_KEY_ALL = 'all';
+    const INPUT_KEY_FORCE = 'force';
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function configure()
+    {
+        $this->addOption(
+            self::INPUT_KEY_FORCE,
+            'f',
+            InputOption::VALUE_NONE,
+            'Bypass dependencies check'
+        );
+        $this->addOption(
+            self::INPUT_KEY_ALL,
+            null,
+            InputOption::VALUE_NONE,
+            ($this->isEnable() ? 'Enable' : 'Disable') . ' all modules'
+        );
+
+        parent::configure();
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function isModuleRequired()
+    {
+        return false;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function execute(InputInterface $input, OutputInterface $output)
+    {
+        $isEnable = $this->isEnable();
+        if ($input->getOption(self::INPUT_KEY_ALL)) {
+            /** @var \Magento\Framework\Module\FullModuleList $fullModulesList */
+            $fullModulesList = $this->objectManager->get('Magento\Framework\Module\FullModuleList');
+            $modules = $fullModulesList->getNames();
+        } else {
+            $modules = $input->getArgument(self::INPUT_KEY_MODULES);
+        }
+        $messages = $this->validate($modules);
+        if (!empty($messages)) {
+            $output->writeln(implode(PHP_EOL, $messages));
+            return;
+        }
+        /**
+         * @var \Magento\Framework\Module\Status $status
+         */
+        $status = $this->objectManager->get('Magento\Framework\Module\Status');
+        try {
+            $modulesToChange = $status->getModulesToChange($isEnable, $modules);
+        } catch (\LogicException $e) {
+            $output->writeln('<error>' . $e->getMessage() . '</error>');
+            return;
+        }
+        if (!empty($modulesToChange)) {
+            $force = $input->getOption(self::INPUT_KEY_FORCE);
+            if (!$force) {
+                $constraints = $status->checkConstraints($isEnable, $modulesToChange);
+                if ($constraints) {
+                    $output->writeln(
+                        "<error>Unable to change status of modules because of the following constraints:</error>"
+                    );
+                    $output->writeln('<error>' . implode("\n", $constraints) . '</error>');
+                    return;
+                }
+            }
+            $status->setIsEnabled($isEnable, $modulesToChange);
+            if ($isEnable) {
+                $output->writeln('<info>The following modules have been enabled:</info>');
+                $output->writeln('<info>- ' . implode("\n- ", $modulesToChange) . '</info>');
+                $output->writeln('');
+                $output->writeln(
+                    '<info>To make sure that the enabled modules are properly registered,'
+                    . " run 'setup:upgrade'.</info>"
+                );
+            } else {
+                $output->writeln('<info>The following modules have been disabled:</info>');
+                $output->writeln('<info>- ' . implode("\n- ", $modulesToChange) . '</info>');
+                $output->writeln('');
+            }
+            $this->cleanup($input, $output);
+            if ($force) {
+                $output->writeln(
+                    '<error>Alert: You used the --force option.'
+                    . ' As a result, modules might not function properly.</error>'
+                );
+            }
+        } else {
+            $output->writeln('<info>No modules were changed.</info>');
+        }
+    }
+
+    /**
+     * Validate list of modules and return error messages
+     *
+     * @param string[] $modules
+     * @return string[]
+     */
+    protected function validate(array $modules)
+    {
+        $messages = [];
+        if (empty($modules)) {
+            $messages[] = '<error>No modules specified. Specify a space-separated list of modules' .
+                ' or use the --all option</error>';
+        }
+        return $messages;
+    }
+
+    /**
+     * Is it "enable" or "disable" command
+     *
+     * @return bool
+     */
+    abstract protected function isEnable();
+}
diff --git a/setup/src/Magento/Setup/Console/Command/AdminUserCreateCommand.php b/setup/src/Magento/Setup/Console/Command/AdminUserCreateCommand.php
index 78b1b41a711041712ee53c04630380a1af86d114..f432cc52d1bfa56fd488c7157bd823de1f69b146 100644
--- a/setup/src/Magento/Setup/Console/Command/AdminUserCreateCommand.php
+++ b/setup/src/Magento/Setup/Console/Command/AdminUserCreateCommand.php
@@ -7,7 +7,7 @@
 namespace Magento\Setup\Console\Command;
 
 use Magento\Setup\Model\AdminAccount;
-use Magento\Setup\Model\ConsoleLogger;
+use Magento\Framework\Setup\ConsoleLogger;
 use Magento\Setup\Model\InstallerFactory;
 use Magento\User\Model\UserValidationRules;
 use Symfony\Component\Console\Input\InputOption;
diff --git a/setup/src/Magento/Setup/Console/Command/BackupCommand.php b/setup/src/Magento/Setup/Console/Command/BackupCommand.php
new file mode 100644
index 0000000000000000000000000000000000000000..e9e6e16fdf5b425b12b6acdea5278fa0aa71377a
--- /dev/null
+++ b/setup/src/Magento/Setup/Console/Command/BackupCommand.php
@@ -0,0 +1,150 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Setup\Console\Command;
+
+use Magento\Framework\App\DeploymentConfig;
+use Magento\Framework\App\MaintenanceMode;
+use Magento\Framework\Backup\Factory;
+use Magento\Framework\ObjectManagerInterface;
+use Magento\Framework\Setup\BackupRollbackFactory;
+use Magento\Setup\Model\ObjectManagerProvider;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Input\InputOption;
+use Symfony\Component\Console\Output\OutputInterface;
+
+/**
+ * Command to backup code base and user data
+ *
+ * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
+ */
+class BackupCommand extends AbstractSetupCommand
+{
+    /**
+     * Name of input options
+     */
+    const INPUT_KEY_CODE = 'code';
+    const INPUT_KEY_MEDIA = 'media';
+    const INPUT_KEY_DB = 'db';
+
+    /**
+     * Object Manager
+     *
+     * @var ObjectManagerInterface
+     */
+    private $objectManager;
+
+    /**
+     * Handler for maintenance mode
+     *
+     * @var MaintenanceMode
+     */
+    private $maintenanceMode;
+
+    /**
+     * Factory for BackupRollback
+     *
+     * @var BackupRollbackFactory
+     */
+    private $backupRollbackFactory;
+
+    /**
+     * Existing deployment config
+     *
+     * @var DeploymentConfig
+     */
+    private $deploymentConfig;
+
+    /**
+     * Constructor
+     *
+     * @param ObjectManagerProvider $objectManagerProvider
+     * @param MaintenanceMode $maintenanceMode
+     * @param DeploymentConfig $deploymentConfig
+     */
+    public function __construct(
+        ObjectManagerProvider $objectManagerProvider,
+        MaintenanceMode $maintenanceMode,
+        DeploymentConfig $deploymentConfig
+    ) {
+        $this->objectManager = $objectManagerProvider->get();
+        $this->maintenanceMode = $maintenanceMode;
+        $this->backupRollbackFactory = $this->objectManager->get('Magento\Framework\Setup\BackupRollbackFactory');
+        $this->deploymentConfig = $deploymentConfig;
+        parent::__construct();
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function configure()
+    {
+        $options = [
+            new InputOption(
+                self::INPUT_KEY_CODE,
+                null,
+                InputOption::VALUE_NONE,
+                'Take code and configuration files backup (excluding temporary files)'
+            ),
+            new InputOption(
+                self::INPUT_KEY_MEDIA,
+                null,
+                InputOption::VALUE_NONE,
+                'Take media backup'
+            ),
+            new InputOption(
+                self::INPUT_KEY_DB,
+                null,
+                InputOption::VALUE_NONE,
+                'Take complete database backup'
+            ),
+        ];
+        $this->setName('setup:backup')
+            ->setDescription('Takes backup of Magento Application code base, media and database')
+            ->setDefinition($options);
+        parent::configure();
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function execute(InputInterface $input, OutputInterface $output)
+    {
+        if (!$this->deploymentConfig->isAvailable()
+            && ($input->getOption(self::INPUT_KEY_MEDIA) || $input->getOption(self::INPUT_KEY_DB))) {
+            $output->writeln("<info>No information is available: the Magento application is not installed.</info>");
+            return;
+        }
+        try {
+            $inputOptionProvided = false;
+            $output->writeln('<info>Enabling maintenance mode</info>');
+            $this->maintenanceMode->set(true);
+            $time = time();
+            $backupHandler = $this->backupRollbackFactory->create($output);
+            if ($input->getOption(self::INPUT_KEY_CODE)) {
+                $backupHandler->codeBackup($time);
+                $inputOptionProvided = true;
+            }
+            if ($input->getOption(self::INPUT_KEY_MEDIA)) {
+                $backupHandler->codeBackup($time, Factory::TYPE_MEDIA);
+                $inputOptionProvided = true;
+            }
+            if ($input->getOption(self::INPUT_KEY_DB)) {
+                $backupHandler->dbBackup($time);
+                $inputOptionProvided = true;
+            }
+            if (!$inputOptionProvided) {
+                throw new \InvalidArgumentException(
+                    'Not enough information provided to take backup.'
+                );
+            }
+        } catch (\Exception $e) {
+            $output->writeln('<error>' . $e->getMessage() . '</error>');
+        } finally {
+            $output->writeln('<info>Disabling maintenance mode</info>');
+            $this->maintenanceMode->set(false);
+        }
+    }
+}
diff --git a/setup/src/Magento/Setup/Console/Command/DbDataUpgradeCommand.php b/setup/src/Magento/Setup/Console/Command/DbDataUpgradeCommand.php
index 258646ca9da717a080935e4cc93eee7faa1af7b0..c541e2f820f887b41dd8e4e3be06789a11506a46 100644
--- a/setup/src/Magento/Setup/Console/Command/DbDataUpgradeCommand.php
+++ b/setup/src/Magento/Setup/Console/Command/DbDataUpgradeCommand.php
@@ -8,7 +8,7 @@ namespace Magento\Setup\Console\Command;
 
 use Magento\Framework\App\DeploymentConfig;
 use Magento\Setup\Model\InstallerFactory;
-use Magento\Setup\Model\ConsoleLogger;
+use Magento\Framework\Setup\ConsoleLogger;
 use Symfony\Component\Console\Input\InputInterface;
 use Symfony\Component\Console\Output\OutputInterface;
 
diff --git a/setup/src/Magento/Setup/Console/Command/DbSchemaUpgradeCommand.php b/setup/src/Magento/Setup/Console/Command/DbSchemaUpgradeCommand.php
index 5dc06e06300ba9108714001312fe537c6186dce6..96eda1b9b281c020d9f33d5f31ea76669734b6b1 100644
--- a/setup/src/Magento/Setup/Console/Command/DbSchemaUpgradeCommand.php
+++ b/setup/src/Magento/Setup/Console/Command/DbSchemaUpgradeCommand.php
@@ -8,7 +8,7 @@ namespace Magento\Setup\Console\Command;
 
 use Magento\Framework\App\DeploymentConfig;
 use Magento\Setup\Model\InstallerFactory;
-use Magento\Setup\Model\ConsoleLogger;
+use Magento\Framework\Setup\ConsoleLogger;
 use Symfony\Component\Console\Input\InputInterface;
 use Symfony\Component\Console\Output\OutputInterface;
 
diff --git a/setup/src/Magento/Setup/Console/Command/InfoBackupsListCommand.php b/setup/src/Magento/Setup/Console/Command/InfoBackupsListCommand.php
new file mode 100644
index 0000000000000000000000000000000000000000..6d3bf3b54536dd820db8816d0ea003e580df7ac1
--- /dev/null
+++ b/setup/src/Magento/Setup/Console/Command/InfoBackupsListCommand.php
@@ -0,0 +1,105 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\Setup\Console\Command;
+
+use Magento\Framework\App\Filesystem\DirectoryList;
+use Magento\Framework\Backup\Factory;
+use Magento\Framework\Filesystem\Driver\File;
+use Magento\Framework\Setup\BackupRollback;
+use Symfony\Component\Console\Command\Command;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+
+/**
+ * Command prints list of available backup files
+ */
+class InfoBackupsListCommand extends Command
+{
+    /**
+     * File
+     *
+     * @var File
+     */
+    private $file;
+
+    /**
+     * Filesystem Directory List
+     *
+     * @var DirectoryList
+     */
+    private $directoryList;
+
+    /**
+     * @param DirectoryList $directoryList
+     * @param File $file
+     */
+    public function __construct(
+        DirectoryList $directoryList,
+        File $file
+    ) {
+        $this->directoryList = $directoryList;
+        $this->file = $file;
+        parent::__construct();
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function configure()
+    {
+        $this->setName('info:backups:list')
+            ->setDescription('Prints list of available backup files');
+
+        parent::configure();
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function execute(InputInterface $input, OutputInterface $output)
+    {
+        $backupsDir = $this->directoryList->getPath(DirectoryList::VAR_DIR)
+            . '/' . BackupRollback::DEFAULT_BACKUP_DIRECTORY;
+        if ($this->file->isExists($backupsDir)) {
+            $contents = $this->file->readDirectoryRecursively($backupsDir);
+            $tempTable = [];
+            foreach ($contents as $path) {
+                $partsOfPath = explode('/', str_replace('\\', '/', $path));
+                $fileName = $partsOfPath[count($partsOfPath) - 1];
+                // if filename starts with '.' skip, e.g. '.git'
+                if (!(strpos($fileName, '.') === 0)) {
+                    $filenameWithoutExtension = explode('.', $fileName);
+                    // actually first part of $filenameWithoutExtension contains only the filename without extension
+                    // and filename contains the type of backup separated by '_'
+                    $fileNameParts = explode('_', $filenameWithoutExtension[0]);
+                    if (in_array(Factory::TYPE_MEDIA, $fileNameParts)) {
+                        $tempTable[$fileName] = Factory::TYPE_MEDIA;
+                    } elseif (in_array(Factory::TYPE_DB, $fileNameParts)) {
+                        $tempTable[$fileName] = Factory::TYPE_DB;
+                    } elseif (in_array('code', $fileNameParts)) {
+                        $tempTable[$fileName] = 'code';
+                    }
+                }
+            }
+            if (empty($tempTable)) {
+                $output->writeln('<info>No backup files found.</info>');
+                return;
+            }
+            $output->writeln("<info>Showing backup files in $backupsDir.</info>");
+            /** @var \Symfony\Component\Console\Helper\Table $table */
+            $table = $this->getHelperSet()->get('table');
+            $table->setHeaders(['Backup Filename', 'Backup Type']);
+            asort($tempTable);
+            foreach ($tempTable as $key => $value) {
+                $table->addRow([$key, $value]);
+            }
+            $table->render($output);
+        } else {
+            $output->writeln('<info>No backup files found.</info>');
+        }
+    }
+}
diff --git a/setup/src/Magento/Setup/Console/Command/InstallCommand.php b/setup/src/Magento/Setup/Console/Command/InstallCommand.php
index f11f0ff3646bb5d4ffe5e7bb67c79fbd0d99dcbd..242da0bfb5760ff82032f1d4e317117bda014f1d 100644
--- a/setup/src/Magento/Setup/Console/Command/InstallCommand.php
+++ b/setup/src/Magento/Setup/Console/Command/InstallCommand.php
@@ -8,7 +8,7 @@ namespace Magento\Setup\Console\Command;
 use Symfony\Component\Console\Input\InputInterface;
 use Symfony\Component\Console\Output\OutputInterface;
 use Magento\Setup\Model\InstallerFactory;
-use Magento\Setup\Model\ConsoleLogger;
+use Magento\Framework\Setup\ConsoleLogger;
 use Symfony\Component\Console\Input\InputOption;
 use Magento\Setup\Model\ConfigModel;
 
diff --git a/setup/src/Magento/Setup/Console/Command/InstallStoreConfigurationCommand.php b/setup/src/Magento/Setup/Console/Command/InstallStoreConfigurationCommand.php
index 425ed23f6e1796be07cceeec64d7fe52fcefcc77..5eeae872008f86a29acaf448df70222e314ecd95 100644
--- a/setup/src/Magento/Setup/Console/Command/InstallStoreConfigurationCommand.php
+++ b/setup/src/Magento/Setup/Console/Command/InstallStoreConfigurationCommand.php
@@ -6,7 +6,7 @@
 
 namespace Magento\Setup\Console\Command;
 
-use Magento\Setup\Model\ConsoleLogger;
+use Magento\Framework\Setup\ConsoleLogger;
 use Magento\Framework\App\DeploymentConfig;
 use Magento\Setup\Model\InstallerFactory;
 use Symfony\Component\Console\Input\InputOption;
diff --git a/setup/src/Magento/Setup/Console/Command/ModuleDisableCommand.php b/setup/src/Magento/Setup/Console/Command/ModuleDisableCommand.php
index 4e12c46331fca12d966f9bc247b8e9fd4840d36f..f7faf45c778c4ab31fbcdce96bd3e5f47dfe2e12 100644
--- a/setup/src/Magento/Setup/Console/Command/ModuleDisableCommand.php
+++ b/setup/src/Magento/Setup/Console/Command/ModuleDisableCommand.php
@@ -8,7 +8,7 @@ namespace Magento\Setup\Console\Command;
 /**
  * Command for disabling list or all of modules
  */
-class ModuleDisableCommand extends AbstractModuleCommand
+class ModuleDisableCommand extends AbstractModuleManageCommand
 {
     /**
      * {@inheritdoc}
diff --git a/setup/src/Magento/Setup/Console/Command/ModuleEnableCommand.php b/setup/src/Magento/Setup/Console/Command/ModuleEnableCommand.php
index 0efc1d8928aafd83fe8950a28d8ccf9b1af41224..2428c14c4e5c001aa5f775ef0209e6fd5d3ca1d9 100644
--- a/setup/src/Magento/Setup/Console/Command/ModuleEnableCommand.php
+++ b/setup/src/Magento/Setup/Console/Command/ModuleEnableCommand.php
@@ -8,7 +8,7 @@ namespace Magento\Setup\Console\Command;
 /**
  * Command for enabling list or all of modules
  */
-class ModuleEnableCommand extends AbstractModuleCommand
+class ModuleEnableCommand extends AbstractModuleManageCommand
 {
     /**
      * {@inheritdoc}
diff --git a/setup/src/Magento/Setup/Console/Command/ModuleUninstallCommand.php b/setup/src/Magento/Setup/Console/Command/ModuleUninstallCommand.php
new file mode 100755
index 0000000000000000000000000000000000000000..edb336437224ac47a19e33279b6692b699e05f16
--- /dev/null
+++ b/setup/src/Magento/Setup/Console/Command/ModuleUninstallCommand.php
@@ -0,0 +1,448 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Setup\Console\Command;
+
+use Magento\Framework\App\DeploymentConfig;
+use Magento\Framework\App\MaintenanceMode;
+use Magento\Framework\Backup\Factory;
+use Magento\Framework\Composer\ComposerInformation;
+use Magento\Framework\Composer\Remove;
+use Magento\Framework\Config\ConfigOptionsListConstants;
+use Magento\Framework\Config\File\ConfigFilePool;
+use Magento\Framework\Module\DependencyChecker;
+use Magento\Framework\Module\ModuleList\Loader;
+use Magento\Framework\Module\FullModuleList;
+use Magento\Framework\Module\PackageInfo;
+use Magento\Framework\Module\Resource;
+use Magento\Framework\Setup\BackupRollbackFactory;
+use Magento\Setup\Model\ModuleContext;
+use Magento\Setup\Model\ObjectManagerProvider;
+use Magento\Setup\Model\UninstallCollector;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Input\InputOption;
+use Symfony\Component\Console\Output\OutputInterface;
+use Symfony\Component\Console\Question\ConfirmationQuestion;
+
+/**
+ * Command for uninstalling modules
+ *
+ * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
+ * @SuppressWarnings(PHPMD.ExcessiveParameterList)
+ */
+class ModuleUninstallCommand extends AbstractModuleCommand
+{
+    /**
+     * Names of input options
+     */
+    const INPUT_KEY_REMOVE_DATA = 'remove-data';
+    const INPUT_KEY_BACKUP_CODE = 'backup-code';
+    const INPUT_KEY_BACKUP_MEDIA = 'backup-media';
+    const INPUT_KEY_BACKUP_DB = 'backup-db';
+
+    /**
+     * Maintenance mode
+     *
+     * @var MaintenanceMode
+     */
+    private $maintenanceMode;
+
+    /**
+     * Deployment Configuration
+     *
+     * @var DeploymentConfig
+     */
+    private $deploymentConfig;
+
+    /**
+     * Full module list
+     *
+     * @var FullModuleList
+     */
+    private $fullModuleList;
+
+    /**
+     * Deployment Configuration writer
+     *
+     * @var DeploymentConfig\Writer
+     */
+    private $writer;
+
+    /**
+     * Module package info
+     *
+     * @var PackageInfo
+     */
+    private $packageInfo;
+
+    /**
+     * Uninstall classes collector
+     *
+     * @var UninstallCollector
+     */
+    private $collector;
+
+    /**
+     * Module Resource
+     *
+     * @var Resource
+     */
+    private $moduleResource;
+
+    /**
+     * Composer general dependency checker
+     *
+     * @var DependencyChecker
+     */
+    private $dependencyChecker;
+
+    /**
+     * Root composer.json information
+     *
+     * @var ComposerInformation
+     */
+    private $composer;
+
+    /**
+     * @var Loader
+     */
+    private $loader;
+
+    /**
+     * Code remover
+     *
+     * @var Remove
+     */
+    private $remove;
+
+    /**
+     * BackupRollback factory
+     *
+     * @var BackupRollbackFactory
+     */
+    private $backupRollbackFactory;
+
+    /**
+     * Constructor
+     *
+     * @param ComposerInformation $composer
+     * @param DeploymentConfig $deploymentConfig
+     * @param DeploymentConfig\Writer $writer
+     * @param FullModuleList $fullModuleList
+     * @param Loader $loader
+     * @param MaintenanceMode $maintenanceMode
+     * @param ObjectManagerProvider $objectManagerProvider
+     * @param Remove $remove
+     * @param UninstallCollector $collector
+     */
+    public function __construct(
+        ComposerInformation $composer,
+        DeploymentConfig $deploymentConfig,
+        DeploymentConfig\Writer $writer,
+        FullModuleList $fullModuleList,
+        Loader $loader,
+        MaintenanceMode $maintenanceMode,
+        ObjectManagerProvider $objectManagerProvider,
+        Remove $remove,
+        UninstallCollector $collector
+    ) {
+        parent::__construct($objectManagerProvider);
+        $this->composer = $composer;
+        $this->deploymentConfig = $deploymentConfig;
+        $this->writer = $writer;
+        $this->maintenanceMode = $maintenanceMode;
+        $this->fullModuleList = $fullModuleList;
+        $this->packageInfo = $this->objectManager->get('Magento\Framework\Module\PackageInfoFactory')->create();
+        $this->collector = $collector;
+        $this->moduleResource = $this->objectManager->get('Magento\Framework\Module\Resource');
+        $this->dependencyChecker = $this->objectManager->get('Magento\Framework\Module\DependencyChecker');
+        $this->loader = $loader;
+        $this->remove = $remove;
+        $this->backupRollbackFactory = $this->objectManager->get('Magento\Framework\Setup\BackupRollbackFactory');
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function configure()
+    {
+        $options = [
+            new InputOption(
+                self::INPUT_KEY_REMOVE_DATA,
+                'r',
+                InputOption::VALUE_NONE,
+                'Remove data installed by module(s)'
+            ),
+            new InputOption(
+                self::INPUT_KEY_BACKUP_CODE,
+                null,
+                InputOption::VALUE_NONE,
+                'Take code and configuration files backup (excluding temporary files)'
+            ),
+            new InputOption(
+                self::INPUT_KEY_BACKUP_MEDIA,
+                null,
+                InputOption::VALUE_NONE,
+                'Take media backup'
+            ),
+            new InputOption(
+                self::INPUT_KEY_BACKUP_DB,
+                null,
+                InputOption::VALUE_NONE,
+                'Take complete database backup'
+            ),
+        ];
+        $this->setName('module:uninstall')
+            ->setDescription('Uninstalls modules installed by composer')
+            ->setDefinition($options);
+        parent::configure();
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function isModuleRequired()
+    {
+        return true;
+    }
+
+    /**
+     * {@inheritdoc}
+     * @SuppressWarnings(PHPMD.CyclomaticComplexity)
+     */
+    protected function execute(InputInterface $input, OutputInterface $output)
+    {
+        if (!$this->deploymentConfig->isAvailable()) {
+            $output->writeln(
+                '<error>You cannot run this command because the Magento application is not installed.</error>'
+            );
+            return;
+        }
+
+        $modules = $input->getArgument(self::INPUT_KEY_MODULES);
+        // validate modules input
+        $messages = $this->validate($modules);
+        if (!empty($messages)) {
+            $output->writeln($messages);
+            return;
+        }
+
+        // check dependencies
+        $dependencyMessages = $this->checkDependencies($modules);
+        if (!empty($dependencyMessages)) {
+            $output->writeln($dependencyMessages);
+            return;
+        }
+
+        $helper = $this->getHelper('question');
+        $question = new ConfirmationQuestion(
+            'You are about to remove code and/or database tables. Are you sure?[y/N]',
+            false
+        );
+        if (!$helper->ask($input, $output, $question) && $input->isInteractive()) {
+            return;
+        }
+        try {
+            $output->writeln('<info>Enabling maintenance mode</info>');
+            $this->maintenanceMode->set(true);
+            $this->takeBackup($input, $output);
+            $dbBackupOption = $input->getOption(self::INPUT_KEY_BACKUP_DB);
+            if ($input->getOption(self::INPUT_KEY_REMOVE_DATA)) {
+                $this->removeData($modules, $output, $dbBackupOption);
+            } else {
+                if (!empty($this->collector->collectUninstall())) {
+                    $question = new ConfirmationQuestion(
+                        'You are about to remove a module(s) that might have database data. '
+                        . 'Do you want to remove the data from database?[y/N]',
+                        false
+                    );
+                    if ($helper->ask($input, $output, $question) || !$input->isInteractive()) {
+                        $this->removeData($modules, $output, $dbBackupOption);
+                    }
+                } else {
+                    $output->writeln(
+                        '<info>You are about to remove a module(s) that might have database data. '
+                        . 'Remove the database data manually after uninstalling, if desired.</info>'
+                    );
+                }
+            }
+            $output->writeln('<info>Removing ' . implode(', ', $modules) . ' from module registry in database</info>');
+            $this->removeModulesFromDb($modules);
+            $output->writeln(
+                '<info>Removing ' . implode(', ', $modules) .  ' from module list in deployment configuration</info>'
+            );
+            $this->removeModulesFromDeploymentConfig($modules);
+            $output->writeln('<info>Removing code from Magento codebase:</info>');
+            $this->removeCode($modules);
+            $this->cleanup($input, $output);
+            $output->writeln('<info>Disabling maintenance mode</info>');
+            $this->maintenanceMode->set(false);
+        } catch (\Exception $e) {
+            $output->writeln('<error>' . $e->getMessage() . '</error>');
+            $output->writeln('<error>Please disable maintenance mode after you resolved above issues</error>');
+        }
+    }
+
+    /**
+     * Check backup options and take backup appropriately
+     *
+     * @param InputInterface $input
+     * @param OutputInterface $output
+     * @return void
+     */
+    private function takeBackup(InputInterface $input, OutputInterface $output)
+    {
+        $time = time();
+        if ($input->getOption(self::INPUT_KEY_BACKUP_CODE)) {
+            $codeBackup = $this->backupRollbackFactory->create($output);
+            $codeBackup->codeBackup($time);
+        }
+        if ($input->getOption(self::INPUT_KEY_BACKUP_MEDIA)) {
+            $mediaBackup = $this->backupRollbackFactory->create($output);
+            $mediaBackup->codeBackup($time, Factory::TYPE_MEDIA);
+        }
+        if ($input->getOption(self::INPUT_KEY_BACKUP_DB)) {
+            $dbBackup = $this->backupRollbackFactory->create($output);
+            $dbBackup->dbBackup($time);
+        }
+    }
+
+    /**
+     * Invoke remove data routine in each specified module
+     *
+     * @param string[] $modules
+     * @param OutputInterface $output
+     * @param bool $dbBackupOption
+     * @return void
+     */
+    private function removeData(array $modules, OutputInterface $output, $dbBackupOption)
+    {
+        if (!$dbBackupOption) {
+            $output->writeln('<error>You are removing data without a database backup.</error>');
+        } else {
+            $output->writeln('<info>Removing data</info>');
+        }
+        $uninstalls = $this->collector->collectUninstall();
+        $setupModel = $this->objectManager->get('Magento\Setup\Module\Setup');
+        foreach ($modules as $module) {
+            if (isset($uninstalls[$module])) {
+                $output->writeln("<info>Removing data of $module</info>");
+                $uninstalls[$module]->uninstall(
+                    $setupModel,
+                    new ModuleContext($this->moduleResource->getDbVersion($module) ?: '')
+                );
+            } else {
+                $output->writeln("<info>No data to clear in $module</info>");
+            }
+        }
+    }
+
+    /**
+     * Run 'composer remove' to remove code
+     *
+     * @param array $modules
+     * @return void
+     */
+    private function removeCode(array $modules)
+    {
+        $packages = [];
+        foreach ($modules as $module) {
+            $packages[] = $this->packageInfo->getPackageName($module);
+        }
+        $this->remove->remove($packages);
+
+    }
+
+    /**
+     * Validate list of modules against installed composer packages and return error messages
+     *
+     * @param string[] $modules
+     * @return string[]
+     */
+    protected function validate(array $modules)
+    {
+        $messages = [];
+        $unknownPackages = [];
+        $unknownModules = [];
+        $installedPackages = $this->composer->getRootRequiredPackages();
+        foreach ($modules as $module) {
+            if (array_search($this->packageInfo->getPackageName($module), $installedPackages) === false) {
+                $unknownPackages[] = $module;
+            }
+            if (!$this->fullModuleList->has($module)) {
+                $unknownModules[] = $module;
+            }
+        }
+        $unknownPackages = array_diff($unknownPackages, $unknownModules);
+        if (!empty($unknownPackages)) {
+            $text = count($unknownPackages) > 1 ?
+                ' are not installed composer packages' : ' is not an installed composer package';
+            $messages[] = '<error>' . implode(', ', $unknownPackages) . $text . '</error>';
+        }
+        if (!empty($unknownModules)) {
+            $messages[] = '<error>Unknown module(s): ' . implode(', ', $unknownModules) . '</error>';
+        }
+        return $messages;
+    }
+
+    /**
+     * Check for dependencies to modules, return error messages
+     *
+     * @param string[] $modules
+     * @return string[]
+     */
+    private function checkDependencies(array $modules)
+    {
+        $messages = [];
+        $dependencies = $this->dependencyChecker->checkDependenciesWhenDisableModules(
+            $modules,
+            $this->fullModuleList->getNames()
+        );
+        foreach ($dependencies as $module => $dependingModules) {
+            if (!empty($dependingModules)) {
+                $messages[] =
+                    "<error>Cannot uninstall module '$module' because the following module(s) depend on it:</error>" .
+                    PHP_EOL . "\t<error>" . implode('</error>' . PHP_EOL . "\t<error>", array_keys($dependingModules)) .
+                    "</error>";
+            }
+        }
+        return $messages;
+    }
+
+    /**
+     * Removes module from setup_module table
+     *
+     * @param string[] $modules
+     * @return void
+     */
+    private function removeModulesFromDb(array $modules)
+    {
+        /** @var \Magento\Setup\Module\DataSetup $setup */
+        $setup = $this->objectManager->get('Magento\Setup\Module\DataSetup');
+        foreach ($modules as $module) {
+            $setup->deleteTableRow('setup_module', 'module', $module);
+        }
+    }
+
+    /**
+     * Removes module from deployment configuration
+     *
+     * @param string[] $modules
+     * @return void
+     */
+    private function removeModulesFromDeploymentConfig(array $modules)
+    {
+        $existingModules = $this->deploymentConfig->getConfigData(ConfigOptionsListConstants::KEY_MODULES);
+        $newSort = $this->loader->load($modules);
+        $newModules = [];
+        foreach (array_keys($newSort) as $module) {
+            $newModules[$module] = $existingModules[$module];
+        }
+        $this->writer->saveConfig(
+            [ConfigFilePool::APP_CONFIG => [ConfigOptionsListConstants::KEY_MODULES => $newModules]],
+            true
+        );
+    }
+}
diff --git a/setup/src/Magento/Setup/Console/Command/RollbackCommand.php b/setup/src/Magento/Setup/Console/Command/RollbackCommand.php
new file mode 100755
index 0000000000000000000000000000000000000000..13be58d9f73b459cf373c09a8d2993e9b1195ccd
--- /dev/null
+++ b/setup/src/Magento/Setup/Console/Command/RollbackCommand.php
@@ -0,0 +1,169 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Setup\Console\Command;
+
+use Magento\Framework\App\DeploymentConfig;
+use Magento\Framework\App\MaintenanceMode;
+use Magento\Framework\Backup\Factory;
+use Magento\Framework\ObjectManagerInterface;
+use Magento\Framework\Setup\BackupRollbackFactory;
+use Magento\Setup\Model\ObjectManagerProvider;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Input\InputOption;
+use Symfony\Component\Console\Output\OutputInterface;
+use Symfony\Component\Console\Question\ConfirmationQuestion;
+
+/**
+ * Command to rollback code, media and DB
+ *
+ * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
+ */
+class RollbackCommand extends AbstractSetupCommand
+{
+    /**
+     * Name of input arguments or options
+     */
+    const INPUT_KEY_CODE_BACKUP_FILE = 'code-file';
+    const INPUT_KEY_MEDIA_BACKUP_FILE = 'media-file';
+    const INPUT_KEY_DB_BACKUP_FILE = 'db-file';
+
+    /**
+     * Object Manager
+     *
+     * @var ObjectManagerInterface
+     */
+    private $objectManager;
+
+    /**
+     * @var MaintenanceMode
+     */
+    private $maintenanceMode;
+
+    /**
+     * @var BackupRollbackFactory
+     */
+    private $backupRollbackFactory;
+
+    /**
+     * Existing deployment config
+     *
+     * @var DeploymentConfig
+     */
+    private $deploymentConfig;
+
+    /**
+     * Constructor
+     *
+     * @param ObjectManagerProvider $objectManagerProvider
+     * @param MaintenanceMode $maintenanceMode
+     * @param DeploymentConfig $deploymentConfig
+     */
+    public function __construct(
+        ObjectManagerProvider $objectManagerProvider,
+        MaintenanceMode $maintenanceMode,
+        DeploymentConfig $deploymentConfig
+    ) {
+        $this->objectManager = $objectManagerProvider->get();
+        $this->maintenanceMode = $maintenanceMode;
+        $this->backupRollbackFactory = $this->objectManager->get('Magento\Framework\Setup\BackupRollbackFactory');
+        $this->deploymentConfig = $deploymentConfig;
+        parent::__construct();
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function configure()
+    {
+        $options = [
+            new InputOption(
+                self::INPUT_KEY_CODE_BACKUP_FILE,
+                'c',
+                InputOption::VALUE_REQUIRED,
+                'Basename of the code backup file in var/backups'
+            ),
+            new InputOption(
+                self::INPUT_KEY_MEDIA_BACKUP_FILE,
+                'm',
+                InputOption::VALUE_REQUIRED,
+                'Basename of the media backup file in var/backups'
+            ),
+            new InputOption(
+                self::INPUT_KEY_DB_BACKUP_FILE,
+                'd',
+                InputOption::VALUE_REQUIRED,
+                'Basename of the db backup file in var/backups'
+            ),
+        ];
+        $this->setName('setup:rollback')
+            ->setDescription('Rolls back Magento Application codebase, media and database')
+            ->setDefinition($options);
+        parent::configure();
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function execute(InputInterface $input, OutputInterface $output)
+    {
+        if (!$this->deploymentConfig->isAvailable() && ($input->getOption(self::INPUT_KEY_MEDIA_BACKUP_FILE)
+                || $input->getOption(self::INPUT_KEY_DB_BACKUP_FILE))) {
+            $output->writeln("<info>No information is available: the Magento application is not installed.</info>");
+            return;
+        }
+        try {
+            $output->writeln('<info>Enabling maintenance mode</info>');
+            $this->maintenanceMode->set(true);
+            $helper = $this->getHelper('question');
+            $question = new ConfirmationQuestion(
+                '<info>You are about to remove current code and/or database tables. Are you sure?[y/N]<info>',
+                false
+            );
+            if (!$helper->ask($input, $output, $question) && $input->isInteractive()) {
+                return;
+            }
+            $this->doRollback($input, $output);
+            $output->writeln('<info>Please set file permission of bin/magento to executable</info>');
+
+        } catch (\Exception $e) {
+            $output->writeln('<error>' . $e->getMessage() . '</error>');
+        } finally {
+            $output->writeln('<info>Disabling maintenance mode</info>');
+            $this->maintenanceMode->set(false);
+        }
+    }
+
+    /**
+     * Check rollback options and rolls back appropriately
+     *
+     * @param InputInterface $input
+     * @param OutputInterface $output
+     * @return void
+     * @throws \InvalidArgumentException
+     */
+    private function doRollback(InputInterface $input, OutputInterface $output)
+    {
+        $inputOptionProvided = false;
+        $rollbackHandler = $this->backupRollbackFactory->create($output);
+        if ($input->getOption(self::INPUT_KEY_CODE_BACKUP_FILE)) {
+            $rollbackHandler->codeRollback($input->getOption(self::INPUT_KEY_CODE_BACKUP_FILE));
+            $inputOptionProvided = true;
+        }
+        if ($input->getOption(self::INPUT_KEY_MEDIA_BACKUP_FILE)) {
+            $rollbackHandler->codeRollback($input->getOption(self::INPUT_KEY_MEDIA_BACKUP_FILE), Factory::TYPE_MEDIA);
+            $inputOptionProvided = true;
+        }
+        if ($input->getOption(self::INPUT_KEY_DB_BACKUP_FILE)) {
+            $rollbackHandler->dbRollback($input->getOption(self::INPUT_KEY_DB_BACKUP_FILE));
+            $inputOptionProvided = true;
+        }
+        if (!$inputOptionProvided) {
+            throw new \InvalidArgumentException(
+                'Not enough information provided to roll back.'
+            );
+        }
+    }
+}
diff --git a/setup/src/Magento/Setup/Console/Command/UninstallCommand.php b/setup/src/Magento/Setup/Console/Command/UninstallCommand.php
index 802b3c51cd8e3784b773748a8036f5f00dfcd522..f352ffdba8df4bf682061a827ce5a6ad1f20afd5 100644
--- a/setup/src/Magento/Setup/Console/Command/UninstallCommand.php
+++ b/setup/src/Magento/Setup/Console/Command/UninstallCommand.php
@@ -10,7 +10,7 @@ use Symfony\Component\Console\Input\InputInterface;
 use Symfony\Component\Console\Output\OutputInterface;
 use Symfony\Component\Console\Question\ConfirmationQuestion;
 use Magento\Setup\Model\InstallerFactory;
-use Magento\Setup\Model\ConsoleLogger;
+use Magento\Framework\Setup\ConsoleLogger;
 
 class UninstallCommand extends AbstractSetupCommand
 {
diff --git a/setup/src/Magento/Setup/Console/Command/UpgradeCommand.php b/setup/src/Magento/Setup/Console/Command/UpgradeCommand.php
index c070a795331ae83e9765de8f1c979a2828cfa361..7197865542cd53c7d110166fceb0d815b55cfc9c 100644
--- a/setup/src/Magento/Setup/Console/Command/UpgradeCommand.php
+++ b/setup/src/Magento/Setup/Console/Command/UpgradeCommand.php
@@ -8,7 +8,7 @@ namespace Magento\Setup\Console\Command;
 use Symfony\Component\Console\Input\InputInterface;
 use Symfony\Component\Console\Output\OutputInterface;
 use Magento\Setup\Model\InstallerFactory;
-use Magento\Setup\Model\ConsoleLogger;
+use Magento\Framework\Setup\ConsoleLogger;
 
 /**
  * Command for updating installed application after the code base has changed
diff --git a/setup/src/Magento/Setup/Console/CommandList.php b/setup/src/Magento/Setup/Console/CommandList.php
index da9f1a45ff92d41769cb2898d7b2145de2b1dfb2..590e2c9789a1c257a13a796fd4b34087c2b4998b 100644
--- a/setup/src/Magento/Setup/Console/CommandList.php
+++ b/setup/src/Magento/Setup/Console/CommandList.php
@@ -39,6 +39,7 @@ class CommandList
     {
         return [
             'Magento\Setup\Console\Command\AdminUserCreateCommand',
+            'Magento\Setup\Console\Command\BackupCommand',
             'Magento\Setup\Console\Command\ConfigSetCommand',
             'Magento\Setup\Console\Command\DbDataUpgradeCommand',
             'Magento\Setup\Console\Command\DbSchemaUpgradeCommand',
@@ -52,6 +53,7 @@ class CommandList
             'Magento\Setup\Console\Command\GenerateFixturesCommand',
             'Magento\Setup\Console\Command\I18nCollectPhrasesCommand',
             'Magento\Setup\Console\Command\I18nPackCommand',
+            'Magento\Setup\Console\Command\InfoBackupsListCommand',
             'Magento\Setup\Console\Command\InfoCurrencyListCommand',
             'Magento\Setup\Console\Command\InfoLanguageListCommand',
             'Magento\Setup\Console\Command\InfoTimezoneListCommand',
@@ -60,10 +62,12 @@ class CommandList
             'Magento\Setup\Console\Command\ModuleEnableCommand',
             'Magento\Setup\Console\Command\ModuleDisableCommand',
             'Magento\Setup\Console\Command\ModuleStatusCommand',
+            'Magento\Setup\Console\Command\ModuleUninstallCommand',
             'Magento\Setup\Console\Command\MaintenanceAllowIpsCommand',
             'Magento\Setup\Console\Command\MaintenanceDisableCommand',
             'Magento\Setup\Console\Command\MaintenanceEnableCommand',
             'Magento\Setup\Console\Command\MaintenanceStatusCommand',
+            'Magento\Setup\Console\Command\RollbackCommand',
             'Magento\Setup\Console\Command\UpgradeCommand',
             'Magento\Setup\Console\Command\UninstallCommand',
         ];
diff --git a/setup/src/Magento/Setup/Controller/Environment.php b/setup/src/Magento/Setup/Controller/Environment.php
index 527cbeafabd022dcabe7e92fc0e87e8516eb117e..e88ed5e59602a0485f5bbfc2bf42bbdc69404b8f 100644
--- a/setup/src/Magento/Setup/Controller/Environment.php
+++ b/setup/src/Magento/Setup/Controller/Environment.php
@@ -5,13 +5,18 @@
  */
 namespace Magento\Setup\Controller;
 
-use Composer\Package\LinkConstraint\VersionConstraint;
 use Composer\Package\Version\VersionParser;
 use Zend\Mvc\Controller\AbstractActionController;
 use Zend\View\Model\JsonModel;
+use Magento\Setup\Model\ComposerInformation;
 use Magento\Setup\Model\PhpInformation;
 use Magento\Setup\Model\FilePermissions;
 
+/**
+ * Class Environment
+ *
+ * Provides information and checks about the environment.
+ */
 class Environment extends AbstractActionController
 {
     /**
@@ -34,15 +39,18 @@ class Environment extends AbstractActionController
      * @param PhpInformation $phpInformation
      * @param FilePermissions $permissions
      * @param VersionParser $versionParser
+     * @param ComposerInformation $composerInformation
      */
     public function __construct(
         PhpInformation $phpInformation,
         FilePermissions $permissions,
-        VersionParser $versionParser
+        VersionParser $versionParser,
+        ComposerInformation $composerInformation
     ) {
         $this->phpInformation = $phpInformation;
-            $this->permissions = $permissions;
+        $this->permissions = $permissions;
         $this->versionParser = $versionParser;
+        $this->composerInformation = $composerInformation;
     }
 
     /**
@@ -53,7 +61,7 @@ class Environment extends AbstractActionController
     public function phpVersionAction()
     {
         try {
-            $requiredVersion = $this->phpInformation->getRequiredPhpVersion();
+            $requiredVersion = $this->composerInformation->getRequiredPhpVersion();
         } catch (\Exception $e) {
             return new JsonModel(
                 [
@@ -122,7 +130,7 @@ class Environment extends AbstractActionController
     public function phpExtensionsAction()
     {
         try {
-            $required = $this->phpInformation->getRequired();
+            $required = $this->composerInformation->getRequiredExtensions();
             $current = $this->phpInformation->getCurrent();
 
         } catch (\Exception $e) {
diff --git a/setup/src/Magento/Setup/Controller/Landing.php b/setup/src/Magento/Setup/Controller/Landing.php
index 2e2a39554196fb74c1b74d3c58cd79e150deab84..3cce9b7e9975ae6867085e743c2ce94772b33308 100644
--- a/setup/src/Magento/Setup/Controller/Landing.php
+++ b/setup/src/Magento/Setup/Controller/Landing.php
@@ -6,28 +6,15 @@
 
 namespace Magento\Setup\Controller;
 
-use Composer\Json\JsonFile;
-use Magento\Framework\App\Filesystem\DirectoryList;
+use Magento\Framework\AppInterface;
 use Zend\Mvc\Controller\AbstractActionController;
 use Zend\View\Model\ViewModel;
 
+/**
+ * Controller for Setup Landing page
+ */
 class Landing extends AbstractActionController
 {
-    /**
-     * @var array
-     */
-    protected $composerJson;
-
-    /**
-     * @param DirectoryList $directoryList
-     */
-    public function __construct(
-        DirectoryList $directoryList
-    ) {
-        $jsonFile = new JsonFile($directoryList->getRoot() . '/composer.json');
-        $this->composerJson = $jsonFile->read();
-    }
-
     /**
      * @return array|ViewModel
      */
@@ -37,7 +24,7 @@ class Landing extends AbstractActionController
         $view->setTerminal(true);
         $view->setVariable('languages', $this->serviceLocator->get('config')['languages']);
         $view->setVariable('location', 'en_US');
-        $view->setVariable('version', $this->composerJson['version']);
+        $view->setVariable('version', AppInterface::VERSION);
         return $view;
     }
 }
diff --git a/setup/src/Magento/Setup/Model/ComposerInformation.php b/setup/src/Magento/Setup/Model/ComposerInformation.php
new file mode 100644
index 0000000000000000000000000000000000000000..431f4c8243f7b800ac9c07729c0d52d017e11de5
--- /dev/null
+++ b/setup/src/Magento/Setup/Model/ComposerInformation.php
@@ -0,0 +1,133 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\Setup\Model;
+
+use Composer\Factory as ComposerFactory;
+use Composer\IO\BufferIO;
+use Composer\Package\Link;
+use Composer\Package\PackageInterface;
+use Magento\Framework\App\Filesystem\DirectoryList;
+use Magento\Framework\Filesystem;
+
+/**
+ * Class ComposerInformation uses Composer to determine dependency information.
+ */
+class ComposerInformation
+{
+    /**
+     * @var \Composer\Composer
+     */
+    private $composer;
+
+    /**
+     * @var \Composer\Package\Locker
+     */
+    private $locker;
+
+    /**
+     * Constructor
+     *
+     * @param Filesystem $filesystem
+     * @param BufferIO $io
+     * @throws \Exception
+     */
+    public function __construct(
+        Filesystem $filesystem,
+        BufferIO $io
+    ) {
+        // composer.json is in same directory as vendor
+        $vendorPath = $filesystem->getDirectoryRead(DirectoryList::CONFIG)->getAbsolutePath('vendor_path.php');
+        $vendorDir = require "{$vendorPath}";
+        $composerJson = $filesystem->getDirectoryRead(DirectoryList::ROOT)->getAbsolutePath()
+            . "/{$vendorDir}/../composer.json";
+
+        $composerJsonRealPath = realpath($composerJson);
+        if ($composerJsonRealPath === false) {
+            throw new \Exception('Composer file not found: ' . $composerJson);
+        }
+
+        putenv('COMPOSER_HOME=' . $filesystem->getDirectoryRead(DirectoryList::COMPOSER_HOME)->getAbsolutePath());
+
+        // Create Composer
+        $this->composer = ComposerFactory::create($io, $composerJson);
+        $this->locker = $this->composer->getLocker();
+    }
+
+    /**
+     * Retrieves required php version
+     *
+     * @return string
+     * @throws \Exception If attributes are missing in composer.lock file.
+     */
+    public function getRequiredPhpVersion()
+    {
+        if ($this->isMagentoRoot()) {
+            $allPlatformReqs = $this->locker->getPlatformRequirements(true);
+            $requiredPhpVersion =  $allPlatformReqs['php']->getPrettyConstraint();
+        } else {
+            $packages = $this->locker->getLockedRepository()->getPackages();
+            /** @var PackageInterface $package */
+            foreach ($packages as $package) {
+                if ($package instanceof PackageInterface) {
+                    $packageName = $package->getPrettyName();
+                    if ($packageName === 'magento/product-community-edition') {
+                        $phpRequirementLink = $package->getRequires()['php'];
+                        if ($phpRequirementLink instanceof Link) {
+                            $requiredPhpVersion = $phpRequirementLink->getPrettyConstraint();
+                        }
+                    }
+                }
+            }
+        }
+
+        if (!isset($requiredPhpVersion)) {
+            throw new \Exception('Cannot find php version requirement in \'composer.lock\' file');
+        }
+        return $requiredPhpVersion;
+    }
+
+    /**
+     * Retrieve list of required extensions
+     *
+     * Collect required extensions from composer.lock file
+     *
+     * @return array
+     * @throws \Exception If attributes are missing in composer.lock file.
+     */
+    public function getRequiredExtensions()
+    {
+        $requiredExtensions = [];
+        $allPlatformReqs = array_keys($this->locker->getPlatformRequirements(true));
+
+        if (!$this->isMagentoRoot()) {
+            /** @var \Composer\Package\CompletePackage $package */
+            foreach ($this->locker->getLockedRepository()->getPackages() as $package) {
+                $requires = array_keys($package->getRequires());
+                $requires = array_merge($requires, array_keys($package->getDevRequires()));
+                $allPlatformReqs = array_merge($allPlatformReqs, $requires);
+            }
+        }
+        foreach ($allPlatformReqs as $reqIndex) {
+            if (substr($reqIndex, 0, 4) === 'ext-') {
+                $requiredExtensions[] = substr($reqIndex, 4);
+            }
+        }
+        return array_unique($requiredExtensions);
+    }
+
+    /**
+     * Determines if Magento is the root package or it is included as a requirement.
+     *
+     * @return bool
+     */
+    private function isMagentoRoot()
+    {
+        $rootPackage = $this->composer->getPackage();
+
+        return preg_match('/magento\/magento2.e/', $rootPackage->getName());
+    }
+}
diff --git a/setup/src/Magento/Setup/Model/Installer.php b/setup/src/Magento/Setup/Model/Installer.php
index 4ff4a044eff51178f651f1304e571d27047df638..b3cdd3ee191891466f70e8f8df4376b768c5825e 100644
--- a/setup/src/Magento/Setup/Model/Installer.php
+++ b/setup/src/Magento/Setup/Model/Installer.php
@@ -19,6 +19,7 @@ use Magento\Framework\Module\ModuleList\Loader as ModuleLoader;
 use Magento\Framework\Module\ModuleListInterface;
 use Magento\Framework\Shell;
 use Magento\Framework\Setup\InstallSchemaInterface;
+use Magento\Framework\Setup\LoggerInterface;
 use Magento\Framework\Setup\UpgradeSchemaInterface;
 use Magento\Framework\Setup\InstallDataInterface;
 use Magento\Framework\Setup\UpgradeDataInterface;
diff --git a/setup/src/Magento/Setup/Model/InstallerFactory.php b/setup/src/Magento/Setup/Model/InstallerFactory.php
index cddcfd649b7a05fe34d623146171af8c06b40e14..9af552e32d1fcc0354816196bf6b036c37e7fe94 100644
--- a/setup/src/Magento/Setup/Model/InstallerFactory.php
+++ b/setup/src/Magento/Setup/Model/InstallerFactory.php
@@ -8,6 +8,9 @@ namespace Magento\Setup\Model;
 
 use Zend\ServiceManager\ServiceLocatorInterface;
 use Magento\Setup\Module\ResourceFactory;
+use Magento\Framework\App\ErrorHandler;
+use Magento\Framework\App\State\CleanupFiles;
+use Magento\Framework\Setup\LoggerInterface;
 
 class InstallerFactory
 {
@@ -33,6 +36,9 @@ class InstallerFactory
     {
         $this->serviceLocator = $serviceLocator;
         $this->resourceFactory = $resourceFactory;
+        // For Setup Wizard we are using our customized error handler
+        $handler = new ErrorHandler();
+        set_error_handler([$handler, 'handler']);
     }
 
     /**
diff --git a/setup/src/Magento/Setup/Model/PhpInformation.php b/setup/src/Magento/Setup/Model/PhpInformation.php
index f6786c8b2b525bb7feae54db994f633a18259141..155d4d8010fc5f476cb31d37cc1921e560ae7e84 100644
--- a/setup/src/Magento/Setup/Model/PhpInformation.php
+++ b/setup/src/Magento/Setup/Model/PhpInformation.php
@@ -6,9 +6,13 @@
 
 namespace Magento\Setup\Model;
 
-use Magento\Framework\App\Filesystem\DirectoryList;
 use Magento\Framework\Filesystem;
 
+/**
+ * Class PhpInformation
+ *
+ * Provides information and checks about the current and required PHP settings.
+ */
 class PhpInformation
 {
 
@@ -17,13 +21,6 @@ class PhpInformation
      */
     const XDEBUG_NESTED_LEVEL = 200;
 
-    /**
-     * List of required extensions
-     *
-     * @var array
-     */
-    protected $required;
-
     /**
      * List of currently installed extensions
      *
@@ -31,40 +28,6 @@ class PhpInformation
      */
     protected $current = [];
 
-    /**
-     * Interface to read composer.lock file
-     *
-     * @var \Magento\Framework\Filesystem\Directory\ReadInterface
-     */
-    private $rootDir;
-
-    /**
-     * Constructor
-     *
-     * @param Filesystem $filesystem
-     */
-    public function __construct(
-        Filesystem $filesystem
-    ) {
-        $this->rootDir = $filesystem->getDirectoryRead(DirectoryList::ROOT);
-    }
-
-    /**
-     * Retrieves required php version
-     *
-     * @return string
-     * @throws \Exception If attributes are missing in composer.lock file.
-     */
-    public function getRequiredPhpVersion()
-    {
-        $composerInfo = $this->getComposerInfo();
-        if (!empty($composerInfo['platform']['php'])) {
-            return $composerInfo['platform']['php'];
-        } else {
-            throw new \Exception('Missing key \'platform=>php\' in \'composer.lock\' file');
-        }
-    }
-
     /**
      * Returns minimum required XDebug nested level
      * @return int
@@ -74,62 +37,6 @@ class PhpInformation
         return self::XDEBUG_NESTED_LEVEL;
     }
 
-    /**
-     * Retrieve list of required extensions
-     *
-     * Collect required extensions from composer.lock file
-     *
-     * @return array
-     * @throws \Exception If attributes are missing in composer.lock file.
-     */
-    public function getRequired()
-    {
-        if (null === $this->required) {
-            $composerInfo = $this->getComposerInfo();
-            $declaredDependencies = [];
-
-            if (!empty($composerInfo['platform-dev'])) {
-                $declaredDependencies = array_merge($declaredDependencies, array_keys($composerInfo['platform-dev']));
-            } else {
-                throw new \Exception('Missing key \'platform-dev\' in \'composer.lock\' file');
-            }
-            if (!empty($composerInfo['packages'])) {
-                foreach ($composerInfo['packages'] as $package) {
-                    if (!empty($package['require'])) {
-                        $declaredDependencies = array_merge($declaredDependencies, array_keys($package['require']));
-                    }
-                }
-            } else {
-                throw new \Exception('Missing key \'packages\' in \'composer.lock\' file');
-            }
-            if ($declaredDependencies) {
-                $declaredDependencies = array_unique($declaredDependencies);
-                $phpDependencies = [];
-                foreach ($declaredDependencies as $dependency) {
-                    if (stripos($dependency, 'ext-') === 0) {
-                        $phpDependencies[] = substr($dependency, 4);
-                    }
-                }
-                $this->required = array_unique($phpDependencies);
-            }
-        }
-        return $this->required;
-    }
-
-    /**
-     * Checks existence of composer.lock and returns its contents
-     *
-     * @return array
-     * @throws \Exception
-     */
-    private function getComposerInfo()
-    {
-        if (!$this->rootDir->isExist('composer.lock')) {
-            throw new \Exception('Cannot read \'composer.lock\' file');
-        }
-        return json_decode($this->rootDir->readFile('composer.lock'), true);
-    }
-
     /**
      * Retrieve list of currently installed extensions
      *
diff --git a/setup/src/Magento/Setup/Model/SampleData.php b/setup/src/Magento/Setup/Model/SampleData.php
index a65fb57df40028a9ac20a1e362cd62d71bf11ba7..9d62982610a1629cd65d348c6512c6afc9dd012e 100644
--- a/setup/src/Magento/Setup/Model/SampleData.php
+++ b/setup/src/Magento/Setup/Model/SampleData.php
@@ -9,6 +9,7 @@ namespace Magento\Setup\Model;
 use Magento\Framework\App\Filesystem\DirectoryList;
 use Magento\Framework\Filesystem;
 use Magento\Framework\ObjectManagerInterface;
+use Magento\Framework\Setup\LoggerInterface;
 
 /**
  * Sample data installer
diff --git a/setup/src/Magento/Setup/Model/UninstallCollector.php b/setup/src/Magento/Setup/Model/UninstallCollector.php
new file mode 100644
index 0000000000000000000000000000000000000000..910a583b33700f376d3bd4d7334bb85cac2d1a0e
--- /dev/null
+++ b/setup/src/Magento/Setup/Model/UninstallCollector.php
@@ -0,0 +1,59 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Setup\Model;
+
+use Magento\Framework\Module\FullModuleList;
+use Magento\Framework\ObjectManagerInterface;
+use Magento\Framework\Setup\UninstallInterface;
+
+/**
+ * Class for collecting all Uninstall interfaces in all modules
+ */
+class UninstallCollector
+{
+    /**
+     * Object manager
+     *
+     * @var ObjectManagerInterface
+     */
+    private $objectManager;
+
+    /**
+     * Constructor
+     *
+     * @param ObjectManagerProvider $objectManagerProvider
+     */
+    public function __construct(
+        ObjectManagerProvider $objectManagerProvider
+    ) {
+        $this->objectManager = $objectManagerProvider->get();
+    }
+
+    /**
+     * Collect Uninstall classes from modules
+     *
+     * @return UninstallInterface[]
+     */
+    public function collectUninstall()
+    {
+        $uninstallList = [];
+        /** @var \Magento\Setup\Module\DataSetup $setup */
+        $setup = $this->objectManager->get('Magento\Setup\Module\DataSetup');
+        $result = $setup->getConnection()->select()->from($setup->getTable('setup_module'), ['module']);
+        // go through modules
+        foreach ($setup->getConnection()->fetchAll($result) as $row) {
+            $uninstallClassName = str_replace('_', '\\', $row['module']) . '\Setup\Uninstall';
+            if (class_exists($uninstallClassName)) {
+                $uninstallClass = $this->objectManager->create($uninstallClassName);
+                if (is_subclass_of($uninstallClass, 'Magento\Framework\Setup\UninstallInterface')) {
+                    $uninstallList[$row['module']] = $uninstallClass;
+                }
+            }
+        }
+
+        return $uninstallList;
+    }
+}
diff --git a/setup/src/Magento/Setup/Model/WebLogger.php b/setup/src/Magento/Setup/Model/WebLogger.php
index 47fe78fe61d41eebf3de6c05cf1363379244d1e5..fc2064fcf12d04a5638d80ff71f4fab3d925d214 100644
--- a/setup/src/Magento/Setup/Model/WebLogger.php
+++ b/setup/src/Magento/Setup/Model/WebLogger.php
@@ -8,6 +8,7 @@ namespace Magento\Setup\Model;
 
 use Magento\Framework\App\Filesystem\DirectoryList;
 use Magento\Framework\Filesystem;
+use Magento\Framework\Setup\LoggerInterface;
 
 /**
  * Web UI Logger
diff --git a/setup/src/Magento/Setup/Test/Unit/Console/Command/BackupCommandTest.php b/setup/src/Magento/Setup/Test/Unit/Console/Command/BackupCommandTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..e676d1a0144ab5c565fd60cf9fc93c586cde57a4
--- /dev/null
+++ b/setup/src/Magento/Setup/Test/Unit/Console/Command/BackupCommandTest.php
@@ -0,0 +1,128 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Setup\Test\Unit\Console\Command;
+
+use Magento\Setup\Console\Command\BackupCommand;
+use Symfony\Component\Console\Tester\CommandTester;
+
+class BackupCommandTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var \Magento\Framework\ObjectManagerInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $objectManager;
+
+    /**
+     * @var \Magento\Framework\Setup\BackupRollback|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $backupRollback;
+
+    /**
+     * @var CommandTester
+     */
+    private $tester;
+
+    /**
+     * @var \Magento\Framework\Setup\BackupRollbackFactory|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $backupRollbackFactory;
+
+    /**
+     * @var \Magento\Framework\App\DeploymentConfig|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $deploymentConfig;
+
+    public function setUp()
+    {
+        $maintenanceMode = $this->getMock('Magento\Framework\App\MaintenanceMode', [], [], '', false);
+        $objectManagerProvider = $this->getMock('Magento\Setup\Model\ObjectManagerProvider', [], [], '', false);
+        $this->objectManager = $this->getMockForAbstractClass(
+            'Magento\Framework\ObjectManagerInterface',
+            [],
+            '',
+            false
+        );
+        $objectManagerProvider->expects($this->any())->method('get')->willReturn($this->objectManager);
+        $this->backupRollback = $this->getMock('Magento\Framework\Setup\BackupRollback', [], [], '', false);
+        $this->backupRollbackFactory = $this->getMock(
+            'Magento\Framework\Setup\BackupRollbackFactory',
+            [],
+            [],
+            '',
+            false
+        );
+        $this->backupRollbackFactory->expects($this->any())
+            ->method('create')
+            ->willReturn($this->backupRollback);
+        $this->deploymentConfig = $this->getMock('Magento\Framework\App\DeploymentConfig', [], [], '', false);
+        $this->objectManager->expects($this->any())
+            ->method('get')
+            ->will($this->returnValue($this->backupRollbackFactory));
+        $command = new BackupCommand(
+            $objectManagerProvider,
+            $maintenanceMode,
+            $this->deploymentConfig
+        );
+        $this->tester = new CommandTester($command);
+    }
+
+    public function testExecuteCodeBackup()
+    {
+        $this->deploymentConfig->expects($this->once())
+            ->method('isAvailable')
+            ->will($this->returnValue(true));
+        $this->backupRollback->expects($this->once())
+            ->method('codeBackup')
+            ->willReturn($this->backupRollback);
+        $this->tester->execute(['--code' => true]);
+    }
+
+    public function testExecuteMediaBackup()
+    {
+        $this->deploymentConfig->expects($this->once())
+            ->method('isAvailable')
+            ->will($this->returnValue(true));
+        $this->backupRollback->expects($this->once())
+            ->method('codeBackup')
+            ->willReturn($this->backupRollback);
+        $this->tester->execute(['--media' => true]);
+    }
+
+    public function testExecuteDBBackup()
+    {
+        $this->deploymentConfig->expects($this->once())
+            ->method('isAvailable')
+            ->will($this->returnValue(true));
+        $this->backupRollback->expects($this->once())
+            ->method('dbBackup')
+            ->willReturn($this->backupRollback);
+        $this->tester->execute(['--db' => true]);
+    }
+
+    public function testExecuteNotInstalled()
+    {
+        $this->deploymentConfig->expects($this->once())
+            ->method('isAvailable')
+            ->will($this->returnValue(false));
+        $this->tester->execute(['--db' => true]);
+        $this->assertStringMatchesFormat(
+            'No information is available: the Magento application is not installed.%w',
+            $this->tester->getDisplay()
+        );
+    }
+
+    public function testExecuteNoOptions()
+    {
+        $this->deploymentConfig->expects($this->once())
+            ->method('isAvailable')
+            ->will($this->returnValue(false));
+        $this->tester->execute([]);
+        $expected = 'Enabling maintenance mode' . PHP_EOL
+            . 'Not enough information provided to take backup.'  . PHP_EOL
+            . 'Disabling maintenance mode';
+        $this->assertStringMatchesFormat($expected, $this->tester->getDisplay());
+    }
+}
diff --git a/setup/src/Magento/Setup/Test/Unit/Console/Command/InfoBackupsListCommandTest.php b/setup/src/Magento/Setup/Test/Unit/Console/Command/InfoBackupsListCommandTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..e0af9b9d16c0470e1f897be095ba723e6d92f0b3
--- /dev/null
+++ b/setup/src/Magento/Setup/Test/Unit/Console/Command/InfoBackupsListCommandTest.php
@@ -0,0 +1,39 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\Setup\Test\Unit\Console\Command;
+
+use Magento\Setup\Console\Command\InfoBackupsListCommand;
+use Symfony\Component\Console\Tester\CommandTester;
+
+class InfoBackupsListCommandTest extends \PHPUnit_Framework_TestCase
+{
+    public function testExecute()
+    {
+        $table = $this->getMock('Symfony\Component\Console\Helper\Table', [], [], '', false);
+        $table->expects($this->once())->method('setHeaders')->with(['Backup Filename', 'Backup Type']);
+        $table->expects($this->once())->method('addRow')->with(['backupFile_media.tgz', 'media']);
+        /** @var \Symfony\Component\Console\Helper\HelperSet|\PHPUnit_Framework_MockObject_MockObject $helperSet */
+        $helperSet = $this->getMock('Symfony\Component\Console\Helper\HelperSet', [], [], '', false);
+        $helperSet->expects($this->once())->method('get')->with('table')->will($this->returnValue($table));
+        /** @var \Magento\Framework\App\Filesystem\DirectoryList
+         * |\PHPUnit_Framework_MockObject_MockObject $directoryList
+         */
+        $directoryList = $this->getMock('Magento\Framework\App\Filesystem\DirectoryList', [], [], '', false);
+        /** @var \Magento\Framework\Filesystem\Driver\File|\PHPUnit_Framework_MockObject_MockObject $file */
+        $file = $this->getMock('Magento\Framework\Filesystem\Driver\File', [], [], '', false);
+        $file->expects($this->once())->method('isExists')->will($this->returnValue(true));
+        $file->expects($this->once())
+            ->method('readDirectoryRecursively')
+            ->will($this->returnValue(['backupFile_media.tgz']));
+        $command = new InfoBackupsListCommand($directoryList, $file);
+        $command->setHelperSet($helperSet);
+        $commandTester = new CommandTester($command);
+        $commandTester->execute([]);
+        $expected = 'Showing backup files in ';
+        $this->assertStringStartsWith($expected, $commandTester->getDisplay());
+    }
+}
diff --git a/setup/src/Magento/Setup/Test/Unit/Console/Command/ModuleUninstallCommandTest.php b/setup/src/Magento/Setup/Test/Unit/Console/Command/ModuleUninstallCommandTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..8aebb12c567bd177216a1df4161bd37620154cea
--- /dev/null
+++ b/setup/src/Magento/Setup/Test/Unit/Console/Command/ModuleUninstallCommandTest.php
@@ -0,0 +1,516 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Setup\Test\Unit\Console\Command;
+
+use Magento\Framework\Config\ConfigOptionsListConstants;
+use Magento\Framework\Config\File\ConfigFilePool;
+use Magento\Setup\Console\Command\ModuleUninstallCommand;
+use Symfony\Component\Console\Tester\CommandTester;
+
+/**
+ * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
+ * @SuppressWarnings(PHPMD.TooManyFields)
+ */
+class ModuleUninstallCommandTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var \Magento\Framework\App\DeploymentConfig|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $deploymentConfig;
+
+    /**
+     * @var \Magento\Framework\App\DeploymentConfig\Writer|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $writer;
+
+    /**
+     * @var \Magento\Framework\Module\FullModuleList|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $fullModuleList;
+
+    /**
+     * @var \Magento\Framework\App\MaintenanceMode|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $maintenanceMode;
+
+    /**
+     * @var \Magento\Setup\Model\UninstallCollector|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $uninstallCollector;
+
+    /**
+     * @var \Magento\Framework\Module\PackageInfo|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $packageInfo;
+
+    /**
+     * @var \Magento\Framework\Module\Resource|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $moduleResource;
+
+    /**
+     * @var \Magento\Framework\Module\DependencyChecker|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $dependencyChecker;
+
+    /**
+     * @var \Magento\Setup\Module\DataSetup|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $dataSetup;
+
+    /**
+     * @var \Magento\Framework\App\Cache|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $cache;
+
+    /**
+     * @var \Magento\Framework\App\State\CleanupFiles|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $cleanupFiles;
+
+    /**
+     * @var \Magento\Setup\Module\Setup|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $setup;
+
+    /**
+     * @var \Magento\Framework\Setup\BackupRollback|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $backupRollback;
+
+    /**
+     * @var \Magento\Framework\Setup\BackupRollbackFactory|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $backupRollbackFactory;
+
+    /**
+     * @var \Magento\Framework\Module\ModuleList\Loader|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $loader;
+
+    /**
+     * @var \Magento\Framework\Composer\Remove|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $remove;
+
+    /**
+     * @var \Symfony\Component\Console\Helper\QuestionHelper|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $question;
+
+    /**
+     * @var \Symfony\Component\Console\Helper\HelperSet|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $helperSet;
+
+    /**
+     * @var ModuleUninstallCommand
+     */
+    private $command;
+
+    /**
+     * @var CommandTester
+     */
+    private $tester;
+
+    /**
+     * @SuppressWarnings(PHPMD.UnusedLocalVariable)
+     */
+    public function setUp()
+    {
+        $this->remove = $this->getMock('Magento\Framework\Composer\Remove', [], [], '', false);
+        $this->deploymentConfig = $this->getMock('Magento\Framework\App\DeploymentConfig', [], [], '', false);
+        $this->writer = $this->getMock('Magento\Framework\App\DeploymentConfig\Writer', [], [], '', false);
+        $this->fullModuleList = $this->getMock('Magento\Framework\Module\FullModuleList', [], [], '', false);
+        $this->maintenanceMode = $this->getMock('Magento\Framework\App\MaintenanceMode', [], [], '', false);
+        $objectManagerProvider = $this->getMock('Magento\Setup\Model\ObjectManagerProvider', [], [], '', false);
+        $objectManager = $this->getMockForAbstractClass('Magento\Framework\ObjectManagerInterface', [], '', false);
+        $this->uninstallCollector = $this->getMock('Magento\Setup\Model\UninstallCollector', [], [], '', false);
+        $this->packageInfo = $this->getMock('Magento\Framework\Module\PackageInfo', [], [], '', false);
+        $packageInfoFactory = $this->getMock('Magento\Framework\Module\PackageInfoFactory', [], [], '', false);
+        $packageInfoFactory->expects($this->once())->method('create')->willReturn($this->packageInfo);
+        $this->moduleResource = $this->getMock('Magento\Framework\Module\Resource', [], [], '', false);
+        $this->dependencyChecker = $this->getMock('Magento\Framework\Module\DependencyChecker', [], [], '', false);
+        $this->backupRollback = $this->getMock('Magento\Framework\Setup\BackupRollback', [], [], '', false);
+        $this->backupRollbackFactory = $this->getMock(
+            'Magento\Framework\Setup\BackupRollbackFactory',
+            [],
+            [],
+            '',
+            false
+        );
+        $this->backupRollbackFactory->expects($this->any())
+            ->method('create')
+            ->willReturn($this->backupRollback);
+        $this->dataSetup = $this->getMock('Magento\Setup\Module\DataSetup', [], [], '', false);
+        $this->cache = $this->getMock('Magento\Framework\App\Cache', [], [], '', false);
+        $this->cleanupFiles = $this->getMock('Magento\Framework\App\State\CleanupFiles', [], [], '', false);
+        $this->setup = $this->getMock('Magento\Setup\Module\Setup', [], [], '', false);
+        $objectManagerProvider->expects($this->any())->method('get')->willReturn($objectManager);
+        $objectManager->expects($this->any())
+            ->method('get')
+            ->will($this->returnValueMap([
+                ['Magento\Framework\Module\PackageInfoFactory', $packageInfoFactory],
+                ['Magento\Framework\Module\Resource', $this->moduleResource],
+                ['Magento\Framework\Module\DependencyChecker', $this->dependencyChecker],
+                ['Magento\Setup\Module\DataSetup', $this->dataSetup],
+                ['Magento\Framework\App\Cache', $this->cache],
+                ['Magento\Framework\App\State\CleanupFiles', $this->cleanupFiles],
+                ['Magento\Setup\Module\Setup', $this->setup],
+                ['Magento\Framework\App\State', $this->getMock('Magento\Framework\App\State', [], [], '', false)],
+                ['Magento\Framework\Setup\BackupRollbackFactory', $this->backupRollbackFactory],
+            ]));
+        $composer = $this->getMock('Magento\Framework\Composer\ComposerInformation', [], [], '', false);
+        $composer->expects($this->any())
+            ->method('getRootRequiredPackages')
+            ->willReturn(['magento/package-a', 'magento/package-b']);
+        $this->loader = $this->getMock('Magento\Framework\Module\ModuleList\Loader', [], [], '', false);
+        $this->command = new ModuleUninstallCommand(
+            $composer,
+            $this->deploymentConfig,
+            $this->writer,
+            $this->fullModuleList,
+            $this->loader,
+            $this->maintenanceMode,
+            $objectManagerProvider,
+            $this->remove,
+            $this->uninstallCollector
+        );
+        $this->question = $this->getMock('Symfony\Component\Console\Helper\QuestionHelper', [], [], '', false);
+        $this->question
+            ->expects($this->any())
+            ->method('ask')
+            ->will($this->returnValue(true));
+        $this->helperSet = $this->getMock('Symfony\Component\Console\Helper\HelperSet', [], [], '', false);
+        $this->helperSet
+            ->expects($this->any())
+            ->method('get')
+            ->with('question')
+            ->will($this->returnValue($this->question));
+        $this->command->setHelperSet($this->helperSet);
+        $this->tester = new CommandTester($this->command);
+    }
+
+    public function testExecuteApplicationNotInstalled()
+    {
+        $this->deploymentConfig->expects($this->once())->method('isAvailable')->willReturn(false);
+        $this->tester->execute(['module' => ['Magento_A']]);
+        $this->assertEquals(
+            'You cannot run this command because the Magento application is not installed.' . PHP_EOL,
+            $this->tester->getDisplay()
+        );
+    }
+
+    /**
+     * @dataProvider executeFailedValidationDataProvider
+     * @param array $packageInfoMap
+     * @param array $fullModuleListMap
+     * @param array $input
+     * @param array $expect
+     */
+    public function testExecuteFailedValidation(
+        array $packageInfoMap,
+        array $fullModuleListMap,
+        array $input,
+        array $expect
+    ) {
+        $this->deploymentConfig->expects($this->once())->method('isAvailable')->willReturn(true);
+        $this->packageInfo->expects($this->exactly(count($input['module'])))
+            ->method('getPackageName')
+            ->will($this->returnValueMap($packageInfoMap));
+        $this->fullModuleList->expects($this->exactly(count($input['module'])))
+            ->method('has')
+            ->will($this->returnValueMap($fullModuleListMap));
+        $this->tester->execute($input);
+        foreach ($expect as $message) {
+            $this->assertContains($message, $this->tester->getDisplay());
+        }
+    }
+
+    /**
+     * @return array
+     */
+    public function executeFailedValidationDataProvider()
+    {
+        return [
+            'one non-composer package' => [
+                [['Magento_C', 'magento/package-c']],
+                [['Magento_C', true]],
+                ['module' => ['Magento_C']],
+                ['Magento_C is not an installed composer package']
+            ],
+            'one non-composer package, one valid' => [
+                [['Magento_A', 'magento/package-a'], ['Magento_C', 'magento/package-c']],
+                [['Magento_A', true], ['Magento_C', true]],
+                ['module' => ['Magento_A', 'Magento_C']],
+                ['Magento_C is not an installed composer package']
+            ],
+            'two non-composer packages' => [
+                [['Magento_C', 'magento/package-c'], ['Magento_D', 'magento/package-d']],
+                [['Magento_C', true], ['Magento_D', true]],
+                ['module' => ['Magento_C', 'Magento_D']],
+                ['Magento_C, Magento_D are not installed composer packages']
+            ],
+            'one unknown module' => [
+                [['Magento_C', '']],
+                [['Magento_C', false]],
+                ['module' => ['Magento_C']],
+                ['Unknown module(s): Magento_C']
+            ],
+            'two unknown modules' => [
+                [['Magento_C', ''], ['Magento_D', '']],
+                [['Magento_C', false], ['Magento_D', false]],
+                ['module' => ['Magento_C', 'Magento_D']],
+                ['Unknown module(s): Magento_C, Magento_D']
+            ],
+            'one unknown module, one valid' => [
+                [['Magento_C', ''], ['Magento_B', 'magento/package-b']],
+                [['Magento_C', false], ['Magento_B', true]],
+                ['module' => ['Magento_C', 'Magento_B']],
+                ['Unknown module(s): Magento_C']
+            ],
+            'one non-composer package, one unknown module' => [
+                [['Magento_C', 'magento/package-c'], ['Magento_D', '']],
+                [['Magento_C', true], ['Magento_D', false]],
+                ['module' => ['Magento_C', 'Magento_D']],
+                ['Magento_C is not an installed composer package', 'Unknown module(s): Magento_D']
+            ],
+            'two non-composer package, one unknown module' => [
+                [['Magento_C', 'magento/package-c'], ['Magento_D', ''], ['Magento_E', 'magento/package-e']],
+                [['Magento_C', true], ['Magento_D', false], ['Magento_E', true]],
+                ['module' => ['Magento_C', 'Magento_D', 'Magento_E']],
+                ['Magento_C, Magento_E are not installed composer packages', 'Unknown module(s): Magento_D']
+            ],
+            'two non-composer package, two unknown module' => [
+                [
+                    ['Magento_C', 'magento/package-c'],
+                    ['Magento_D', ''],
+                    ['Magento_E', 'magento/package-e'],
+                    ['Magento_F', '']
+                ],
+                [['Magento_C', true], ['Magento_D', false], ['Magento_E', true], ['Magento_F', false]],
+                ['module' => ['Magento_C', 'Magento_D', 'Magento_E', 'Magento_F']],
+                ['Magento_C, Magento_E are not installed composer packages', 'Unknown module(s): Magento_D, Magento_F']
+            ],
+            'two non-composer package, two unknown module, two valid' => [
+                [
+                    ['Magento_C', 'magento/package-c'],
+                    ['Magento_D', ''],
+                    ['Magento_E', 'magento/package-e'],
+                    ['Magento_F', ''],
+                    ['Magento_A', 'magento/package-a'],
+                    ['Magento_B', 'magento/package-b'],
+                ],
+                [
+                    ['Magento_A', true],
+                    ['Magento_B', true],
+                    ['Magento_C', true],
+                    ['Magento_D', false],
+                    ['Magento_E', true],
+                    ['Magento_F', false]
+                ],
+                ['module' => ['Magento_A', 'Magento_B', 'Magento_C', 'Magento_D', 'Magento_E', 'Magento_F']],
+                ['Magento_C, Magento_E are not installed composer packages', 'Unknown module(s): Magento_D, Magento_F']
+            ]
+        ];
+    }
+
+    private function setUpPassValidation()
+    {
+        $this->deploymentConfig->expects($this->once())->method('isAvailable')->willReturn(true);
+        $packageMap = [
+            ['Magento_A', 'magento/package-a'],
+            ['Magento_B', 'magento/package-b'],
+        ];
+        $this->packageInfo->expects($this->any())
+            ->method('getPackageName')
+            ->will($this->returnValueMap($packageMap));
+        $this->fullModuleList->expects($this->any())
+            ->method('has')
+            ->willReturn(true);
+    }
+
+    /**
+     * @dataProvider executeFailedDependenciesDataProvider
+     * @param array $dependencies
+     * @param array $input
+     * @param array $expect
+     */
+    public function testExecuteFailedDependencies(
+        array $dependencies,
+        array $input,
+        array $expect
+    ) {
+        $this->setUpPassValidation();
+        $this->dependencyChecker->expects($this->once())
+            ->method('checkDependenciesWhenDisableModules')
+            ->willReturn($dependencies);
+        $this->tester->execute($input);
+        foreach ($expect as $message) {
+            $this->assertContains($message, $this->tester->getDisplay());
+        }
+    }
+
+    /**
+     * @return array
+     */
+    public function executeFailedDependenciesDataProvider()
+    {
+        return [
+            [
+                ['Magento_A' => ['Magento_D' => ['Magento_D', 'Magento_A']]],
+                ['module' => ['Magento_A']],
+                [
+                    "Cannot uninstall module 'Magento_A' because the following module(s) depend on it:" .
+                    PHP_EOL .  "\tMagento_D"
+                ]
+            ],
+            [
+                ['Magento_A' => ['Magento_D' => ['Magento_D', 'Magento_A']]],
+                ['module' => ['Magento_A', 'Magento_B']],
+                [
+                    "Cannot uninstall module 'Magento_A' because the following module(s) depend on it:" .
+                    PHP_EOL .  "\tMagento_D"
+                ]
+            ],
+            [
+                [
+                    'Magento_A' => ['Magento_D' => ['Magento_D', 'Magento_A']],
+                    'Magento_B' => ['Magento_E' => ['Magento_E', 'Magento_A']]
+                ],
+                ['module' => ['Magento_A', 'Magento_B']],
+                [
+                    "Cannot uninstall module 'Magento_A' because the following module(s) depend on it:" .
+                    PHP_EOL .  "\tMagento_D",
+                    "Cannot uninstall module 'Magento_B' because the following module(s) depend on it:" .
+                    PHP_EOL .  "\tMagento_E"
+                ]
+            ],
+        ];
+    }
+
+    private function setUpExecute($input)
+    {
+        $this->setUpPassValidation();
+        $this->remove->expects($this->once())->method('remove')->with(['magento/package-a', 'magento/package-b']);
+        $this->dependencyChecker->expects($this->once())
+            ->method('checkDependenciesWhenDisableModules')
+            ->willReturn(['Magento_A' => [], 'Magento_B' => []]);
+        $this->dataSetup->expects($this->exactly(count($input['module'])))->method('deleteTableRow');
+        $this->deploymentConfig->expects($this->once())
+            ->method('getConfigData')
+            ->with(ConfigOptionsListConstants::KEY_MODULES)
+            ->willReturn(['Magento_A' => 1, 'Magento_B' => 1, 'Magento_C' => 0, 'Magento_D' => 1]);
+
+        $this->loader->expects($this->once())
+            ->method('load')
+            ->with($input['module'])
+            ->willReturn(['Magento_C' => [], 'Magento_D' => []]);
+        $this->writer->expects($this->once())
+            ->method('saveConfig')
+            ->with(
+                [
+                    ConfigFilePool::APP_CONFIG =>
+                        [ConfigOptionsListConstants::KEY_MODULES => ['Magento_C' => 0, 'Magento_D' => 1]]
+                ]
+            );
+        $this->cache->expects($this->once())->method('clean');
+        $this->cleanupFiles->expects($this->once())->method('clearCodeGeneratedClasses');
+
+    }
+
+    public function testExecute()
+    {
+        $input = ['module' => ['Magento_A', 'Magento_B']];
+        $this->setUpExecute($input);
+        $this->tester->execute($input);
+    }
+
+    public function testExecuteClearStaticContent()
+    {
+        $input = ['module' => ['Magento_A', 'Magento_B'], '-c' => true];
+        $this->setUpExecute($input);
+        $this->cleanupFiles->expects($this->once())->method('clearMaterializedViewFiles');
+        $this->tester->execute($input);
+    }
+
+    public function testExecuteRemoveData()
+    {
+        $input = ['module' => ['Magento_A', 'Magento_B'], '-r' => true];
+        $this->setUpExecute($input);
+        $uninstallMock = $this->getMockForAbstractClass('Magento\Framework\Setup\UninstallInterface', [], '', false);
+        $uninstallMock->expects($this->once())
+            ->method('uninstall')
+            ->with($this->setup, $this->isInstanceOf('Magento\Setup\Model\ModuleContext'));
+        $this->uninstallCollector->expects($this->once())
+            ->method('collectUninstall')
+            ->willReturn(['Magento_A' => $uninstallMock]);
+        $this->tester->execute($input);
+    }
+
+    public function testExecuteAll()
+    {
+        $input = ['module' => ['Magento_A', 'Magento_B'], '-c' => true, '-r' => true];
+        $this->setUpExecute($input);
+        $this->cleanupFiles->expects($this->once())->method('clearMaterializedViewFiles');
+        $uninstallMock = $this->getMockForAbstractClass('Magento\Framework\Setup\UninstallInterface', [], '', false);
+        $uninstallMock->expects($this->once())
+            ->method('uninstall')
+            ->with($this->setup, $this->isInstanceOf('Magento\Setup\Model\ModuleContext'));
+        $this->uninstallCollector->expects($this->once())
+            ->method('collectUninstall')
+            ->willReturn(['Magento_A' => $uninstallMock]);
+        $this->tester->execute($input);
+    }
+
+    public function testExecuteCodeBackup()
+    {
+        $input = ['module' => ['Magento_A', 'Magento_B'], '--backup-code' => true];
+        $this->setUpExecute($input);
+        $this->backupRollback->expects($this->once())
+            ->method('codeBackup')
+            ->willReturn($this->backupRollback);
+        $this->tester->execute($input);
+    }
+
+    public function testExecuteMediaBackup()
+    {
+        $input = ['module' => ['Magento_A', 'Magento_B'], '--backup-media' => true];
+        $this->setUpExecute($input);
+        $this->backupRollback->expects($this->once())
+            ->method('codeBackup')
+            ->willReturn($this->backupRollback);
+        $this->tester->execute($input);
+    }
+
+    public function testExecuteDBBackup()
+    {
+        $input = ['module' => ['Magento_A', 'Magento_B'], '--backup-db' => true];
+        $this->setUpExecute($input);
+        $this->backupRollback->expects($this->once())
+            ->method('dbBackup')
+            ->willReturn($this->backupRollback);
+        $this->tester->execute($input);
+    }
+
+    public function testInteraction()
+    {
+        $input = ['module' => ['Magento_A', 'Magento_B']];
+        $this->setUpExecute($input);
+        $this->question
+            ->expects($this->once())
+            ->method('ask')
+            ->will($this->returnValue(false));
+        $this->helperSet
+            ->expects($this->once())
+            ->method('get')
+            ->with('question')
+            ->will($this->returnValue($this->question));
+        $this->command->setHelperSet($this->helperSet);
+        $this->tester = new CommandTester($this->command);
+        $this->tester->execute($input);
+    }
+}
diff --git a/setup/src/Magento/Setup/Test/Unit/Console/Command/RollbackCommandTest.php b/setup/src/Magento/Setup/Test/Unit/Console/Command/RollbackCommandTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..dafa2e6e5e2ded5b2ac36de638af359bafc86f3f
--- /dev/null
+++ b/setup/src/Magento/Setup/Test/Unit/Console/Command/RollbackCommandTest.php
@@ -0,0 +1,176 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Setup\Test\Unit\Console\Command;
+
+use Magento\Setup\Console\Command\RollbackCommand;
+use Symfony\Component\Console\Tester\CommandTester;
+
+class RollbackCommandTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var \Magento\Framework\ObjectManagerInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $objectManager;
+
+    /**
+     * @var CommandTester
+     */
+    private $tester;
+
+    /**
+     * @var \Magento\Framework\App\DeploymentConfig|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $deploymentConfig;
+
+    /**
+     * @var \Magento\Framework\Setup\BackupRollback|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $backupRollback;
+
+    /**
+     * @var \Magento\Framework\Setup\BackupRollbackFactory|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $backupRollbackFactory;
+
+    /**
+     * @var \Symfony\Component\Console\Helper\HelperSet|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $helperSet;
+
+    /**
+     * @var \Symfony\Component\Console\Helper\QuestionHelper|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $question;
+
+    /**
+     * @var RollbackCommand
+     */
+    private $command;
+
+    public function setUp()
+    {
+        $this->deploymentConfig = $this->getMock('Magento\Framework\App\DeploymentConfig', [], [], '', false);
+        $maintenanceMode = $this->getMock('Magento\Framework\App\MaintenanceMode', [], [], '', false);
+        $this->objectManager = $this->getMockForAbstractClass(
+            'Magento\Framework\ObjectManagerInterface',
+            [],
+            '',
+            false
+        );
+        $objectManagerProvider = $this->getMock('Magento\Setup\Model\ObjectManagerProvider', [], [], '', false);
+        $objectManagerProvider->expects($this->any())->method('get')->willReturn($this->objectManager);
+        $this->backupRollback = $this->getMock('Magento\Framework\Setup\BackupRollback', [], [], '', false);
+        $this->backupRollbackFactory = $this->getMock(
+            'Magento\Framework\Setup\BackupRollbackFactory',
+            [],
+            [],
+            '',
+            false
+        );
+        $this->backupRollbackFactory->expects($this->any())
+            ->method('create')
+            ->willReturn($this->backupRollback);
+        $this->objectManager->expects($this->any())
+            ->method('get')
+            ->will($this->returnValueMap([
+                ['Magento\Framework\Setup\BackupRollbackFactory', $this->backupRollbackFactory],
+            ]));
+        $this->helperSet = $this->getMock('Symfony\Component\Console\Helper\HelperSet', [], [], '', false);
+        $this->question = $this->getMock('Symfony\Component\Console\Helper\QuestionHelper', [], [], '', false);
+        $this->question
+            ->expects($this->any())
+            ->method('ask')
+            ->will($this->returnValue(true));
+        $this->helperSet
+            ->expects($this->any())
+            ->method('get')
+            ->with('question')
+            ->will($this->returnValue($this->question));
+        $this->command = new RollbackCommand(
+            $objectManagerProvider,
+            $maintenanceMode,
+            $this->deploymentConfig
+        );
+        $this->command->setHelperSet($this->helperSet);
+        $this->tester = new CommandTester($this->command);
+    }
+
+    public function testExecuteCodeRollback()
+    {
+        $this->deploymentConfig->expects($this->once())
+            ->method('isAvailable')
+            ->will($this->returnValue(true));
+        $this->backupRollback->expects($this->once())
+            ->method('codeRollback')
+            ->willReturn($this->backupRollback);
+        $this->tester->execute(['--code-file' => 'A.tgz']);
+    }
+
+    public function testExecuteMediaRollback()
+    {
+        $this->deploymentConfig->expects($this->once())
+            ->method('isAvailable')
+            ->will($this->returnValue(true));
+        $this->backupRollback->expects($this->once())
+            ->method('codeRollback')
+            ->willReturn($this->backupRollback);
+        $this->tester->execute(['--media-file' => 'A.tgz']);
+    }
+
+    public function testExecuteDBRollback()
+    {
+        $this->deploymentConfig->expects($this->once())
+            ->method('isAvailable')
+            ->will($this->returnValue(true));
+        $this->backupRollback->expects($this->once())
+            ->method('dbRollback')
+            ->willReturn($this->backupRollback);
+        $this->tester->execute(['--db-file' => 'C.gz']);
+    }
+
+    public function testExecuteNotInstalled()
+    {
+        $this->deploymentConfig->expects($this->once())
+            ->method('isAvailable')
+            ->will($this->returnValue(false));
+        $this->tester->execute(['--db-file' => 'C.gz']);
+        $this->assertStringMatchesFormat(
+            'No information is available: the Magento application is not installed.%w',
+            $this->tester->getDisplay()
+        );
+    }
+
+    public function testExecuteNoOptions()
+    {
+        $this->deploymentConfig->expects($this->once())
+            ->method('isAvailable')
+            ->will($this->returnValue(true));
+        $this->tester->execute([]);
+        $expected = 'Enabling maintenance mode' . PHP_EOL
+            . 'Not enough information provided to roll back.'  . PHP_EOL
+            . 'Disabling maintenance mode';
+        $this->assertStringMatchesFormat($expected, $this->tester->getDisplay());
+    }
+
+    public function testInteraction()
+    {
+        $this->deploymentConfig->expects($this->once())
+            ->method('isAvailable')
+            ->will($this->returnValue(true));
+        $this->question
+            ->expects($this->once())
+            ->method('ask')
+            ->will($this->returnValue(false));
+        $this->helperSet
+            ->expects($this->once())
+            ->method('get')
+            ->with('question')
+            ->will($this->returnValue($this->question));
+        $this->command->setHelperSet($this->helperSet);
+        $this->tester = new CommandTester($this->command);
+        $this->tester->execute(['--db-file' => 'C.gz']);
+    }
+}
diff --git a/setup/src/Magento/Setup/Test/Unit/Model/InstallerFactoryTest.php b/setup/src/Magento/Setup/Test/Unit/Model/InstallerFactoryTest.php
index 8e881bada2d989eaa76fba23836eb69349ff5252..28f5eea3921cc39fc00f315a8ef694380f017f3e 100644
--- a/setup/src/Magento/Setup/Test/Unit/Model/InstallerFactoryTest.php
+++ b/setup/src/Magento/Setup/Test/Unit/Model/InstallerFactoryTest.php
@@ -88,7 +88,7 @@ class InstallerFactoryTest extends \PHPUnit_Framework_TestCase
             ->method('get')
             ->will($this->returnValueMap($returnValueMap));
 
-        $log = $this->getMockForAbstractClass('Magento\Setup\Model\LoggerInterface');
+        $log = $this->getMockForAbstractClass('Magento\Framework\Setup\LoggerInterface');
         $resourceFactoryMock = $this->getMock('Magento\Setup\Module\ResourceFactory', [], [], '', false);
         $resourceFactoryMock
             ->expects($this->any())
diff --git a/setup/src/Magento/Setup/Test/Unit/Model/InstallerTest.php b/setup/src/Magento/Setup/Test/Unit/Model/InstallerTest.php
index 931d8e315e68c42205d3687b4ee9d84a539b1de0..1028606309a13b89848b4f42d4a6560774278493 100644
--- a/setup/src/Magento/Setup/Test/Unit/Model/InstallerTest.php
+++ b/setup/src/Magento/Setup/Test/Unit/Model/InstallerTest.php
@@ -67,7 +67,7 @@ class InstallerTest extends \PHPUnit_Framework_TestCase
     private $adminFactory;
 
     /**
-     * @var \Magento\Setup\Model\LoggerInterface|\PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\Setup\LoggerInterface|\PHPUnit_Framework_MockObject_MockObject
      */
     private $logger;
 
@@ -150,7 +150,7 @@ class InstallerTest extends \PHPUnit_Framework_TestCase
         $this->moduleLoader = $this->getMock('Magento\Framework\Module\ModuleList\Loader', [], [], '', false);
         $this->directoryList = $this->getMock('Magento\Framework\App\Filesystem\DirectoryList', [], [], '', false);
         $this->adminFactory = $this->getMock('Magento\Setup\Model\AdminAccountFactory', [], [], '', false);
-        $this->logger = $this->getMockForAbstractClass('Magento\Setup\Model\LoggerInterface');
+        $this->logger = $this->getMockForAbstractClass('Magento\Framework\Setup\LoggerInterface');
         $this->random = $this->getMock('Magento\Framework\Math\Random', [], [], '', false);
         $this->connection = $this->getMockForAbstractClass('Magento\Framework\DB\Adapter\AdapterInterface');
         $this->maintenanceMode = $this->getMock('Magento\Framework\App\MaintenanceMode', [], [], '', false);
diff --git a/setup/src/Magento/Setup/Test/Unit/Model/PhpInformationTest.php b/setup/src/Magento/Setup/Test/Unit/Model/PhpInformationTest.php
index c8be0b5d80437fca31de20612e64e79d0720d8ab..9c1feb0c8e31cb348bb8a1d73dea73b28b197967 100644
--- a/setup/src/Magento/Setup/Test/Unit/Model/PhpInformationTest.php
+++ b/setup/src/Magento/Setup/Test/Unit/Model/PhpInformationTest.php
@@ -8,151 +8,28 @@ namespace Magento\Setup\Test\Unit\Model;
 
 use \Magento\Setup\Model\PhpInformation;
 
+/**
+ * Tests Magento\Setup\Model\PhpInformation
+ */
 class PhpInformationTest extends \PHPUnit_Framework_TestCase
 {
-    /**
-     * @var \PHPUnit_Framework_MockObject_MockObject|\Magento\Framework\Filesystem\Directory\Read
-     */
-    private $directoryReadMock;
-
-    /**
-     * @var \PHPUnit_Framework_MockObject_MockObject|\Magento\Framework\Filesystem
-     */
-    private $filesystemMock;
-
-    public function setUp()
-    {
-        $this->directoryReadMock = $this->getMock('Magento\Framework\Filesystem\Directory\Read', [], [], '', false);
-        $this->filesystemMock = $this->getMock('Magento\Framework\Filesystem', [], [], '', false);
-        $this->filesystemMock
-            ->expects($this->once())
-            ->method('getDirectoryRead')
-            ->will($this->returnValue($this->directoryReadMock));
-    }
-
-    public function testGetRequiredPhpVersion()
-    {
-        $this->directoryReadMock
-            ->expects($this->once())
-            ->method('isExist')
-            ->will($this->returnValue(true));
-        $this->directoryReadMock
-            ->expects($this->once())
-            ->method('readFile')
-            ->with('composer.lock')
-            ->will($this->returnValue('{"platform":{"php":"~a.b.c|~a.e.f"}}'));
-
-        $phpInfo = new PhpInformation($this->filesystemMock);
-        $this->assertEquals("~a.b.c|~a.e.f", $phpInfo->getRequiredPhpVersion());
-    }
-
-    /**
-     * @expectedException \Exception
-     * @expectedExceptionMessage Cannot read 'composer.lock' file
-     */
-    public function testGetRequiredPhpVersionExceptionNoComposerLock()
-    {
-        $this->directoryReadMock
-            ->expects($this->once())
-            ->method('isExist')
-            ->will($this->returnValue(false));
-
-        $phpInfo = new PhpInformation($this->filesystemMock);
-        $phpInfo->getRequiredPhpVersion();
-    }
-
-    /**
-     * @expectedException \Exception
-     * @expectedExceptionMessage Missing key 'platform=>php' in 'composer.lock' file
-     */
-    public function testGetRequiredPhpVersionExceptionMissingKey()
-    {
-        $this->directoryReadMock
-            ->expects($this->once())
-            ->method('isExist')
-            ->will($this->returnValue(true));
-        $this->directoryReadMock
-            ->expects($this->once())
-            ->method('readFile')
-            ->with('composer.lock')
-            ->will($this->returnValue('{}'));
-
-        $phpInfo = new PhpInformation($this->filesystemMock);
-        $phpInfo->getRequiredPhpVersion();
-    }
-
-    public function testGetRequired()
+    public function testGetRequiredMinimumXDebugNestedLevel()
     {
-        $this->directoryReadMock
-            ->expects($this->once())
-            ->method('isExist')
-            ->will($this->returnValue(true));
-        $this->directoryReadMock
-            ->expects($this->once())
-            ->method('readFile')
-            ->with('composer.lock')
-            ->will($this->returnValue(
-                '{"platform-dev":{"ext-e":"*", "f":"*"}, ' .
-                '"packages":[{"name":"a","require":{"c":"*"}}, {"name":"b","require":{"ext-d":"*"}}]}'
-            ));
-        $phpInfo = new PhpInformation($this->filesystemMock);
-        $this->assertEquals(['e', 'd'], $phpInfo->getRequired());
+        $phpInformation = new PhpInformation();
+        $this->assertEquals(200, $phpInformation->getRequiredMinimumXDebugNestedLevel());
     }
 
-    /**
-     * @expectedException \Exception
-     * @expectedExceptionMessage Cannot read 'composer.lock' file
-     */
-    public function testGetRequiredNoComposerLock()
+    public function testGetCurrent()
     {
-        $this->directoryReadMock
-            ->expects($this->once())
-            ->method('isExist')
-            ->will($this->returnValue(false));
-
-        $phpInfo = new PhpInformation($this->filesystemMock);
-        $phpInfo->getRequired();
-    }
+        $phpInformation = new PhpInformation();
 
-    /**
-     * @expectedException \Exception
-     * @expectedExceptionMessage Missing key 'platform-dev' in 'composer.lock' file
-     */
-    public function testGetRequiredExceptionMissingPlatformDev()
-    {
-        $this->directoryReadMock
-            ->expects($this->once())
-            ->method('isExist')
-            ->will($this->returnValue(true));
-        $this->directoryReadMock
-            ->expects($this->once())
-            ->method('readFile')
-            ->with('composer.lock')
-            ->will(
-                $this->returnValue(
-                    '{"packages":[{"name":"a","require":{"c":"*"}}, {"name":"b","require":{"ext-d":"*"}}]}'
-                )
-            );
-        $phpInfo = new PhpInformation($this->filesystemMock);
-        $phpInfo->getRequired();
-    }
+        // Class variable 'current' should be empty the first time
+        $this->assertAttributeEmpty('current', $phpInformation);
+        $actualExtensions = $phpInformation->getCurrent();
+        $this->assertTrue(is_array($actualExtensions));
 
-    /**
-     * @expectedException \Exception
-     * @expectedExceptionMessage Missing key 'packages' in 'composer.lock' file
-     */
-    public function testGetRequiredExceptionMissingPackages()
-    {
-        $this->directoryReadMock
-            ->expects($this->once())
-            ->method('isExist')
-            ->will($this->returnValue(true));
-        $this->directoryReadMock
-            ->expects($this->once())
-            ->method('readFile')
-            ->with('composer.lock')
-            ->will($this->returnValue('{"platform-dev":{"ext-e":"*", "f":"*"}}'));
-        $phpInfo = new PhpInformation($this->filesystemMock);
-        $phpInfo->getRequired();
+        // Calling second type should cause class variable to be used
+        $this->assertSame($actualExtensions, $phpInformation->getCurrent());
+        $this->assertAttributeNotEmpty('current', $phpInformation);
     }
 }
diff --git a/setup/src/Magento/Setup/Test/Unit/Model/UninstallCollectorTest.php b/setup/src/Magento/Setup/Test/Unit/Model/UninstallCollectorTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..3bf9d3c93b2e4ff3ddfc4411267acd7e1760433b
--- /dev/null
+++ b/setup/src/Magento/Setup/Test/Unit/Model/UninstallCollectorTest.php
@@ -0,0 +1,83 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Setup\Test\Unit\Model;
+
+use Magento\Setup\Model\UninstallCollector;
+
+class UninstallCollectorTest extends \PHPUnit_Framework_TestCase
+{
+    public function testCollectUninstall()
+    {
+        $objectManagerProvider = $this->getMock('Magento\Setup\Model\ObjectManagerProvider', [], [], '', false);
+        $objectManager = $this->getMockForAbstractClass('Magento\Framework\ObjectManagerInterface', [], '', false);
+        $objectManagerProvider->expects($this->once())->method('get')->willReturn($objectManager);
+
+        $setup = $this->getMock('Magento\Setup\Module\DataSetup', [], [], '', false);
+        $adapterInterface = $this->getMockForAbstractClass(
+            'Magento\Framework\DB\Adapter\AdapterInterface',
+            [],
+            '',
+            false
+        );
+        $select = $this->getMock('Magento\Framework\DB\Select', ['from'], [], '', false);
+        $adapterInterface->expects($this->once())->method('select')->willReturn($select);
+        $setup->expects($this->exactly(2))->method('getConnection')->willReturn($adapterInterface);
+        $result = $this->getMock('Magento\Framework\DB\Select', [], [], '', false);
+        $select->expects($this->once())->method('from')->willReturn($result);
+        $adapterInterface->expects($this->once())
+            ->method('fetchAll')
+            ->with($result)
+            ->willReturn([['module' => 'Magento_A'], ['module' => 'Magento_B'], ['module' => 'Magento_C']]);
+
+        $uninstallA = 'Uninstall Class A';
+        $uninstallB = 'Uninstall Class B';
+        $objectManager->expects($this->any())
+            ->method('create')
+            ->will(
+                $this->returnValueMap([
+                    ['Magento\A\Setup\Uninstall', [], $uninstallA],
+                    ['Magento\B\Setup\Uninstall', [], $uninstallB],
+                ])
+            );
+        $objectManager->expects($this->any())->method('get')
+            ->with('Magento\Setup\Module\DataSetup')
+            ->willReturn($setup);
+
+        $collector = new UninstallCollector($objectManagerProvider);
+        $this->assertEquals(['Magento_A' => 'Uninstall Class A'], $collector->collectUninstall());
+    }
+}
+
+namespace Magento\Setup\Model;
+
+/**
+ * This function overrides the native function for the purpose of testing
+ *
+ * @param string $obj
+ * @param string $className
+ * @return bool
+ */
+function is_subclass_of($obj, $className)
+{
+    if ($obj == 'Uninstall Class A' && $className == 'Magento\Framework\Setup\UninstallInterface') {
+        return true;
+    }
+    return false;
+}
+
+/**
+ * This function overrides the native function for the purpose of testing
+ *
+ * @param string $className
+ * @return bool
+ */
+function class_exists($className)
+{
+    if ($className == 'Magento\A\Setup\Uninstall' || $className == 'Magento\B\Setup\Uninstall') {
+        return true;
+    }
+    return false;
+}