second version
[update] fix some bug
[update] adjust UI
[update] code refactoring
[update] code refactor