This is great, although a small part of me can't help but remember that we used to be able to do this kind of thing in Visual Basic in the early 90s (and I don't doubt that someone will trump me with an example from a decade earlier at least). Plus ça change, plus c'est la même chose, I guess.