improved performance by putting a watcher on changes to array items rather than watching all properties