not sure if nil is the best way to signal that the protocol is not finished