改进一些实现