add observer design pattern.