MVC model, also known as Observer pattern practice