diff --git a/missing_translation_fallback_language.module b/missing_translation_fallback_language.module
index d4fac10..9e4b742 100644
--- a/missing_translation_fallback_language.module
+++ b/missing_translation_fallback_language.module
@@ -4,58 +4,26 @@
  * @file
  * Missing Translation Fallback Language module file.
  */
-
+use Drupal\Core\Hook\Attribute\LegacyHook;
+use Drupal\missing_translation_fallback_language\Hook\MissingTranslationFallbackLanguageHooks;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\missing_translation_fallback_language\LanguageListBuilder;
 
 /**
  * Implements hook_entity_type_alter().
  */
+#[LegacyHook]
 function missing_translation_fallback_language_entity_type_alter(array &$entity_types) {
-  $entity_types['configurable_language']->setListBuilderClass(LanguageListBuilder::class);
+  \Drupal::service(MissingTranslationFallbackLanguageHooks::class)->entityTypeAlter($entity_types);
 }
 
 /**
  * Implements hook_form_alter().
  */
-function missing_translation_fallback_language_form_alter(&$form, FormStateInterface $form_state, $form_id) {
-  $form_ids = [
-    'language_admin_add_form',
-    'language_admin_edit_form',
-  ];
-  if (!in_array($form_id, $form_ids)) {
-    return;
-  }
-
-  /**
-   * @var \Drupal\language\Form\LanguageEditForm $language_edit_form
-   */
-  $language_edit_form = $form_state->getFormObject();
-
-  /**
-   * @var \Drupal\language\ConfigurableLanguageInterface $language
-   */
-  $language = $language_edit_form->getEntity();
-
-  $langcode_options = [
-    '' => t('Default (English)'),
-  ];
-  foreach (Drupal::languageManager()->getLanguages() as $available_language) {
-    if ($language->getId() == $available_language->getId()) {
-      continue;
-    }
-    $langcode_options[$available_language->getId()] = $available_language->getName();
-  }
-
-  $form['missing_translation_fallback_language_langcode'] = [
-    '#type' => 'select',
-    '#title' => t('Language for missing translations'),
-    '#description' => t('Select an optional language you want translations to be used from if one in this language does not exist.'),
-    '#options' => $langcode_options,
-    '#default_value' => $language->getThirdPartySetting('missing_translation_fallback_language', 'langcode'),
-  ];
-
-  array_unshift($form['actions']['submit']['#submit'], 'missing_translation_fallback_language_form_alter_form_submit');
+#[LegacyHook]
+function missing_translation_fallback_language_form_alter(&$form, FormStateInterface $form_state, $form_id)
+{
+    \Drupal::service(MissingTranslationFallbackLanguageHooks::class)->formAlter($form, $form_state, $form_id);
 }
 
 /**
diff --git a/missing_translation_fallback_language.services.yml b/missing_translation_fallback_language.services.yml
index 0a6e44e..6b392be 100644
--- a/missing_translation_fallback_language.services.yml
+++ b/missing_translation_fallback_language.services.yml
@@ -5,3 +5,7 @@ services:
     tags:
       - { name: string_translator }
       - { name: needs_destruction }
+
+  Drupal\missing_translation_fallback_language\Hook\MissingTranslationFallbackLanguageHooks:
+    class: Drupal\missing_translation_fallback_language\Hook\MissingTranslationFallbackLanguageHooks
+    autowire: true
diff --git a/src/Hook/MissingTranslationFallbackLanguageHooks.php b/src/Hook/MissingTranslationFallbackLanguageHooks.php
new file mode 100644
index 0000000..ecb1aea
--- /dev/null
+++ b/src/Hook/MissingTranslationFallbackLanguageHooks.php
@@ -0,0 +1,62 @@
+<?php
+
+namespace Drupal\missing_translation_fallback_language\Hook;
+
+use Drupal\Core\Form\FormStateInterface;
+use Drupal\missing_translation_fallback_language\LanguageListBuilder;
+use Drupal\Core\Hook\Attribute\Hook;
+use Drupal\Core\StringTranslation\StringTranslationTrait;
+/**
+ * Hook implementations for missing_translation_fallback_language.
+ */
+class MissingTranslationFallbackLanguageHooks
+{
+    use StringTranslationTrait;
+    /**
+     * Implements hook_entity_type_alter().
+     */
+    #[Hook('entity_type_alter')]
+    public function entityTypeAlter(array &$entity_types)
+    {
+        $entity_types['configurable_language']->setListBuilderClass(\Drupal\missing_translation_fallback_language\LanguageListBuilder::class);
+    }
+    /**
+     * Implements hook_form_alter().
+     */
+    #[Hook('form_alter')]
+    public function formAlter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id)
+    {
+        $form_ids = [
+            'language_admin_add_form',
+            'language_admin_edit_form',
+        ];
+        if (!in_array($form_id, $form_ids)) {
+            return;
+        }
+        /**
+         * @var \Drupal\language\Form\LanguageEditForm $language_edit_form
+         */
+        $language_edit_form = $form_state->getFormObject();
+        /**
+         * @var \Drupal\language\ConfigurableLanguageInterface $language
+         */
+        $language = $language_edit_form->getEntity();
+        $langcode_options = [
+            '' => $this->t('Default (English)'),
+        ];
+        foreach (\Drupal::languageManager()->getLanguages() as $available_language) {
+            if ($language->getId() == $available_language->getId()) {
+                continue;
+            }
+            $langcode_options[$available_language->getId()] = $available_language->getName();
+        }
+        $form['missing_translation_fallback_language_langcode'] = [
+            '#type' => 'select',
+            '#title' => $this->t('Language for missing translations'),
+            '#description' => $this->t('Select an optional language you want translations to be used from if one in this language does not exist.'),
+            '#options' => $langcode_options,
+            '#default_value' => $language->getThirdPartySetting('missing_translation_fallback_language', 'langcode'),
+        ];
+        array_unshift($form['actions']['submit']['#submit'], 'missing_translation_fallback_language_form_alter_form_submit');
+    }
+}
diff --git a/tests/src/Kernel/LocaleTranslationTest.php b/tests/src/Kernel/LocaleTranslationTest.php
index 6da8700..955169f 100644
--- a/tests/src/Kernel/LocaleTranslationTest.php
+++ b/tests/src/Kernel/LocaleTranslationTest.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\Tests\missing_translation_fallback_language\Kernel;
 
+use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;
 use Drupal\Core\StringTranslation\TranslatableMarkup;
 use Drupal\KernelTests\KernelTestBase;
 use Drupal\language\Entity\ConfigurableLanguage;
@@ -9,6 +10,7 @@ use Drupal\language\Entity\ConfigurableLanguage;
 /**
  * Tests the fallback functionalities.
  */
+#[RunTestsInSeparateProcesses]
 class LocaleTranslationTest extends KernelTestBase {
 
   /**
