It's neatly partitionable away from the rest of the logic, so it's easier to put it in a separate file.