begin splitting up compiler.cpp