add value observer