diff --git a/.gitignore b/.gitignore
index 503b69954..5870ab2d3 100755
--- a/.gitignore
+++ b/.gitignore
@@ -42,6 +42,8 @@
# General project-specific ignores
__pycache__/*
doxygen/doxygen/*
+docs/html/*
+xml/*
/build/*
# decomp permuter
/nonmatchings/*
diff --git a/docs/Understanding the Basics/index.md b/docs/Understanding the Basics/index.md
deleted file mode 100644
index 922eb77eb..000000000
--- a/docs/Understanding the Basics/index.md
+++ /dev/null
@@ -1,2 +0,0 @@
-\subpage basics "test"
-# test
diff --git a/docs/BUILD_WINDOWS.md b/docs/basics/BUILD_WINDOWS.md
similarity index 99%
rename from docs/BUILD_WINDOWS.md
rename to docs/basics/BUILD_WINDOWS.md
index d9040646b..ac2574646 100644
--- a/docs/BUILD_WINDOWS.md
+++ b/docs/basics/BUILD_WINDOWS.md
@@ -1,4 +1,4 @@
-\subpage basics "Compiling"
+@page build
## Compiling mk64 Decomp In Windows
diff --git a/docs/Understanding the Basics/Basic Concepts.md b/docs/basics/Basic Concepts.md
similarity index 99%
rename from docs/Understanding the Basics/Basic Concepts.md
rename to docs/basics/Basic Concepts.md
index 51dbbe659..b3b26019c 100644
--- a/docs/Understanding the Basics/Basic Concepts.md
+++ b/docs/basics/Basic Concepts.md
@@ -1,4 +1,4 @@
-\page basics "Understanding the Basics"
+@page concepts
#### Definitions
* `Jump/Branch/Function` - Tells the cpu to execute instructions somewhere else and come back here when done.
* `Hexadecimal` - A [numbering system](https://en.wikipedia.org/wiki/Hexadecimal) just like decimal (also called base-ten) or roman numerals. An easy method for programmers and computers to understand each other which groups/separates bytes of information in a readable format. Representing information as decimal results in an unreadable mess.
diff --git a/docs/basics/basics.md b/docs/basics/basics.md
new file mode 100644
index 000000000..1dc2c9986
--- /dev/null
+++ b/docs/basics/basics.md
@@ -0,0 +1,9 @@
+@page basics Understanding the Basics
+
+
Essential skills and concepts to help you get started in mk64 decomp
+
+
+@subpage compiling
+@subpage concepts
+@subpage build
+@subpage test
diff --git a/docs/basics/compiling.md b/docs/basics/compiling.md
new file mode 100644
index 000000000..e53b1905f
--- /dev/null
+++ b/docs/basics/compiling.md
@@ -0,0 +1,87 @@
+@page compiling Compiling mk64
+## Dependencies
+
+The build system has the following package requirements:
+
+ binutils-mips >= 2.27
+ python3 >= 3.6
+ libaudiofile
+
+To add submodules run `git submodule update --init --recursive` after cloning.
+
+## EU Specific Steps (All versions)
+Both EU builds first requires US to be built first:
+```
+make -j
+```
+
+Now build either EU 1.0 `eu-1.0` or EU 1.1 `eu-final`
+```
+make -j VERSION=eu-final
+```
+
+diff/first-diff commands
+```
+python3 first-diff.py --eu
+./diff -eu
+```
+
+#### Debian / Ubuntu
+```
+sudo apt install build-essential pkg-config git binutils-mips-linux-gnu python3 zlib1g-dev libaudiofile-dev libcapstone-dev
+```
+
+#### Arch Linux
+
+To install build dependencies:
+```
+sudo pacman -S base-devel capstone python
+```
+Install the following AUR packages:
+* [mips64-elf-binutils](https://aur.archlinux.org/packages/mips64-elf-binutils) (AUR)
+
+Review the n64decomp/sm64 readme for instructions to compile in other distributions.
+
+#### Windows
+
+Compiling on Windows requires `MSYS2 MinGW x64`. The setup process is a tad intensive.
+
+[Instructions here](docs/BUILD_WINDOWS.md)
+
+#### macOS
+
+Install [Homebrew](https://brew.sh), then install the following dependencies:
+```
+brew update
+brew install python3 capstone coreutils make pkg-config tehzz/n64-dev/mips64-elf-binutils
+```
+
+When building, use `gmake` to ensure that homebrew `make` is used instead of the old, macOS system `make`.
+
+#### Docker
+
+Build the Docker image:
+```
+docker build -t mk64 .
+```
+
+When building and using other tools, append the following in front of every command you run:
+```bash
+docker run --rm -v ${PWD}:/mk64 mk64
+```
+
+For example:
+```bash
+docker run --rm -v ${PWD}:/mk64 mk64 make -C tools
+docker run --rm -v ${PWD}:/mk64 mk64 make
+```
+
+## Building
+
+Place a US version of Mario Kart 64 called `baserom.us.z64` into the project folder for asset extraction.
+
+Run the following commands after pulling:
+```bash
+make -C tools
+make
+```
\ No newline at end of file
diff --git a/docs/basics/test.md b/docs/basics/test.md
new file mode 100644
index 000000000..3daa2fbbd
--- /dev/null
+++ b/docs/basics/test.md
@@ -0,0 +1,3 @@
+@page test
+# test
+sdfsfdds
\ No newline at end of file