Made a draft with separation of concerns working roughly.