diff --git a/core/authorize.php b/core/authorize.php
index ba71c5d..acff8da 100644
--- a/core/authorize.php
+++ b/core/authorize.php
@@ -20,7 +20,7 @@
  * @link authorize Authorized operation helper functions @endlink
  */
 
-use Symfony\Component\HttpFoundation\Request;
+use Drupal\Component\Utility\Settings;
 
 // Change the directory to the Drupal root.
 chdir('..');
@@ -46,9 +46,9 @@
  *   TRUE if the current user can run authorize.php, and FALSE if not.
  */
 function authorize_access_allowed() {
-  require_once DRUPAL_ROOT . '/' . settings()->get('session_inc', 'core/includes/session.inc');
+  require_once DRUPAL_ROOT . '/' . Settings::get('session_inc', 'core/includes/session.inc');
   drupal_session_initialize();
-  return settings()->get('allow_authorize_operations', TRUE) && user_access('administer software updates');
+  return Settings::get('allow_authorize_operations', TRUE) && user_access('administer software updates');
 }
 
 // *** Real work of the script begins here. ***
diff --git a/core/core.services.yml b/core/core.services.yml
index ac24e17..d549997 100644
--- a/core/core.services.yml
+++ b/core/core.services.yml
@@ -126,7 +126,7 @@ services:
   settings:
     class: Drupal\Component\Utility\Settings
     factory_class: Drupal\Component\Utility\Settings
-    factory_method: getSingleton
+    factory_method: getInstance
   state:
     class: Drupal\Core\KeyValueStore\State
     arguments: ['@keyvalue']
