add validation and test.