fix: removeObserver in dealloc