Changed the validation package to use an interface instead of reflection