Still need to implement better semantics, but this is an important first step. It's much faster now too, which is good.