call the compiler only once