Jeez, this is going to take all day to write.