the compiler method