diff --git a/core/includes/bootstrap.inc b/core/includes/bootstrap.inc
index 7962015..2b81a21 100644
--- a/core/includes/bootstrap.inc
+++ b/core/includes/bootstrap.inc
@@ -620,20 +620,6 @@ function drupal_get_filename($type, $name, $filename = NULL) {
 }
 
 /**
- * Returns a setting.
- *
- * Settings can be set in settings.php in the $settings array and requested
- * by this function. Settings should be used over configuration for read-only,
- * possibly low bootstrap configuration that is environment specific.
- *
- * @return \Drupal\Component\Utility\Settings
- *   The settings object.
- */
-function settings() {
-  return Settings::getSingleton();
-}
-
-/**
  * Gets the page cache cid for this request.
  *
  * @param \Symfony\Component\HttpFoundation\Request $request
@@ -937,7 +923,7 @@ function drupal_serve_page_from_cache(stdClass $cache, Response $response, Reque
   // fields that fully determines whether a cache is permitted to use the
   // response to reply to a subsequent request for a given URL without
   // revalidation.
-  if (!isset($boot_headers['vary']) && !settings()->get('omit_vary_cookie')) {
+  if (!isset($boot_headers['vary']) && !Settings::get('omit_vary_cookie')) {
     $response->setVary('Cookie', FALSE);
   }
 
@@ -1505,7 +1491,7 @@ function drupal_get_user_timezone() {
  *   A salt based on information in settings.php, not in the database.
  */
 function drupal_get_hash_salt() {
-  $hash_salt = settings()->get('hash_salt');
+  $hash_salt = Settings::get('hash_salt');
   // This should never happen, as it breaks user logins and many other services.
   // Therefore, explicitly notify the user (developer) by throwing an exception.
   if (empty($hash_salt)) {
@@ -1633,7 +1619,7 @@ function _drupal_bootstrap_page_cache() {
 
   require_once __DIR__ . '/database.inc';
   // Check for a cache mode force from settings.php.
-  if (settings()->get('page_cache_without_database')) {
+  if (Settings::get('page_cache_without_database')) {
     $cache_enabled = TRUE;
   }
   else {
@@ -2104,7 +2090,7 @@ function drupal_classloader($class_loader = NULL) {
     // findFile() method, but none of the others. The actual registry is still
     // in ClassLoader.
     if (!isset($class_loader)) {
-      $class_loader = settings()->get('class_loader', 'default');
+      $class_loader = Settings::get('class_loader', 'default');
     }
     if ($class_loader === 'apc') {
       require_once __DIR__ . '/../vendor/symfony/class-loader/Symfony/Component/ClassLoader/ApcClassLoader.php';
diff --git a/core/includes/common.inc b/core/includes/common.inc
index af96028..c9d768e 100644
--- a/core/includes/common.inc
+++ b/core/includes/common.inc
@@ -279,7 +279,7 @@ function drupal_get_profile() {
     }
   }
   else {
-    $profile = settings()->get('install_profile') ?: 'standard';
+    $profile = Settings::get('install_profile') ?: 'standard';
   }
 
   return $profile;
@@ -568,7 +568,7 @@ function _external_url_is_local($url) {
  *   TRUE if a proxy should be used for this host.
  */
 function _drupal_http_use_proxy($host) {
-  $proxy_exceptions = settings()->get('proxy_exceptions', array('localhost', '127.0.0.1'));
+  $proxy_exceptions = Settings::get('proxy_exceptions', array('localhost', '127.0.0.1'));
   return !in_array(strtolower($host), $proxy_exceptions, TRUE);
 }
 
@@ -3149,11 +3149,11 @@ function drupal_valid_token($token, $value = '', $skip_anonymous = FALSE) {
  * Loads code for subsystems and modules, and registers stream wrappers.
  */
 function _drupal_bootstrap_code() {
-  require_once __DIR__ . '/../../' . settings()->get('path_inc', 'core/includes/path.inc');
+  require_once __DIR__ . '/../../' . Settings::get('path_inc', 'core/includes/path.inc');
   require_once __DIR__ . '/module.inc';
   require_once __DIR__ . '/theme.inc';
   require_once __DIR__ . '/pager.inc';
-  require_once __DIR__ . '/../../' . settings()->get('menu_inc', 'core/includes/menu.inc');
+  require_once __DIR__ . '/../../' . Settings::get('menu_inc', 'core/includes/menu.inc');
   require_once __DIR__ . '/tablesort.inc';
   require_once __DIR__ . '/file.inc';
   require_once __DIR__ . '/unicode.inc';
diff --git a/core/includes/database.inc b/core/includes/database.inc
index 0064ee4..0197377 100644
--- a/core/includes/database.inc
+++ b/core/includes/database.inc
@@ -1,5 +1,6 @@
 <?php
 
+use Drupal\Component\Utility\Settings;
 use Drupal\Core\Database\Database;
 use Drupal\Core\Database\Query\Condition;
 
@@ -933,7 +934,7 @@ function db_ignore_slave() {
     // Five minutes is long enough to allow the slave to break and resume
     // interrupted replication without causing problems on the Drupal site from
     // the old data.
-    $duration = settings()->get('maximum_replication_lag', 300);
+    $duration = Settings::get('maximum_replication_lag', 300);
     // Set session variable with amount of time to delay before using slave.
     $_SESSION['ignore_slave_server'] = REQUEST_TIME + $duration;
   }
diff --git a/core/includes/file.inc b/core/includes/file.inc
index f08070e..baaf654 100644
--- a/core/includes/file.inc
+++ b/core/includes/file.inc
@@ -7,6 +7,7 @@
 
 use Drupal\Core\StreamWrapper\LocalStream;
 use Drupal\Component\PhpStorage\FileStorage;
+use Drupal\Component\Utility\Settings;
 use Drupal\Component\Utility\String;
 use Drupal\Core\StreamWrapper\PublicStream;
 
@@ -1336,10 +1337,10 @@ function file_get_mimetype($uri, $mapping = NULL) {
 function drupal_chmod($uri, $mode = NULL) {
   if (!isset($mode)) {
     if (is_dir($uri)) {
-      $mode = settings()->get('file_chmod_directory', FILE_CHMOD_DIRECTORY);
+      $mode = Settings::get('file_chmod_directory', FILE_CHMOD_DIRECTORY);
     }
     else {
-      $mode = settings()->get('file_chmod_file', FILE_CHMOD_FILE);
+      $mode = Settings::get('file_chmod_file', FILE_CHMOD_FILE);
     }
   }
 
@@ -1513,7 +1514,7 @@ function drupal_basename($uri, $suffix = NULL) {
  */
 function drupal_mkdir($uri, $mode = NULL, $recursive = FALSE, $context = NULL) {
   if (!isset($mode)) {
-    $mode = settings()->get('file_chmod_directory', FILE_CHMOD_DIRECTORY);
+    $mode = Settings::get('file_chmod_directory', FILE_CHMOD_DIRECTORY);
   }
 
   // If the URI has a scheme, don't override the umask - schemes can handle this
diff --git a/core/includes/install.core.inc b/core/includes/install.core.inc
index 8d27e08..ab5a4a4 100644
--- a/core/includes/install.core.inc
+++ b/core/includes/install.core.inc
@@ -294,7 +294,7 @@ function install_begin_request(&$install_state) {
   require_once __DIR__ . '/file.inc';
   require_once __DIR__ . '/install.inc';
   require_once __DIR__ . '/schema.inc';
-  require_once __DIR__ . '/../../' . settings()->get('path_inc', 'core/includes/path.inc');
+  require_once __DIR__ . '/../../' . Settings::get('path_inc', 'core/includes/path.inc');
   require_once __DIR__ . '/database.inc';
   require_once __DIR__ . '/form.inc';
   require_once __DIR__ . '/batch.inc';
@@ -1788,7 +1788,7 @@ function install_load_profile(&$install_state) {
  */
 function install_bootstrap_full() {
   drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
-  require_once DRUPAL_ROOT . '/' . settings()->get('session_inc', 'core/includes/session.inc');
+  require_once DRUPAL_ROOT . '/' . Settings::get('session_inc', 'core/includes/session.inc');
   drupal_session_initialize();
 }
 
diff --git a/core/includes/install.inc b/core/includes/install.inc
index 4b5466d..fc679fb 100644
--- a/core/includes/install.inc
+++ b/core/includes/install.inc
@@ -317,7 +317,7 @@ function drupal_rewrite_settings($settings = array(), $settings_file = NULL) {
       // In case any $settings variables were written, import them into the
       // Settings singleton.
       if (!empty($settings_settings)) {
-        $old_settings = settings()->getAll();
+        $old_settings = Settings::getAll();
         new Settings($settings_settings + $old_settings);
       }
     }
diff --git a/core/includes/mail.inc b/core/includes/mail.inc
index 0a0896d..8c8b071 100644
--- a/core/includes/mail.inc
+++ b/core/includes/mail.inc
@@ -6,6 +6,7 @@
  */
 
 use Drupal\Component\Utility\Html;
+use Drupal\Component\Utility\Settings;
 use Drupal\Component\Utility\Xss;
 
 /**
@@ -426,7 +427,7 @@ function drupal_html_to_text($string, $allowed_tags = NULL) {
       if (isset($casing)) {
         $chunk = $casing($chunk);
       }
-      $line_endings = settings()->get('mail_line_endings', PHP_EOL);
+      $line_endings = Settings::get('mail_line_endings', PHP_EOL);
       // Format it and apply the current indentation.
       $output .= drupal_wrap_mail($chunk, implode('', $indent)) . $line_endings;
       // Remove non-quotation markers from indentation.
diff --git a/core/includes/session.inc b/core/includes/session.inc
index 839ead8..8e95036 100644
--- a/core/includes/session.inc
+++ b/core/includes/session.inc
@@ -17,6 +17,7 @@
  */
 
 use Drupal\Component\Utility\Crypt;
+use Drupal\Component\Utility\Settings;
 use Drupal\Core\Session\UserSession;
 use Drupal\Core\Utility\Error;
 
@@ -175,7 +176,7 @@ function _drupal_session_write($sid, $value) {
 
     // For performance reasons, do not update the sessions table, unless
     // $_SESSION has changed or more than 180 has passed since the last update.
-    if ($is_changed || !$user->getLastAccessedTime() || REQUEST_TIME - $user->getLastAccessedTime() > settings()->get('session_write_interval', 180)) {
+    if ($is_changed || !$user->getLastAccessedTime() || REQUEST_TIME - $user->getLastAccessedTime() > Settings::get('session_write_interval', 180)) {
       // Either ssid or sid or both will be added from $key below.
       $fields = array(
         'uid' => $user->id(),
@@ -196,14 +197,14 @@ function _drupal_session_write($sid, $value) {
         // secure and insecure session cookies. If enabled and both cookies are
         // presented then use both keys. The session ID from the cookie is
         // hashed before being stored in the database as a security measure.
-        if (settings()->get('mixed_mode_sessions', FALSE)) {
+        if (Settings::get('mixed_mode_sessions', FALSE)) {
           $insecure_session_name = substr(session_name(), 1);
           if ($cookies->has($insecure_session_name)) {
             $key['sid'] = Crypt::hashBase64($cookies->get($insecure_session_name));
           }
         }
       }
-      elseif (settings()->get('mixed_mode_sessions', FALSE)) {
+      elseif (Settings::get('mixed_mode_sessions', FALSE)) {
         unset($key['ssid']);
       }
 
@@ -214,7 +215,7 @@ function _drupal_session_write($sid, $value) {
     }
 
     // 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() > Settings::get('session_write_interval', 180)) {
       db_update('users')
         ->fields(array(
           'access' => REQUEST_TIME
@@ -247,7 +248,7 @@ function drupal_session_initialize() {
 
   $is_https = \Drupal::request()->isSecure();
   $cookies = \Drupal::request()->cookies;
-  if (($cookies->has(session_name()) && ($session_name = $cookies->get(session_name()))) || ($is_https && settings()->get('mixed_mode_sessions', FALSE) && ($cookies->has(substr(session_name(), 1))) && ($session_name = $cookies->get(substr(session_name(), 1))))) {
+  if (($cookies->has(session_name()) && ($session_name = $cookies->get(session_name()))) || ($is_https && Settings::get('mixed_mode_sessions', FALSE) && ($cookies->has(substr(session_name(), 1))) && ($session_name = $cookies->get(substr(session_name(), 1))))) {
     // If a session cookie exists, initialize the session. Otherwise the
     // session is only started on demand in drupal_session_commit(), making
     // anonymous users not use a session cookie unless something is stored in
@@ -268,7 +269,7 @@ function drupal_session_initialize() {
     // anonymous users than are generated in drupal_session_regenerate() when
     // a user becomes authenticated.
     session_id(Crypt::randomBytesBase64());
-    if ($is_https && settings()->get('mixed_mode_sessions', FALSE)) {
+    if ($is_https && Settings::get('mixed_mode_sessions', FALSE)) {
       $insecure_session_name = substr(session_name(), 1);
       $session_id = Crypt::randomBytesBase64();
       $cookies->set($insecure_session_name, $session_id);
@@ -323,7 +324,7 @@ function drupal_session_commit() {
     // started.
     if (!drupal_session_started()) {
       drupal_session_start();
-      if (\Drupal::request()->isSecure() && settings()->get('mixed_mode_sessions', FALSE)) {
+      if (\Drupal::request()->isSecure() && Settings::get('mixed_mode_sessions', FALSE)) {
         $insecure_session_name = substr(session_name(), 1);
         $params = session_get_cookie_params();
         $expire = $params['lifetime'] ? REQUEST_TIME + $params['lifetime'] : 0;
@@ -363,7 +364,7 @@ function drupal_session_regenerate() {
   $is_https = \Drupal::request()->isSecure();
   $cookies = \Drupal::request()->cookies;
 
-  if ($is_https && settings()->get('mixed_mode_sessions', FALSE)) {
+  if ($is_https && Settings::get('mixed_mode_sessions', FALSE)) {
     $insecure_session_name = substr(session_name(), 1);
     if (!isset($GLOBALS['lazy_session']) && $cookies->has($insecure_session_name)) {
       $old_insecure_session_id = $cookies->get($insecure_session_name);
@@ -392,7 +393,7 @@ function drupal_session_regenerate() {
       $fields['ssid'] = Crypt::hashBase64(session_id());
       // If the "secure pages" setting is enabled, use the newly-created
       // insecure session identifier as the regenerated sid.
-      if (settings()->get('mixed_mode_sessions', FALSE)) {
+      if (Settings::get('mixed_mode_sessions', FALSE)) {
         $fields['sid'] = Crypt::hashBase64($session_id);
       }
     }
@@ -453,7 +454,7 @@ function _drupal_session_destroy($sid) {
   if ($is_https) {
     _drupal_session_delete_cookie(substr(session_name(), 1), FALSE);
   }
-  elseif (settings()->get('mixed_mode_sessions', FALSE)) {
+  elseif (Settings::get('mixed_mode_sessions', FALSE)) {
     _drupal_session_delete_cookie('S' . session_name(), TRUE);
   }
 }
diff --git a/core/includes/theme.maintenance.inc b/core/includes/theme.maintenance.inc
index 429b932..8e664e3 100644
--- a/core/includes/theme.maintenance.inc
+++ b/core/includes/theme.maintenance.inc
@@ -6,6 +6,7 @@
  */
 
 use Drupal\Component\Utility\Unicode;
+use Drupal\Component\Utility\Settings;
 
 /**
  * Sets up the theming system for maintenance page.
@@ -24,7 +25,7 @@ function _drupal_maintenance_theme() {
     return;
   }
 
-  require_once DRUPAL_ROOT . '/' . settings()->get('path_inc', 'core/includes/path.inc');
+  require_once DRUPAL_ROOT . '/' . Settings::get('path_inc', 'core/includes/path.inc');
   require_once __DIR__ . '/theme.inc';
   require_once __DIR__ . '/common.inc';
   require_once __DIR__ . '/unicode.inc';
@@ -38,7 +39,7 @@ function _drupal_maintenance_theme() {
       $custom_theme = $GLOBALS['install_state']['theme'];
     }
     else {
-      $custom_theme = settings()->get('maintenance_theme', 'seven');
+      $custom_theme = Settings::get('maintenance_theme', 'seven');
     }
   }
   else {
@@ -52,7 +53,7 @@ function _drupal_maintenance_theme() {
     // Use the maintenance theme if specified, otherwise attempt to use the
     // default site theme.
     try {
-      $custom_theme = settings()->get('maintenance_theme', '');
+      $custom_theme = Settings::get('maintenance_theme', '');
       if (!$custom_theme) {
         $config = \Drupal::config('system.theme');
         $custom_theme = $config->get('default');
diff --git a/core/lib/Drupal/Component/Diff/DiffEngine.php b/core/lib/Drupal/Component/Diff/DiffEngine.php
index 0194379..21d9ad4 100644
--- a/core/lib/Drupal/Component/Diff/DiffEngine.php
+++ b/core/lib/Drupal/Component/Diff/DiffEngine.php
@@ -1100,8 +1100,8 @@ class DrupalDiffFormatter extends DiffFormatter {
   );
 
   function DrupalDiffFormatter() {
-    $this->leading_context_lines = Settings::getSingleton()->get('diff_context_lines_leading', 2);
-    $this->trailing_context_lines = Settings::getSingleton()->get('diff_context_lines_trailing', 2);
+    $this->leading_context_lines = Settings::get('diff_context_lines_leading', 2);
+    $this->trailing_context_lines = Settings::get('diff_context_lines_trailing', 2);
   }
 
   function _start_diff() {
diff --git a/core/lib/Drupal/Component/PhpStorage/PhpStorageFactory.php b/core/lib/Drupal/Component/PhpStorage/PhpStorageFactory.php
index 0939799..3eb1698 100644
--- a/core/lib/Drupal/Component/PhpStorage/PhpStorageFactory.php
+++ b/core/lib/Drupal/Component/PhpStorage/PhpStorageFactory.php
@@ -34,7 +34,7 @@ class PhpStorageFactory {
    *   An instantiated storage controller for the specified name.
    */
   static function get($name) {
-    $overrides = Settings::getSingleton()->get('php_storage');
+    $overrides = Settings::get('php_storage');
     if (isset($overrides[$name])) {
       $configuration = $overrides[$name];
     }
diff --git a/core/lib/Drupal/Component/Utility/Settings.php b/core/lib/Drupal/Component/Utility/Settings.php
index eb59e66..5e0b6bc 100644
--- a/core/lib/Drupal/Component/Utility/Settings.php
+++ b/core/lib/Drupal/Component/Utility/Settings.php
@@ -34,9 +34,37 @@
    *
    * @return \Drupal\Component\Utility\Settings
    */
-  public static function getSingleton() {
+  public static function getInstance() {
     return self::$instance;
   }
+  /**
+   * Returns a setting.
+   *
+   * Settings can be set in settings.php in the $settings array and requested
+   * by this function. Settings should be used over configuration for read-only,
+   * possibly low bootstrap configuration that is environment specific.
+   *
+   * @param string $name
+   *   The name of the setting to return.
+   * @param mixed $default
+   *   (optional) The default value to use if this setting is not set.
+   *
+   * @return mixed
+   *   The value of the setting, the provided default if not set.
+   */
+  public static function get($name, $default = NULL) {
+    return self::$instance->getSetting($name, $default);
+  }
+
+  /**
+   * Returns all the settings. This is only used for testing purposes.
+   *
+   * @return array
+   *   All the settings.
+   */
+  public static function getAll() {
+    return self::$instance->getAllSettings();
+  }
 
   /**
    * Constructor.
@@ -64,7 +92,7 @@ function __construct(array $settings) {
    * @return mixed
    *   The value of the setting, the provided default if not set.
    */
-  public function get($name, $default = NULL) {
+  public function getSetting($name, $default = NULL) {
     return isset($this->storage[$name]) ? $this->storage[$name] : $default;
   }
 
@@ -74,7 +102,7 @@ public function get($name, $default = NULL) {
    * @return array
    *   All the settings.
    */
-  public function getAll() {
+  public function getAllSettings() {
     return $this->storage;
   }
 
diff --git a/core/lib/Drupal/Core/Authentication/Provider/Cookie.php b/core/lib/Drupal/Core/Authentication/Provider/Cookie.php
index ae108dc..1a7b256 100644
--- a/core/lib/Drupal/Core/Authentication/Provider/Cookie.php
+++ b/core/lib/Drupal/Core/Authentication/Provider/Cookie.php
@@ -8,10 +8,8 @@
 namespace Drupal\Core\Authentication\Provider;
 
 use Drupal\Core\Authentication\AuthenticationProviderInterface;
-use Symfony\Component\HttpFoundation\RedirectResponse;
-use Symfony\Component\HttpFoundation\Response;
+use Drupal\Component\Utility\Settings;
 use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
 use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
 
 /**
@@ -32,7 +30,7 @@ public function applies(Request $request) {
   public function authenticate(Request $request) {
     // Global $user is deprecated, but the session system is still based on it.
     global $user;
-    require_once DRUPAL_ROOT . '/' . settings()->get('session_inc', 'core/includes/session.inc');
+    require_once DRUPAL_ROOT . '/' . Settings::get('session_inc', 'core/includes/session.inc');
     drupal_session_initialize();
     if (drupal_session_started()) {
       return $user;
diff --git a/core/lib/Drupal/Core/Config/BootstrapConfigStorageFactory.php b/core/lib/Drupal/Core/Config/BootstrapConfigStorageFactory.php
index 054e690..e075261 100644
--- a/core/lib/Drupal/Core/Config/BootstrapConfigStorageFactory.php
+++ b/core/lib/Drupal/Core/Config/BootstrapConfigStorageFactory.php
@@ -6,6 +6,7 @@
  */
 
 namespace Drupal\Core\Config;
+
 use Drupal\Component\Utility\Settings;
 
 /**
@@ -20,8 +21,7 @@ class BootstrapConfigStorageFactory {
    *   A configuration storage implementation.
    */
   public static function get() {
-    $settings = Settings::getSingleton();
-    $drupal_bootstrap_config_storage = $settings->get('drupal_bootstrap_config_storage');
+    $drupal_bootstrap_config_storage = Settings::get('drupal_bootstrap_config_storage');
     if ($drupal_bootstrap_config_storage && is_callable($drupal_bootstrap_config_storage)) {
       return call_user_func($drupal_bootstrap_config_storage);
     }
diff --git a/core/lib/Drupal/Core/CoreServiceProvider.php b/core/lib/Drupal/Core/CoreServiceProvider.php
index 5c3526f..1a5b7ee 100644
--- a/core/lib/Drupal/Core/CoreServiceProvider.php
+++ b/core/lib/Drupal/Core/CoreServiceProvider.php
@@ -7,6 +7,7 @@
 
 namespace Drupal\Core;
 
+use Drupal\Component\Utility\Settings;
 use Drupal\Core\Cache\ListCacheBinsPass;
 use Drupal\Core\Config\ConfigFactoryOverridePass;
 use Drupal\Core\DependencyInjection\ServiceProviderInterface;
@@ -106,15 +107,15 @@ public static function registerTwig(ContainerBuilder $container) {
         // @todo ensure garbage collection of expired files.
         // When in the installer, twig_cache must be FALSE until we know the
         // files folder is writable.
-        'cache' => drupal_installation_attempted() ? FALSE : settings()->get('twig_cache', TRUE),
+        'cache' => drupal_installation_attempted() ? FALSE : Settings::get('twig_cache', TRUE),
         // @todo Remove in followup issue
         // @see http://drupal.org/node/1712444.
         'autoescape' => FALSE,
         // @todo Remove in followup issue
         // @see http://drupal.org/node/1806538.
         'strict_variables' => FALSE,
-        'debug' => settings()->get('twig_debug', FALSE),
-        'auto_reload' => settings()->get('twig_auto_reload', NULL),
+        'debug' => Settings::get('twig_debug', FALSE),
+        'auto_reload' => Settings::get('twig_auto_reload', NULL),
       ))
       ->addArgument(new Reference('module_handler'))
       ->addArgument(new Reference('theme_handler'))
diff --git a/core/lib/Drupal/Core/Extension/ExtensionDiscovery.php b/core/lib/Drupal/Core/Extension/ExtensionDiscovery.php
index aba0c2f..d67b6f7 100644
--- a/core/lib/Drupal/Core/Extension/ExtensionDiscovery.php
+++ b/core/lib/Drupal/Core/Extension/ExtensionDiscovery.php
@@ -131,7 +131,7 @@ public function scan($type, $include_tests = NULL) {
     // Therefore, add the site directory of the parent site to the search paths,
     // so that contained extensions are still discovered.
     // @see \Drupal\simpletest\WebTestBase::setUp()
-    if ($parent_site = Settings::getSingleton()->get('test_parent_site')) {
+    if ($parent_site = Settings::get('test_parent_site')) {
       $searchdirs[static::ORIGIN_PARENT_SITE] = $parent_site;
     }
 
diff --git a/core/lib/Drupal/Core/Form/FormBuilder.php b/core/lib/Drupal/Core/Form/FormBuilder.php
index 1231689..424b464 100644
--- a/core/lib/Drupal/Core/Form/FormBuilder.php
+++ b/core/lib/Drupal/Core/Form/FormBuilder.php
@@ -9,6 +9,7 @@
 
 use Drupal\Component\Utility\Crypt;
 use Drupal\Component\Utility\NestedArray;
+use Drupal\Component\Utility\Settings;
 use Drupal\Component\Utility\Unicode;
 use Drupal\Component\Utility\UrlHelper;
 use Drupal\Core\Access\CsrfTokenGenerator;
@@ -1287,7 +1288,7 @@ public function doBuildForm($form_id, &$element, &$form_state) {
 
     // Special handling if we're on the top level form element.
     if (isset($element['#type']) && $element['#type'] == 'form') {
-      if (!empty($element['#https']) && settings()->get('mixed_mode_sessions', FALSE) &&
+      if (!empty($element['#https']) && Settings::get('mixed_mode_sessions', FALSE) &&
         !UrlHelper::isExternal($element['#action'])) {
         global $base_root;
 
diff --git a/core/lib/Drupal/Core/Mail/Plugin/Mail/PhpMail.php b/core/lib/Drupal/Core/Mail/Plugin/Mail/PhpMail.php
index e8086ee..874f246 100644
--- a/core/lib/Drupal/Core/Mail/Plugin/Mail/PhpMail.php
+++ b/core/lib/Drupal/Core/Mail/Plugin/Mail/PhpMail.php
@@ -7,6 +7,7 @@
 
 namespace Drupal\Core\Mail\Plugin\Mail;
 
+use Drupal\Component\Utility\Settings;
 use Drupal\Core\Mail\MailInterface;
 
 /**
@@ -66,7 +67,7 @@ public function mail(array $message) {
     foreach ($message['headers'] as $name => $value) {
       $mimeheaders[] = $name . ': ' . mime_header_encode($value);
     }
-    $line_endings = settings()->get('mail_line_endings', PHP_EOL);
+    $line_endings = Settings::get('mail_line_endings', PHP_EOL);
     // Prepare mail commands.
     $mail_subject = mime_header_encode($message['subject']);
     // Note: e-mail uses CRLF for line-endings. PHP's API requires LF
diff --git a/core/lib/Drupal/Core/StreamWrapper/PublicStream.php b/core/lib/Drupal/Core/StreamWrapper/PublicStream.php
index 760a1f8..8f798f5 100644
--- a/core/lib/Drupal/Core/StreamWrapper/PublicStream.php
+++ b/core/lib/Drupal/Core/StreamWrapper/PublicStream.php
@@ -7,6 +7,8 @@
 
 namespace Drupal\Core\StreamWrapper;
 
+use Drupal\Component\Utility\Settings;
+
 /**
  * Defines a Drupal public (public://) stream wrapper class.
  *
@@ -37,7 +39,7 @@ public function getExternalUrl() {
    *   The base path for public:// typically sites/default/files.
    */
   public static function basePath() {
-    $base_path = settings()->get('file_public_path', conf_path() . '/files');
+    $base_path = Settings::get('file_public_path', conf_path() . '/files');
     return $base_path;
   }
 
diff --git a/core/lib/Drupal/Core/StringTranslation/Translator/CustomStrings.php b/core/lib/Drupal/Core/StringTranslation/Translator/CustomStrings.php
index 667c3eb..0b564fc 100644
--- a/core/lib/Drupal/Core/StringTranslation/Translator/CustomStrings.php
+++ b/core/lib/Drupal/Core/StringTranslation/Translator/CustomStrings.php
@@ -39,7 +39,7 @@ public function __construct(Settings $settings) {
    * {@inheritdoc}
    */
   protected function getLanguage($langcode) {
-    return $this->settings->get('locale_custom_strings_' . $langcode, array());
+    return $this->settings->getSetting('locale_custom_strings_' . $langcode, array());
   }
 
 }
diff --git a/core/lib/Drupal/Core/Template/TwigNodeTrans.php b/core/lib/Drupal/Core/Template/TwigNodeTrans.php
index dddc273..2ff3b08 100644
--- a/core/lib/Drupal/Core/Template/TwigNodeTrans.php
+++ b/core/lib/Drupal/Core/Template/TwigNodeTrans.php
@@ -14,6 +14,7 @@
 
 namespace Drupal\Core\Template;
 
+use Drupal\Component\Utility\Settings;
 use Drupal\Component\Utility\Unicode;
 
 /**
@@ -82,7 +83,7 @@ public function compile(\Twig_Compiler $compiler) {
     $compiler->raw(')');
 
     // Append translation debug markup, if necessary.
-    if (settings()->get('twig_debug', FALSE)) {
+    if (Settings::get('twig_debug', FALSE)) {
       $compiler->raw(" . '\n<!-- TRANSLATION: ");
       $compiler->subcompile($singular);
       if (!empty($plural)) {
diff --git a/core/modules/simpletest/lib/Drupal/simpletest/DrupalUnitTestBase.php b/core/modules/simpletest/lib/Drupal/simpletest/DrupalUnitTestBase.php
index 1975466..73c3e5e 100644
--- a/core/modules/simpletest/lib/Drupal/simpletest/DrupalUnitTestBase.php
+++ b/core/modules/simpletest/lib/Drupal/simpletest/DrupalUnitTestBase.php
@@ -246,7 +246,7 @@ public function containerBuild(ContainerBuilder $container) {
       // place.
       $container->register('settings', 'Drupal\Component\Utility\Settings')
         ->setFactoryClass('Drupal\Component\Utility\Settings')
-        ->setFactoryMethod('getSingleton');
+        ->setFactoryMethod('getInstance');
 
       $container
         ->register('keyvalue', 'Drupal\Core\KeyValueStore\KeyValueFactory')
diff --git a/core/modules/simpletest/lib/Drupal/simpletest/TestBase.php b/core/modules/simpletest/lib/Drupal/simpletest/TestBase.php
index 1ab979f..9d876a4 100644
--- a/core/modules/simpletest/lib/Drupal/simpletest/TestBase.php
+++ b/core/modules/simpletest/lib/Drupal/simpletest/TestBase.php
@@ -1008,7 +1008,7 @@ private function prepareEnvironment() {
 
     // Backup current in-memory configuration.
     $this->originalSite = conf_path();
-    $this->originalSettings = settings()->getAll();
+    $this->originalSettings = Settings::getAll();
     $this->originalConfig = $GLOBALS['config'];
     // @todo Remove all remnants of $GLOBALS['conf'].
     // @see https://drupal.org/node/2183323
@@ -1026,12 +1026,12 @@ private function prepareEnvironment() {
     // Save further contextual information.
     // Use the original files directory to avoid nesting it within an existing
     // simpletest directory if a test is executed within a test.
-    $this->originalFileDirectory = settings()->get('file_public_path', conf_path() . '/files');
+    $this->originalFileDirectory = Settings::get('file_public_path', conf_path() . '/files');
     $this->originalProfile = drupal_get_profile();
     $this->originalUser = isset($user) ? clone $user : NULL;
 
     // Ensure that the current session is not changed by the new environment.
-    require_once DRUPAL_ROOT . '/' . settings()->get('session_inc', 'core/includes/session.inc');
+    require_once DRUPAL_ROOT . '/' . Settings::get('session_inc', 'core/includes/session.inc');
     drupal_save_session(FALSE);
 
     // Save and clean the shutdown callbacks array because it is static cached
@@ -1331,7 +1331,7 @@ protected function exceptionHandler($exception) {
    * @see \Drupal\Component\Utility\Settings::get()
    */
   protected function settingsSet($name, $value) {
-    $settings = settings()->getAll();
+    $settings = Settings::getAll();
     $settings[$name] = $value;
     new Settings($settings);
   }
diff --git a/core/modules/system/lib/Drupal/system/Tests/DrupalKernel/DrupalKernelTest.php b/core/modules/system/lib/Drupal/system/Tests/DrupalKernel/DrupalKernelTest.php
index 26b1b76..b7ab0dc 100644
--- a/core/modules/system/lib/Drupal/system/Tests/DrupalKernel/DrupalKernelTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/DrupalKernel/DrupalKernelTest.php
@@ -68,7 +68,7 @@ function testCompileDIC() {
 
     // Now use the read-only storage implementation, simulating a "production"
     // environment.
-    $php_storage = settings()->get('php_storage');
+    $php_storage = Settings::get('php_storage');
     $php_storage['service_container']['class'] = 'Drupal\Component\PhpStorage\FileReadOnlyStorage';
     $this->settingsSet('php_storage', $php_storage);
     $kernel = new DrupalKernel('testing', $classloader);
diff --git a/core/modules/system/lib/Drupal/system/Tests/File/UnmanagedCopyTest.php b/core/modules/system/lib/Drupal/system/Tests/File/UnmanagedCopyTest.php
index acae92b..ee8afff 100644
--- a/core/modules/system/lib/Drupal/system/Tests/File/UnmanagedCopyTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/File/UnmanagedCopyTest.php
@@ -7,6 +7,8 @@
 
 namespace Drupal\system\Tests\File;
 
+use Drupal\Component\Utility\Settings;
+
 /**
  * Unmanaged copy related tests.
  */
@@ -33,7 +35,7 @@ function testNormal() {
     $this->assertEqual($new_filepath, $desired_filepath, 'Returned expected filepath.');
     $this->assertTrue(file_exists($uri), 'Original file remains.');
     $this->assertTrue(file_exists($new_filepath), 'New file exists.');
-    $this->assertFilePermissions($new_filepath, settings()->get('file_chmod_file', FILE_CHMOD_FILE));
+    $this->assertFilePermissions($new_filepath, Settings::get('file_chmod_file', FILE_CHMOD_FILE));
 
     // Copying with rename.
     $desired_filepath = 'public://' . $this->randomName();
@@ -43,7 +45,7 @@ function testNormal() {
     $this->assertNotEqual($newer_filepath, $desired_filepath, 'Returned expected filepath.');
     $this->assertTrue(file_exists($uri), 'Original file remains.');
     $this->assertTrue(file_exists($newer_filepath), 'New file exists.');
-    $this->assertFilePermissions($newer_filepath, settings()->get('file_chmod_file', FILE_CHMOD_FILE));
+    $this->assertFilePermissions($newer_filepath, Settings::get('file_chmod_file', FILE_CHMOD_FILE));
 
     // TODO: test copying to a directory (rather than full directory/file path)
     // TODO: test copying normal files using normal paths (rather than only streams)
@@ -73,7 +75,7 @@ function testOverwriteSelf() {
     $this->assertNotEqual($new_filepath, $uri, 'Copied file has a new name.');
     $this->assertTrue(file_exists($uri), 'Original file exists after copying onto itself.');
     $this->assertTrue(file_exists($new_filepath), 'Copied file exists after copying onto itself.');
-    $this->assertFilePermissions($new_filepath, settings()->get('file_chmod_file', FILE_CHMOD_FILE));
+    $this->assertFilePermissions($new_filepath, Settings::get('file_chmod_file', FILE_CHMOD_FILE));
 
     // Copy the file onto itself without renaming fails.
     $new_filepath = file_unmanaged_copy($uri, $uri, FILE_EXISTS_ERROR);
@@ -91,6 +93,6 @@ function testOverwriteSelf() {
     $this->assertNotEqual($new_filepath, $uri, 'Copied file has a new name.');
     $this->assertTrue(file_exists($uri), 'Original file exists after copying onto itself.');
     $this->assertTrue(file_exists($new_filepath), 'Copied file exists after copying onto itself.');
-    $this->assertFilePermissions($new_filepath, settings()->get('file_chmod_file', FILE_CHMOD_FILE));
+    $this->assertFilePermissions($new_filepath, Settings::get('file_chmod_file', FILE_CHMOD_FILE));
   }
 }
diff --git a/core/modules/system/lib/Drupal/system/Tests/File/UnmanagedMoveTest.php b/core/modules/system/lib/Drupal/system/Tests/File/UnmanagedMoveTest.php
index 7fac3b3..60e6bbe 100644
--- a/core/modules/system/lib/Drupal/system/Tests/File/UnmanagedMoveTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/File/UnmanagedMoveTest.php
@@ -7,6 +7,8 @@
 
 namespace Drupal\system\Tests\File;
 
+use Drupal\Component\Utility\Settings;
+
 /**
  * Unmanaged move related tests.
  */
@@ -33,7 +35,7 @@ function testNormal() {
     $this->assertEqual($new_filepath, $desired_filepath, 'Returned expected filepath.');
     $this->assertTrue(file_exists($new_filepath), 'File exists at the new location.');
     $this->assertFalse(file_exists($uri), 'No file remains at the old location.');
-    $this->assertFilePermissions($new_filepath, settings()->get('file_chmod_file', FILE_CHMOD_FILE));
+    $this->assertFilePermissions($new_filepath, Settings::get('file_chmod_file', FILE_CHMOD_FILE));
 
     // Moving with rename.
     $desired_filepath = 'public://' . $this->randomName();
@@ -44,7 +46,7 @@ function testNormal() {
     $this->assertNotEqual($newer_filepath, $desired_filepath, 'Returned expected filepath.');
     $this->assertTrue(file_exists($newer_filepath), 'File exists at the new location.');
     $this->assertFalse(file_exists($new_filepath), 'No file remains at the old location.');
-    $this->assertFilePermissions($newer_filepath, settings()->get('file_chmod_file', FILE_CHMOD_FILE));
+    $this->assertFilePermissions($newer_filepath, Settings::get('file_chmod_file', FILE_CHMOD_FILE));
 
     // TODO: test moving to a directory (rather than full directory/file path)
     // TODO: test creating and moving normal files (rather than streams)
diff --git a/core/modules/system/lib/Drupal/system/Tests/KeyValueStore/StorageTestBase.php b/core/modules/system/lib/Drupal/system/Tests/KeyValueStore/StorageTestBase.php
index 86e6ce8..05927cd 100644
--- a/core/modules/system/lib/Drupal/system/Tests/KeyValueStore/StorageTestBase.php
+++ b/core/modules/system/lib/Drupal/system/Tests/KeyValueStore/StorageTestBase.php
@@ -54,7 +54,7 @@ protected function setUp() {
     $this->container->set('service_container', $this->container);
     $this->container->register('settings', 'Drupal\Component\Utility\Settings')
       ->setFactoryClass('Drupal\Component\Utility\Settings')
-      ->setFactoryMethod('getSingleton');
+      ->setFactoryMethod('getInstance');
     $this->container
       ->register('keyvalue', 'Drupal\Core\KeyValueStore\KeyValueFactory')
       ->addArgument(new Reference('service_container'))
diff --git a/core/modules/system/lib/Drupal/system/Tests/Mail/HtmlToTextTest.php b/core/modules/system/lib/Drupal/system/Tests/Mail/HtmlToTextTest.php
index 751bf0c..0f6f6aa 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Mail/HtmlToTextTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Mail/HtmlToTextTest.php
@@ -8,6 +8,7 @@
 namespace Drupal\system\Tests\Mail;
 
 use Drupal\simpletest\WebTestBase;
+use Drupal\Component\Utility\Settings;
 
 /**
  * Tests for drupal_html_to_text().
@@ -348,7 +349,7 @@ public function testDrupalHtmlToTextParagraphs() {
   public function testVeryLongLineWrap() {
     $input = 'Drupal<br /><p>' . str_repeat('x', 2100) . '</><br />Drupal';
     $output = drupal_html_to_text($input);
-    $eol = settings()->get('mail_line_endings', PHP_EOL);
+    $eol = Settings::get('mail_line_endings', PHP_EOL);
 
     $maximum_line_length = 0;
     foreach (explode($eol, $output) as $line) {
diff --git a/core/modules/system/lib/Drupal/system/Tests/System/SettingsRewriteTest.php b/core/modules/system/lib/Drupal/system/Tests/System/SettingsRewriteTest.php
index 74c080d..dcbed32 100644
--- a/core/modules/system/lib/Drupal/system/Tests/System/SettingsRewriteTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/System/SettingsRewriteTest.php
@@ -8,6 +8,7 @@
 namespace Drupal\system\Tests\System;
 
 use Drupal\simpletest\UnitTestBase;
+use Drupal\Component\Utility\Settings;
 
 /**
  * Tests the drupal_rewrite_settings() function.
@@ -104,7 +105,7 @@ function testDrupalRewriteSettings() {
       ),
     );
     foreach ($tests as $test) {
-      $filename = settings()->get('file_public_path', conf_path() . '/files') . '/mock_settings.php';
+      $filename = Settings::get('file_public_path', conf_path() . '/files') . '/mock_settings.php';
       file_put_contents(DRUPAL_ROOT . '/' . $filename, "<?php\n" . $test['original'] . "\n");
       drupal_rewrite_settings($test['settings'], $filename);
       $this->assertEqual(file_get_contents(DRUPAL_ROOT . '/' . $filename), "<?php\n" . $test['expected'] . "\n");
diff --git a/core/modules/system/system.install b/core/modules/system/system.install
index 7a7208e..21bfb28 100644
--- a/core/modules/system/system.install
+++ b/core/modules/system/system.install
@@ -9,6 +9,7 @@
 use Drupal\Core\Database\Database;
 use Drupal\Core\Language\Language;
 use Drupal\Core\StreamWrapper\PublicStream;
+use Drupal\Component\Utility\Settings;
 
 /**
  * Implements hook_requirements().
@@ -335,7 +336,7 @@ function system_requirements($phase) {
   // unless overrides are provided in settings.php.
   if ($phase == 'install') {
     $directories = array();
-    if ($file_public_path = settings()->get('file_public_path')) {
+    if ($file_public_path = Settings::get('file_public_path')) {
       $directories[] = $file_public_path;
     }
     else {
@@ -447,7 +448,7 @@ function system_requirements($phase) {
 
   // Verify the update.php access setting
   if ($phase == 'runtime') {
-    if (settings()->get('update_free_access')) {
+    if (Settings::get('update_free_access')) {
       $requirements['update access'] = array(
         'value' => t('Not protected'),
         'severity' => REQUIREMENT_ERROR,
@@ -530,7 +531,7 @@ function system_requirements($phase) {
     }
     $requirements['update status']['title'] = t('Update notifications');
 
-    if (settings()->get('rebuild_access')) {
+    if (Settings::get('rebuild_access')) {
       $requirements['rebuild access'] = array(
         'title' => t('Rebuild access'),
         'value' => t('Enabled'),
diff --git a/core/modules/update/update.module b/core/modules/update/update.module
index 23865ec..bb06ad5 100644
--- a/core/modules/update/update.module
+++ b/core/modules/update/update.module
@@ -11,6 +11,8 @@
  * ability to install contributed modules and themes via an user interface.
  */
 
+use Drupal\Component\Utility\Settings;
+
 // These are internally used constants for this code, do not modify.
 
 /**
@@ -172,7 +174,7 @@ function update_menu_link_defaults() {
  * @see update_menu()
  */
 function update_manager_access() {
-  return settings()->get('allow_authorize_operations', TRUE) && user_access('administer software updates');
+  return Settings::get('allow_authorize_operations', TRUE) && user_access('administer software updates');
 }
 
 /**
diff --git a/core/rebuild.php b/core/rebuild.php
index 81d9f55..382387c 100644
--- a/core/rebuild.php
+++ b/core/rebuild.php
@@ -11,6 +11,7 @@
  */
 
 use Drupal\Component\Utility\Crypt;
+use Drupal\Component\Utility\Settings;
 
 // Change the directory to the Drupal root.
 chdir('..');
@@ -21,10 +22,10 @@
 
 drupal_bootstrap(DRUPAL_BOOTSTRAP_CONFIGURATION);
 
-if (settings()->get('rebuild_access', FALSE) ||
+if (Settings::get('rebuild_access', FALSE) ||
   (isset($_GET['token'], $_GET['timestamp']) &&
     ((REQUEST_TIME - $_GET['timestamp']) < 300) &&
-    ($_GET['token'] === Crypt::hmacBase64($_GET['timestamp'], settings()->get('hash_salt')))
+    ($_GET['token'] === Crypt::hmacBase64($_GET['timestamp'], Settings::get('hash_salt')))
   )) {
 
   drupal_rebuild();
diff --git a/core/scripts/rebuild_token_calculator.sh b/core/scripts/rebuild_token_calculator.sh
index a75c9b6..c206e0b 100755
--- a/core/scripts/rebuild_token_calculator.sh
+++ b/core/scripts/rebuild_token_calculator.sh
@@ -11,6 +11,7 @@
 require_once dirname(__DIR__) . '/includes/bootstrap.inc';
 
 use Drupal\Component\Utility\Crypt;
+use Drupal\Component\Utility\Settings;
 
 drupal_bootstrap(DRUPAL_BOOTSTRAP_CONFIGURATION);
 
@@ -19,6 +20,6 @@
 }
 
 $timestamp = time();
-$token = Crypt::hmacBase64($timestamp, settings()->get('hash_salt'));
+$token = Crypt::hmacBase64($timestamp, Settings::get('hash_salt'));
 
 print "timestamp=$timestamp&token=$token\n";
diff --git a/core/scripts/run-tests.sh b/core/scripts/run-tests.sh
index 4f2d27b..ff549ec 100755
--- a/core/scripts/run-tests.sh
+++ b/core/scripts/run-tests.sh
@@ -376,7 +376,7 @@ function simpletest_script_bootstrap() {
   ini_set('display_errors', TRUE);
 
   // Ensure that required Settings exist.
-  if (!Settings::getSingleton()->getAll()) {
+  if (!Settings::getAll()) {
     new Settings(array(
       'hash_salt' => 'run-tests',
     ));
diff --git a/core/tests/Drupal/Tests/Component/Utility/SettingsTest.php b/core/tests/Drupal/Tests/Component/Utility/SettingsTest.php
index 7117bcb..7e6460b 100644
--- a/core/tests/Drupal/Tests/Component/Utility/SettingsTest.php
+++ b/core/tests/Drupal/Tests/Component/Utility/SettingsTest.php
@@ -56,26 +56,26 @@ public function setUp(){
    */
   public function testGet() {
     // Test stored settings.
-    $this->assertEquals($this->config['one'], $this->settings->get('one'), 'The correect setting was not returned.');
-    $this->assertEquals($this->config['two'], $this->settings->get('two'), 'The correct setting was not returned.');
+    $this->assertEquals($this->config['one'], $this->settings->getSetting('one'), 'The correect setting was not returned.');
+    $this->assertEquals($this->config['two'], $this->settings->getSetting('two'), 'The correct setting was not returned.');
 
     // Test setting that isn't stored with default.
-    $this->assertEquals('3', $this->settings->get('three', '3'), 'Default value for a setting not properly returned.');
-    $this->assertNull($this->settings->get('four'), 'Non-null value returned for a setting that should not exist.');
+    $this->assertEquals('3', $this->settings->getSetting('three', '3'), 'Default value for a setting not properly returned.');
+    $this->assertNull($this->settings->getSetting('four'), 'Non-null value returned for a setting that should not exist.');
   }
 
   /**
    * Test Settings::getAll().
    */
   public function testGetAll() {
-    $this->assertEquals($this->config, $this->settings->getAll());
+    $this->assertEquals($this->config, $this->settings->getAllSettings());
   }
 
   /**
-   * Tests Settings::getSingleton().
+   * Tests Settings::getInstance().
    */
   public function testGetSingleton() {
-    $singleton = $this->settings->getSingleton();
+    $singleton = $this->settings->getInstance();
     $this->assertEquals($singleton, $this->settings);
   }
 
diff --git a/core/themes/engines/twig/twig.engine b/core/themes/engines/twig/twig.engine
index 05fda30..dcda7cc 100644
--- a/core/themes/engines/twig/twig.engine
+++ b/core/themes/engines/twig/twig.engine
@@ -6,6 +6,7 @@
  */
 
 use Drupal\Core\Extension\Extension;
+use Drupal\Component\Utility\Settings;
 
 /**
  * Implements hook_theme().
@@ -53,7 +54,7 @@ function twig_render_template($template_file, $variables) {
     'rendered_markup' => \Drupal::service('twig')->loadTemplate($template_file)->render($variables),
     'debug_suffix'    => '',
   );
-  if (settings()->get('twig_debug', FALSE)) {
+  if (Settings::get('twig_debug', FALSE)) {
     $output['debug_prefix'] .= "\n\n<!-- THEME DEBUG -->";
     $output['debug_prefix'] .= "\n<!-- CALL: _theme('{$variables['theme_hook_original']}') -->";
     // If there are theme suggestions, reverse the array so more specific
diff --git a/core/update.php b/core/update.php
index c94b4c5..f4f59b3 100644
--- a/core/update.php
+++ b/core/update.php
@@ -120,7 +120,7 @@ function update_results_page() {
     $output .= '</p>';
   }
 
-  if (settings()->get('update_free_access')) {
+  if (Settings::get('update_free_access')) {
     $output .= "<p><strong>Reminder: don't forget to set the <code>\$settings['update_free_access']</code> value in your <code>settings.php</code> file back to <code>FALSE</code>.</strong></p>";
   }
 
@@ -256,7 +256,7 @@ function update_access_allowed() {
   $user = \Drupal::currentUser();
 
   // Allow the global variable in settings.php to override the access check.
-  if (settings()->get('update_free_access')) {
+  if (Settings::get('update_free_access')) {
     return TRUE;
   }
   // Calls to user_access() might fail during the Drupal 6 to 7 update process,
@@ -336,7 +336,7 @@ function update_task_list($active = NULL) {
 // below.
 require_once __DIR__ . '/includes/module.inc';
 
-$settings = settings()->getAll();
+$settings = Settings::getAll();
 new Settings($settings);
 $kernel = new DrupalKernel('update', drupal_classloader(), FALSE);
 $kernel->boot();
@@ -346,7 +346,7 @@ function update_task_list($active = NULL) {
 // Determine if the current user has access to run update.php.
 drupal_bootstrap(DRUPAL_BOOTSTRAP_PAGE_CACHE);
 
-require_once DRUPAL_ROOT . '/' . settings()->get('session_inc', 'core/includes/session.inc');
+require_once DRUPAL_ROOT . '/' . Settings::get('session_inc', 'core/includes/session.inc');
 drupal_session_initialize();
 
 // Ensure that URLs generated for the home and admin pages don't have 'update.php'
