abstract defines the command options
improved logging and exception handling