a ton of changes

Too lazy to document.