As discussed on the list
This is based on the 2.3 branch, and includes some basic testing. If you're picky, you'll have to reformat my code, couldn't bring myself to write under 80 columns ;)
Please let me know what you think.
I haven't looked at the trunk closely yet, but at first glance, it seemed the built-ins had been split and moved to their own package (certainly a good thing!), so I don't assume this will be appliable as-is there. If you're satisfied with this one, I could adapt it to the trunk too, just let me know.