1. add argument check
2. add log
3. refactor test case
4. version update to 2.3.1