Re-design command task and rewrite DiffTab into several commands