not sure if it matters with modern compilers, but this is allocating on each loop now (it wasn't before)