Implement UI listeners

All that's missing is control patching.