seperated the GUI to follow MVC principles