allows for command line exicution, requires much more work to properly handle errors and user input