add shell completion support