重构一些，去除BUG。