Refactoring a tableview controller, making it more generic by moving display responsibility into a tableview cell subclass and by using a protocol to keep the tableview controller unaware of cell details.