Cautionary Notes: MVC & Threads
An artifact of the MVC (or model-delegate) structure of Swing is the need to avoid separate threads updating the model state
To avoid a race condition, one should ONLY use the event-dispatching queue.
The event-dispatching queue handles repaints, and dispatches events to GUI component listeners