use boost::program_options for command line parsing