issue-#13

add validation logic, validations can also be called asynchronously.