I was running into some difficult merges in #2940, so I'm wanting to finish splitting this last file to minimize the chance of future issues.