reworked optparser