[Refactor] Refactor finished. Now it is stick to the design.