diff --git a/app/code/Magento/Developer/Console/Command/XmlConverterCommand.php b/app/code/Magento/Developer/Console/Command/XmlConverterCommand.php
index 14eeadcabbea6d495867b777c5bd90fbc3b5b9a2..6a818213412698a850e008dd09c76abd8095a514 100644
--- a/app/code/Magento/Developer/Console/Command/XmlConverterCommand.php
+++ b/app/code/Magento/Developer/Console/Command/XmlConverterCommand.php
@@ -39,19 +39,38 @@ class XmlConverterCommand extends Command
      */
     private $formatter;
 
+    /**
+     * @var \DOMDocument
+     */
+    private $domXml;
+
+    /**
+     * @var \DOMDocument
+     */
+    private $domXsl;
+
+    /**
+     * @var \XSLTProcessor
+     */
+    private $xsltProcessor;
+
     /**
      * Inject dependencies
      *
      * @param Formatter $formatter
+     * @param \DOMDocument $domXml
+     * @param \DOMDocument $domXsl
+     * @param \XSLTProcessor $xsltProcessor
      */
     public function __construct(
         Formatter $formatter,
-        \DOMDocument $dom,
+        \DOMDocument $domXml,
+        \DOMDocument $domXsl,
         \XSLTProcessor $xsltProcessor
     ) {
         $this->formatter = $formatter;
-        $this->domXml = clone $dom;
-        $this->domXsl = clone $dom;
+        $this->domXml = $domXml;
+        $this->domXsl = $domXsl;
         $this->xsltProcessor = $xsltProcessor;
 
         parent::__construct();
@@ -89,7 +108,6 @@ class XmlConverterCommand extends Command
 
     /**
      * {@inheritdoc}
-     * @throws \InvalidArgumentException
      */
     protected function execute(InputInterface $input, OutputInterface $output)
     {
@@ -110,13 +128,9 @@ class XmlConverterCommand extends Command
                 file_put_contents($input->getArgument(self::XML_FILE_ARGUMENT), $result);
                 $output->writeln("<info>You saved converted XML into $xmlFile</info>");
             } else {
-                echo $result;
+                $output->write($result);
             }
 
-            return;
-        } catch (\Zend_Console_Getopt_Exception $e) {
-            $errorMessage =  $e->getUsageMessage();
-            $output->writeln("<error>$errorMessage</error>");
             return;
         } catch (\Exception $exception) {
             $errorMessage = $exception->getMessage();
diff --git a/app/code/Magento/Developer/Test/Unit/Console/Command/XmlConverterCommandTest.php b/app/code/Magento/Developer/Test/Unit/Console/Command/XmlConverterCommandTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..b8bff32c3b30b72d1066591a4aa948ce885cef3b
--- /dev/null
+++ b/app/code/Magento/Developer/Test/Unit/Console/Command/XmlConverterCommandTest.php
@@ -0,0 +1,77 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\Developer\Test\Unit\Console\Command;
+
+use Magento\Developer\Console\Command\XmlConverterCommand;
+use Symfony\Component\Console\Tester\CommandTester;
+use Magento\Developer\Model\Tools\Formatter;
+
+class XmlConverterCommandTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var Formatter|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $formatter;
+
+    /**
+     * @var XmlConverterCommand
+     */
+    private $command;
+
+    /**
+     * @var \DOMDocument|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $domXml;
+
+    /**
+     * @var \DOMDocument|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $domXsl;
+
+    /**
+     * @var \XSLTProcessor|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $xsltProcessor;
+
+    public function setUp()
+    {
+        $this->formatter = $this->getMock('Magento\Developer\Model\Tools\Formatter', [], [], '', false);
+        $this->domXml = $this->getMock('DOMDocument', [], [], '', false);
+        $this->domXsl = $this->getMock('DOMDocument', [], [], '', false);
+        $this->xsltProcessor = $this->getMock('XSLTProcessor', [], [], '', false);
+        $this->command = new XmlConverterCommand($this->formatter, $this->domXml, $this->domXsl, $this->xsltProcessor);
+    }
+
+    public function testExecute()
+    {
+        $this->domXml->expects($this->once())->method('load')->with('file.xml');
+        $this->domXsl->expects($this->once())->method('load')->with('file.xsl');
+
+        $this->xsltProcessor->expects($this->once())->method('transformToXml')->with($this->domXml)->willReturn('XML');
+
+        $this->formatter->expects($this->once())->method('format')->with('XML')->willReturn('result');
+
+        $commandTester = new CommandTester($this->command);
+        $commandTester->execute(
+            [
+                XmlConverterCommand::XML_FILE_ARGUMENT => 'file.xml',
+                XmlConverterCommand::PROCESSOR_ARGUMENT => 'file.xsl'
+            ]
+        );
+        $this->assertContains('result', $commandTester->getDisplay());
+    }
+
+    /**
+     * @expectedException \RuntimeException
+     * @expectedExceptionMessage Not enough arguments
+     */
+    public function testWrongParameter()
+    {
+        $commandTester = new CommandTester($this->command);
+        $commandTester->execute([]);
+    }
+}
diff --git a/app/code/Magento/Developer/etc/di.xml b/app/code/Magento/Developer/etc/di.xml
index 850b8c2f609f9a895374f3e402f7a3a8de9f00bc..e04c00e615f56f5fb52dfeb108545e2b690d66c3 100644
--- a/app/code/Magento/Developer/etc/di.xml
+++ b/app/code/Magento/Developer/etc/di.xml
@@ -35,4 +35,10 @@
             </argument>
         </arguments>
     </type>
