no facade & observer pattern