Just a quick note that I have a signficant simplification of this, because I started implementing and I hated it. This time I'll finish implementing it before I post the spec :) Cheers, Rusty.