Improve abstractions for channel init and UI event handlers.
Use an update channel to trigger canvas redraws.