I think the parser should be public interface, also maybe we should cache it so we're not regenerating every call to `option_parser`, ie: `@parser ||= #...`