解决不少细节bug，优化代码结构