Well as you see, I implemented getAttributeNode(), because it wasn't hard, but a little harder than your example suggests because of side effects. Setting value has to propagate down to setattribute in the original element, which I do with a setter. With this in place, much of eb$qs is working. Sounds like I misunderstood though, and it should really be called querySelectorAll, but that's just a one line change if we want to do that. Let me know if that's what we should do. I notice inside the code it checks navigator.userAgent, so it tailors itself to the kind of browser we are. God knows what it does with edbrowse. :) Anyways, to make this all work standalone, without edbrowse, duk -i startwindow.js, I had to put in something for navigator.userAgent, or it was blowing up. Line 195. Karl Dahlke