diff --git a/src/Form/SwitchPageThemeSettingForm.php b/src/Form/SwitchPageThemeSettingForm.php
index e308167..b8f5460 100644
--- a/src/Form/SwitchPageThemeSettingForm.php
+++ b/src/Form/SwitchPageThemeSettingForm.php
@@ -3,10 +3,11 @@
 namespace Drupal\switch_page_theme\Form;
 
 use Drupal\Core\Extension\ModuleHandlerInterface;
+use Drupal\Core\Extension\ThemeHandlerInterface;
 use Drupal\Core\Form\ConfigFormBase;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\Language\LanguageManagerInterface;
-use Drupal\domain\DomainLoader;
+use Drupal\domain\DomainStorageInterface;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 
 /**
@@ -22,11 +23,18 @@ class SwitchPageThemeSettingForm extends ConfigFormBase {
   protected $moduleHandler;
 
   /**
-   * The Domain loader.
+   * The theme handler.
    *
-   * @var \Drupal\domain\DomainLoader
+   * @var \Drupal\Core\Extension\ThemeHandlerInterface
    */
-  protected $domainLoader;
+  protected $themeHandler;
+
+  /**
+   * The Domain storage service.
+   *
+   * @var \Drupal\domain\DomainStorageInterface
+   */
+  protected $domainStorage;
 
   /**
    * The language manager.
@@ -38,10 +46,11 @@ class SwitchPageThemeSettingForm extends ConfigFormBase {
   /**
    * {@inheritdoc}
    */
-  public function __construct(ModuleHandlerInterface $module_handler, DomainLoader $domain_loader = NULL, LanguageManagerInterface $language_manager = NULL) {
+  public function __construct(ModuleHandlerInterface $module_handler, ThemeHandlerInterface $theme_handler, DomainStorageInterface $domain_storage = NULL, LanguageManagerInterface $language_manager = NULL) {
     $this->moduleHandler = $module_handler;
-    if ($domain_loader) {
-      $this->domainLoader = $domain_loader;
+    $this->themeHandler = $theme_handler;
+    if ($domain_storage) {
+      $this->domainStorage = $domain_storage;
     }
     if ($language_manager) {
       $this->languageManager = $language_manager;
@@ -54,14 +63,15 @@ class SwitchPageThemeSettingForm extends ConfigFormBase {
   public static function create(ContainerInterface $container) {
     $domainServices = NULL;
     $languageServices = NULL;
-    if ($container->has('domain.loader')) {
-      $domainServices = $container->get('domain.loader');
+    if ($container->has('domain.negotiator')) {
+      $domainServices = $container->get('entity_type.manager')->getStorage('domain');
     }
     if ($container->has('language_manager')) {
       $languageServices = $container->get('language_manager');
     }
     return new static(
       $container->get('module_handler'),
+      $container->get('theme_handler'),
       $domainServices,
       $languageServices
     );
@@ -143,7 +153,7 @@ class SwitchPageThemeSettingForm extends ConfigFormBase {
     ];
 
     // Available themes.
-    $themes = system_list('theme');
+    $themes = $this->themeHandler->listInfo();
     $themeNames[''] = '--Select--';
     foreach ($themes as $key => $value) {
       $themeNames[$key] = $value->info['name'];
@@ -203,7 +213,7 @@ class SwitchPageThemeSettingForm extends ConfigFormBase {
 
       // Add Domains if domain module is available.
       if ($this->moduleHandler->moduleExists('domain')) {
-        foreach ($this->domainLoader->loadMultiple() as $domain_key => $domain) {
+        foreach ($this->domainStorage->loadMultiple() as $domain_key => $domain) {
           $domainNames[$domain_key] = $domain->getHostname();
         }
 
diff --git a/src/Theme/PageThemeNegotiator.php b/src/Theme/PageThemeNegotiator.php
index 338540a..2bf7312 100644
--- a/src/Theme/PageThemeNegotiator.php
+++ b/src/Theme/PageThemeNegotiator.php
@@ -6,7 +6,7 @@ use Drupal\Core\Config\ConfigFactoryInterface;
 use Drupal\Core\Extension\ModuleHandlerInterface;
 use Drupal\Core\Language\LanguageManagerInterface;
 use Drupal\Core\Path\CurrentPathStack;
-use Drupal\Core\Path\AliasManagerInterface;
+use Drupal\path_alias\AliasManagerInterface;
 use Drupal\Core\Path\PathMatcherInterface;
 use Drupal\Core\Routing\RouteMatchInterface;
 use Drupal\Core\Session\AccountProxyInterface;
@@ -36,7 +36,7 @@ class PageThemeNegotiator implements ThemeNegotiatorInterface {
   /**
    * Protected pathAlias variable.
    *
-   * @var Drupal\Core\Path\AliasManagerInterface
+   * @var Drupal\path_alias\AliasManagerInterface
    */
   protected $pathAlias;
 
diff --git a/switch_page_theme.info.yml b/switch_page_theme.info.yml
index 17940b8..b059db7 100644
--- a/switch_page_theme.info.yml
+++ b/switch_page_theme.info.yml
@@ -2,6 +2,7 @@ name: Switch Page Theme
 description: 'Switches active theme on specific pages.'
 package: User Interface
 type: module
+core_version_requirement: ^8 || ^9
 core: 8.x
 
 configure: switch_page_theme.settings
diff --git a/switch_page_theme.services.yml b/switch_page_theme.services.yml
index 2ffc01d..499a0e1 100644
--- a/switch_page_theme.services.yml
+++ b/switch_page_theme.services.yml
@@ -1,6 +1,6 @@
 services:
   theme.negotiator.switch_page_theme:
     class: Drupal\switch_page_theme\Theme\PageThemeNegotiator
-    arguments: ['@config.factory', '@path.current','@path.alias_manager', '@path.matcher', '@current_user', '@module_handler', '@request_stack', '@?domain.negotiator', '@?language_manager']
+    arguments: ['@config.factory', '@path.current', '@path_alias.manager', '@path.matcher', '@current_user', '@module_handler', '@request_stack', '@?domain.negotiator', '@?language_manager']
     tags:
       - { name: theme_negotiator, priority: 1 }
