* support optional and default parameters
* add sample test
* change assert value
* update test
* update test
* fix sample test
* fix sample test
* fix sample test
* test fix
* change parameter logic
* test
* test
* change logic handling not provided parameter
* remove unnecessary code and add more sample case
* fix sample test bug
* fix sample test
* update logic
* change parameter logic
* update logic
* update logic handling when parameter not provided
* fix sample test
* add error message
* fix samples test
* samples test
* remove unused code