add isFirstRun