ahh, cmds is an arrayref
this strategy might work, but I'd rather do it as grammar extensoins