diff --git a/src/vigenere_api/api/v1/controllers/caesar/__init__.py b/src/vigenere_api/api/v1/controllers/caesar/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..f582c948c7e6cffa9bc9696020aa3508223ee0df
--- /dev/null
+++ b/src/vigenere_api/api/v1/controllers/caesar/__init__.py
@@ -0,0 +1,21 @@
+# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#  Vigenere-API                                                                        +
+#  Copyright (C) 2023 Axel DAVID                                                       +
+#                                                                                      +
+#  This program is free software: you can redistribute it and/or modify it under       +
+#  the terms of the GNU General Public License as published by the Free Software       +
+#  Foundation, either version 3 of the License, or (at your option) any later version. +
+#                                                                                      +
+#  This program is distributed in the hope that it will be useful, but WITHOUT ANY     +
+#  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR       +
+#  A PARTICULAR PURPOSE. See the GNU General Public License for more details.          +
+#                                                                                      +
+#  You should have received a copy of the GNU General Public License along with        +
+#  this program.  If not, see <https://www.gnu.org/licenses/>.                         +
+# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+"""CaesarController package."""
+
+from .caesar import CaesarController
+
+__all__ = ["CaesarController"]
diff --git a/src/vigenere_api/api/v1/controllers/caesar.py b/src/vigenere_api/api/v1/controllers/caesar/caesar.py
similarity index 84%
rename from src/vigenere_api/api/v1/controllers/caesar.py
rename to src/vigenere_api/api/v1/controllers/caesar/caesar.py
index ed13adb8efac992bb15534a436367427877482e4..eda8491678bd03b496578627de55822397d244b5 100644
--- a/src/vigenere_api/api/v1/controllers/caesar.py
+++ b/src/vigenere_api/api/v1/controllers/caesar/caesar.py
@@ -16,22 +16,19 @@
 
 """The caesar controller."""
 
-from typing import final
-
-from blacksheep import FromJSON
-from blacksheep import Response
-from blacksheep.server.controllers import APIController
+from blacksheep import FromJSON, Response
 from blacksheep.server.controllers import post
 
+from vigenere_api.api.utils import Controller
 from vigenere_api.api.v1.openapi_docs import docs
 from vigenere_api.models import CaesarData
-
-from .docs import post_caesar_cipher_docs
-from .docs import post_caesar_decipher_docs
+from .docs import (
+    post_caesar_cipher_docs,
+    post_caesar_decipher_docs,
+)
 
 
-@final
-class CaesarController(APIController):
+class CaesarController(Controller):
     """
     The caesar controller.
 
@@ -50,19 +47,7 @@ class CaesarController(APIController):
         version
             str
         """
-        return "v1"
-
-    @classmethod
-    def class_name(cls) -> str:
-        """
-        Name of the class.
-
-        Returns
-        -------
-        class_name
-            str
-        """
-        return "caesar"
+        return f"v{docs.version.major}"
 
     @docs(post_caesar_cipher_docs)
     @post("cipher")
diff --git a/src/vigenere_api/api/v1/controllers/caesar.pyi b/src/vigenere_api/api/v1/controllers/caesar/caesar.pyi
similarity index 100%
rename from src/vigenere_api/api/v1/controllers/caesar.pyi
rename to src/vigenere_api/api/v1/controllers/caesar/caesar.pyi
diff --git a/src/vigenere_api/api/v1/controllers/docs/caesar.py b/src/vigenere_api/api/v1/controllers/caesar/docs.py
similarity index 100%
rename from src/vigenere_api/api/v1/controllers/docs/caesar.py
rename to src/vigenere_api/api/v1/controllers/caesar/docs.py