I see why you coded this like this, but in the common case when the user only wants normals, we are allocating and free big chunks of memory, and doing needless computation.  Let's clean this up with some `if` statements in the loop.  They will branch predict well.