a simple UI and listener