I've been thinking of doing this for a while. Kudos to you for doing it (and in a clean elegant way) and providing the source and good documentation. It is much appreciated.