Yes !mode + $2- is better!
@Linuxuser it did that because you have no else { halt } so it thought every word was a command.