rewrote much of the program (again), and implemented a full blowns
event-system based on observer/observable principles. the implementation
also follows the MVC pattern now!