compile using O3