diff --git a/app/code/Magento/Indexer/Test/Unit/Model/Config/DataTest.php b/app/code/Magento/Indexer/Test/Unit/Model/Config/DataTest.php
index 9096bb8af1b822f493961c9a28f155202aa1c2b0..7ab42a5b914bb88c024da261e2a78a6c5839078d 100644
--- a/app/code/Magento/Indexer/Test/Unit/Model/Config/DataTest.php
+++ b/app/code/Magento/Indexer/Test/Unit/Model/Config/DataTest.php
@@ -95,15 +95,15 @@ class DataTest extends \PHPUnit_Framework_TestCase
 
     public function testConstructorWithCache()
     {
-        $jsonString = json_encode($this->indexers);
+        $serializedData = 'serialized data';
         $this->cache->expects($this->once())->method('test')->with($this->cacheId)->will($this->returnValue(true));
         $this->cache->expects($this->once())
             ->method('load')
             ->with($this->cacheId)
-            ->willReturn($jsonString);
+            ->willReturn($serializedData);
 
         $this->serializerMock->method('unserialize')
-            ->with($jsonString)
+            ->with($serializedData)
             ->willReturn($this->indexers);
 
         $this->stateCollection->expects($this->never())->method('getItems');
diff --git a/lib/internal/Magento/Framework/App/Config/ScopePool.php b/lib/internal/Magento/Framework/App/Config/ScopePool.php
index 018e21f86a7826000d7792ddf6c93c29c155ed37..4b4be9cfc53105e25b1cc195b9bc0c714e05ae13 100644
--- a/lib/internal/Magento/Framework/App/Config/ScopePool.php
+++ b/lib/internal/Magento/Framework/App/Config/ScopePool.php
@@ -7,6 +7,7 @@ namespace Magento\Framework\App\Config;
 
 use Magento\Framework\App\RequestInterface;
 use Magento\Framework\Serialize\SerializerInterface;
+use Magento\Framework\Serialize\Serializer\Serialize;
 
 /**
  * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
@@ -168,9 +169,8 @@ class ScopePool
      */
     private function getSerializer()
     {
-        if ($this->serializer === null) {
-            $this->serializer = \Magento\Framework\App\ObjectManager::getInstance()
-                ->get(SerializerInterface::class);
+        if (null === $this->serializer) {
+            $this->serializer = \Magento\Framework\App\ObjectManager::getInstance()->get(Serialize::class);
         }
         return $this->serializer;
     }
diff --git a/lib/internal/Magento/Framework/App/ObjectManager/ConfigCache.php b/lib/internal/Magento/Framework/App/ObjectManager/ConfigCache.php
index dbb3bed895697bf9a1d5d85602303c72c224b197..4e685e3472ef8305095c150088b77efc94964244 100644
--- a/lib/internal/Magento/Framework/App/ObjectManager/ConfigCache.php
+++ b/lib/internal/Magento/Framework/App/ObjectManager/ConfigCache.php
@@ -8,6 +8,7 @@
 namespace Magento\Framework\App\ObjectManager;
 
 use Magento\Framework\Serialize\SerializerInterface;
+use Magento\Framework\Serialize\Serializer\Serialize;
 
 class ConfigCache implements \Magento\Framework\ObjectManager\ConfigCacheInterface
 {
@@ -24,7 +25,7 @@ class ConfigCache implements \Magento\Framework\ObjectManager\ConfigCacheInterfa
     protected $_prefix = 'diConfig';
 
     /**
-     * @var \Magento\Framework\Serialize\SerializerInterface
+     * @var SerializerInterface
      */
     private $serializer;
 
@@ -62,14 +63,13 @@ class ConfigCache implements \Magento\Framework\ObjectManager\ConfigCacheInterfa
     /**
      * Get serializer
      *
-     * @return \Magento\Framework\Serialize\SerializerInterface
+     * @return SerializerInterface
      * @deprecated
      */
     private function getSerializer()
     {
-        if ($this->serializer === null) {
-            $this->serializer = \Magento\Framework\App\ObjectManager::getInstance()
-                ->get(SerializerInterface::class);
+        if (null === $this->serializer) {
+            $this->serializer = \Magento\Framework\App\ObjectManager::getInstance()->get(Serialize::class);
         }
         return $this->serializer;
     }
diff --git a/lib/internal/Magento/Framework/App/ObjectManager/ConfigLoader.php b/lib/internal/Magento/Framework/App/ObjectManager/ConfigLoader.php
index 2cfa2b006ff1ecc04c735226ba98867e7c23d5a9..2770443b6d7e28bc1565c6a79372402f5e196fee 100644
--- a/lib/internal/Magento/Framework/App/ObjectManager/ConfigLoader.php
+++ b/lib/internal/Magento/Framework/App/ObjectManager/ConfigLoader.php
@@ -8,6 +8,7 @@
 namespace Magento\Framework\App\ObjectManager;
 
 use Magento\Framework\Serialize\SerializerInterface;
+use Magento\Framework\Serialize\Serializer\Serialize;
 use Magento\Framework\ObjectManager\ConfigLoaderInterface;
 
 class ConfigLoader implements ConfigLoaderInterface
@@ -34,7 +35,7 @@ class ConfigLoader implements ConfigLoaderInterface
     protected $_cache;
 
     /**
-     * @var \Magento\Framework\Serialize\SerializerInterface
+     * @var SerializerInterface
      */
     private $serializer;
 
@@ -82,16 +83,15 @@ class ConfigLoader implements ConfigLoaderInterface
     }
 
     /**
-     * Get json encoder/decoder
+     * Get serializer
      *
      * @return SerializerInterface
      * @deprecated
      */
     private function getSerializer()
     {
-        if ($this->serializer === null) {
-            $this->serializer = \Magento\Framework\App\ObjectManager::getInstance()
-                ->get(SerializerInterface::class);
+        if (null === $this->serializer) {
+            $this->serializer = \Magento\Framework\App\ObjectManager::getInstance()->get(Serialize::class);
         }
         return $this->serializer;
     }
diff --git a/lib/internal/Magento/Framework/App/ObjectManager/ConfigLoader/Compiled.php b/lib/internal/Magento/Framework/App/ObjectManager/ConfigLoader/Compiled.php
index d1dc30ee7c9efc14554338eea9b6b00745e2e048..f39904988328dcdfd108ab5cc7e8753a5d164724 100644
--- a/lib/internal/Magento/Framework/App/ObjectManager/ConfigLoader/Compiled.php
+++ b/lib/internal/Magento/Framework/App/ObjectManager/ConfigLoader/Compiled.php
@@ -18,11 +18,6 @@ class Compiled implements ConfigLoaderInterface
      */
     private $configCache = [];
 
-    /**
-     * @var \Magento\Framework\Serialize\SerializerInterface
-     */
-    private $serializer;
-
     /**
      * {inheritdoc}
      */
@@ -31,7 +26,7 @@ class Compiled implements ConfigLoaderInterface
         if (isset($this->configCache[$area])) {
             return $this->configCache[$area];
         }
-        $this->configCache[$area] = $this->getSerializer()->unserialize(\file_get_contents(self::getFilePath($area)));
+        $this->configCache[$area] = unserialize(\file_get_contents(self::getFilePath($area)));
         return $this->configCache[$area];
     }
 
@@ -44,20 +39,6 @@ class Compiled implements ConfigLoaderInterface
     public static function getFilePath($area)
     {
         $diPath = DirectoryList::getDefaultConfig()[DirectoryList::DI][DirectoryList::PATH];
-        return BP . $diPath . '/' . $area . '.json';
-    }
-
-    /**
-     * Get serializer
-     *
-     * @return \Magento\Framework\Serialize\SerializerInterface
-     * @deprecated
-     */
-    private function getSerializer()
-    {
-        if ($this->serializer === null) {
-            $this->serializer = new \Magento\Framework\Serialize\Serializer\Json();
-        }
-        return $this->serializer;
+        return BP . '/' . $diPath . '/' . $area . '.json';
     }
 }
diff --git a/lib/internal/Magento/Framework/App/Router/ActionList.php b/lib/internal/Magento/Framework/App/Router/ActionList.php
index dbfc9d2b9f502ed85c15e09309cb93d87aad8681..c31059a1462242805c68858793e0d301e1a94fc5 100644
--- a/lib/internal/Magento/Framework/App/Router/ActionList.php
+++ b/lib/internal/Magento/Framework/App/Router/ActionList.php
@@ -7,6 +7,7 @@
 namespace Magento\Framework\App\Router;
 
 use Magento\Framework\Serialize\SerializerInterface;
+use Magento\Framework\Serialize\Serializer\Serialize;
 use Magento\Framework\Module\Dir\Reader as ModuleReader;
 
 class ActionList
@@ -102,14 +103,13 @@ class ActionList
     /**
      * Get serializer
      *
-     * @return \Magento\Framework\Serialize\SerializerInterface
+     * @return SerializerInterface
      * @deprecated
      */
     private function getSerializer()
     {
-        if ($this->serializer === null) {
-            $this->serializer = \Magento\Framework\App\ObjectManager::getInstance()
-                ->get(SerializerInterface::class);
+        if (null === $this->serializer) {
+            $this->serializer = \Magento\Framework\App\ObjectManager::getInstance()->get(Serialize::class);
         }
         return $this->serializer;
     }
diff --git a/lib/internal/Magento/Framework/App/Test/Unit/Config/ScopePoolTest.php b/lib/internal/Magento/Framework/App/Test/Unit/Config/ScopePoolTest.php
index 06f35c94a466185aa883c07c4f8696251ee8a8a2..b0465f28e24f1c64c87225304265b5059ba95b0e 100644
--- a/lib/internal/Magento/Framework/App/Test/Unit/Config/ScopePoolTest.php
+++ b/lib/internal/Magento/Framework/App/Test/Unit/Config/ScopePoolTest.php
@@ -113,14 +113,14 @@ class ScopePoolTest extends \PHPUnit_Framework_TestCase
             ->method('read')
             ->with('testScope')
             ->willReturn($data);
-        $jsonString = json_encode($data);
+        $serializedData = 'serialized data';
         $this->serializerMock->method('serialize')
             ->with($data)
-            ->willReturn($jsonString);
+            ->willReturn($serializedData);
         $this->_cache->expects($this->once())
             ->method('save')
             ->with(
-                $jsonString,
+                $serializedData,
                 $cacheKey,
                 [\Magento\Framework\App\Config\ScopePool::CACHE_TAG]
             );
diff --git a/lib/internal/Magento/Framework/App/Test/Unit/ObjectManager/ConfigCacheTest.php b/lib/internal/Magento/Framework/App/Test/Unit/ObjectManager/ConfigCacheTest.php
index 21dce94bb6c73a6962b30636e14b3cf97a2f2319..7f05857f7cc816c9e5b0be56ae3ff520ac38efa4 100644
--- a/lib/internal/Magento/Framework/App/Test/Unit/ObjectManager/ConfigCacheTest.php
+++ b/lib/internal/Magento/Framework/App/Test/Unit/ObjectManager/ConfigCacheTest.php
@@ -72,7 +72,7 @@ class ConfigCacheTest extends \PHPUnit_Framework_TestCase
     {
         return [
             [false, false],
-            ['["some data"]', ['some data']],
+            ['serialized data', ['some data']],
         ];
     }
 
@@ -80,10 +80,11 @@ class ConfigCacheTest extends \PHPUnit_Framework_TestCase
     {
         $key = 'key';
         $config = ['config'];
+        $serializedData = 'serialized data';
         $this->serializerMock->expects($this->once())
             ->method('serialize')
-            ->willReturn('["config"]');
-        $this->cacheFrontendMock->expects($this->once())->method('save')->with('["config"]', 'diConfig' . $key);
+            ->willReturn($serializedData);
+        $this->cacheFrontendMock->expects($this->once())->method('save')->with($serializedData, 'diConfig' . $key);
         $this->configCache->save($config, $key);
     }
 }
diff --git a/lib/internal/Magento/Framework/App/Test/Unit/ObjectManager/ConfigLoaderTest.php b/lib/internal/Magento/Framework/App/Test/Unit/ObjectManager/ConfigLoaderTest.php
index bb048218a768ae40d93375a0a260188d6613f020..90dba092f054e04370604d061e1eb6b5088300d2 100644
--- a/lib/internal/Magento/Framework/App/Test/Unit/ObjectManager/ConfigLoaderTest.php
+++ b/lib/internal/Magento/Framework/App/Test/Unit/ObjectManager/ConfigLoaderTest.php
@@ -88,7 +88,7 @@ class ConfigLoaderTest extends \PHPUnit_Framework_TestCase
     public function testLoadNotCached($area)
     {
         $configData = ['some' => 'config', 'data' => 'value'];
-        $serializedConfigData = '{"some":"config","data":"value"}';
+        $serializedData = 'serialized data';
 
         $this->cacheMock->expects($this->once())
             ->method('load')
@@ -97,12 +97,12 @@ class ConfigLoaderTest extends \PHPUnit_Framework_TestCase
 
         $this->cacheMock->expects($this->once())
             ->method('save')
-            ->with($serializedConfigData);
+            ->with($serializedData);
         $this->readerMock->expects($this->once())->method('read')->with($area)->will($this->returnValue($configData));
 
         $this->serializerMock->expects($this->once())
             ->method('serialize')
-            ->willReturn($serializedConfigData);
+            ->willReturn($serializedData);
 
         $this->serializerMock->expects($this->never())->method('unserialize');
 
@@ -126,17 +126,17 @@ class ConfigLoaderTest extends \PHPUnit_Framework_TestCase
     public function testLoadCached()
     {
         $configData = ['some' => 'config', 'data' => 'value'];
-        $serializedConfigData = '{"some":"config","data":"value"}';
+        $serializedData = 'serialized data';
 
         $this->cacheMock->expects($this->once())
             ->method('load')
-            ->willReturn($serializedConfigData);
+            ->willReturn($serializedData);
         $this->cacheMock->expects($this->never())
             ->method('save');
         $this->readerMock->expects($this->never())->method('read');
         $this->serializerMock->expects($this->once())
             ->method('unserialize')
-            ->with($serializedConfigData)
+            ->with($serializedData)
             ->willReturn($configData);
         $this->serializerMock->expects($this->never())->method('serialize');
         $this->assertEquals($configData, $this->object->load('testArea'));
diff --git a/lib/internal/Magento/Framework/Config/Test/Unit/Data/ScopedTest.php b/lib/internal/Magento/Framework/Config/Test/Unit/Data/ScopedTest.php
index 2b0a677b51848ca8909cfd53ed5343617b19c958..f07eaad289fb330af41566e1d9770ee71b01f584 100644
--- a/lib/internal/Magento/Framework/Config/Test/Unit/Data/ScopedTest.php
+++ b/lib/internal/Magento/Framework/Config/Test/Unit/Data/ScopedTest.php
@@ -102,7 +102,7 @@ class ScopedTest extends \PHPUnit_Framework_TestCase
     public function testGetScopeSwitchingWithNonCachedData()
     {
         $testValue = ['some' => 'testValue'];
-        $jsonString = '{"some":"testValue"}';
+        $serializedData = 'serialized data';
 
         /** change current area */
         $this->_configScopeMock->expects(
@@ -137,12 +137,12 @@ class ScopedTest extends \PHPUnit_Framework_TestCase
 
         $this->serializerMock->method('serialize')
             ->with($testValue)
-            ->willReturn($jsonString);
+            ->willReturn($serializedData);
 
         /** test cache saving  */
         $this->_cacheMock->expects($this->once())
             ->method('save')
-            ->with($jsonString, 'adminhtml::tag');
+            ->with($serializedData, 'adminhtml::tag');
 
         /** test config value existence */
         $this->assertEquals('testValue', $this->_model->get('some'));
@@ -154,7 +154,7 @@ class ScopedTest extends \PHPUnit_Framework_TestCase
     public function testGetScopeSwitchingWithCachedData()
     {
         $testValue = ['some' => 'testValue'];
-        $jsonString = '{"some":"testValue"}';
+        $serializedData = 'serialized data';
 
         /** change current area */
         $this->_configScopeMock->expects(
@@ -166,14 +166,14 @@ class ScopedTest extends \PHPUnit_Framework_TestCase
         );
 
         $this->serializerMock->method('unserialize')
-            ->with($jsonString)
+            ->with($serializedData)
             ->willReturn($testValue);
 
         /** set cache data */
         $this->_cacheMock->expects($this->once())
             ->method('load')
             ->with('adminhtml::tag')
-            ->willReturn($jsonString);
+            ->willReturn($serializedData);
 
         /** test preventing of getting data from reader  */
         $this->_readerMock->expects($this->never())->method('read');
diff --git a/lib/internal/Magento/Framework/Interception/Config/Config.php b/lib/internal/Magento/Framework/Interception/Config/Config.php
index a536a8c759432f60ef73658b50638fa158ec479d..25039b5e09c839753d72fcf6a7ec3977857990c5 100644
--- a/lib/internal/Magento/Framework/Interception/Config/Config.php
+++ b/lib/internal/Magento/Framework/Interception/Config/Config.php
@@ -8,6 +8,7 @@
 namespace Magento\Framework\Interception\Config;
 
 use Magento\Framework\Serialize\SerializerInterface;
+use Magento\Framework\Serialize\Serializer\Serialize;
 
 class Config implements \Magento\Framework\Interception\ConfigInterface
 {
@@ -193,7 +194,7 @@ class Config implements \Magento\Framework\Interception\ConfigInterface
     {
         if ($this->serializer === null) {
             $this->serializer = \Magento\Framework\App\ObjectManager::getInstance()
-                ->get(SerializerInterface::class);
+                ->get(Serialize::class);
         }
         return $this->serializer;
     }
diff --git a/lib/internal/Magento/Framework/Interception/PluginList/PluginList.php b/lib/internal/Magento/Framework/Interception/PluginList/PluginList.php
index 5d67a9077b2cfcf5b3805356ff5ff33b6161cade..e3ee36ac3c7a841e9f8e429eb679256495632565 100644
--- a/lib/internal/Magento/Framework/Interception/PluginList/PluginList.php
+++ b/lib/internal/Magento/Framework/Interception/PluginList/PluginList.php
@@ -17,6 +17,8 @@ use Magento\Framework\Interception\ObjectManager\ConfigInterface;
 use Magento\Framework\ObjectManager\RelationsInterface;
 use Magento\Framework\ObjectManager\DefinitionInterface as ClassDefinitions;
 use Magento\Framework\ObjectManagerInterface;
+use Magento\Framework\Serialize\SerializerInterface;
+use Magento\Framework\Serialize\Serializer\Serialize;
 
 /**
  * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
@@ -375,7 +377,7 @@ class PluginList extends Scoped implements InterceptionPluginList
     }
 
     /**
-     * Returns logger instance
+     * Get logger
      *
      * @deprecated
      * @return \Psr\Log\LoggerInterface
@@ -387,4 +389,18 @@ class PluginList extends Scoped implements InterceptionPluginList
         }
         return $this->logger;
     }
+
+    /**
+     * Get serializer
+     *
+     * @return SerializerInterface
+     * @deprecated
+     */
+    protected function getSerializer()
+    {
+        if (null === $this->serializer) {
+            $this->serializer = \Magento\Framework\App\ObjectManager::getInstance()->get(Serialize::class);
+        }
+        return $this->serializer;
+    }
 }
diff --git a/lib/internal/Magento/Framework/Interception/Test/Unit/Config/ConfigTest.php b/lib/internal/Magento/Framework/Interception/Test/Unit/Config/ConfigTest.php
index 7ff809810cc0814c4890601092eb71de4939473b..22c935b176d3cf2b0141a8551bcad0a60d62b7b7 100644
--- a/lib/internal/Magento/Framework/Interception/Test/Unit/Config/ConfigTest.php
+++ b/lib/internal/Magento/Framework/Interception/Test/Unit/Config/ConfigTest.php
@@ -7,6 +7,7 @@
 namespace Magento\Framework\Interception\Test\Unit\Config;
 
 use Magento\Framework\Serialize\SerializerInterface;
+use Magento\Framework\Serialize\Serializer\Serialize;
 
 require_once __DIR__ . '/../Custom/Module/Model/Item.php';
 require_once __DIR__ . '/../Custom/Module/Model/Item/Enhanced.php';
@@ -77,7 +78,7 @@ class ConfigTest extends \PHPUnit_Framework_TestCase
         );
         $this->serializerMock = $this->getMock(SerializerInterface::class);
         $this->objectManagerHelper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
-        $this->mockObjectManager([SerializerInterface::class => $this->serializerMock]);
+        $this->mockObjectManager([Serialize::class => $this->serializerMock]);
     }
 
     protected function tearDown()
diff --git a/lib/internal/Magento/Framework/Interception/Test/Unit/PluginList/PluginListTest.php b/lib/internal/Magento/Framework/Interception/Test/Unit/PluginList/PluginListTest.php
index dd0d2f68ac6ade78df90ca67931b491c9697b852..f70af781df6432e57e3e5d4af2a70e148da3643b 100644
--- a/lib/internal/Magento/Framework/Interception/Test/Unit/PluginList/PluginListTest.php
+++ b/lib/internal/Magento/Framework/Interception/Test/Unit/PluginList/PluginListTest.php
@@ -274,7 +274,7 @@ class PluginListTest extends \PHPUnit_Framework_TestCase
             ->will($this->returnValue('scope'));
 
         $data = [['key'], ['key'], ['key']];
-        $serializedData = '[["key"],["key"],["key"]]';
+        $serializedData = 'serialized data';
 
         $this->serializerMock->expects($this->never())
             ->method('serialize');
diff --git a/lib/internal/Magento/Framework/ObjectManager/Config/Compiled.php b/lib/internal/Magento/Framework/ObjectManager/Config/Compiled.php
index 95331616b5b9f264ca0cdb08d690f8b3bbdf1ac0..aa1fd86dbf7cf440b30d47a9da2351cfe80c9494 100644
--- a/lib/internal/Magento/Framework/ObjectManager/Config/Compiled.php
+++ b/lib/internal/Magento/Framework/ObjectManager/Config/Compiled.php
@@ -7,6 +7,7 @@
 namespace Magento\Framework\ObjectManager\Config;
 
 use Magento\Framework\Serialize\SerializerInterface;
+use Magento\Framework\Serialize\Serializer\Serialize;
 use Magento\Framework\ObjectManager\ConfigCacheInterface;
 use Magento\Framework\ObjectManager\RelationsInterface;
 
diff --git a/lib/internal/Magento/Framework/ObjectManager/Test/Unit/Config/ConfigTest.php b/lib/internal/Magento/Framework/ObjectManager/Test/Unit/Config/ConfigTest.php
index 11dd0aeff1b6394ee87a5ac7e8b532c58c16ff74..4cc51652fdb74454fde50182a3062b53b5616dc5 100644
--- a/lib/internal/Magento/Framework/ObjectManager/Test/Unit/Config/ConfigTest.php
+++ b/lib/internal/Magento/Framework/ObjectManager/Test/Unit/Config/ConfigTest.php
@@ -52,10 +52,8 @@ class ConfigTest extends \PHPUnit_Framework_TestCase
 
         $config = new Config(null, $definitions);
         $serializerMock = $this->getMock(SerializerInterface::class);
-        $serializerMock->method('serialize')
-            ->willReturnCallback(function ($data) {
-                return json_encode($data, true);
-            });
+        $serializerMock->expects($this->exactly(2))
+            ->method('serialize');
         $this->objectManagerHelper->setBackwardCompatibleProperty(
             $config,
             'serializer',
diff --git a/lib/internal/Magento/Framework/Serialize/README.md b/lib/internal/Magento/Framework/Serialize/README.md
index e636fc79818af6f749745cde1f2d76fea0473dcf..5af8fb7f71b6b174855cb39d004ea29cb6d518a3 100644
--- a/lib/internal/Magento/Framework/Serialize/README.md
+++ b/lib/internal/Magento/Framework/Serialize/README.md
@@ -1,5 +1,8 @@
 # Serialize
 
-**Serialize** libaray provides *SerializerInterface* and multiple implementations of serializer to support different kinds of needs of serializing/unserializing of data. Here are list of serializers in this library:
+**Serialize** library provides interface *SerializerInterface* and multiple implementations:
 
- * **Json** (default) - It can be used to serialize string, integer, float, boolean, or array data to json string; it unserializes json string to string, integer, float, boolean, or array. This is the recommended serializer. 
\ No newline at end of file
+ * *Json* - default implementation. Uses PHP native json_encode/json_decode functions;
+ * *Serialize* - less secure than *Json*, but gives higher performance on big arrays. Uses PHP native serialize/unserialize functions, does not unserialize objects on PHP 7.
+ 
+Using *Serialize* implementation directly is discouraged, always use *SerializerInterface*, using *Serialize* implementation may lead to security vulnerabilities.
\ No newline at end of file
diff --git a/lib/internal/Magento/Framework/Serialize/Serializer/Serialize.php b/lib/internal/Magento/Framework/Serialize/Serializer/Serialize.php
new file mode 100644
index 0000000000000000000000000000000000000000..ef400e43e3c0e9d1e079dd1e5278e3f05dd3085b
--- /dev/null
+++ b/lib/internal/Magento/Framework/Serialize/Serializer/Serialize.php
@@ -0,0 +1,40 @@
+<?php
+/**
+ * Copyright © 2016 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Framework\Serialize\Serializer;
+
+use Magento\Framework\Serialize\SerializerInterface;
+
+class Serialize implements SerializerInterface
+{
+    /**
+     * {@inheritDoc}
+     */
+    public function serialize($data)
+    {
+        return serialize($data);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public function unserialize($string)
+    {
+        if ($this->getPhpVersion() >= 7) {
+            return unserialize($string, ['allowed_classes' => false]);
+        }
+        return unserialize($string);
+    }
+
+    /**
+     * Return major PHP version
+     *
+     * @return int
+     */
+    private function getPhpVersion()
+    {
+        return PHP_MAJOR_VERSION;
+    }
+}
diff --git a/lib/internal/Magento/Framework/Serialize/Test/Unit/Serializer/SerializeTest.php b/lib/internal/Magento/Framework/Serialize/Test/Unit/Serializer/SerializeTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..9a9252029d0b6fe76aee787f407089350f59f446
--- /dev/null
+++ b/lib/internal/Magento/Framework/Serialize/Test/Unit/Serializer/SerializeTest.php
@@ -0,0 +1,48 @@
+<?php
+/**
+ * Copyright © 2016 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Framework\Serialize\Test\Unit\Serializer;
+
+use Magento\Framework\Serialize\Serializer\Serialize;
+use Magento\Framework\Serialize\Signer;
+use Psr\Log\LoggerInterface;
+use Magento\Framework\Serialize\InvalidSignatureException;
+
+class SerializeTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var Serialize
+     */
+    private $serialize;
+
+    protected function setUp()
+    {
+        $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
+        $this->serialize = $objectManager->getObject(Serialize::class);
+    }
+
+    /**
+     * @param string|int|bool|array|null $value
+     * @dataProvider serializeUnserializeDataProvider
+     */
+    public function testSerializeUnserialize($value)
+    {
+        $this->assertEquals(
+            $this->serialize->unserialize($this->serialize->serialize($value)),
+            $value
+        );
+    }
+
+    public function serializeUnserializeDataProvider()
+    {
+        return [
+            ['string'],
+            [''],
+            [null],
+            [false],
+            [['a' => 'b']],
+        ];
+    }
+}
diff --git a/lib/internal/Magento/Framework/Unserialize/README.md b/lib/internal/Magento/Framework/Unserialize/README.md
index 971bd6980abb136c2246e4618a8776be8bdaa16d..2dbf7436aa60fbc23b378102418ef4dbc8634e85 100644
--- a/lib/internal/Magento/Framework/Unserialize/README.md
+++ b/lib/internal/Magento/Framework/Unserialize/README.md
@@ -1,2 +1 @@
-Library provides custom unserialize method. Method checks if serialized string contains serialized object and do not
-unserialize it. If string doesn't contain serialized object, method calls native PHP function unserialize.
\ No newline at end of file
+This library is deprecated, please use Magento\Framework\Serialize\SerializerInterface instead.
\ No newline at end of file
diff --git a/lib/internal/Magento/Framework/Unserialize/Unserialize.php b/lib/internal/Magento/Framework/Unserialize/Unserialize.php
index 9d4785915a6dd6b8e3a03b7108fecb21b3b4712a..cfd3e81ca6b0942c879f24994feeb391e3e4cf0b 100644
--- a/lib/internal/Magento/Framework/Unserialize/Unserialize.php
+++ b/lib/internal/Magento/Framework/Unserialize/Unserialize.php
@@ -6,6 +6,9 @@
 
 namespace Magento\Framework\Unserialize;
 
+/**
+ * @deprecated
+ */
 class Unserialize
 {
     /**
diff --git a/setup/src/Magento/Setup/Module/Di/Compiler/Config/Writer/Filesystem.php b/setup/src/Magento/Setup/Module/Di/Compiler/Config/Writer/Filesystem.php
index 3207e590adf9746100da28785106b88e6af51ede..33203df3e7249bf03c51abe4f7553f56f2d4e89b 100644
--- a/setup/src/Magento/Setup/Module/Di/Compiler/Config/Writer/Filesystem.php
+++ b/setup/src/Magento/Setup/Module/Di/Compiler/Config/Writer/Filesystem.php
@@ -8,7 +8,6 @@
 namespace Magento\Setup\Module\Di\Compiler\Config\Writer;
 
 use Magento\Framework\App\Filesystem\DirectoryList;
-use Magento\Framework\Serialize\SerializerInterface;
 use Magento\Setup\Module\Di\Compiler\Config\WriterInterface;
 
 class Filesystem implements WriterInterface
@@ -18,11 +17,6 @@ class Filesystem implements WriterInterface
      */
     private $directoryList;
 
-    /**
-     * @var SerializerInterface
-     */
-    private $serializer;
-
     /**
      * Constructor
      *
@@ -46,7 +40,7 @@ class Filesystem implements WriterInterface
 
         file_put_contents(
             $this->directoryList->getPath(DirectoryList::DI) . '/' . $key  . '.json',
-            $this->getSerializer()->serialize($config)
+            serialize($config)
         );
     }
 
@@ -61,19 +55,4 @@ class Filesystem implements WriterInterface
             mkdir($this->directoryList->getPath(DirectoryList::DI));
         }
     }
-
-    /**
-     * Get serializer
-     *
-     * @return SerializerInterface
-     * @deprecated
-     */
-    private function getSerializer()
-    {
-        if ($this->serializer === null) {
-            $this->serializer = \Magento\Framework\App\ObjectManager::getInstance()
-                ->get(SerializerInterface::class);
-        }
-        return $this->serializer;
-    }
 }