A bit of internal refactoring.

This also seems to have made the parser slightly faster,
but I only have vague guesses as to why.
0.7.4