Documentation

@Ian-Stewart-Binks put a lot of work into documention our code. Good for him! :)