diff --git a/core/core.services.yml b/core/core.services.yml
index 2d00da1..f58e360 100644
--- a/core/core.services.yml
+++ b/core/core.services.yml
@@ -5,6 +5,11 @@ parameters:
     default: keyvalue.database
   factory.keyvalue.expirable:
     default: keyvalue.expirable.database
+  factory.queue: {}
+  reverse_proxy: {}
+  file_chmod: {}
+  session_write_interval: 180
+
 services:
   cache_factory:
     class: Drupal\Core\Cache\CacheFactory
@@ -202,7 +207,7 @@ services:
     arguments: [default]
   file_system:
     class: Drupal\Core\File\FileSystem
-    arguments: ['@stream_wrapper_manager', '@settings', '@logger.channel.file']
+    arguments: ['@stream_wrapper_manager', '%file_chmod%', '@logger.channel.file']
   form_builder:
     class: Drupal\Core\Form\FormBuilder
     arguments: ['@form_validator', '@form_submitter', '@form_cache', '@module_handler', '@event_dispatcher', '@request_stack', '@class_resolver', '@theme.manager', '@?csrf_token']
@@ -277,7 +282,7 @@ services:
     arguments: ['@keyvalue']
   queue:
     class: Drupal\Core\Queue\QueueFactory
-    arguments: ['@settings']
+    arguments: ['%factory.queue%']
     calls:
       - [setContainer, ['@service_container']]
   queue.database:
@@ -478,7 +483,7 @@ services:
     arguments: ['@event_dispatcher', '@controller_resolver', '@request_stack']
   http_middleware.reverse_proxy:
     class: Drupal\Core\StackMiddleware\ReverseProxyMiddleware
-    arguments: ['@settings']
+    arguments: ['%reverse_proxy%']
     tags:
       - { name: http_middleware, priority: 300 }
   http_middleware.page_cache:
@@ -505,7 +510,6 @@ services:
     arguments: ['%language.default_values%']
   string_translator.custom_strings:
     class: Drupal\Core\StringTranslation\Translator\CustomStrings
-    arguments: ['@settings']
     tags:
       - { name: string_translator, priority: 30 }
   string_translation:
@@ -1129,7 +1133,7 @@ services:
     alias: session_handler.storage
   session_handler.storage:
     class: Drupal\Core\Session\SessionHandler
-    arguments: ['@request_stack', '@database']
+    arguments: ['@request_stack', '@database', '%session_write_interval%']
     tags:
       - { name: backend_overridable }
   session_handler.write_check:
@@ -1149,7 +1153,7 @@ services:
       - [setWriteSafeHandler, ['@session_handler.write_safe']]
   session_manager.metadata_bag:
     class: Drupal\Core\Session\MetadataBag
-    arguments: ['@settings']
+    arguments: ['%session_write_interval%']
   asset.css.collection_renderer:
     class: Drupal\Core\Asset\CssCollectionRenderer
     arguments: [ '@state' ]
