try not to keep re-initializing
try to do less repainting