diff --git a/docs/.pages b/docs/.pages
new file mode 100644
index 0000000000..ff39b93ddb
--- /dev/null
+++ b/docs/.pages
@@ -0,0 +1,6 @@
+nav:
+    - Home:
+        - ... | index*.md
+    - zengin
+    - genome
+    - contribute
\ No newline at end of file
diff --git a/docs/contribute/.pages b/docs/contribute/.pages
new file mode 100644
index 0000000000..52b9fe945b
--- /dev/null
+++ b/docs/contribute/.pages
@@ -0,0 +1,3 @@
+nav:
+    - ... | index*.md
+    - ...
\ No newline at end of file
diff --git a/docs/contribute/index.md b/docs/contribute/index.md
index 1fbe4a732e..3a56d6f398 100644
--- a/docs/contribute/index.md
+++ b/docs/contribute/index.md
@@ -1,9 +1,9 @@
+# How to contribute
 
 [gmc-discord]: https://discord.gg/mCpS5b5SUY
 [git-download]: https://git-scm.com/downloads
 [python-download]: https://www.python.org/downloads/
 
-# How to contribute
 The Gothic Modding Community is a community-driven project. We encourage people to contribute.
 
 This site is built with a Static Site Generator [MkDocs](https://www.mkdocs.org/) and the [Material for MkDocs](https://squidfunk.github.io/mkdocs-material/) theme together with multiple other MkDocs plugins.
diff --git a/docs/contribute/index.pl.md b/docs/contribute/index.pl.md
index ae7980bb75..e88d2af266 100644
--- a/docs/contribute/index.pl.md
+++ b/docs/contribute/index.pl.md
@@ -1,9 +1,9 @@
+# Jak się udzielić
 
 [gmc-discord]: https://discord.gg/mCpS5b5SUY
 [git-download]: https://git-scm.com/downloads
 [python-download]: https://www.python.org/downloads/
 
-# Jak się udzielić
 Gothic Modding Community jest projektem napędzanym przed społeczność. Zachęcamy osoby do wnoszenia swojego wkładu.
 
 Ta strona jest budowana przy pomocy statycznego generatora stron [MkDocs](https://www.mkdocs.org/) oraz skórki [Material for MkDocs](https://squidfunk.github.io/mkdocs-material/), wraz z wieloma innymi wtyczkami do MkDocs.
diff --git a/docs/genome/.pages b/docs/genome/.pages
new file mode 100644
index 0000000000..2348ee967e
--- /dev/null
+++ b/docs/genome/.pages
@@ -0,0 +1,4 @@
+nav:
+    - ... | index*.md
+    - general_info
+    - ...
\ No newline at end of file
diff --git a/docs/zengin/.pages b/docs/zengin/.pages
new file mode 100644
index 0000000000..3f902e8e02
--- /dev/null
+++ b/docs/zengin/.pages
@@ -0,0 +1,6 @@
+nav:
+    - ... | index*.md
+    - general_info
+    - ...
+    - tools
+    - union
\ No newline at end of file
diff --git a/docs/zengin/anims/.pages b/docs/zengin/anims/.pages
new file mode 100644
index 0000000000..84b9c152a5
--- /dev/null
+++ b/docs/zengin/anims/.pages
@@ -0,0 +1,3 @@
+nav:
+    - ...
+    - tutorials
\ No newline at end of file
diff --git a/docs/zengin/anims/events.md b/docs/zengin/anims/events.md
index 8e34170562..6023b9dd04 100644
--- a/docs/zengin/anims/events.md
+++ b/docs/zengin/anims/events.md
@@ -1,3 +1,6 @@
+---
+title: EventBlocks
+---
 ## Animation event blocks
 We often need to perform some other actions together with our animation, such as playing a sound effect, inserting item into NPC's hand or changing an item instance into a different one, like turning a raw steel into hot raw steel.
 
diff --git a/docs/zengin/anims/mds.md b/docs/zengin/anims/mds.md
index c18e13c98c..228f4bff12 100644
--- a/docs/zengin/anims/mds.md
+++ b/docs/zengin/anims/mds.md
@@ -1,3 +1,6 @@
+---
+title: MDS ModelScript
+---
 
 # MDS - model animation script
 
diff --git a/docs/zengin/anims/tutorials/standalone_animation.md b/docs/zengin/anims/tutorials/standalone_animation.md
index dde0564b73..51b8397861 100644
--- a/docs/zengin/anims/tutorials/standalone_animation.md
+++ b/docs/zengin/anims/tutorials/standalone_animation.md
@@ -1,6 +1,7 @@
+# Standalone animation
 !!! example "Acknowledgment"
     This tutorial would not be possible without the ZenGin documentation available in the mod-kit. Further credits also go to [Mark56](https://carnage-markus.blogspot.com) who helped me understand animations in the first place, [Fawkes](https://www.youtube.com/channel/UCheR2tr8u1CsUGG15Lu2mxQ) and his request for me to do some animations for his excellent mod - Replay Mod, and last but not least Flosha from the Phoenix team who was the one for whom I offered to write this tutorial to help with the development of the [Phoenix project](https://phoenixthegame.com/).
-# Standalone animation
+
 Let us start with the easiest animation - a very simple gesturing animation.
 
 !!! info
diff --git a/docs/zengin/general_info/directory_structure.md b/docs/zengin/general_info/directory_structure.md
index cfd98ab1bb..8889fa4d14 100644
--- a/docs/zengin/general_info/directory_structure.md
+++ b/docs/zengin/general_info/directory_structure.md
@@ -1,3 +1,6 @@
+---
+title: Directory structure
+---
 # ZenGin directory structure
 
 Modding is all about changing the game files. To achieve that, we have to know the directory (folder) structure of a Gothic game.
diff --git a/docs/zengin/general_info/vdfs.md b/docs/zengin/general_info/vdfs.md
index 3fe32ad8ec..40cd58b455 100644
--- a/docs/zengin/general_info/vdfs.md
+++ b/docs/zengin/general_info/vdfs.md
@@ -1,3 +1,6 @@
+---
+title: VDFS virtual file system
+---
 # VDFS
 
 VDFS is the virtual file system used by ZenGin to distribute and store many, but not all, game assets.
diff --git a/docs/zengin/scripts/.pages b/docs/zengin/scripts/.pages
new file mode 100644
index 0000000000..cd47fa4699
--- /dev/null
+++ b/docs/zengin/scripts/.pages
@@ -0,0 +1,3 @@
+nav:
+    - classes
+    - ...
\ No newline at end of file
diff --git a/docs/zengin/scripts/classes/c_info.md b/docs/zengin/scripts/classes/c_info.md
index 8fe5ecc644..912248dc0d 100644
--- a/docs/zengin/scripts/classes/c_info.md
+++ b/docs/zengin/scripts/classes/c_info.md
@@ -1,3 +1,6 @@
+---
+title: C_INFO
+---
 # C_INFO Daedalus class
 
 !!! example "Acknowledgment"
diff --git a/docs/zengin/scripts/classes/c_item.md b/docs/zengin/scripts/classes/c_item.md
index 7c2cc86493..ea5757085b 100644
--- a/docs/zengin/scripts/classes/c_item.md
+++ b/docs/zengin/scripts/classes/c_item.md
@@ -1,3 +1,6 @@
+---
+title: C_ITEM
+---
 # C_ITEM Daedalus class
 
 !!! example "Acknowledgment"
diff --git a/docs/zengin/scripts/classes/c_svm.md b/docs/zengin/scripts/classes/c_svm.md
index 85f1c5abff..392620a7dd 100644
--- a/docs/zengin/scripts/classes/c_svm.md
+++ b/docs/zengin/scripts/classes/c_svm.md
@@ -1,3 +1,6 @@
+---
+title: C_SVM
+---
 # C_SVM Daedalus class
 
 !!! example "Acknowledgment"
diff --git a/docs/zengin/scripts/extenders/afsp/afsp_eim.md b/docs/zengin/scripts/extenders/afsp/afsp_eim.md
index 9535f700f8..d346510632 100644
--- a/docs/zengin/scripts/extenders/afsp/afsp_eim.md
+++ b/docs/zengin/scripts/extenders/afsp/afsp_eim.md
@@ -1,3 +1,6 @@
+---
+title: Enhanced Info Manager
+---
 # Enhanced Information Manager
 
 !!! Warning
diff --git a/docs/zengin/scripts/extenders/ikarus/.pages b/docs/zengin/scripts/extenders/ikarus/.pages
new file mode 100644
index 0000000000..dd084e74b3
--- /dev/null
+++ b/docs/zengin/scripts/extenders/ikarus/.pages
@@ -0,0 +1,3 @@
+nav:
+    - ...
+    - ... | examples*.md
\ No newline at end of file
diff --git a/docs/zengin/scripts/extenders/ikarus/examples.md b/docs/zengin/scripts/extenders/ikarus/examples.md
index 67637367b9..d750f86703 100644
--- a/docs/zengin/scripts/extenders/ikarus/examples.md
+++ b/docs/zengin/scripts/extenders/ikarus/examples.md
@@ -1,3 +1,6 @@
+---
+title: Examples
+---
 # Ikarus examples
 A collection of examples ported from the original Ikarus documentation.
 
diff --git a/docs/zengin/scripts/extenders/ikarus/functions/ini_access.md b/docs/zengin/scripts/extenders/ikarus/functions/ini_access.md
index 36b389a7bd..2821037b19 100644
--- a/docs/zengin/scripts/extenders/ikarus/functions/ini_access.md
+++ b/docs/zengin/scripts/extenders/ikarus/functions/ini_access.md
@@ -1,3 +1,6 @@
+---
+title: Ini File Access
+---
 # Configuration file access
 This part of Ikarus gives you access to `Gothic.ini` and loaded mod configuration files.
 
diff --git a/docs/zengin/scripts/extenders/ikarus/functions/keyboard.md b/docs/zengin/scripts/extenders/ikarus/functions/keyboard.md
index 43263977a0..82f4d20d47 100644
--- a/docs/zengin/scripts/extenders/ikarus/functions/keyboard.md
+++ b/docs/zengin/scripts/extenders/ikarus/functions/keyboard.md
@@ -1,3 +1,6 @@
+---
+title: Keyboard
+---
 # Keyboard interaction
 This part of Ikarus implements function that make interaction with keyboard possible.
 
diff --git a/docs/zengin/scripts/extenders/ikarus/functions/mem_access.md b/docs/zengin/scripts/extenders/ikarus/functions/mem_access.md
index e9b15696e0..07e248c476 100644
--- a/docs/zengin/scripts/extenders/ikarus/functions/mem_access.md
+++ b/docs/zengin/scripts/extenders/ikarus/functions/mem_access.md
@@ -1,3 +1,6 @@
+---
+title: Memory Access
+---
 # Elementary memory access
 This part of Ikarus makes it possible to read and write memory as different data types - integers, strings, arrays of integers or strings and bytes.
 
diff --git a/docs/zengin/scripts/extenders/lego/applications/bars.pl.md b/docs/zengin/scripts/extenders/lego/applications/bars.pl.md
index b8c25f698a..d8bd8df4ef 100644
--- a/docs/zengin/scripts/extenders/lego/applications/bars.pl.md
+++ b/docs/zengin/scripts/extenders/lego/applications/bars.pl.md
@@ -1,3 +1,6 @@
+---
+title: Paski
+---
 # Bars - paski
 Ten pakiet bardzo ułatwia dodawanie nowych pasków, dla wyświetlania np. wytrzymałości.
 
diff --git a/docs/zengin/scripts/extenders/lego/applications/console_commands.pl.md b/docs/zengin/scripts/extenders/lego/applications/console_commands.pl.md
index 48f056e8de..21293aa12c 100644
--- a/docs/zengin/scripts/extenders/lego/applications/console_commands.pl.md
+++ b/docs/zengin/scripts/extenders/lego/applications/console_commands.pl.md
@@ -1,3 +1,6 @@
+---
+title: Polecenia konsoli
+---
 # Console Commands - polecenia konsoli
 Ten Pakiet pozwala na tworzenie nowych poleceń konsoli dostępnej po naciśnięciu klawisza F2 w trybie marvin.
 
diff --git a/docs/zengin/scripts/extenders/lego/applications/gamestate.pl.md b/docs/zengin/scripts/extenders/lego/applications/gamestate.pl.md
index 1152ee6e08..e8c99e7377 100644
--- a/docs/zengin/scripts/extenders/lego/applications/gamestate.pl.md
+++ b/docs/zengin/scripts/extenders/lego/applications/gamestate.pl.md
@@ -1,3 +1,6 @@
+---
+title: Stan gry
+---
 # Gamestate - stan gry
 Pakiet Gamestate pozwala sprawdzić stan gry (rozpoczęcie gry, ładowanie gry lub zmiana poziomu).
 
diff --git a/docs/zengin/scripts/extenders/lego/tools/ai_function.md b/docs/zengin/scripts/extenders/lego/tools/ai_function.md
index cccd347567..5a4e3c8940 100644
--- a/docs/zengin/scripts/extenders/lego/tools/ai_function.md
+++ b/docs/zengin/scripts/extenders/lego/tools/ai_function.md
@@ -1,3 +1,6 @@
+---
+title: AI_Function
+---
 # AI Function
 This package allows time-delayed functions to be called by enqueuing the functions in the AI queue of the NPC in question. This can be very useful e.g. cutscenes.
 
diff --git a/docs/zengin/scripts/extenders/lego/tools/item_helper.pl.md b/docs/zengin/scripts/extenders/lego/tools/item_helper.pl.md
index f0e875f0d0..f025953a4c 100644
--- a/docs/zengin/scripts/extenders/lego/tools/item_helper.pl.md
+++ b/docs/zengin/scripts/extenders/lego/tools/item_helper.pl.md
@@ -1,3 +1,6 @@
+---
+title: ItemHelper
+---
 # ItemHelper - pomocnik do przedmiotów
 Ten pakiet jest bardzo prosty - pobiera wskaźnik `oCItem` z instancji `C_ITEM` ważnej dla bieżącego świata i sesji.
 
diff --git a/docs/zengin/scripts/extenders/lego/tools/misc.pl.md b/docs/zengin/scripts/extenders/lego/tools/misc.pl.md
index 4396917bbc..2483feef7b 100644
--- a/docs/zengin/scripts/extenders/lego/tools/misc.pl.md
+++ b/docs/zengin/scripts/extenders/lego/tools/misc.pl.md
@@ -1,3 +1,6 @@
+---
+title: Różne
+---
 # Misc - różne
 Pakiet Misc wprowadza różne funkcje pomocnicze, które nie pasowały do żadnego innego pakietu.
 
diff --git a/docs/zengin/scripts/extenders/lego/tools/talents.pl.md b/docs/zengin/scripts/extenders/lego/tools/talents.pl.md
index 1fa5147ef4..50f5ae20a3 100644
--- a/docs/zengin/scripts/extenders/lego/tools/talents.pl.md
+++ b/docs/zengin/scripts/extenders/lego/tools/talents.pl.md
@@ -1,3 +1,6 @@
+---
+title: Talenty
+---
 # Talents - talenty
 Ten pakiet robi dwie rzeczy:
 
diff --git a/docs/zengin/scripts/extenders/zparserextender/.pages b/docs/zengin/scripts/extenders/zparserextender/.pages
new file mode 100644
index 0000000000..b855fced93
--- /dev/null
+++ b/docs/zengin/scripts/extenders/zparserextender/.pages
@@ -0,0 +1,3 @@
+nav:
+    - ...
+    - examples
\ No newline at end of file
diff --git a/docs/zengin/scripts/extenders/zparserextender/classes/c_trigger.md b/docs/zengin/scripts/extenders/zparserextender/classes/c_trigger.md
index 90a95fa50a..ba3ab90bf6 100644
--- a/docs/zengin/scripts/extenders/zparserextender/classes/c_trigger.md
+++ b/docs/zengin/scripts/extenders/zparserextender/classes/c_trigger.md
@@ -1,3 +1,6 @@
+---
+title: C_Trigger class
+---
 # Trigger functions and the `C_Trigger` class
 zParserExtender also implements cyclical functions called triggers - not to be confused with triggers in ZEN files, similar to a part of the functionality implemented in [LeGo AI_Functions](../../lego/tools/ai_function.md). These functions are called independently after a specified period of time. These triggers can also store user information. Up to 16 int variables can be stored in each trigger as well as `self`, `other` and `victim` instances.
 
diff --git a/docs/zengin/scripts/extenders/zparserextender/daedalus_injection/hooks.md b/docs/zengin/scripts/extenders/zparserextender/daedalus_injection/hooks.md
index e57c986935..f44f2ad4c7 100644
--- a/docs/zengin/scripts/extenders/zparserextender/daedalus_injection/hooks.md
+++ b/docs/zengin/scripts/extenders/zparserextender/daedalus_injection/hooks.md
@@ -1,3 +1,6 @@
+---
+title: Hooking
+---
 # Hooking Daedalus
 Daedalus hooking is one of the most powerful features of this plugin. Hooking is a mechanism that allows you to replace any scripted object with a new one. To do this, you must define a new object with the same type, name and in the same [namespace](../syntax_extensions/namespaces.md).
 
diff --git a/docs/zengin/scripts/extenders/zparserextender/daedalus_injection/other.md b/docs/zengin/scripts/extenders/zparserextender/daedalus_injection/other.md
index f0bef3f328..05d05ab525 100644
--- a/docs/zengin/scripts/extenders/zparserextender/daedalus_injection/other.md
+++ b/docs/zengin/scripts/extenders/zparserextender/daedalus_injection/other.md
@@ -1,3 +1,6 @@
+---
+title: Other features
+---
 # Other functions of the extender
 ## ini parameters
 The choice of ini file depends on how the game was launched. If it was launched from Gothic.exe, then the parameters will be read from `SystemPack.ini`. If it was launched through GothicStarter.exe, then they will be read from the ini of the mod.
diff --git a/docs/zengin/scripts/extenders/zparserextender/examples/signposts.md b/docs/zengin/scripts/extenders/zparserextender/examples/signposts.md
index 0af977265c..fc3e2804e2 100644
--- a/docs/zengin/scripts/extenders/zparserextender/examples/signposts.md
+++ b/docs/zengin/scripts/extenders/zparserextender/examples/signposts.md
@@ -1,3 +1,6 @@
+---
+title: Sign post example
+---
 # Sign post teleportation
 This is a short "problem-solving" example, where we try to demonstrate the power of Daedalus injection using [zParserExtender](../../index.md). GaroK asked me if there is a way to teleport to all the sign posts in Khorinis to gather information for a Gothic wiki article.  
 The goal is to introduce a function that will teleport you to every signpost in Khorinis with the press of a button.
diff --git a/docs/zengin/scripts/extenders/zparserextender/externals/ai.md b/docs/zengin/scripts/extenders/zparserextender/externals/ai.md
index 83dd7ce6dd..7c193b377a 100644
--- a/docs/zengin/scripts/extenders/zparserextender/externals/ai.md
+++ b/docs/zengin/scripts/extenders/zparserextender/externals/ai.md
@@ -1,3 +1,6 @@
+---
+title: AI functions
+---
 # AI - functions for working with AI
 Functions to work with the new [`C_Trigger`](../classes/c_trigger.md) class and NPC's AI queue.
 
diff --git a/docs/zengin/scripts/extenders/zparserextender/externals/cast.md b/docs/zengin/scripts/extenders/zparserextender/externals/cast.md
index 730f19230d..33bb6d3738 100644
--- a/docs/zengin/scripts/extenders/zparserextender/externals/cast.md
+++ b/docs/zengin/scripts/extenders/zparserextender/externals/cast.md
@@ -1,3 +1,6 @@
+---
+title: CAST functions
+---
 # CAST - data type conversion functions
 External functions for data type conversion and pointer casting.
 
diff --git a/docs/zengin/scripts/extenders/zparserextender/externals/events_vars.md b/docs/zengin/scripts/extenders/zparserextender/externals/events_vars.md
index b863df44cd..e035b7fc98 100644
--- a/docs/zengin/scripts/extenders/zparserextender/externals/events_vars.md
+++ b/docs/zengin/scripts/extenders/zparserextender/externals/events_vars.md
@@ -1,3 +1,6 @@
+---
+title: Event functions
+---
 # Event functions and variables
 On top of external functions, zParserExtender also adds these event functions and constants.
 
diff --git a/docs/zengin/scripts/extenders/zparserextender/externals/hlp.md b/docs/zengin/scripts/extenders/zparserextender/externals/hlp.md
index 73a67fabec..cb7337851c 100644
--- a/docs/zengin/scripts/extenders/zparserextender/externals/hlp.md
+++ b/docs/zengin/scripts/extenders/zparserextender/externals/hlp.md
@@ -1,3 +1,6 @@
+---
+title: HLP functions
+---
 # HLP - help functions
 Helper functions generally used for safety checks, to get specific information from the engine or to interface with the configuration `.ini` files.
 
diff --git a/docs/zengin/scripts/extenders/zparserextender/externals/mdl.md b/docs/zengin/scripts/extenders/zparserextender/externals/mdl.md
index 40ea15c9f4..48343c677d 100644
--- a/docs/zengin/scripts/extenders/zparserextender/externals/mdl.md
+++ b/docs/zengin/scripts/extenders/zparserextender/externals/mdl.md
@@ -1,3 +1,6 @@
+---
+title: MDL functions
+---
 # MDL - model functions
 Functions to tweak animation and other model related settings.
 
diff --git a/docs/zengin/scripts/extenders/zparserextender/externals/mob.md b/docs/zengin/scripts/extenders/zparserextender/externals/mob.md
index 3d64a203e9..99f24fb07b 100644
--- a/docs/zengin/scripts/extenders/zparserextender/externals/mob.md
+++ b/docs/zengin/scripts/extenders/zparserextender/externals/mob.md
@@ -1,3 +1,6 @@
+---
+title: MOB functions
+---
 # MOB - interactive object functions
 Functions to manipulate interactive objects like destroying MOBs, setting lockpick combination and such.
 
diff --git a/docs/zengin/scripts/extenders/zparserextender/externals/npc.md b/docs/zengin/scripts/extenders/zparserextender/externals/npc.md
index 3d1578918f..05528ea0f3 100644
--- a/docs/zengin/scripts/extenders/zparserextender/externals/npc.md
+++ b/docs/zengin/scripts/extenders/zparserextender/externals/npc.md
@@ -1,3 +1,6 @@
+---
+title: NPC functions
+---
 # NPC - character functions
 NPC related functions.
 
diff --git a/docs/zengin/scripts/extenders/zparserextender/externals/par.md b/docs/zengin/scripts/extenders/zparserextender/externals/par.md
index 540dd6912f..5a2aeca5be 100644
--- a/docs/zengin/scripts/extenders/zparserextender/externals/par.md
+++ b/docs/zengin/scripts/extenders/zparserextender/externals/par.md
@@ -1,3 +1,6 @@
+---
+title: PAR functions
+---
 # PAR - functions for parser manipulation
 Parser functions are used to manipulate the parsers. Retrieve SymbolID, access arrays and such.
 
diff --git a/docs/zengin/scripts/extenders/zparserextender/externals/vob.md b/docs/zengin/scripts/extenders/zparserextender/externals/vob.md
index 33343a7917..b53e7c9de7 100644
--- a/docs/zengin/scripts/extenders/zparserextender/externals/vob.md
+++ b/docs/zengin/scripts/extenders/zparserextender/externals/vob.md
@@ -1,3 +1,6 @@
+---
+title: VOB functions
+---
 # VOB - functions for object manipulation
 VOB functions allow you to manipulate game world objects.
 
diff --git a/docs/zengin/scripts/extenders/zparserextender/externals/wld.md b/docs/zengin/scripts/extenders/zparserextender/externals/wld.md
index 3cd3e94735..28c2b0c77c 100644
--- a/docs/zengin/scripts/extenders/zparserextender/externals/wld.md
+++ b/docs/zengin/scripts/extenders/zparserextender/externals/wld.md
@@ -1,3 +1,6 @@
+---
+title: WLD functions
+---
 # WLD - world manipulation functions
 Functions related to the world. 
 
diff --git a/docs/zengin/scripts/extenders/zparserextender/syntax_extensions/testelse.md b/docs/zengin/scripts/extenders/zparserextender/syntax_extensions/testelse.md
index 1a6a858256..8f45c5fabe 100644
--- a/docs/zengin/scripts/extenders/zparserextender/syntax_extensions/testelse.md
+++ b/docs/zengin/scripts/extenders/zparserextender/syntax_extensions/testelse.md
@@ -1,3 +1,6 @@
+---
+title: Test-else binding
+---
 # Test-else statements
 
 The test-else bind statement can be used to define sections of code to be compiled. If the code is within the boundaries of the inactive test-else branch, it will not be compiled. This operator can take values as input that are converted to logical values. For example, if an object is passed as an argument, the parser will check for its existence. If it is an engine tag, it will return the result of matching the current engine with the tag:
diff --git a/docs/zengin/scripts/extenders/zparserextender/syntax_extensions/while.md b/docs/zengin/scripts/extenders/zparserextender/syntax_extensions/while.md
index 36d4be1794..0dd891dc07 100644
--- a/docs/zengin/scripts/extenders/zparserextender/syntax_extensions/while.md
+++ b/docs/zengin/scripts/extenders/zparserextender/syntax_extensions/while.md
@@ -1,3 +1,6 @@
+---
+title: While loop
+---
 # Native WHILE loop
 Just like [Ikarus](../../../../../notready.md) zParserExtender implements a while loop.
 
diff --git a/docs/zengin/scripts/extenders/zparserextender/syntax_extensions/while.pl.md b/docs/zengin/scripts/extenders/zparserextender/syntax_extensions/while.pl.md
index 52111bafb0..1bea568840 100644
--- a/docs/zengin/scripts/extenders/zparserextender/syntax_extensions/while.pl.md
+++ b/docs/zengin/scripts/extenders/zparserextender/syntax_extensions/while.pl.md
@@ -1,3 +1,6 @@
+---
+title: Pętla while
+---
 # Natywna pętla WHILE
 Podobnie jak [Ikarus](../../../../../notready.md) zParserExtender implementuje pętlę while.
 
diff --git a/docs/zengin/union/plugins/zgamepad/controls.md b/docs/zengin/union/plugins/zgamepad/controls.md
index 3a9f2b2da1..f5752d1b59 100644
--- a/docs/zengin/union/plugins/zgamepad/controls.md
+++ b/docs/zengin/union/plugins/zgamepad/controls.md
@@ -1,3 +1,6 @@
+---
+title: Controls customization
+---
 # Gamepad controls
 The zGamePad plugin comes with a default control scheme, but it is possible to create your own. The plugin will search for any file with the `.gamepad.overlay` extension placed in `Gothic/System` directory or in any of the loaded `.mod` and `.vdf` archives.
 
diff --git a/docs/zengin/union/plugins/zgamepad/logical_functions.md b/docs/zengin/union/plugins/zgamepad/logical_functions.md
index eac26088b0..60839b9f71 100644
--- a/docs/zengin/union/plugins/zgamepad/logical_functions.md
+++ b/docs/zengin/union/plugins/zgamepad/logical_functions.md
@@ -1,3 +1,6 @@
+---
+title: Logical functions
+---
 # Logical function names
 Conditions for when to show or allow the control binding to work are specified using these logic functions. They describe different useful states of the game or user interface, allowing the user to set when will a certain control work. 
 ```
diff --git a/mkdocs.yml b/mkdocs.yml
index ebd07d5e3b..a774cc7c78 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -48,164 +48,6 @@ theme:
     - content.action.edit
     - content.action.view
 
-nav:
-  - Home:
-    - index.md
-    - ZenGin (G1/G2): zengin/index.md
-    - Genome (G3/R1): genome/index.md
-    - How To Contribute: contribute/index.md
-
-  - ZenGin (G1/G2):
-    - zengin/index.md
-    - General information:
-      - Directory structure: zengin/general_info/directory_structure.md
-      - VDFS - virtual file system: zengin/general_info/vdfs.md
-      - Object persistence: zengin/general_info/object_persistence.md
-
-    - Animations:
-      - zengin/anims/index.md
-      - MDS - ModelScript: zengin/anims/mds.md
-      - EventBlocks: zengin/anims/events.md
-      - Tutorials:
-        - Standalone animation: zengin/anims/tutorials/standalone_animation.md
-
-    - Meshes: zengin/meshes.md
-
-    - Music: zengin/music.md
-
-    - Sound: 
-      - zengin/sound/index.md
-      - Tutorials:
-        - zengin/sound/tutorials/change_sfx.md
-
-    - Textures: zengin/textures.md
-
-    - Video: zengin/video.md
-
-    - Worlds:
-      - zengin/worlds/index.md
-      - Spacer: zengin/worlds/spacer.md
-
-    - Scripts:
-      - zengin/scripts/index.md
-      - Classes:
-        - C_INFO: zengin/scripts/classes/c_info.md
-        - C_ITEM: zengin/scripts/classes/c_item.md
-        - C_SVM:  zengin/scripts/classes/c_svm.md
-      - Extenders:
-        - zengin/scripts/extenders/index.md
-        - Ikarus:
-          - zengin/scripts/extenders/ikarus/index.md
-          - Functions:
-            - Memory Access:       zengin/scripts/extenders/ikarus/functions/mem_access.md
-            - Windows Utilities:   zengin/scripts/extenders/ikarus/functions/win_utilities.md
-            - Menu Access:         zengin/scripts/extenders/ikarus/functions/menu_access.md
-            - Keyboard:            zengin/scripts/extenders/ikarus/functions/keyboard.md
-            - Ini File Access:     zengin/scripts/extenders/ikarus/functions/ini_access.md
-          - Examples:              zengin/scripts/extenders/ikarus/examples.md
-        - LeGo:
-          - zengin/scripts/extenders/lego/index.md
-          - Tools:
-            - AI_Function:     zengin/scripts/extenders/lego/tools/ai_function.md
-            - BinaryMachines:  zengin/scripts/extenders/lego/tools/binary_machines.md
-            - EventHandler:    zengin/scripts/extenders/lego/tools/event_handler.md
-            - FrameFunctions:  zengin/scripts/extenders/lego/tools/frame_functions.md
-            - Hashtables:      zengin/scripts/extenders/lego/tools/hashtables.md
-            - HookDaedalus:    zengin/scripts/extenders/lego/tools/hook_dae.md
-            - HookEngine:      zengin/scripts/extenders/lego/tools/hook_engine.md
-            - Int64:           zengin/scripts/extenders/lego/tools/int64.md
-            - ItemHelper:      zengin/scripts/extenders/lego/tools/item_helper.md
-            - Locals:          zengin/scripts/extenders/lego/tools/locals.md
-            - Misc:            zengin/scripts/extenders/lego/tools/misc.md
-            - Queue:           zengin/scripts/extenders/lego/tools/queue.md
-            - Random:          zengin/scripts/extenders/lego/tools/random.md
-            - Talents:         zengin/scripts/extenders/lego/tools/talents.md
-            - Timer:           zengin/scripts/extenders/lego/tools/timer.md
-          - Applications:
-            - Anim8:           zengin/scripts/extenders/lego/applications/anim8.md
-            - Bars:            zengin/scripts/extenders/lego/applications/bars.md
-            - Bloodsplats:     zengin/scripts/extenders/lego/applications/bloodsplats.md
-            - Buffs:           zengin/scripts/extenders/lego/applications/buffs.md
-            - ConsoleCommands: zengin/scripts/extenders/lego/applications/console_commands.md
-            - Cursor:          zengin/scripts/extenders/lego/applications/cursor.md
-            - Dialoggestures:  zengin/scripts/extenders/lego/applications/dialoggestures.md
-            - Focusnames:      zengin/scripts/extenders/lego/applications/focusnames.md
-            - GameState:       zengin/scripts/extenders/lego/applications/gamestate.md
-            - Names:           zengin/scripts/extenders/lego/applications/names.md
-            - Render:          zengin/scripts/extenders/lego/applications/render.md
-            - Saves:           zengin/scripts/extenders/lego/applications/saves.md
-            - Trialoge:        zengin/scripts/extenders/lego/applications/trialoge.md
-          - Various:
-            - User constants:  zengin/scripts/extenders/lego/various/userconstants.md
-        - AFSP:
-          - zengin/scripts/extenders/afsp/index.md
-          - Enhanced Info Manager: zengin/scripts/extenders/afsp/afsp_eim.md
-        - zParserExtender:
-          - zengin/scripts/extenders/zparserextender/index.md
-          - Syntax extensions:
-            - While loop:         zengin/scripts/extenders/zparserextender/syntax_extensions/while.md
-            - Namespaces:         zengin/scripts/extenders/zparserextender/syntax_extensions/namespaces.md
-            - Event functions:    zengin/scripts/extenders/zparserextender/syntax_extensions/events.md
-            - Test-else binding:  zengin/scripts/extenders/zparserextender/syntax_extensions/testelse.md
-            - Extern binding:     zengin/scripts/extenders/zparserextender/syntax_extensions/extern.md
-            - Dialogue constants: zengin/scripts/extenders/zparserextender/syntax_extensions/dialogues.md
-          - Classes:
-            - C_Trigger class:    zengin/scripts/extenders/zparserextender/classes/c_trigger.md
-            - Engine classes:     zengin/scripts/extenders/zparserextender/classes/helperclasses.md
-          - Daedalus Injection:
-            - zengin/scripts/extenders/zparserextender/daedalus_injection/index.md
-            - META block:     zengin/scripts/extenders/zparserextender/daedalus_injection/meta.md
-            - Hooking:        zengin/scripts/extenders/zparserextender/daedalus_injection/hooks.md
-            - Other features: zengin/scripts/extenders/zparserextender/daedalus_injection/other.md
-          - Externals:
-            - String functions: zengin/scripts/extenders/zparserextender/externals/string.md
-            - Menu function:    zengin/scripts/extenders/zparserextender/externals/menu.md
-            - Log functions:    zengin/scripts/extenders/zparserextender/externals/log.md
-            - Event function:   zengin/scripts/extenders/zparserextender/externals/events_vars.md
-            - CAST functions:   zengin/scripts/extenders/zparserextender/externals/cast.md
-            - HLP functions:    zengin/scripts/extenders/zparserextender/externals/hlp.md
-            - WLD functions:    zengin/scripts/extenders/zparserextender/externals/wld.md
-            - MDL functions:    zengin/scripts/extenders/zparserextender/externals/mdl.md
-            - NPC functions:    zengin/scripts/extenders/zparserextender/externals/npc.md
-            - MOB functions:    zengin/scripts/extenders/zparserextender/externals/mob.md
-            - AI functions:     zengin/scripts/extenders/zparserextender/externals/ai.md
-            - PAR functions:    zengin/scripts/extenders/zparserextender/externals/par.md
-            - VOB functions:    zengin/scripts/extenders/zparserextender/externals/vob.md
-          - Examples:
-            - Sign post example: zengin/scripts/extenders/zparserextender/examples/signposts.md
-
-    - Union:
-      - zengin/union/index.md
-      - Plugins:
-        - zGamePad:
-          - zengin/union/plugins/zgamepad/index.md
-          - Controls customization: zengin/union/plugins/zgamepad/controls.md
-          - Gamepad key list: zengin/union/plugins/zgamepad/keys_gamepad.md
-          - Engine logical key list: zengin/union/plugins/zgamepad/keys_engine_logical.md
-          - Engine absolute key list: zengin/union/plugins/zgamepad/keys_engine_absolute.md
-          - Logical function list: zengin/union/plugins/zgamepad/logical_functions.md
-
-    - Tools:
-      - zengin/tools/index.md
-      - Daedalus:
-        - Daedalus Language Server: zengin/tools/daedalus_tools/daedalus_language_server.md
-      - VDFS tools:
-        - GothicVDFS: zengin/tools/vdfs_tools/gothic_vdfs.md
-        - VDFS Tool:  zengin/tools/vdfs_tools/vdfs_tool.md
-      - Gothic Sourcer: zengin/tools/gothic_sourcer.md
-
-  - Genome (G3/R1):
-    - genome/index.md
-    - General information:
-      - Object persistence: genome/general_info/object_persistence.md
-
-    - Tools:
-      - genome/tools/index.md
-
-  - How To Contribute:
-    - contribute/index.md
-
-
 extra_css:
   - assets/stylesheets/extra.css
 
@@ -263,6 +105,10 @@ markdown_extensions:
 
 plugins:
   - search
+  - awesome-pages:
+      order: asc
+      sort_type: natural
+      order_by: title
   - mkdocs-video:
       css_style:
         width: "100%"
@@ -293,11 +139,37 @@ plugins:
           name: cs - Čeština
           build: true
       material_alternate: true
-      # TODO ;0 For now abstain from translating navigation, it might be overriden with the header name later on
-#      nav_translations: # Only 1 global scope, if 2 nav elements are named the same, input translation only once
-#        pl:
-#          Home: Strona Główna
-#          How To Contribute: Jak Się Udzielać
+      # Only 1 global scope, if 2 nav elements are named the same, input translation only once.
+      # Translate only the section/directory titles, page titles should be in the meta header of the `.md` file.
+      nav_translations:
+        en:
+          Afsp: AFSP
+          Anims: Animations
+          Contribute: How To Contribute
+          Daedalus tools: Daedalus
+          General info: General information
+          Genome: Genome (G3/R1)
+          Lego: LeGo
+          Vdfs tools: VDFS
+          Zengin: ZenGin (G1/G2)
+          Zgamepad: zGamePad
+          Zparserextender: zParserExtender
+        pl:
+          Anims: Animacje
+          Applications: Zastosowania
+          Classes: Klasy
+          Contribute: Jak Się Udzielić
+          Examples: Przykłady
+          Extensions: Rozszerzenia
+          Functions: Funkcje
+          General info: Informacje ogólne
+          Home: Strona Główna
+          Plugins: Wtyczki
+          Scripts: Skrypty
+          Syntax extensions: Rozszerzenia składni
+          Tools: Narzędzia
+          Tutorials: Poradniki
+          Various: Różne
   - git-revision-date-localized:
       enabled: !ENV [GMC_ENABLE_ON_PUBLISH, False]
       type: iso_datetime
diff --git a/requirements.txt b/requirements.txt
index d1169e0a50..a4b4283cb1 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,8 +1,10 @@
-mkdocs-material==9.1.4
+mkdocs-material==9.1.5
 mkdocs-git-revision-date-localized-plugin==1.2.0
 mkdocs-video==1.5.0
 mkdocs-redirects==1.2.0
 mkdocs-minify-plugin==0.6.4
 # mkdocs-static-i18n==0.53
-git+https://github.com/kamilkrzyskow/i18n.git@ab056dec558466c23543015369e9abbf38be0393#egg=mkdocs_static_i18n
-git+https://github.com/kamilkrzyskow/gothic-lexer.git@b5ee7868a7e7397cd129ff1f847daa7d39c0e416#egg=gothic_lexer
\ No newline at end of file
+git+https://github.com/kamilkrzyskow/i18n.git@920d38313b60812e8e03dba88a856bfdd41527dc#egg=mkdocs_static_i18n
+git+https://github.com/kamilkrzyskow/gothic-lexer.git@b5ee7868a7e7397cd129ff1f847daa7d39c0e416#egg=gothic_lexer
+# mkdocs-awesome-pages-plugin==2.8.0
+git+https://github.com/kamilkrzyskow/awesome-pages.git@b0c544a92733977e09ac23c7f9238d13012f4fd9#egg=mkdocs_awesome_pages_plugin
\ No newline at end of file
diff --git a/tests/test_indentation.py b/tests/test_indentation.py
index ad2a547675..5e20092f60 100644
--- a/tests/test_indentation.py
+++ b/tests/test_indentation.py
@@ -5,6 +5,8 @@
 import os
 import unittest
 
+import mkdocs.utils.meta
+
 from tests.path_constants import DOCS_DIR
 
 
@@ -25,8 +27,10 @@ def test_admonitions_and_lists(self) -> None:
         for path in paths:
             file_path = os.path.join(DOCS_DIR, path)
 
-            with open(file_path, encoding="utf8") as file:
-                lines = file.readlines()
+            with open(file_path, encoding="utf-8-sig") as file:
+                source = file.read()
+
+            contents, meta = mkdocs.utils.meta.get_data(source)
 
             last_line = ""
             inside_admonition = False
@@ -34,7 +38,7 @@ def test_admonitions_and_lists(self) -> None:
             inside_codeblock = False
             inside_list = False
 
-            for n, line in enumerate(lines, start=1):
+            for n, line in enumerate(contents.split("\n"), start=1):
                 if inside_admonition and admonition_valid:
                     if line.lstrip(" ") == line:
                         inside_admonition = False