add isChanged function