Hi Shawn to use args4j was really a great idea. I had a patch, implementing something similar to args4j in my repository, but using a library is always better. *thumb up* I had a short look at the files and noticed that the inner "if (help) {" is unnecessary: + if (help) { + System.err.print("jgit "); + System.err.print(commandName); + clp.printSingleLineUsage(System.err); + System.err.println(); + + if (help) { + System.err.println(); + clp.printUsage(System.err); + System.err.println(); + } + System.exit(1); + } Also a cool function which you may want to use is: public <U> Class<? extends U> asSubclass(Class<U> clazz) With that method of Class<?> you can do the cast before you actually create the object. You could for example make use of them in SubcommandHandler: l. 124 cmd = (TextBuiltin) cons.newInstance(); Best regards, Florian Köberle -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html