would have been better with boost::program_options