reimplemented the data structures the subprotocol uses and tuples are obtained