do not use observer