diff --git a/Docs/Building.md b/Docs/Building.md
new file mode 100644
index 0000000..37e0bca
--- /dev/null
+++ b/Docs/Building.md
@@ -0,0 +1,41 @@
+# Build process
+
+## Requirements
+- Windows 10 or later
+- [Visual Studio 2022 Community edition](https://visualstudio.microsoft.com/vs/community/)
+ - [".NET Desktop Development" workload installed](https://learn.microsoft.com/en-us/visualstudio/install/modify-visual-studio?view=vs-2022)
+
+### Optional
+- [git](https://git-scm.com/) (optional, needed if you want to clone the repo or contribute)
+- [Python 3](https://www.python.org/downloads/) (optional, needed if you want to use the build script)
+- [Inno Setup](https://jrsoftware.org/isdl.php) (optional, needed to build the installer)
+- [pandoc](https://pandoc.org/installing.html) (optional, needed if you want to make html/rtf versions of the "What's new.md" file)
+
+## Building the application
+1. Open the solution `Fallout76-QuickConfiguration\Fo76ini\Fo76ini.sln` in Visual Studio 2022.
+2. Set the build target to "Release", "Any CPU", and "Fo76ini_Updater"
+3. Click Build → Build Solution (F6)
+4. Copy (and replace) the content of `Fallout76-QuickConfiguration\Fo76ini_Updater\bin\Release\` into `Fallout76-QuickConfiguration\Fo76ini\bin\Release\`. (Create the latter directory, if it does not exist)
+5. Next, set the build target to "Release", "Any CPU", and "Fo76ini"
+6. Once again, click Build → Build Solution (F6)
+7. Copy the content of `Fallout76-QuickConfiguration\Additional files\` into `Fallout76-QuickConfiguration\Fo76ini\bin\Release\`
+8. Done.
+
+## Building the setup
+1. Open `Fallout76-QuickConfiguration\setup.iss` in Inno Setup Compiler.
+2. Edit the first few lines, such as `ProjectVersion`, `ProjectGitDir`, `ProjectPackTargetDir`
+3. You'll probably also need to edit these lines:
+ ```
+ [Files]
+ Source: "{#ProjectPackTargetDir}\v{#ProjectVersion}\v{#ProjectVersion}_bin\Fo76ini.exe"; DestDir: "{app}"; Flags: ignoreversion
+ Source: "{#ProjectPackTargetDir}\v{#ProjectVersion}\v{#ProjectVersion}_bin\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
+ ; NOTE: Don't use "Flags: ignoreversion" on any shared system files
+ ```
+ to something like this:
+ ```
+ [Files]
+ Source: "{#ProjectGitDir}\Fo76ini\bin\Release\Fo76ini.exe"; DestDir: "{app}"; Flags: ignoreversion
+ Source: "{#ProjectGitDir}\Fo76ini\bin\Release\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
+ ; NOTE: Don't use "Flags: ignoreversion" on any shared system files
+ ```
+4. Build the setup.
\ No newline at end of file
diff --git a/Docs/Program.md b/Docs/Program.md
new file mode 100644
index 0000000..9b2289a
--- /dev/null
+++ b/Docs/Program.md
@@ -0,0 +1,7 @@
+# Flowcharts
+
+> WIP
+
+## Program start and initialization
+
+![](assets/app-start-and-init.drawio.png)
\ No newline at end of file
diff --git a/Docs/Project Structure.md b/Docs/Project Structure.md
index 097faed..5cc32ee 100644
--- a/Docs/Project Structure.md
+++ b/Docs/Project Structure.md
@@ -16,16 +16,18 @@ Here's an overview:
```
📁 .
-├── 📁 Docs ⇨ Documentation
+├── 📁 Docs ⇨ Documentation
│
-├── 📁 Additional files ⇨ Additional files that need to be copied to the bin folder.
-├── 📁 Fo76ini ⇨ Main solution
-├── 📁 Fo76ini_Updater ⇨ Solution for the auto-updater
-├── 📁 ObjectListView ⇨ Solution that extends the built-in ListView control. Used in the Mod Manager.
+├── 📁 Additional files ⇨ Additional files that need to be copied to the bin folder.
+├── 📁 Fo76ini
+│ └── 📝 Fo76ini.sln ⇨ Main solution. Open this.
+├── 📁 Fo76ini_Updater
+│ └── 📝 Fo76ini_Updater.sln ⇨ Solution for the auto-updater.
+├── 📁 ObjectListView ⇨ Extends the built-in ListView control. Used in the Mod Manager.
│
-├── 📝 VERSION ⇨ Contains the current version.
-├── 📝 What's new.md ⇨ What's new? - Changelogs, etc.
-├── 🐍 pack_tool.py ⇨ Python script that is used to prepare and pack the release.
+├── 📝 VERSION ⇨ Contains the current version.
+├── 📝 What's new.md ⇨ What's new? - Changelogs, etc.
+├── 🐍 pack_tool.py ⇨ Python script that is used to prepare and pack the release.
└── ...
```
@@ -33,35 +35,35 @@ Here's an overview:
```
📁 ./Fo76ini
-├── 📁 Controls ⇨ Holds custom UserControls
-├── 📁 Forms ⇨ Holds Forms and UserControls used in a specific Form
-│ ├── 📁 FormMain ⇨ The main form
-│ │ └── 📁 Views ⇨ All the views of the main form
-│ ├── 📁 FormMods ⇨ The "Mod Manager" form
-│ ├── 📁 FormWelcome ⇨ Form that opens when the tool is launched for the first time.
-│ ├── 📁 FormExcept... ⇨ Opened when an unhandled exception occures.
-│ ├── 📁 FormIniError ⇨ Opened when the *.ini files can't be parsed.
+├── 📁 Controls ⇨ Holds custom UserControls
+├── 📁 Forms ⇨ Holds Forms and UserControls used in a specific Form
+│ ├── 📁 FormMain ⇨ The main form
+│ │ └── 📁 Views ⇨ All the views of the main form
+│ ├── 📁 FormMods ⇨ The "Mod Manager" form
+│ ├── 📁 FormWelcome ⇨ Form that opens when the tool is launched for the first time.
+│ ├── 📁 FormExceptionDialog ⇨ Opened when an unhandled exception occures.
+│ ├── 📁 FormIniError ⇨ Opened when the *.ini files can't be parsed.
│ │
-│ ├── 📁 FormProfiles ⇨ Unused.
-│ ├── 📁 FormSettings ⇨ Unused.
-│ ├── 📁 FormWhatsNew ⇨ Unused.
-│ └── 📁 FormTextP... ⇨ Custom messageboxes, unused.
+│ ├── 📁 FormProfiles ⇨ Unused.
+│ ├── 📁 FormSettings ⇨ Unused.
+│ ├── 📁 FormWhatsNew ⇨ Unused.
+│ └── 📁 FormTextPrompt ⇨ Custom messageboxes, unused.
│
-├── 📁 Ini ⇨ Ini parsing and handling (load, change, save, etc.)
-├── 📁 Interface ⇨ Translation, theming, and other interface related code
-├── 📁 Mods ⇨ Loading, saving, and manipulating mods.
-├── 📁 NexusAPI ⇨ Accessing the NexusMods API and storing data.
-├── 📁 Profiles ⇨ Loading, saving, and editing profiles.
-├── 📁 Properties ⇨ Project settings and resources.resx
-├── 📁 Resources ⇨ Contains images, icons, fonts, text (html/rtf), etc.
-├── 📁 Tweaks ⇨ *.ini tweaks (=game settings) sorted into subdirectories
-├── 📁 Utilities ⇨ Any class that can be used everywhere and doesn't have it's own place.
-├── 📁 languages ⇨ Translations that are downloaded by the tool through GitHub.
+├── 📁 Ini ⇨ Ini parsing and handling (load, change, save, etc.)
+├── 📁 Interface ⇨ Translation, theming, and other interface related code
+├── 📁 Mods ⇨ Loading, saving, and manipulating mods.
+├── 📁 NexusAPI ⇨ Accessing the NexusMods API and storing data.
+├── 📁 Profiles ⇨ Loading, saving, and editing profiles.
+├── 📁 Properties ⇨ Project settings and resources.resx
+├── 📁 Resources ⇨ Contains images, icons, fonts, text (html/rtf), etc.
+├── 📁 Tweaks ⇨ *.ini tweaks (=game settings) sorted into subdirectories
+├── 📁 Utilities ⇨ Any class that can be used everywhere and doesn't have it's own place.
+├── 📁 languages ⇨ Translations that are downloaded by the tool through GitHub.
│
-├── 📝 Configuration.cs ⇨ Easily accessible Props for the tool's configuration.
-├── 📝 Initialization.cs ⇨ Init: Creating folders, reading configuration, etc.
-├── 📝 Program.cs ⇨ Program entry point (static void Main).
-├── 📝 Shared.cs ⇨ Containing constants, such as version, user agent, or URLs.
+├── 📝 Configuration.cs ⇨ Easily accessible Props for the tool's configuration.
+├── 📝 Initialization.cs ⇨ Init: Creating folders, reading configuration, etc.
+├── 📝 Program.cs ⇨ Program entry point (static void Main).
+├── 📝 Shared.cs ⇨ Containing constants, such as version, user agent, or URLs.
└── ...
```
@@ -74,13 +76,13 @@ The tool downloads or requests information from GitHub's API for various reasons
**Checking for updates, "What's new", and translations:**
```
📁 .
-├── 📝 VERSION ⇨ Downloaded on startup to check for updates.
-├── 📝 What's new.rtf ⇨ Downloaded and displayed on versions prior to v1.11.
+├── 📝 VERSION ⇨ Downloaded on startup to check for updates.
+├── 📝 What's new.rtf ⇨ Downloaded and displayed on versions prior to v1.11.
│
└── 📁 Fo76ini
- └── 📁 languages ⇨ *.zip archives containing the translations.
- ├── 📝 list.iso.txt ⇨ List of available translations for download.
- └── 🗃️ xx-XX.zip ⇨ Translations
+ └── 📁 languages ⇨ *.zip archives containing the translations.
+ ├── 📝 list.iso.txt ⇨ List of available translations for download.
+ └── 🗃️ xx-XX.zip ⇨ Translations
```
### From GitHub releases:
diff --git a/Docs/README.md b/Docs/README.md
new file mode 100644
index 0000000..b87f1ff
--- /dev/null
+++ b/Docs/README.md
@@ -0,0 +1,10 @@
+# Documentation
+
+This is an attempt to document the project for developers.
+
+## Content
+
+- [Building the app](Building.md)
+- [Project and folder structure](Project%20Structure.md)
+- [Flowcharts and program structure](Program.md)
+- [Theming (specific)](Theming.md)
\ No newline at end of file
diff --git a/Docs/assets/.$app-start-and-init.drawio.bkp b/Docs/assets/.$app-start-and-init.drawio.bkp
new file mode 100644
index 0000000..b5f9dd7
--- /dev/null
+++ b/Docs/assets/.$app-start-and-init.drawio.bkp
@@ -0,0 +1 @@
+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
\ No newline at end of file
diff --git a/Docs/assets/app-start-and-init.drawio b/Docs/assets/app-start-and-init.drawio
new file mode 100644
index 0000000..31b6bd4
--- /dev/null
+++ b/Docs/assets/app-start-and-init.drawio
@@ -0,0 +1 @@
+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
\ No newline at end of file
diff --git a/Docs/assets/app-start-and-init.drawio.png b/Docs/assets/app-start-and-init.drawio.png
new file mode 100644
index 0000000..ba0b97a
Binary files /dev/null and b/Docs/assets/app-start-and-init.drawio.png differ