Add caveats

A bunch of long-overdue refactoring comes with this PR, and with it comes support for caveats.

Closes #369 .