diff --git a/debugbar.module b/debugbar.module
index d23d027..86d02d9 100644
--- a/debugbar.module
+++ b/debugbar.module
@@ -4,75 +4,33 @@
  * @file
  * Module implementation file.
  */
-
+use Drupal\Core\Hook\Attribute\LegacyHook;
+use Drupal\debugbar\Hook\DebugbarHooks;
 use Drupal\Core\Render\Markup;
 use Drupal\debugbar\LazyBuilder;
 
 /**
  * Implements hook_page_top().
  */
-function debugbar_page_top(array &$page_top) {
-  /** @var \DebugBar\DebugBar $debugBar */
-  $debugBar = Drupal::service('debugbar.debugbar');
-
-  $scripts = [];
-  foreach ($debugBar->getJavascriptRenderer()
-    ->getAssets('inline_head') as $script) {
-    $scripts[] = [
-      '#markup' => Markup::create($script),
-    ];
-  }
-
-  $page_top['debugbar'] = [
-    'scripts' => $scripts,
-  ];
+#[LegacyHook]
+function debugbar_page_top(array &$page_top)
+{
+    \Drupal::service(DebugbarHooks::class)->pageTop($page_top);
 }
 
 /**
  * Implements hook_page_bottom().
  */
+#[LegacyHook]
 function debugbar_page_bottom(array &$page_bottom) {
-  $page_bottom['debugbar'] = [
-    'bar' => [
-      '#lazy_builder' => [LazyBuilder::class . '::renderDebugBar', []],
-      '#create_placeholder' => TRUE,
-    ],
-    '#attached' => [
-      'library' => ['debugbar/debugbar'],
-    ],
-  ];
+  \Drupal::service(DebugbarHooks::class)->pageBottom($page_bottom);
 }
 
 /**
  * Implements hook_library_info_build().
  */
-function debugbar_library_info_build(): array {
-  /** @var \DebugBar\DebugBar $debugBar */
-  $debugBar = Drupal::service('debugbar.debugbar');
-
-  $jsRenderer = $debugBar->getJavascriptRenderer();
-
-  $js = [
-    'js/debugbar.js' => [],
-  ];
-  foreach ($jsRenderer->getAssets('js', DRUPAL_ROOT) as $script) {
-    $js['vendor://maximebf/debugbar/src/DebugBar/Resources/' . $script] = ['type' => 'external'];
-  }
-
-  $css = [];
-  foreach ($jsRenderer->getAssets('css', DRUPAL_ROOT) as $style) {
-    $css['vendor://maximebf/debugbar/src/DebugBar/Resources/' . $style] = ['type' => 'external'];
-  }
-
-  return [
-    'debugbar' => [
-      'header' => TRUE,
-      'js' => $js,
-      'css' => ['component' => $css],
-      'dependencies' => [
-        'core/drupal',
-        'core/jquery',
-      ],
-    ],
-  ];
+#[LegacyHook]
+function debugbar_library_info_build(): array
+{
+    return \Drupal::service(DebugbarHooks::class)->libraryInfoBuild();
 }
diff --git a/debugbar.services.yml b/debugbar.services.yml
index f3172d1..1fd7153 100644
--- a/debugbar.services.yml
+++ b/debugbar.services.yml
@@ -12,3 +12,7 @@ services:
     tags:
       - { name: logger }
     arguments: [ '@logger.log_message_parser' ]
+
+  Drupal\debugbar\Hook\DebugbarHooks:
+    class: Drupal\debugbar\Hook\DebugbarHooks
+    autowire: true
diff --git a/src/Hook/DebugbarHooks.php b/src/Hook/DebugbarHooks.php
new file mode 100644
index 0000000..3536f57
--- /dev/null
+++ b/src/Hook/DebugbarHooks.php
@@ -0,0 +1,93 @@
+<?php
+
+namespace Drupal\debugbar\Hook;
+
+use Drupal\Core\Render\Markup;
+use Drupal\debugbar\LazyBuilder;
+use Drupal\Core\Hook\Attribute\Hook;
+/**
+ * Hook implementations for debugbar.
+ */
+class DebugbarHooks
+{
+    /**
+     * Implements hook_page_top().
+     */
+    #[Hook('page_top')]
+    public function pageTop(array &$page_top)
+    {
+        /** @var \DebugBar\DebugBar $debugBar */
+        $debugBar = \Drupal::service('debugbar.debugbar');
+        $scripts = [
+        ];
+        foreach ($debugBar->getJavascriptRenderer()->getAssets('inline_head') as $script) {
+            $scripts[] = [
+                '#markup' => \Drupal\Core\Render\Markup::create($script),
+            ];
+        }
+        $page_top['debugbar'] = [
+            'scripts' => $scripts,
+        ];
+    }
+    /**
+     * Implements hook_page_bottom().
+     */
+    #[Hook('page_bottom')]
+    public function pageBottom(array &$page_bottom)
+    {
+        $page_bottom['debugbar'] = [
+            'bar' => [
+                '#lazy_builder' => [
+                    \Drupal\debugbar\LazyBuilder::class . '::renderDebugBar',
+                    [
+                    ],
+                ],
+                '#create_placeholder' => TRUE,
+            ],
+            '#attached' => [
+                'library' => [
+                    'debugbar/debugbar',
+                ],
+            ],
+        ];
+    }
+    /**
+     * Implements hook_library_info_build().
+     */
+    #[Hook('library_info_build')]
+    public function libraryInfoBuild(): array
+    {
+        /** @var \DebugBar\DebugBar $debugBar */
+        $debugBar = \Drupal::service('debugbar.debugbar');
+        $jsRenderer = $debugBar->getJavascriptRenderer();
+        $js = [
+            'js/debugbar.js' => [
+            ],
+        ];
+        foreach ($jsRenderer->getAssets('js', DRUPAL_ROOT) as $script) {
+            $js['vendor://maximebf/debugbar/src/DebugBar/Resources/' . $script] = [
+                'type' => 'external',
+            ];
+        }
+        $css = [
+        ];
+        foreach ($jsRenderer->getAssets('css', DRUPAL_ROOT) as $style) {
+            $css['vendor://maximebf/debugbar/src/DebugBar/Resources/' . $style] = [
+                'type' => 'external',
+            ];
+        }
+        return [
+            'debugbar' => [
+                'header' => TRUE,
+                'js' => $js,
+                'css' => [
+                    'component' => $css,
+                ],
+                'dependencies' => [
+                    'core/drupal',
+                    'core/jquery',
+                ],
+            ],
+        ];
+    }
+}
