重构了部分代码，修复了一些bug

Signed-off-by: Meathill <meathill@gmail.com>