working on Validator refactoring
continue refactoring
0.5.0 refactoring finished can branch to 0.6 or 0.5.x from here