Rewrote the option parser