**Algorithm 4** Virtual Mix Context.

**Initialization:** *V<sup>i</sup>* : Any vehicle *i*, *Tx*: Transmission range, *NeighThreshold*: Neighborhood threshold, *SPR*: Speed range, *D*: Direction of vehicle, *LatencyBroad*: Beacon broadcast latency, *PUpdate*: Pseudonym update value **Input:** *SPR*, *D*, *NeighThreshold*, *T<sup>x</sup>* **Output:** Pseudonym Exchange process 1: **for** *V<sup>i</sup>* = 1 → *n* **do** 2: *NeighborFunction*(*SPR*, *D*, *Tx*) 3: **if** *Neighbor*(*Vi*) ≥ *NeighThreshold* **then** 4: *CallAlgo*2() 5: **else** 6: Set *PUpdate*(*Vi*) = 1 7: Increase *LatencyBroad*(BSMs) 8: **end if** 9: Randomize selection of a *T<sup>x</sup>* neighboring vehicle 10: select *V<sup>j</sup>* as virtualizer of *V<sup>i</sup>* 11: Exchange *Msgs*(*V<sup>i</sup>* , *Vj*) 12: *Msg*1(*PID*1, *POS*1, *othercontents*) 13: *Msg*2(*PID*2, *POS*2, *othercontents*) 14: Set *PUpdate*(*Vi*) = 0 15: Report Pseudonyms exchanged to TA 16: Set timer for pseudonym change *Pseudo*(*t*) 17: After expiry of *Pseudo*(*t*) 18: Set *PUpdate*(*Vi*) to 1 19: **end for**
