changes

there's a whole shitload of changes, and I'm too lazy to make many
commits to make it more traceable.