validate already raises itself, and returns no boolean