wip, working on register allocation