move some stuff out of draw() to prevent gc pauses (I think?)