moving gui logic to it's own class, attempting to improve UX