WIP: refactor-WangYu #96

Draft
yangyuchen wants to merge 4 commits from refactor-wangyu into master

4 Commits (master)