basic implementation of validation levels

Closes #6213
About point (e) I had some talking with elijah and agree in some changes. I'm implementing it and updating the pull-req.