write decorator ifThisChanged and limited