What was the point of this again? Was it that these two operations are used so commonly together that its worth having a special type for them, or is there some correctness issue here? It seems to me that having it adds a fair amount of fiddley complexity, and it doesn't gain very much because patching will make each operation individually fairly efficient. J