not use Observer.