Trying to implement a protocol