Added some comments. Far from finished.