though it is a bit odd to call System.exit ourselves when we return an exit code value also, since we'd suddenly be sometimes returning and sometimes exiting directly, with no reason other than history. And it's probably kind of annoying to refactor to return 1.