Tagging

Merge in the work of @bmuscede and @nathanychow on the Tagging system.
Never use `do` with multi-line `while`.