Add many comments. Loose coupling between classes where beneficial.

Generally, a refactoring release.