decoupling the gui