remove need for calling .deliver_sm() on the protocol