A group of generic functions comprise a protocol of some kind. Sometimes you cannot extend in the way you need without changing the protocol.