improved command line parser