fixed ::sptr issues and changed observable interface (observer interface must still be changed)
changed update() to be NOT implemented in Observer interface