decouple parse from compile.