> One thing I think to consider is the lesson of LaTeX(2e) in that a small > number of positional-based mandatory arguments work well as a user. > That's something I'd certainly expect to see in any new code too. I agree wholeheartedly; as you mentioned in your post on TeX.SX, *nobody* wants to write anything like \UseInstance{sectioning}{latex2e} {<full-name>}{<TOC name>}{<header name>}... even on the design levels. This is why I am very supportive of the key--value syntax: \UseInstance{sectioning}{latex2e} { full-name = #1, toc-name = \IfValueTF{#1}{#1}{#2}, header-name = \IfValueTF{#1}{#1}{#2}, ... } as it is much clearer. I've seen many, many packages that use KV-based interfaces for setup, and I think that this is similar. As long as it remains on the design level (the 'setup' level, if you will), it should be fine. > Almost certainly the number of truly *required* arguments will > remain small, and while the case that a design should not be limited > by TeX is quite true, and the same time a design interface that > fundamentally fails to translate to a TeX-based user layer is a > problem too. And I don't mean to advocate that these objects should be able to have many (9+) mandatory arguments; I'm far more concerned with the homelessness for optional ones. The support for many mandatory arguments is a side-effect that good interface designers will know to avoid except where it may be appropriate (I can't think of any, but in the interest of my own ignorance). If there is a cleaner way to provide this support for optional arguments, that's perhaps just as good. All the best, Sean I still like the idea of a purely KV 'backend' from as a language thing. -- Sean Allred