lots of stuff

I didn't bother to test outside of chrome, and I've only done basic testing in chrome.