Andreas, small addendum > > > > And then: What's the error message in \tlp_use:N for? It looks > > > so arbitrarily. Probably it's not? > > > > well I don't know when that was added, but i can see some logic behind it (not > > that i think it is worth having really (as i think one should get rid of the > > whole cmd). I think the idea was that a tlp is a storage bin so could never be > > "\scan_stop:", but either "empty" or contains a list of tokens. So > > "\scan_stop:" means something like \tlp_use:c tried to use a tlp that simply > > doesn't exist > > Oh, of course. I couldn't figure out where the \scan_stop: should > come from. But then I didn't thought about \tlp_use:c. obviously if the tlp has to be constructed first one needs a construction function, so \tlp_use:c is necessary even if one can leave out the \tlp_use:N and from experience if the construction ends up with a previously undeclared tlp then usually things go wrong as it then equals \scan_stop: which is neither expandable (a feature tlps have) nor a "possible" value ie not at all the same as \tlp_new:Nn\l_foo_tlp{} or \tlp_new:Nn\l_foo_tlp{\scan_stop:} so the check and the error message make sense here. cheers frank