Loosely implementing Observer/Observable, to support MVC structure