issue-#13

add validation logic, validations can also be called asynchronously.
Merge branch 'issue-#13' into development