Major Refractor for GUI (more OOP)