Huge commit, most of the stuff is now in place.