Hello Will,

> This looks really nice to me. I think it is more useable and perhaps
> more useful to have "real names" for the different types of key, and as
> mentioned having a separate key for a default value is very nice for
> later customisation.

Thanks for that :-) I'd agree, hence my continued work on the keys3
idea.  I hope that is now getting toward the point where is really does
point to a way to implement a general keyval creation system in LaTeX3.

One thing to notice about template (which I've only just discovered
myself) is that the "default" arguments it creates:

  key =n [default] \l_some_tl

are not defaults in the (x)keyval/kvoptions/pgfkeys/key3 sense. In
template, this is the value initially assigned to a key before
processing, whereas in the other systems a default is what is used if
only the key name is given.  More on that to follow as I sort it out!

Joseph