进行了一些优化，以及测试的编写等