Rename addCommand to localCommand, call localCommand with String[] instead of ArrayList for simplicity.
Move the parameter matching up to where the command name matches in order to allow for overloading
Ensure that optional methods are optional and examples reflect that with Overide annotation.