Restructured & refactored the solution to be layered.