The current endless if-ery is extremely dirty and slow. I'm already working on this and the basic scheme is laid out, it's just a matter of implementing all block translations now