So now I'm using my own css parser and querySelectorAll, and it's better, maybe an order of magnitude faster, and less buggy, but, stackoverflow still takes almost 2 minutes to browse. I keep going back to the fact that 99.9% of the time we don't need this stuff, maybe we never do. Even the acid0 test that started all this doesn't need this stuff. it calls getComputedStyle and tests for that. That's a one time computation of the css elements on one node. So it makes me wonder if I'm missing the point. Sometimes I just program along because it's fun, and a distraction from the worries in my life, of which there are many, but that kind of head-down programming can miss the point. Remember what I did with frames? I don't expand a frame unless you need it. A getter sits on top of frame and if you access frame.contentDocument it then expands the frame. Could I do something like that with the various style objects? If you never access them, which js hardly ever does, then I don't have to do this at all, and if and when you do, I figure it out for that particular node. This is harder to do than it was with frames, because you can create style objects and they're suppose to be objects, not getters, and well just trust me it's not as easy, but still might be doable, and that might be the right answer. Karl Dahlke