control the flow of compiling