modify short-circuiting, add Value-Based Dirty-Checking