diff --git a/core/includes/install.core.inc b/core/includes/install.core.inc
index 0358b39..729e82e 100644
--- a/core/includes/install.core.inc
+++ b/core/includes/install.core.inc
@@ -346,10 +346,11 @@ function install_begin_request($class_loader, &$install_state) {
   $container
     ->register('stream_wrapper_manager', 'Drupal\Core\StreamWrapper\StreamWrapperManager')
     ->addMethodCall('setContainer', array(new Reference('service_container')));
+  $container->setParameter('file_chmod', []);
   $container
     ->register('file_system', 'Drupal\Core\File\FileSystem')
     ->addArgument(new Reference('stream_wrapper_manager'))
-    ->addArgument(Settings::getInstance())
+    ->addArgument('%file_chmod%')
     ->addArgument((new LoggerChannelFactory())->get('file'));
 
   \Drupal::setContainer($container);
diff --git a/core/lib/Drupal.php b/core/lib/Drupal.php
index c724a06..fad5fa3 100644
--- a/core/lib/Drupal.php
+++ b/core/lib/Drupal.php
@@ -342,14 +342,8 @@ public static function configFactory() {
   /**
    * Returns a queue for the given queue name.
    *
-   * The following values can be set in your settings.php file's $settings
-   * array to define which services are used for queues:
-   * - queue_reliable_service_$name: The container service to use for the
-   *   reliable queue $name.
-   * - queue_service_$name: The container service to use for the
-   *   queue $name.
-   * - queue_default: The container service to use by default for queues
-   *   without overrides. This defaults to 'queue.database'.
+   * The configuration can be set as container parameters in the services.yml
+   * file, see sites/default/default.services.yml.
    *
    * @param string $name
    *   The name of the queue to work with.
diff --git a/core/lib/Drupal/Core/File/FileSystem.php b/core/lib/Drupal/Core/File/FileSystem.php
index aedfdf6..0365bca 100644
--- a/core/lib/Drupal/Core/File/FileSystem.php
+++ b/core/lib/Drupal/Core/File/FileSystem.php
@@ -7,7 +7,6 @@
 
 namespace Drupal\Core\File;
 
-use Drupal\Core\Site\Settings;
 use Drupal\Core\StreamWrapper\StreamWrapperManagerInterface;
 use Psr\Log\LoggerInterface;
 
@@ -27,13 +26,6 @@ class FileSystem implements FileSystemInterface {
   const CHMOD_FILE = 0664;
 
   /**
-   * The site settings.
-   *
-   * @var \Drupal\Core\Site\Settings
-   */
-  protected $settings;
-
-  /**
    * The file logger channel.
    *
    * @var \Psr\Log\LoggerInterface
@@ -48,19 +40,31 @@ class FileSystem implements FileSystemInterface {
   protected $streamWrapperManager;
 
   /**
+   * The file chmod configuration.
+   *
+   * @var array
+   */
+  private $fileChmodConfiguration;
+
+  /**
    * Constructs a new FileSystem.
    *
    * @param \Drupal\Core\StreamWrapper\StreamWrapperManagerInterface $stream_wrapper_manager
    *   The stream wrapper manager.
-   * @param \Drupal\Core\Site\Settings $settings
-   *   The site settings.
+   * @param array $file_chmod_configuration
+   *   The file chmod configuration.
    * @param \Psr\Log\LoggerInterface $logger
    *   The file logger channel.
    */
-  public function __construct(StreamWrapperManagerInterface $stream_wrapper_manager, Settings $settings, LoggerInterface $logger) {
+  public function __construct(StreamWrapperManagerInterface $stream_wrapper_manager, array $file_chmod_configuration, LoggerInterface $logger) {
     $this->streamWrapperManager = $stream_wrapper_manager;
-    $this->settings = $settings;
     $this->logger = $logger;
+
+    $file_chmod_configuration += [
+      'directory' => static::CHMOD_DIRECTORY,
+      'file' => static::CHMOD_FILE,
+    ];
+    $this->fileChmodConfiguration = $file_chmod_configuration;
   }
 
   /**
@@ -89,10 +93,10 @@ public function moveUploadedFile($filename, $uri) {
   public function chmod($uri, $mode = NULL) {
     if (!isset($mode)) {
       if (is_dir($uri)) {
-        $mode = $this->settings->get('file_chmod_directory', static::CHMOD_DIRECTORY);
+        $mode = $this->fileChmodConfiguration['directory'];
       }
       else {
-        $mode = $this->settings->get('file_chmod_file', static::CHMOD_FILE);
+        $mode = $this->fileChmodConfiguration['file'];
       }
     }
 
@@ -174,7 +178,7 @@ public function basename($uri, $suffix = NULL) {
    */
   public function mkdir($uri, $mode = NULL, $recursive = FALSE, $context = NULL) {
     if (!isset($mode)) {
-      $mode = $this->settings->get('file_chmod_directory', static::CHMOD_DIRECTORY);
+      $mode = $this->fileChmodConfiguration['directory'];
     }
 
     // If the URI has a scheme, don't override the umask - schemes can handle
diff --git a/core/lib/Drupal/Core/Queue/QueueFactory.php b/core/lib/Drupal/Core/Queue/QueueFactory.php
index 70824c3..9ff72d8 100644
--- a/core/lib/Drupal/Core/Queue/QueueFactory.php
+++ b/core/lib/Drupal/Core/Queue/QueueFactory.php
@@ -7,7 +7,6 @@
 
 namespace Drupal\Core\Queue;
 
-use Drupal\Core\Site\Settings;
 use Symfony\Component\DependencyInjection\ContainerAwareInterface;
 use Symfony\Component\DependencyInjection\ContainerAwareTrait;
 
@@ -26,18 +25,24 @@ class QueueFactory implements ContainerAwareInterface {
   protected $queues = array();
 
   /**
-   * The settings object.
+   * The queue configuration.
    *
-   * @var \Drupal\Core\Site\Settings
+   * @var array
    */
-  protected $settings;
-
+  protected $queueConfiguration;
 
   /**
    * Constructs a queue factory.
+   *
+   * @param array $queue_configuration
+   *   The queue configuration, more information in
+   *   sites/default/default.services.yml
    */
-  function __construct(Settings $settings) {
-    $this->settings = $settings;
+  function __construct(array $queue_configuration) {
+    $queue_configuration += [
+      'default' => 'queue.database',
+    ];
+    $this->queueConfiguration = $queue_configuration;
   }
 
   /**
@@ -57,12 +62,12 @@ public function get($name, $reliable = FALSE) {
     if (!isset($this->queues[$name])) {
       // If it is a reliable queue, check the specific settings first.
       if ($reliable) {
-        $service_name = $this->settings->get('queue_reliable_service_' . $name);
+        $service_name = isset($this->queueConfiguration['reliable_service_' . $name]) ? $this->queueConfiguration['queue_reliable_service_' . $name] : NULL;
       }
       // If no reliable queue was defined, check the service and global
       // settings, fall back to queue.database.
       if (empty($service_name)) {
-        $service_name = $this->settings->get('queue_service_' . $name, $this->settings->get('queue_default', 'queue.database'));
+        $service_name = isset($this->queueConfiguration['service_' . $name]) ? $this->queueConfiguration['service_' . $name] : $this->queueConfiguration['default'];
       }
       $this->queues[$name] = $this->container->get($service_name)->get($name);
     }
diff --git a/core/lib/Drupal/Core/Session/MetadataBag.php b/core/lib/Drupal/Core/Session/MetadataBag.php
index 4b44739..2526d18 100644
--- a/core/lib/Drupal/Core/Session/MetadataBag.php
+++ b/core/lib/Drupal/Core/Session/MetadataBag.php
@@ -7,7 +7,6 @@
 
 namespace Drupal\Core\Session;
 
-use Drupal\Core\Site\Settings;
 use Symfony\Component\HttpFoundation\Session\Storage\MetadataBag as SymfonyMetadataBag;
 
 /**
@@ -23,12 +22,11 @@ class MetadataBag extends SymfonyMetadataBag {
   /**
    * Constructs a new metadata bag instance.
    *
-   * @param \Drupal\Core\Site\Settings $settings
-   *   The settings instance.
+   * @param int $session_write_interval
+   *   The session write interval.
    */
-  public function __construct(Settings $settings) {
-    $update_threshold = $settings->get('session_write_interval', 180);
-    parent::__construct('_sf2_meta', $update_threshold);
+  public function __construct($session_write_interval = 180) {
+    parent::__construct('_sf2_meta', $session_write_interval);
   }
 
   /**
diff --git a/core/lib/Drupal/Core/Session/SessionHandler.php b/core/lib/Drupal/Core/Session/SessionHandler.php
index 42daba5..0001af8 100644
--- a/core/lib/Drupal/Core/Session/SessionHandler.php
+++ b/core/lib/Drupal/Core/Session/SessionHandler.php
@@ -41,16 +41,26 @@ class SessionHandler extends AbstractProxy implements \SessionHandlerInterface {
   protected $obsoleteSessionIds = array();
 
   /**
+   * The session write interval.
+   *
+   * @var int
+   */
+  protected $sessionWriteInterval;
+
+  /**
    * Constructs a new SessionHandler instance.
    *
    * @param \Symfony\Component\HttpFoundation\RequestStack $request_stack
    *   The request stack.
    * @param \Drupal\Core\Database\Connection $connection
    *   The database connection.
+   * @param int $session_write_interval
+   *   The session write interval.
    */
-  public function __construct(RequestStack $request_stack, Connection $connection) {
+  public function __construct(RequestStack $request_stack, Connection $connection, $session_write_interval = 180) {
     $this->requestStack = $request_stack;
     $this->connection = $connection;
+    $this->sessionWriteInterval = $session_write_interval;
   }
 
   /**
@@ -126,7 +136,7 @@ public function write($sid, $value) {
         ->execute();
 
       // Likewise, do not update access time more than once per 180 seconds.
-      if ($user->isAuthenticated() && REQUEST_TIME - $user->getLastAccessedTime() > Settings::get('session_write_interval', 180)) {
+      if ($user->isAuthenticated() && REQUEST_TIME - $user->getLastAccessedTime() > $this->sessionWriteInterval) {
         /** @var \Drupal\user\UserStorageInterface $storage */
         $storage = \Drupal::entityManager()->getStorage('user');
         $storage->updateLastAccessTimestamp($user, REQUEST_TIME);
diff --git a/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php b/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php
index 344364d..f0504f0 100644
--- a/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php
+++ b/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php
@@ -6,7 +6,6 @@
 
 namespace Drupal\Core\StackMiddleware;
 
-use Drupal\Core\Site\Settings;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpKernel\HttpKernelInterface;
 
@@ -23,23 +22,28 @@ class ReverseProxyMiddleware implements HttpKernelInterface {
   protected $httpKernel;
 
   /**
-   * The site settings.
+   * The reverse proxy configuration.
    *
-   * @var \Drupal\Core\Site\Settings
+   * @var array
    */
-  protected $settings;
+  private $reverseProxyConfiguration;
 
   /**
    * Constructs a ReverseProxyMiddleware object.
    *
    * @param \Symfony\Component\HttpKernel\HttpKernelInterface $http_kernel
    *   The decorated kernel.
-   * @param \Drupal\Core\Site\Settings $settings
-   *   The site settings.
+   * @param array $reverse_proxy_configuration
+   *   The reverse proxy configuration.
    */
-  public function __construct(HttpKernelInterface $http_kernel, Settings $settings) {
+  public function __construct(HttpKernelInterface $http_kernel, array $reverse_proxy_configuration = []) {
     $this->httpKernel = $http_kernel;
-    $this->settings = $settings;
+
+    $reverse_proxy_configuration += [
+      'header' => 'X_FORWARDED_FOR',
+      'addresses' => [],
+    ];
+    $this->reverseProxyConfiguration = $reverse_proxy_configuration;
   }
 
   /**
@@ -47,10 +51,10 @@ public function __construct(HttpKernelInterface $http_kernel, Settings $settings
    */
   public function handle(Request $request, $type = self::MASTER_REQUEST, $catch = TRUE) {
     // Initialize proxy settings.
-    if ($this->settings->get('reverse_proxy', FALSE)) {
-      $reverse_proxy_header = $this->settings->get('reverse_proxy_header', 'X_FORWARDED_FOR');
+    if (!empty($this->reverseProxyConfiguration['enabled'])) {
+      $reverse_proxy_header = $this->reverseProxyConfiguration['header'];
       $request::setTrustedHeaderName($request::HEADER_CLIENT_IP, $reverse_proxy_header);
-      $proxies = $this->settings->get('reverse_proxy_addresses', array());
+      $proxies = $this->reverseProxyConfiguration['addresses'];
       if (count($proxies) > 0) {
         $request::setTrustedProxies($proxies);
       }
diff --git a/core/lib/Drupal/Core/StringTranslation/Translator/CustomStrings.php b/core/lib/Drupal/Core/StringTranslation/Translator/CustomStrings.php
index 24f5085..b1bc189 100644
--- a/core/lib/Drupal/Core/StringTranslation/Translator/CustomStrings.php
+++ b/core/lib/Drupal/Core/StringTranslation/Translator/CustomStrings.php
@@ -18,28 +18,10 @@
 class CustomStrings extends StaticTranslation {
 
   /**
-   * The settings read only object.
-   *
-   * @var \Drupal\Core\Site\Settings
-   */
-  protected $settings;
-
-  /**
-   * Constructs a CustomStrings object.
-   *
-   * @param \Drupal\Core\Site\Settings $settings
-   *   The settings read only object.
-   */
-  public function __construct(Settings $settings) {
-    parent::__construct();
-    $this->settings = $settings;
-  }
-
-  /**
    * {@inheritdoc}
    */
   protected function getLanguage($langcode) {
-    return $this->settings->get('locale_custom_strings_' . $langcode, array());
+    return Settings::get('locale_custom_strings_' . $langcode, array());
   }
 
 }
diff --git a/core/modules/language/language.services.yml b/core/modules/language/language.services.yml
index eae3af5..c9ec6c6 100644
--- a/core/modules/language/language.services.yml
+++ b/core/modules/language/language.services.yml
@@ -4,7 +4,7 @@ services:
     arguments: ['@container.namespaces', '@cache.discovery', '@module_handler']
   language_negotiator:
     class: Drupal\language\LanguageNegotiator
-    arguments: ['@language_manager', '@plugin.manager.language_negotiation_method', '@config.factory', '@settings', '@request_stack']
+    arguments: ['@language_manager', '@plugin.manager.language_negotiation_method', '@config.factory', '@request_stack']
     calls:
       - [initLanguageManager]
   language.config_subscriber:
diff --git a/core/modules/language/src/LanguageNegotiator.php b/core/modules/language/src/LanguageNegotiator.php
index bc924fb..6afdf38 100644
--- a/core/modules/language/src/LanguageNegotiator.php
+++ b/core/modules/language/src/LanguageNegotiator.php
@@ -41,13 +41,6 @@ class LanguageNegotiator implements LanguageNegotiatorInterface {
   protected $configFactory;
 
   /**
-   * The settings instance.
-   *
-   * @return \Drupal\Core\Site\Settings
-   */
-  protected $settings;
-
-  /**
    * The request stack object.
    *
    * @var \Symfony\Component\HttpFoundation\RequestStack
@@ -84,14 +77,11 @@ class LanguageNegotiator implements LanguageNegotiatorInterface {
    *   The language negotiation methods plugin manager
    * @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory
    *   The configuration factory.
-   * @param \Drupal\Core\Site\Settings $settings
-   *   The settings instance.
    */
-  public function __construct(ConfigurableLanguageManagerInterface $language_manager, PluginManagerInterface $negotiator_manager, ConfigFactoryInterface $config_factory, Settings $settings, RequestStack $requestStack) {
+  public function __construct(ConfigurableLanguageManagerInterface $language_manager, PluginManagerInterface $negotiator_manager, ConfigFactoryInterface $config_factory, RequestStack $requestStack) {
     $this->languageManager = $language_manager;
     $this->negotiatorManager = $negotiator_manager;
     $this->configFactory = $config_factory;
-    $this->settings = $settings;
     $this->requestStack = $requestStack;
   }
 
@@ -190,7 +180,7 @@ protected function negotiateLanguage($type, $method_id) {
     if (!isset($method['types']) || in_array($type, $method['types'])) {
 
       // Check for a cache mode force from settings.php.
-      if ($this->settings->get('page_cache_without_database')) {
+      if (Settings::get('page_cache_without_database')) {
         $cache_enabled = TRUE;
       }
       else {
diff --git a/core/modules/system/src/Tests/File/DirectoryTest.php b/core/modules/system/src/Tests/File/DirectoryTest.php
index 0822063..5594b7c 100644
--- a/core/modules/system/src/Tests/File/DirectoryTest.php
+++ b/core/modules/system/src/Tests/File/DirectoryTest.php
@@ -8,6 +8,7 @@
 namespace Drupal\system\Tests\File;
 
 use Drupal\Component\PhpStorage\FileStorage;
+use Drupal\Core\File\FileSystem;
 
 /**
  * Tests operations dealing with directories.
@@ -81,7 +82,8 @@ function testFileCheckDirectoryHandling() {
       $this->assertFalse(file_prepare_directory($directory, 0), 'Error reported for a non-writeable directory.', 'File');
 
       // Test directory permission modification.
-      $this->settingsSet('file_chmod_directory', 0777);
+      $this->container->set('file_system', new FileSystem($this->container->get('stream_wrapper_manager'), ['directory' => 0777], $this->container->get('logger.channel.file')));
+
       $this->assertTrue(file_prepare_directory($directory, FILE_MODIFY_PERMISSIONS), 'No error reported when making directory writeable.', 'File');
     }
 
diff --git a/core/modules/system/src/Tests/File/UnmanagedSaveDataTest.php b/core/modules/system/src/Tests/File/UnmanagedSaveDataTest.php
index fc715c6..2e1e507 100644
--- a/core/modules/system/src/Tests/File/UnmanagedSaveDataTest.php
+++ b/core/modules/system/src/Tests/File/UnmanagedSaveDataTest.php
@@ -6,6 +6,7 @@
  */
 
 namespace Drupal\system\Tests\File;
+use Drupal\Core\File\FileSystem;
 
 /**
  * Tests the file_unmanaged_save_data() function.
@@ -18,7 +19,8 @@ class UnmanagedSaveDataTest extends FileTestBase {
    */
   function testFileSaveData() {
     $contents = $this->randomMachineName(8);
-    $this->settingsSet('file_chmod_file', 0777);
+    $this->container->set('file_system', new FileSystem($this->container->get('stream_wrapper_manager'), ['file' => 0777], $this->container->get('logger.channel.file')));
+
 
     // No filename.
     $filepath = file_unmanaged_save_data($contents);
diff --git a/core/modules/system/src/Tests/Session/SessionTest.php b/core/modules/system/src/Tests/Session/SessionTest.php
index 0921f66..c4f89c5 100644
--- a/core/modules/system/src/Tests/Session/SessionTest.php
+++ b/core/modules/system/src/Tests/Session/SessionTest.php
@@ -7,6 +7,7 @@
 
 namespace Drupal\system\Tests\Session;
 
+use Drupal\Component\Serialization\Yaml;
 use Drupal\simpletest\WebTestBase;
 
 /**
@@ -228,13 +229,12 @@ function testSessionWrite() {
     $this->assertEqual($times4->timestamp, $times3->timestamp, 'Sessions table was not updated.');
 
     // Force updating of users and sessions table once per second.
-    $this->settingsSet('session_write_interval', 0);
-    // Write that value also into the test settings.php file.
-    $settings['settings']['session_write_interval'] = (object) array(
-      'value' => 0,
-      'required' => TRUE,
-    );
-    $this->writeSettings($settings);
+    $filename = $this->siteDirectory . '/services.yml';
+    $data = Yaml::decode(file_get_contents($filename));
+    $data['parameters']['session_write_interval'] = 0;
+    file_put_contents($filename, Yaml::encode($data));
+    $this->rebuildContainer();
+
     $this->drupalGet('');
     $times5 = db_query($sql, array(':uid' => $user->id()))->fetchObject();
     $this->assertNotEqual($times5->access, $times4->access, 'Users table was updated.');
diff --git a/core/modules/update/src/Access/UpdateManagerAccessCheck.php b/core/modules/update/src/Access/UpdateManagerAccessCheck.php
index d057ce3..dc4fd7b 100644
--- a/core/modules/update/src/Access/UpdateManagerAccessCheck.php
+++ b/core/modules/update/src/Access/UpdateManagerAccessCheck.php
@@ -17,23 +17,6 @@
 class UpdateManagerAccessCheck implements AccessInterface {
 
   /**
-   * Settings Service.
-   *
-   * @var \Drupal\Core\Site\Settings
-   */
-  protected $settings;
-
-  /**
-   * Constructs a UpdateManagerAccessCheck object.
-   *
-   * @param \Drupal\Core\Site\Settings $settings
-   *   The read-only settings container.
-   */
-  public function __construct(Settings $settings) {
-    $this->settings = $settings;
-  }
-
-  /**
    * Checks access.
    *
    * @return \Drupal\Core\Access\AccessResultInterface
@@ -42,7 +25,7 @@ public function __construct(Settings $settings) {
   public function access() {
     // Uncacheable because the access result depends on a Settings key-value
     // pair, and can therefore change at any time.
-    return AccessResult::allowedIf($this->settings->get('allow_authorize_operations', TRUE))->setCacheable(FALSE);
+    return AccessResult::allowedIf(Settings::get('allow_authorize_operations', TRUE))->setCacheable(FALSE);
   }
 
 }
diff --git a/core/modules/update/update.services.yml b/core/modules/update/update.services.yml
index fe01f47..28a3dfe 100644
--- a/core/modules/update/update.services.yml
+++ b/core/modules/update/update.services.yml
@@ -1,7 +1,6 @@
 services:
   access_check.update.manager_access:
     class: Drupal\update\Access\UpdateManagerAccessCheck
-    arguments: ['@settings']
     tags:
       - { name: access_check, applies_to: _access_update_manager }
   update.manager:
diff --git a/core/tests/Drupal/Tests/Core/File/FileSystemTest.php b/core/tests/Drupal/Tests/Core/File/FileSystemTest.php
index ba39d17..393c035 100644
--- a/core/tests/Drupal/Tests/Core/File/FileSystemTest.php
+++ b/core/tests/Drupal/Tests/Core/File/FileSystemTest.php
@@ -8,7 +8,6 @@
 namespace Drupal\Tests\Core\File;
 
 use Drupal\Core\File\FileSystem;
-use Drupal\Core\Site\Settings;
 use Drupal\Tests\UnitTestCase;
 use org\bovigo\vfs\vfsStream;
 
@@ -37,10 +36,9 @@ class FileSystemTest extends UnitTestCase {
   protected function setUp() {
     parent::setUp();
 
-    $settings = new Settings([]);
     $stream_wrapper_manager = $this->getMock('Drupal\Core\StreamWrapper\StreamWrapperManagerInterface');
     $this->logger = $this->getMock('Psr\Log\LoggerInterface');
-    $this->fileSystem = new FileSystem($stream_wrapper_manager, $settings, $this->logger);
+    $this->fileSystem = new FileSystem($stream_wrapper_manager, [], $this->logger);
   }
 
   /**
diff --git a/core/tests/Drupal/Tests/Core/StackMiddleware/ReverseProxyMiddlewareTest.php b/core/tests/Drupal/Tests/Core/StackMiddleware/ReverseProxyMiddlewareTest.php
index f92109b..efea670 100644
--- a/core/tests/Drupal/Tests/Core/StackMiddleware/ReverseProxyMiddlewareTest.php
+++ b/core/tests/Drupal/Tests/Core/StackMiddleware/ReverseProxyMiddlewareTest.php
@@ -7,7 +7,6 @@
 
 namespace Drupal\Tests\Core\StackMiddleware;
 
-use Drupal\Core\Site\Settings;
 use Drupal\Core\StackMiddleware\ReverseProxyMiddleware;
 use Drupal\Tests\UnitTestCase;
 use Symfony\Component\HttpFoundation\Request;
@@ -35,10 +34,7 @@ public function setUp() {
    * Tests that subscriber does not act when reverse proxy is not set.
    */
   public function testNoProxy() {
-    $settings = new Settings(array());
-    $this->assertEquals(0, $settings->get('reverse_proxy'));
-
-    $middleware = new ReverseProxyMiddleware($this->mockHttpKernel, $settings);
+    $middleware = new ReverseProxyMiddleware($this->mockHttpKernel, []);
     // Mock a request object.
     $request = $this->getMock('Symfony\Component\HttpFoundation\Request', array('setTrustedHeaderName', 'setTrustedProxies'));
     // setTrustedHeaderName() should never fire.
@@ -55,8 +51,7 @@ public function testNoProxy() {
    */
   public function testReverseProxyEnabled($provided_settings) {
       // Enable reverse proxy and add test values.
-      $settings = new Settings(array('reverse_proxy' => 1) + $provided_settings);
-      $this->trustedHeadersAreSet($settings);
+      $this->trustedHeadersAreSet(['enabled' => TRUE] + $provided_settings);
   }
 
   /**
@@ -66,15 +61,15 @@ public function reverseProxyEnabledProvider() {
     return array(
       array(
         array(
-          'reverse_proxy_header' => 'HTTP_X_FORWARDED_FOR',
-          'reverse_proxy_addresses' => array(),
+          'header' => 'HTTP_X_FORWARDED_FOR',
+          'addresses' => array(),
         ),
       ),
       array(
         array(
-          'reverse_proxy_header' => 'X_FORWARDED_HOST',
-          'reverse_proxy_addresses' => array('127.0.0.2', '127.0.0.3'),
-        ),
+          'header' => 'X_FORWARDED_HOST',
+          'addresses' => array('127.0.0.2', '127.0.0.3'),
+        )
       ),
     );
   }
@@ -85,16 +80,13 @@ public function reverseProxyEnabledProvider() {
    * \Symfony\Component\HttpFoundation\Request::setTrustedHeaderName() and
    * \Symfony\Component\HttpFoundation\Request::setTrustedProxies() should
    * always be called when reverse proxy settings are enabled.
-   *
-   * @param \Drupal\Core\Site\Settings $settings
-   *   The settings object that holds reverse proxy configuration.
    */
-  protected function trustedHeadersAreSet(Settings $settings) {
-    $middleware = new ReverseProxyMiddleware($this->mockHttpKernel, $settings);
+  protected function trustedHeadersAreSet(array $configuration) {
+    $middleware = new ReverseProxyMiddleware($this->mockHttpKernel, $configuration);
     $request = new Request();
 
     $middleware->handle($request);
-    $this->assertSame($settings->get('reverse_proxy_header'), $request->getTrustedHeaderName($request::HEADER_CLIENT_IP));
-    $this->assertSame($settings->get('reverse_proxy_addresses'), $request->getTrustedProxies());
+    $this->assertSame($configuration['header'], $request->getTrustedHeaderName($request::HEADER_CLIENT_IP));
+    $this->assertSame($configuration['addresses'], $request->getTrustedProxies());
   }
 }
diff --git a/sites/default/default.services.yml b/sites/default/default.services.yml
index 77e99cc..516657d 100644
--- a/sites/default/default.services.yml
+++ b/sites/default/default.services.yml
@@ -88,3 +88,71 @@ parameters:
     # Default key/value expirable storage service to use.
     # @default keyvalue.database.expirable
     # default: keyvalue.database.expirable
+  #
+  # Queue configuration.
+  # The following values can be set in the factory.queue container parameter:
+  #
+  # - reliable_service_$name: The container service to use for the reliable
+  #   queue $name.
+  # - service_$name: The container service to use for the queue $name.
+  # - default: The container service to use by default for queues without
+  #   overrides. This defaults to 'queue.database'.
+  #
+  # factory.queue: {}
+  #
+  # Reverse Proxy Configuration:
+  #
+  # Reverse proxy servers are often used to enhance the performance
+  # of heavily visited sites and may also provide other site caching,
+  # security, or encryption benefits. In an environment where Drupal
+  # is behind a reverse proxy, the real IP address of the client should
+  # be determined such that the correct client IP address is available
+  # to Drupal's logging, statistics, and access management systems. In
+  # the most simple scenario, the proxy server will add an
+  # X-Forwarded-For header to the request that contains the client IP
+  # address. However, HTTP headers are vulnerable to spoofing, where a
+  # malicious client could bypass restrictions by setting the
+  #  X-Forwarded-For header directly. Therefore, Drupal's proxy
+  # configuration requires the IP addresses of all remote proxies to be
+  # specified in $settings['reverse_proxy_addresses'] to work correctly.
+  #
+  # Enable this setting to get Drupal to determine the client IP from
+  # the X-Forwarded-For header (or $settings['reverse_proxy_header'] if set).
+  # If you are unsure about this setting, do not have a reverse proxy,
+  # or Drupal operates in a shared hosting environment, this setting
+  # should remain commented out.
+  #
+  # In order for this setting to be used you must specify every possible
+  # reverse proxy IP address in $settings['reverse_proxy_addresses'].
+  # If a complete list of reverse proxies is not available in your
+  # environment (for example, if you use a CDN) you may set the
+  # $_SERVER['REMOTE_ADDR'] variable directly in settings.php.
+  # Be aware, however, that it is likely that this would allow IP
+  # address spoofing unless more advanced precautions are taken.
+  #
+  # Available keys:
+  #   - enabled: Switch on the reverse_proxy
+  #   - adresses: Specify every reverse proxy IP address in your environment.
+  #     This setting is required if $settings['reverse_proxy'] is TRUE.
+  #   - header: Set this value if your proxy server sends the client IP in a
+  #       header other than X-Forwarded-For.
+  #
+  # reverse_proxy:
+  #   enabled: true
+  #   addresses: ['a.b.c.d']
+  #   header: 'HTTP_X_CLUSTER_CLIENT_IP';
+  #
+  # Default mode for for directories and files written by Drupal.
+  #
+  # Value should be in PHP Octal Notation, with leading zero.
+  #
+  # file_chmod:
+  #   directory: 0775
+  #   file: 0664
+  #
+  # Session write interval:
+  #
+  # Set the minimum interval between each session write to database.
+  # For performance reasons it defaults to 180.
+  #
+  # session_write_interval: 180
diff --git a/sites/default/default.settings.php b/sites/default/default.settings.php
index d5d8704..d7c57c8 100644
--- a/sites/default/default.settings.php
+++ b/sites/default/default.settings.php
@@ -414,14 +414,6 @@
 # $settings['allow_authorize_operations'] = FALSE;
 
 /**
- * Default mode for for directories and files written by Drupal.
- *
- * Value should be in PHP Octal Notation, with leading zero.
- */
-# $settings['file_chmod_directory'] = 0775;
-# $settings['file_chmod_file'] = 0664;
-
-/**
  * Public file path:
  *
  * A local file system path where public files will be stored. This directory
@@ -446,14 +438,6 @@
 # $settings['file_private_path'] = '';
 
 /**
- * Session write interval:
- *
- * Set the minimum interval between each session write to database.
- * For performance reasons it defaults to 180.
- */
-# $settings['session_write_interval'] = 180;
-
-/**
  * String overrides:
  *
  * To override specific strings on your site with or without enabling the Locale
