What's the rationale behind the `non_arg_options` parameter here? It feels like it doesn't belong in this class, since it doesn't appear to have anything to do with parsing arguments. It looks like a convenience for passing additional options along, something that should probably be handled at a different level of abstraction.