merger compile code in base
moved compiler code to internal package