Moved validation to class methods, added custom validator functionality