lots of new comments and some minor changes to the source.