use Property.link/unlink instead of addObserver/removeObserver
update