add observer pattern classes