built ad-hoc argument parser