This is turning into something much larger than expected, so I'll wait and get it reviewed in a seperate push.