diff --git a/abtestui.routing.yml b/abtestui.routing.yml
index c7920c6..13ed29f 100644
--- a/abtestui.routing.yml
+++ b/abtestui.routing.yml
@@ -29,3 +29,17 @@ abtestui.test_delete_form:
     _form: '\Drupal\abtestui\Form\ABTestDeleteForm'
   requirements:
     _permission: 'administer ab tests'
+
+abtestui.base_url_help:
+  path: '/abtestui/help/base-url'
+  defaults:
+    _controller: '\Drupal\abtestui\Controller\HelpController::base_url_help'
+  requirements:
+    _permission: 'administer ab tests'
+
+abtestui.ab_test_tool_help:
+  path: '/abtestui/help/ab-test-tool'
+  defaults:
+    _controller: '\Drupal\abtestui\Controller\HelpController::ab_test_tool_help'
+  requirements:
+    _permission: 'administer ab tests'
diff --git a/help/ab-test-tool-help.html b/help/ab-test-tool-help.html
deleted file mode 100644
index 2b8ad03..0000000
--- a/help/ab-test-tool-help.html
+++ /dev/null
@@ -1,18 +0,0 @@
-<!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
-    <head>
-          <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
-          <title>How does this A/B Test tool work?</title>
-    </head>
-
-    <body>
-        <p>
-            In order to do AB Testing you can set multiple URLs (variations) and these URL-s will be rotated on one "Base URL".
-            These URLs must be internal and can be eg. nodes, listers.
-        </p>
-        <p>
-            In other words, if a user visits the base URL, they will be redirected to a variation, or they'll stay
-            on the base URL, depending on the odds set in the test.
-        </p>
-    </body>
-</html>
diff --git a/help/base-url.html b/help/base-url.html
deleted file mode 100644
index 92d2ac5..0000000
--- a/help/base-url.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
-    <head>
-        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
-        <title>Base Url</title>
-    </head>
-
-    <body>
-        <p>
-            When a user visits the Base URL, based on the odds they will get one of the variations (A, B, ..) instead.
-        </p>
-        <p>
-            Note, that the user is going to get the same page until cookies are cleared or expire. Also, they are going
-            to see the Base URL in their browser.
-        </p>
-    </body>
-</html>
diff --git a/src/Controller/HelpController.php b/src/Controller/HelpController.php
new file mode 100644
index 0000000..9886098
--- /dev/null
+++ b/src/Controller/HelpController.php
@@ -0,0 +1,65 @@
+<?php
+
+namespace Drupal\abtestui\Controller;
+
+use Drupal\Core\Controller\ControllerBase;
+use Symfony\Component\HttpFoundation\Response;
+
+/**
+ * The Help Controller to display help messages.
+ */
+class HelpController extends ControllerBase {
+
+  /**
+   * Returns a Symfony request.
+   *
+   * @return Response
+   *   An HTML response displayed in a modal.
+   */
+  public function base_url_help(): Response {
+    return Response::create('<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+        <title>' . $this->t('Base Url') . '</title>
+    </head>
+
+    <body>
+        <p>
+' .
+      $this->t('When a user visits the Base URL, based on the odds they will get one of the variations (A, B, ..) instead.') . '
+        </p>
+        <p>
+' .
+      $this->t('Note, that the user is going to get the same page until cookies are cleared or expire. Also, they are going to see the Base URL in their browser.') . '
+        </p>
+    </body>
+</html>');
+  }
+
+  /**
+   * Returns a Symfony request.
+   *
+   * @return Response
+   *   An HTML response displayed in a modal.
+   */
+  public function ab_test_tool_help(): Response {
+    return Response::create('<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+    <head>
+          <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+          <title>' . $this->t('How does this A/B Test tool work?') . '</title>
+    </head>
+
+    <body>
+        <p>
+' . $this->t('In order to do AB Testing you can set multiple URLs (variations) and these URL-s will be rotated on one "Base URL". These URLs must be internal and can be eg. nodes, listers.') . '
+        </p>
+        <p>
+' . $this->t('In other words, if a user visits the base URL, they will be redirected to a variation, or they\'ll stay on the base URL, depending on the odds set in the test.') . '
+        </p>
+    </body>
+</html>');
+  }
+
+}
diff --git a/src/Controller/ListController.php b/src/Controller/ListController.php
index 063d6e5..12c7feb 100644
--- a/src/Controller/ListController.php
+++ b/src/Controller/ListController.php
@@ -179,7 +179,7 @@ class ListController extends ControllerBase {
               ],
             ],
             'markup' => [
-              '#markup' => $this->t('Base URL') . '<a href="/' . $this->abtestuiPath . '/help/base-url.html" class="help-modal"><img width="20" height="20" src="/' . $this->abtestuiPath . '/img/help.svg" alt="Help about the base URL"></a>',
+              '#markup' => $this->t('Base URL') . '<a href="/abtestui/help/base-url" class="help-modal"><img width="20" height="20" src="/' . $this->abtestuiPath . '/img/help.svg" alt="Help about the base URL"></a>',
             ],
           ],
         ],
@@ -308,7 +308,7 @@ class ListController extends ControllerBase {
         'link' => [
           '#title' => $this->t('How does this tool work?'),
           '#type' => 'link',
-          '#url' => Url::fromUri('base:/' . $this->abtestuiPath . '/help/ab-test-tool-help.html'),
+          '#url' => Url::fromUri('base://abtestui/help/ab-test-tool'),
           '#options' => [
             'attributes' => [
               'class' => [
diff --git a/src/Form/ABTestForm.php b/src/Form/ABTestForm.php
index 50557a6..078504b 100644
--- a/src/Form/ABTestForm.php
+++ b/src/Form/ABTestForm.php
@@ -84,7 +84,7 @@ class ABTestForm extends FormBase {
         'link' => [
           '#title' => $this->t('How does this tool work?'),
           '#type' => 'link',
-          '#url' => Url::fromUri('base:/' . drupal_get_path('module', 'abtestui') . '/help/ab-test-tool-help.html'),
+          '#url' => Url::fromUri('base://abtestui/help/ab-test-tool'),
           '#options' => [
             'attributes' => [
               'class' => [
@@ -118,7 +118,7 @@ class ABTestForm extends FormBase {
 
     $form['name'] = [
       '#type' => 'textfield',
-      '#title' => 'Test name',
+      '#title' => $this->t('Test name'),
       '#default_value' => empty($test['name']) ? NULL : $test['name'],
       '#size' => 65,
       '#maxlength' => 64,
@@ -179,7 +179,7 @@ class ABTestForm extends FormBase {
     ];
     $form['variations_fieldgroup']['variations']['base']['name'] = [
       '#type' => 'item',
-      '#markup' => $this->t('Base URL') . ' <a href="/' . drupal_get_path('module', 'abtestui') . '/help/base-url.html" class="help-modal"><img width="20" height="20" src="/' . drupal_get_path('module', 'abtestui') . '/img/help.svg" alt="Help about the base URL"></a>',
+      '#markup' => $this->t('Base URL') . ' <a href="/abtestui/help/ab-test-tool" class="help-modal"><img width="20" height="20" src="/' . drupal_get_path('module', 'abtestui') . '/img/help.svg" alt="Help about the base URL"></a>',
     ];
     $form['variations_fieldgroup']['variations']['base']['url'] = [
       '#type' => 'url',
