Currently, Cli.java contains both actual CLI-handling methods and static methods happily utilized by the GUI. Mix in the stdout/err outputing that CLI-handling has to do, and you get a mess. Splitting these two functionalities would greatly benefit code readability and logical separation.