[Yujun] Adding missing files.
[Yujun] Refactoring.
[Yujun] Refactoring.