Can you document the purpose of the protocol (and, specifically, the split between it and the class)?