diff --git a/README.md b/README.md
index c6d50bf..d4522c6 100644
--- a/README.md
+++ b/README.md
@@ -6,21 +6,22 @@ Thats disguasting.
 
 The right way should be to hook into the actual build system.
 
-## Process
-Make is our friend, because its hackable.
-
-    token := genrate-session-token()
-    foreach t in $tools do
-        $t($token)
-    done
-
-The session token is a number used to differentiate between compiles.
-
-Every tool is wrapped, so that it emits its output to both normally and piped into errtags.
-
-Errtags is responsible for grepping error messages and storing them in a csv-like file.
-
-The csv is passed to vim so it can display the errors.
+For the details, see [documentation.md](documentation.md).
 
 ## Dependencies
 + Tcl
+
+## Installation
+1. Clone the source
+2. Run:
+
+    $ make && make install
+
+3. Update your config files
+
+    # .vimrc
+    let g:errtags_events = ["BufEnter", "BufWrite"]
+    # .bashrc
+    alias make='make.sh CC=cc.sh'
+
+4. Enjoy
diff --git a/documentation.md b/documentation.md
new file mode 100644
index 0000000..8a5ac06
--- /dev/null
+++ b/documentation.md
@@ -0,0 +1,19 @@
+## Process
+Make is our friend, because its hackable.
+
+    token := genrate-session-token()
+    foreach t in $tools do
+        $t($token)
+    done
+
+The session token is a number used to differentiate between compiles.
+
+Every tool is wrapped, so that it emits its output both normally and piped into errtags.
+
+A tags file is generated and processed by vim.
+
+# Structure
+| File | Description |
+| wrappers/ | scripts wrapping tools, appending to our tags file |
+| errtags.vim | main vim source file; processes the tags file |
+| errtags | responsible for grepping error messages and storing them in a csv-like file; written in tcl for speed and my sanitys sake |
diff --git a/errtags.sh b/errtags.sh
deleted file mode 100644
index b0e806f..0000000
--- a/errtags.sh
+++ /dev/null
@@ -1 +0,0 @@
-alias make='make.sh CC=cc.sh'
diff --git a/errtags.vim b/errtags.vim
index fbd448d..6a84f8c 100644
--- a/errtags.vim
+++ b/errtags.vim
@@ -77,7 +77,6 @@ function! DoNotices()
 endfunction
 " #pragma endregion
 
-let g:errtags_events = ["BufEnter", "BufWrite"]
 " --- Hook up everything ---
 " #pragma region
 if exists('g:errtags_events')