The concept at the UI level is pretty simple; any change,
either through clicking, moving, dragging, or some other movement, will
generate a change to the object model. When the object model changes, the UI
responds to its events and the change is made. This seems like overkill, but
the benefits are unit testing, customization capabilities, and the rich API. I
will focus on the UI in another article, as it is a complicated subject.