add command line option parser and user input handling