Not a bad article, looked at doing this a while back.
The only thing I would say is the same result can be achieved by returning navigation as XML and processing it that way. Which runs at the same speed, and makes modification far easier.