reuse SingleCompile