seriously reworking validation