Add lots of code documentation