[major] branch out code of compiler