we could remove `@classmethod` if we don't need to flatten shell.command by default