add property observer