Task: Write an advanced command API. Details: Must respond to an onCommand method using your classes to parse commands. Must parse commands accurately. Must have subcommand support. Must be efficient (anything that takes over half a second to parse a command from System.in with 50 commands, each with 1 subcommand does not pass. Use System.currentTimeMillis() ). Must have support for removing commands and removing subcommands from commands. Must act on null objects passed in. Must throw no exceptions not including (and even then they must be thrown by you not someone else): (this does not apply when it is impossible to catch the exception (when you do something that throws an exception in a super() or this() constructor for instance)) IllegalStateException IllegalArgumentException Must check for commands being registered already and act on it if someone tries to register a command already registered. Must use no external APIs that aren't written by you. Write your own. Must have a command sender / source concept. Mine is almost finished, will post in a second.