OK to not wrap this in an `App` object since the canonical assumption is that things will run from the REPL?