change some design and modify some errors