fix observer bug