separate the UI from logic a bit