-
Use named functions rather than just end() for clarity.
-
All that's left now is input and output handling.
-
Handle optional choices in addition to required choices. Refactor the way help options are added to completion to make it work with optional help choices.