Ha, that's cool. I have implemented a crappy and probably broken version of this type before. Next time I won't have to!