More complex to support a variety of specs, and lobos needs the subprotocol