use RunOnceTimer from core; repaint fix