If we take the plunge, and run js in a background thread for timers or async scripts, here is a quick scan of the edbrowse commands and the ones that are ok to run, that is, the ones that don't have to block and wait for the background js to finish. You'll mostly be looking around the buffer, reading the web page, and that's fine. B e f g or v as in global, but the subcommand has to be ok. g go to an internal link, maybe g?, not g to another web page, it calls onclick etc Wish you could start filling out a form but each input could have oninput onchange onclick onselect code etc so those must all block. h H k l n p w X z = & < but each command in the function has to be ok The multiletter commands, basically most of them. db dbcss db> trace demin timers bw rr number (but not rr) ua number re rea sm, though they aren't applicable, you just get an error message various ls commands though they aren't applicable sort commands cd ll fll pb commands, though not applicable shc sht fbc shf ds=, database commands, not applicable jdb but you have to block before each input expression ib, I think, now that browse doesn't allocate buffers for you, hmm f/ w/ ft fd fk ftpa can rl bd pg hr sr xhr vs hf sg sw ci endm su8 iu lna dr dw dx bg jsbg pdc pdd pdq bglist bflist help If jsbt is the js background thread, then blocking is easy peasy. #define js_wait if(jsbt) pthread_join(jsbt) Karl Dahlke