- Provides better handling of invalid invocation - Provides usage output - More flexible for future extension (e.g. compression)