Refactored the command options, positional parameters etc such that they are no longer implemented through nested types.