implementing setSynchronized instead of watch/unwatch