Sooo... what *should* happen is that SelectManager tracks the tokens selected for the most recent user-generated message, and then keeps handing them off to api-generated messages until it encounters another user-generated message, whereupon it stores that new set of selected tokens. (There are ways to change the selected tokens with {& select... } or {& inject ... } , but that doesn't matter right at the moment.) The point is that even just running the Concentration script from within ScriptCards *should* trigger the handing-back of tokens. forselected goes one step further and gives the tokens back one at a time. If you have a single token selected, there is virtually no difference (maybe little bit of extra time for the forselected version). One other thing that bears mentioning is that forselected defaults to re-attaching ALL three properties that are changed for an API-generated message (playerid, who, and selected tokens). It figures if YOU are launching the forselected call to launch a Concetration call (for instance), then of course you want the properties returned as if you were running the Concentration script once for each token by hand. The tricky thing is that by embedding forselected in a ScriptCards macro, you have to think about what is in those three properties when SC launches forselected. What does it know about in order to hand them back? When ScriptCards is run (user-generated), the properties are: selected: 1 token who: timmaugh (GM) playerid: -M1234567890abcdef Then it launches forselected. That is an API-generated message, so the properties are: selected: undefined who: playerid: API forselected will pass on the three properties, but they aren't the values we want (not the user values we started with). That's where SelectManager still needs to be configured to help itself and return not only the selected tokens to the forselected top message, but also the playerid... that way the properties at the time forselected starts iterating the call look like this: selected: 1 token who: playerid: -M1234567890abcdef Then forselected can hand those properties off to the downstream script it is calling.