add ObserverPtr