use arrays of objects for data exchange. every key-value pair (from json or initial data) will now be added to the DOM elements (choices, tokens) as data-* attributes.
the add/remove callback now receives the current choice/token.
forgot updated JS file.