add observer design model