Some small refactoring, sufficient to break @each, @m, and @r (for what I'm sure are interesting reasons, though at the moment I don't know what they are). Also more reasons xh is a horrible language and may not be salvageable.