use a proper option parser