add validate() function, fixes #7