Lots of changes and rewrites.