completely decouple fetch and repaint loops