From experience, Ive learned not to try and idiot-proof code. They come out with new versions of idiots faster than you can come out with new versions of code. If it was even possible to try and stop every possible way to do things wrong, your code would end up so large, and so slow, that, come the day when a bug finally slips thru, you will be the fall guy for 'allowing' them to ride without training wheels.