support multiple <body> tags
start porting driver.js

helpers don't work because they assume `this` is data :(