It is after if(is(LOOKBACK)) return; in the first version. optimize() absolutely needs to be called before that. Remember that run() is called repeatedly and that optimize() needs to be called the same number of times at every run() call for it to work correctly.