fixed ::sptr issues and changed observable interface (observer interface must still be changed)