+    <type name="Magento\Developer\Console\Command\XmlConverterCommand">
+        <arguments>
+            <argument name="domXml" xsi:type="object" shared="false">DOMDocument</argument>
+            <argument name="domXsl" xsi:type="object" shared="false">DOMDocument</argument>
+        </arguments>
+    </type>
 </config>
diff --git a/dev/tools/Magento/Tools/Layout/Reference/Processor.php b/dev/tools/Magento/Tools/Layout/Reference/Processor.php
deleted file mode 100644
index 4ca794104d8ad659bb0f35d4da2e568199d31b30..0000000000000000000000000000000000000000
--- a/dev/tools/Magento/Tools/Layout/Reference/Processor.php
+++ /dev/null
@@ -1,195 +0,0 @@
-<?php
-/**
- * Copyright © 2015 Magento. All rights reserved.
- * See COPYING.txt for license details.
- */
-namespace Magento\Tools\Layout\Reference;
-
-use Magento\Tools\Layout\Formatter;
-
-/**
- * Processor
- */
-class Processor
-{
-    /**
-     * @var Formatter
-     */
-    protected $_formatter;
-
-    /**
-     * @var \SimpleXMLElement
-     */
-    protected $_referenceList;
-
-    /**
-     * @var string
-     */
-    protected $_referencesFile;
-
-    /**
-     * @var array
-     */
-    protected $_referencePattern = [
-        'reference' => '//reference[@name]',
-        'block' => '//block[@name]',
-        'container' => '//container[@name]',
-    ];
-
-    /**
-     * @param Formatter $formatter
-     * @param string $referencesFile
-     */
-    public function __construct(Formatter $formatter, $referencesFile)
-    {
-        $this->_formatter = $formatter;
-        $this->_referencesFile = $referencesFile;
-        $contents = '<list/>';
-        if (file_exists($referencesFile)) {
-            $contents = file_get_contents($referencesFile);
-        }
-        $this->_referenceList = new \SimpleXMLElement($contents);
-    }
-
-    /**
-     * Create list from array
-     *
-     * @param array $data
-     * @param string $type
-     * @return Processor
-     */
-    protected function _addElements($data, $type)
-    {
-        array_walk_recursive(
-            $data,
-            function ($value) use ($type) {
-                if (!$this->_referenceList->xpath("//item[@type='{$type}' and @value='{$value}']")) {
-                    $element = $this->_referenceList->addChild('item');
-                    $element->addAttribute('type', $type);
-                    $element->addAttribute('value', $value);
-                }
-            }
-        );
-
-        return $this;
-    }
-
-    /**
-     * Get layout file from Magento root directory
-     *
-     * @param string $path
-     * @return string[]
-     */
-    public function getLayoutFiles($path)
-    {
-        $result = [];
-        $patterns = [
-            '/app/design/*/*/*/layout/*.xml',
-            '/app/design/*/*/*/layout/*/*.xml',
-            '/app/design/*/*/*/layout/*/*/*/*.xml',
-            '/app/design/*/*/*/layout/*/*/*/*/*.xml',
-            '/app/design/*/*/*/layout/*/*/*/*/*/*.xml',
-            '/app/code/*/*/*/*/layout/*.xml',
-            '/app/code/*/*/*/*/layout/*/*.xml',
-            '/app/code/*/*/*/*/layout/*/*/*/*.xml',
-            '/app/code/*/*/*/*/layout/*/*/*/*/*.xml',
-            '/app/code/*/*/*/*/layout/*/*/*/*/*/*.xml',
-        ];
-
-        foreach ($patterns as $pattern) {
-            $result = array_merge($result, glob($path . $pattern));
-        }
-        return $result;
-    }
-
-    /**
-     * Retrieve references and referenced names from $layouts files and
-     *
-     * @param array $layouts
-     * @return Processor
-     * @throws \Exception
-     */
-    public function getReferences($layouts)
-    {
-        if (empty($layouts)) {
-            throw new \Exception("No layouts found");
-        }
-        $references = [];
-        foreach ($this->_referencePattern as $patternName => $xpath) {
-            $result = [];
-            foreach ($layouts as $layout) {
-                $xml = simplexml_load_file($layout);
-                $nodes = $xml->xpath($xpath);
-                foreach ($nodes as $node) {
-                    $result[(string)$node['name']] = '';
-                }
-            }
-            $resultPrint = array_keys($result);
-            sort($resultPrint);
-            $references[$patternName] = $resultPrint;
-        }
-
-        $conflictReferences = $references['reference'];
-        foreach ($references as $key => $names) {
-            $this->_addElements($names, $key);
-            if ($key != 'reference') {
-                $conflictReferences = array_diff($conflictReferences, $names);
-            }
-        }
-        $this->_addElements($conflictReferences, 'conflictReferences');
-        $this->_addElements(array_intersect($references['block'], $references['container']), 'conflictNames');
-        return $this;
-    }
-
-    /**
-     * Update layout files to new format of references using $processor
-     *
-     * @param array $layouts
-     * @param string $processor
-     * @param bool $overwrite
-     * @return void
-     */
-    public function updateReferences($layouts, $processor = '', $overwrite = true)
-    {
-        if (empty($processor)) {
-            $processor = __DIR__ . '/../processors/layoutReferences.xsl';
-        }
-        if (!file_exists($processor)) {
-            return;
-        }
-        $stylesheet = new \DOMDocument();
-        $stylesheet->preserveWhiteSpace = true;
-        $stylesheet->load($processor);
-
-        $xslt = new \XSLTProcessor();
-        $xslt->registerPHPFunctions();
-        $xslt->importStylesheet($stylesheet);
-        $xslt->setParameter('', 'referencesFile', str_replace('\\', '/', $this->_referencesFile));
-
-        foreach ($layouts as $layout) {
-            $doc = new \DOMDocument();
-            $doc->preserveWhiteSpace = true;
-            $doc->load($layout);
-
-            $transformedDoc = $xslt->transformToXml($doc);
-            $result = $this->_formatter->format($transformedDoc);
-            if ($overwrite) {
-                file_put_contents($layout, $result);
-            } else {
-                echo $result;
-            }
-        }
-    }
-
-    /**
-     * Write reference list to the file
-     *
-     * @return Processor
-     */
-    public function writeToFile()
-    {
-        $result = $this->_formatter->format($this->_referenceList->asXML());
-        file_put_contents($this->_referencesFile, $result);
-        return $this;
-    }
-}
diff --git a/dev/tools/layout/processors/addItemRenderer.xsl b/dev/tools/Magento/Tools/Layout/processors/addItemRenderer.xsl
similarity index 100%
rename from dev/tools/layout/processors/addItemRenderer.xsl
rename to dev/tools/Magento/Tools/Layout/processors/addItemRenderer.xsl
diff --git a/dev/tools/layout/processors/headBlocks.xsl b/dev/tools/Magento/Tools/Layout/processors/headBlocks.xsl
similarity index 100%
rename from dev/tools/layout/processors/headBlocks.xsl
rename to dev/tools/Magento/Tools/Layout/processors/headBlocks.xsl
diff --git a/dev/tools/Magento/Tools/Layout/reference.php b/dev/tools/Magento/Tools/Layout/reference.php
deleted file mode 100644
index 9c239f00993c3048121d3ca9a2c84e772211f397..0000000000000000000000000000000000000000
--- a/dev/tools/Magento/Tools/Layout/reference.php
+++ /dev/null
@@ -1,67 +0,0 @@
-<?php
-/**
- * Copyright © 2015 Magento. All rights reserved.
- * See COPYING.txt for license details.
- */
-require __DIR__ . '/../../../bootstrap.php';
-$rootDir = realpath(__DIR__ . '/../../../../../');
-use Magento\Tools\Layout\Formatter;
-use Magento\Tools\Layout\Reference\Processor;
-
-try {
-    $opt = new \Zend_Console_Getopt(
-        [
-            'dir=s' => "Directory to process(optional, default {$rootDir})",
-            'file|f=s' => 'File to process(optional)',
-            'overwrite|o' => 'Overwrite file',
-            'collect|c' => 'Collect names for a dictionary',
-            'process|p' => 'Process references using dictionary',
-            'dictionary|d=s' => 'Dictionary file (required)',
-            'processor=s' => 'Processor file (optional)',
-        ]
-    );
-    $opt->parse();
-
-    if ($opt->dir) {
-        $rootDir = realpath($opt->dir);
-    }
-    if (!file_exists($rootDir) || !is_dir($rootDir)) {
-        throw new \Exception("Directory to process ({$rootDir}) not found");
-    }
-    if (empty($opt->dictionary)) {
-        throw new \Exception("Dictionary file is required");
-    }
-
-    if (!empty($opt->process) && empty($opt->file) && empty($opt->overwrite)) {
-        throw new \Exception("Overwrite option is required if you going to process multiple files");
-    }
-
-    if (!file_exists($opt->dictionary)) {
-        touch($opt->dictionary);
-    }
-
-    $processor = new Processor(new Formatter(), realpath($opt->dictionary));
-
-    $layouts = [];
-    if (!empty($opt->file) && file_exists($opt->file)) {
-        $layouts = [realpath($opt->file)];
-    } else {
-        $layouts = $processor->getLayoutFiles($rootDir);
-    }
-
-    if ($opt->collect) {
-        $processor->getReferences($layouts)->writeToFile();
-    }
-
-    if ($opt->process) {
-        $processor->updateReferences($layouts, $opt->processor, $opt->overwrite);
-    }
-
-    exit(0);
-} catch (\Zend_Console_Getopt_Exception $e) {
-    echo $e->getUsageMessage();
-    exit(255);
-} catch (\Exception $e) {
-    echo $e, PHP_EOL;
-    exit(255);
-}
diff --git a/dev/tools/Magento/Tools/Layout/xmlUpdater.php b/dev/tools/Magento/Tools/Layout/xmlUpdater.php
deleted file mode 100644
index 7233f568ef95b7e86dbdb7aa82211f2970330be8..0000000000000000000000000000000000000000
--- a/dev/tools/Magento/Tools/Layout/xmlUpdater.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-/**
- * Copyright © 2015 Magento. All rights reserved.
- * See COPYING.txt for license details.
- */
-$basePath = realpath(__DIR__ . '/../../../../../');
-require_once $basePath . '/app/autoload.php';
-require __DIR__ . '/Formatter.php';
-
-try {
-    $opt = new \Zend_Console_Getopt(
-        [
-            'file|f=s' => 'File to process(required)',
-            'processor|p=s' => 'Processor file (required)',
-            'overwrite|o' => 'Overwrite file',
-        ]
-    );
-    $opt->parse();
-
-    $doc = new \DOMDocument();
-    $doc->preserveWhiteSpace = true;
-    $doc->load($opt->file);
-
-    $stylesheet = new \DOMDocument();
-    $stylesheet->preserveWhiteSpace = true;
-    $stylesheet->load($opt->processor);
-
-    $formater = new \Magento\Tools\Layout\Formatter();
-
-    $xslt = new XSLTProcessor();
-    $xslt->registerPHPFunctions();
-    $xslt->importStylesheet($stylesheet);
-    $transformedDoc = $xslt->transformToXml($doc);
-    $result = $formater->format($transformedDoc);
-    if ($opt->overwrite) {
-        file_put_contents($opt->file, $result);
-    } else {
-        echo $result;
-    }
-    exit(0);
-} catch (\Zend_Console_Getopt_Exception $e) {
-    echo $e->getUsageMessage();
-    exit(255);
-} catch (\Exception $e) {
-    echo $e, PHP_EOL;
-    exit(255);
-}
diff --git a/dev/tools/layout/xml-updater.php b/dev/tools/layout/xml-updater.php
deleted file mode 100644
index 700f28d45fcc3e2b164fe1839df2992adabbfa0e..0000000000000000000000000000000000000000
--- a/dev/tools/layout/xml-updater.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-/**
- * Copyright © 2015 Magento. All rights reserved.
- * See COPYING.txt for license details.
- */
-$basePath = realpath(__DIR__ . '/../../../');
-require_once $basePath . '/app/autoload.php';
-require __DIR__ . '/Formatter.php';
-
-try {
-    $opt = new Zend_Console_Getopt([
-        'file|f=s' => 'File to process(required)',
-        'processor|p=s' => 'Processor file (required)',
-        'overwrite|o' => 'Overwrite file',
-    ]);
-    $opt->parse();
-
-    $doc  = new DOMDocument();
-    $doc->preserveWhiteSpace = true;
-    $doc->load($opt->file);
-
-    $stylesheet = new DOMDocument();
-    $stylesheet->preserveWhiteSpace = true;
-    $stylesheet->load($opt->processor);
-
-    $formater = new \Magento\Tools\Layout\Formatter();
-
-    $xslt = new XSLTProcessor();
-    $xslt->registerPHPFunctions();
-    $xslt->importStylesheet($stylesheet);
-    $transformedDoc = $xslt->transformToXml($doc);
-    $result = $formater->format($transformedDoc);
-    if ($opt->overwrite) {
-        file_put_contents($opt->file, $result);
-    } else {
-        echo $result;
-    }
-    exit(0);
-} catch (Zend_Console_Getopt_Exception $e) {
-    echo $e->getUsageMessage();
-    exit(255);
-} catch (Exception $e) {
-    echo $e, PHP_EOL;
-    exit(255);
-}