now using O3 compiler optimizations