finally finished validator