Classes

Allows to do things before the command is executed.
Allows to inspect input and output of a command.
Allows to handle exception thrown in a command.
Allows to manipulate the exit code of a command after its execution.