Huge commit! Almost everything has changed.