move validate up a level
no more passing strings as errors like some god damn anarchist