a bunch of MVC for validation