re-structured the compiler module