...
Refactoring for better design
redesign.