compile time (slightly) improved on MSVC with /MP flag