Perusing both our test cases as well as during user sessions, noticing that modes
always end up being global variables, with the name encoded in a couple places (mode name
and variable name specifically) and generally a bit messy.
The decorator-based approach seems cleaner. Additionaly I believe we are on the path
to eliminating many of the non-resource arguments to mode, so the default case
should just the resources returned by the function.