Refactoring phase #3.
Refactoring phase #4.