converting interpreter to compiler, somethings may break