Refactor the protocol #2