prototype of observe