Continued on subprotocol visitor pattern.