  One or more options can with the command, in any order, as long as they are placed 
  BEFORE any of the command's required arguments in the command line, if it has any.
  */
-protocol CommandWithOptions : Command {
+public protocol CommandWithOptions : Command {
     
     /**
      The options that can be used when running the command.

 ````
 Arguments are positional, so set `arguments` with the desired order.
 */
protocol CommandWithArguments : Command {
    
    /**
     Arguments are positional, so set them in the desired order.

 ````
 Where `file` and `project` are commands, and your `new` command is a subcommand for both.
 */
public protocol CommandWithSubCommands : Command {
    
    /**
     This property says which subcommands the user can use on this command. The user can only pick one,
