Loads of comments/JavaDocs.
Symlinks can have relative/non-existing targets.
Minor refactoring.