seems the observer is doing delegate's work, but I don't have better idea by now..