refactored so argument validity errors are not silenced, better token/value handling in dispatch