Nice post, mstone. I'm curious as to your thoughts of how all this relates to guard clauses as mentioned by dws. To me they seem very similar, but I sense that perhaps guard clauses dance around the issue of self-enforcement by the program, as opposed to merely hammering your input data into normalized form.