add methods to add and remove observers