implement validate! function