cli framework for processing arguments, input and output