whole hell of a lot of changes. hopefully there's no need to revert...