better separation of codegen and parser