multiple token types tricky on change