* more code refactoring
* more improving