Hi Andrew, [Joseph beat me to answering but the following might add something to the discussion.] Thanks for pointing this out — .set:N was (once upon a time) the old name for .tl_set:N. I’ve fixed it up. Basically you shouldn’t need to distinguish package options from other keys — it’s all up to how the keys are processed. To be more explicit, let’s say that you did want to distinguish between package option keys and other keys; it would be quite natural to write \keys_define:nn { mymodule / pkgoptkeys } { option .tl_set:N = \l_module_variable_tl } \keys_define:nn { mymodule / otherkeys } { another-option .tl_set:N = \l_module_another_variable_tl } Hope this helps, Will > On 22 Jan 2017, at 11:51 am, Andrew Parsloe <[log in to unmask]> wrote: > > I am confused by the illustration > > \keys_define:nn { module } > { option .set:N = \l_module_variable_tl } > > in the l3keys2e documentation. I thought, "Ah, this is how you distinguish package options from keys defined within a package", but when I try this it doesn't work. But > > \keys_define:nn { module } > { option .tl_set:N = \l_module_variable_tl } > > does. > > Andrew > > --- > This email has been checked for viruses by Avast antivirus software. > https://www.avast.com/antivirus