VM is a bit cleaner, still wondering about code gen stuff