add row cache to support long list *looping is broken