Model with observer design pattern