for more performance, use double buffer and scroll it alternately
fmt