add dirty checking by value