Lots of stuff added and commented.