Properly split GUI from backend